79 lines
3.1 KiB
JavaScript
79 lines
3.1 KiB
JavaScript
const GuildDataMemberPacket = require("../Packets/GuildDataMember");
|
|
const GuildMemberNewPacket = require("../Packets/GuildMemberNew");
|
|
const GuildLeaveConfirmationPacket = require("../Packets/GuildLeaveConfirmation");
|
|
const GuildDataCreationFeedbackPacket = require("../Packets/GuildDataCreationFeedback");
|
|
|
|
const Guild = require("../Game/Guild");
|
|
|
|
const Game = require("../Game/Game");
|
|
const { guilds } = Game;
|
|
|
|
const constants = require("../Data/constants");
|
|
|
|
module.exports = async function (ws, message, player) {
|
|
if (player.guild.id) return;
|
|
|
|
const memberAuthor = player.guild.getMember(player.id);
|
|
if (memberAuthor) return;
|
|
|
|
const guildTagLength = message.getUint8(1);
|
|
const guildNameLength = message.getUint8(1 + 1 + guildTagLength);
|
|
const guildDescriptionLength = message.getUint8(1 + 1 + 1 + guildTagLength + guildNameLength);
|
|
|
|
const guildTag = message.buffer.slice(2, 2 + guildTagLength);
|
|
const guildName = message.buffer.slice(2 + 1 + guildTagLength, 2 + 1 + guildTagLength + guildNameLength);
|
|
const guildDescription = message.buffer.slice(2 + 1 + 1 + guildTagLength + guildNameLength, 2 + 1 + 1 + guildNameLength + guildTagLength + guildDescriptionLength);
|
|
|
|
const guildTagBuffer = Buffer.from(guildTag);
|
|
const guildNameBuffer = Buffer.from(guildName);
|
|
const guildDescriptionBuffer = Buffer.from(guildDescription);
|
|
console.info(player.id, "???")
|
|
const guildCreateQuery = await execute("INSERT INTO guilds (tag, name, description, createdBy) VALUES (?, ?, ?, ?)", [guildTagBuffer, guildNameBuffer, guildDescriptionBuffer, player.id]);
|
|
if (!guildCreateQuery.data || guildCreateQuery.data.affectedRows !== 1) {
|
|
const guildDataCreationFeedback = {
|
|
reason: 1
|
|
};
|
|
|
|
const guildDataCreationFeedbackPacket = GuildDataCreationFeedbackPacket(guildDataCreationFeedback);
|
|
return player.map.registerIndividualNetworkPacket(player.id, guildDataCreationFeedbackPacket);
|
|
};
|
|
|
|
const guildID = guildCreateQuery.data.insertId;
|
|
console.info(guildCreateQuery, guildID, player.id)
|
|
|
|
const guild = guilds[guildID] = new Guild({
|
|
id: guildID,
|
|
name: guildNameBuffer,
|
|
tag: guildTagBuffer,
|
|
description: guildDescriptionBuffer,
|
|
ownerID: player.id,
|
|
experiencePoints: 0,
|
|
taxRates: [0, 0],
|
|
timestamps: {
|
|
taxRatesEditedAt: 0,
|
|
tagEditedAt: 0,
|
|
nameEditedAt: 0,
|
|
descriptionEditedAt: 0
|
|
}
|
|
});
|
|
|
|
player.guild = guild;
|
|
|
|
const member = {
|
|
id: player.id,
|
|
permission: 31
|
|
};
|
|
|
|
guild.addMember(member);
|
|
|
|
const guildStatePacket = GuildLeaveConfirmationPacket(true); // should rename everywhere
|
|
player.map.registerNetworkPacket(player.id, guildStatePacket);
|
|
|
|
const guildMemberNew = {
|
|
playerID: player.id,
|
|
tag: guild.tag
|
|
};
|
|
|
|
const guildMemberNewPacket = GuildMemberNewPacket(guildMemberNew);
|
|
player.map.registerNetworkPacket(player.id, guildMemberNewPacket);
|
|
}; |