2026-04-14 17:41:39 +02:00

173 lines
8.7 KiB
JavaScript

async function changePlayerNormalMoney(type, newValue, playerId, res, uid, oldValue, userName) {
if (type.toLowerCase() === "blackmoney" && config.BlackMoney.Type.toLowerCase() === "none") return res.json({ code: 404, message: "Blackmoney is not supported." })
if (config.Framework.includes("qb")) {
const qPlayer = FrameworkObject.Functions.GetPlayer(playerId)
if (qPlayer) {
if (config.BlackMoney.Type === "with-item" && type.toLowerCase() === "blackmoney") {
if (Number(newValue) > Number(oldValue)) {
qPlayer.Functions.AddItem(config.BlackMoney.Object, Number(newValue) - Number(oldValue))
res.json({ code: 200, message: "Changed." })
} else if (Number(oldValue) > Number(newValue)) {
qPlayer.Functions.RemoteItem(config.BlackMoney.Object, Number(oldValue) - Number(newValue))
res.json({ code: 200, message: "Changed." })
}
} else {
qPlayer.Functions.SetMoney(type.toLowerCase(), Number(newValue))
res.json({ code: 200, message: "Changed." })
}
} else {
let result = await query(`SELECT * FROM \`players\` WHERE \`citizenid\` = '${uid}'`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
result = result [0]
if (config.BlackMoney.Type === "with-item" && type.toLowerCase() === "blackmoney") {
const newInvJson = JSON.parse(result.inventory)
let changed = false
newInvJson.forEach(item => {
if (changed === true) return
if (item.name === config.BlackMoney.Object.toLowerCase()) {
item.amount = Number(newValue)
changed = true
}
})
result = await query(`UPDATE \`players\` SET \`inventory\` = '${JSON.stringify(newInvJson)}' WHERE \`citizenid\` = '${uid}'`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
res.json({ code: 200, message: "Changed." })
} else {
const oldMoneyJson = JSON.parse(result.money)
oldMoneyJson[type.toLowerCase()] = Number(newValue)
result = await query(`UPDATE \`players\` SET \`money\` = '${JSON.stringify(oldMoneyJson)}' WHERE \`citizenid\` = '${uid}'`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
res.json({ code: 200, message: "Changed." })
}
}
} else {
const xPlayer = FrameworkObject.GetPlayerFromId(playerId)
if (xPlayer) {
if (config.BlackMoney.Type === "with-item" && type.toLowerCase() === "blackmoney") {
if (Number(newValue) > Number(oldValue)) {
xPlayer.addInventoryItem(config.BlackMoney.Object, Number(newValue) - Number(oldValue))
res.json({ code: 200, message: "Changed." })
} else if (Number(oldValue) > Number(newValue)) {
xPlayer.removeInventoryItem(config.BlackMoney.Object, Number(oldValue) - Number(newValue))
res.json({ code: 200, message: "Changed." })
}
} else {
let convertedType = type.toLowerCase()
if (convertedType === "blackmoney") convertedType = "black_money"
if (convertedType === "cash") {
xPlayer.setMoney(Number(newValue))
} else {
xPlayer.setAccountMoney(convertedType, Number(newValue))
}
res.json({ code: 200, message: "Changed." })
}
} else {
let result = await query(`select * from \`users\` where \`identifier\` = '${uid}'`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
result = result[0]
if (config.BlackMoney.Type === "with-item" && type.toLowerCase() === "blackmoney") {
const newInvJson = JSON.parse(result.inventory)
let changed = false
Object.entries(newInvJson).forEach(([k,v]) => {
if (changed === true) return
if (k === config.BlackMoney.Object.toLowerCase()) {
v = Number(newValue)
changed = true
}
})
result = await query(`
update \`users\`
set \`inventory\` = '${JSON.stringify(newInvJson)}'
where \`identifier\` = '${uid}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
res.json({ code: 200, message: "Changed." })
} else {
const oldMoneyJson = JSON.parse(result.accounts)
let convertedType = type.toLowerCase()
if (convertedType === "blackmoney") convertedType = "black_money"
if (convertedType === "cash") convertedType = "money"
oldMoneyJson[convertedType] = Number(newValue)
result = await query(`
update \`users\`
set \`accounts\` = '${JSON.stringify(oldMoneyJson)}'
where \`identifier\` = '${uid}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
res.json({ code: 200, message: "Changed." })
}
}
}
let logMessage = ""
if (Number(newValue) > Number(oldValue)) {
logMessage = `added ${Number(newValue) - Number(oldValue)}${type.toLowerCase() !== "crypto" ? "$" : ""} as ${type.toLowerCase()}`
} else if (Number(newValue) < Number(oldValue)) {
logMessage = `removed ${Number(oldValue) - Number(newValue)}${type.toLowerCase() !== "crypto" ? "$" : ""} as ${type.toLowerCase()}`
}
let result = await query(`INSERT INTO \`madmin_logs\` (\`type\`, \`author\`, \`message\`, \`date\`, \`player_uid\`) VALUES ('money', '${userName}', '${logMessage.replaceAll("'", "\\'")}', '${moment(Date.now()).format("DD.MM.YYYY HH:mm")}', '${uid}')`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
}
async function changeSocietyMoney(job, newValue, res, oldValue, userName, uid) {
let logMessage = ""
if (Number(newValue) > Number(oldValue)) {
logMessage = `added ${Number(newValue) - Number(oldValue)}$ as society`
} else if (Number(newValue) < Number(oldValue)) {
logMessage = `removed ${Number(oldValue) - Number(newValue)}$ as society`
}
let result = await query(`INSERT INTO \`madmin_logs\` (\`type\`, \`author\`, \`message\`, \`date\`, \`player_uid\`) VALUES ('money', '${userName}', '${logMessage.replaceAll("'", "\\'")}', '${moment(Date.now()).format("DD.MM.YYYY HH:mm")}', '${uid}')`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
if (config.Framework.includes("qb")) {
const oldValue = LV.Society.GetAccountMoney(job)
if (Number(oldValue) > newValue) {
LV.Society.RemoveMoney(job, Number(oldValue) - newValue)
} else {
LV.Society.AddMoney(job, newValue - Number(oldValue))
}
} else {
let result = await query(`
update \`addon_account_data\`
set \`money\` = ${newValue}
where \`account_name\` = 'society_${job}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
}
res.json({ code: 200, message: "Changed." })
}
app.use("/changePlayerMoneys.lvorex", express.json())
app.post("/changePlayerMoneys.lvorex", async (req, res) => {
const postBody = req.body
const { keyFound, userKey } = await controlKey(req, postBody.key)
if (keyFound === false) return res.json({ code: 404, message: "Not authorized." })
const PermissionCheck = await checkPermission(userKey.rank, "Players", 11)
if (!PermissionCheck) return res.json({ code: 401, message: "Your rank is not enough." })
if (postBody.type.toLowerCase() !== "society") {
await changePlayerNormalMoney(postBody.type, Number(postBody.newValue), Number(postBody.playerId), res, postBody.uid, postBody.oldValue, userKey.userName)
return
} else {
await changeSocietyMoney(postBody.job, Number(postBody.newValue), res, postBody.oldValue, userKey.userName, postBody.uid)
return
}
})