Files
2026-08-24 22:20:36 +02:00

58 lines
2.4 KiB
JavaScript

const GuildDataEconomyDonatedPacket = require("../Packets/GuildDataEconomyDonated");
const Game = require("../Game/Game");
module.exports = async function (ws, message, player) {
if (!player.guild.id) return;
if (player.pirateLevel < 10) return console.info("pirate level donate");
const categoryID = 1;
const resourceID = message.getUint8(1);
const amount = message.getUint32(2);
const playerEconomy = player.inventory.getEconomy();
const economyResource = playerEconomy.find(r => r.id === resourceID);
if (economyResource.amount < amount) return console.info("not enough resource", economyResource);
const guildEconomy = player.guild.bank.list.getElement(resourceID);
if (!guildEconomy) return;
let dbConnection = null;
try {
dbConnection = await db.getConnection();
await dbConnection.beginTransaction();
await dbConnection.execute("INSERT INTO resources (playerID, categoryID, itemID, amount) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE amount = ?", [player.id, categoryID, resourceID, economyResource.amount - amount, economyResource.amount - amount]);
await dbConnection.execute("INSERT INTO guildresources (guildID, categoryID, itemID, amount) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE amount = ?", [player.guild.id, categoryID, resourceID, guildEconomy.amount + amount, guildEconomy.amount + amount]);
await dbConnection.commit();
const amountCapped = player.inventory.alterAmount(categoryID, resourceID, amount);
const resource = {
categoryID,
id: resourceID,
amount: amountCapped
};
player.guild.bank.depositTax(resource);
console.info("success desposit", resource);
const topic = Game.getTopic(player.guild.topic);
const guildDataEconomyDonatedPacket = GuildDataEconomyDonatedPacket(resource);
topic.push(guildDataEconomyDonatedPacket);
} catch (e) {
console.info(e)
await dbConnection.rollback();
const resource = {
categoryID,
id: resourceID,
amount: 0
};
const guildDataEconomyDonatedPacket = GuildDataEconomyDonatedPacket(resource);
player.map.registerIndividualNetworkPacket(player.id, guildDataEconomyDonatedPacket);
} finally {
dbConnection.release();
};
};