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 } })