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