58 lines
2.4 KiB
JavaScript
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();
|
|
};
|
|
}; |