Initial commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
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();
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user