91 lines
3.1 KiB
JavaScript
91 lines
3.1 KiB
JavaScript
const GuildMemberNewPacket = require("../Packets/GuildMemberNew");
|
|
const GuildDataMemberPacket = require("../Packets/GuildDataMember");
|
|
const GuildLeaveConfirmationPacket = require("../Packets/GuildLeaveConfirmation");
|
|
const GuildDataApplicantRemovePacket = require("../Packets/GuildDataApplicantRemove");
|
|
|
|
const LEVELS = require("../Data/levels");
|
|
|
|
const queries = require("../Data/queries");
|
|
const { QUERY_FETCH_GUILD_OFFLINE_MEMBERS } = queries;
|
|
|
|
const Game = require("../Game/Game");
|
|
const { players } = Game;
|
|
|
|
module.exports = async function (ws, message, player) {
|
|
if (!player.guild.id) return
|
|
|
|
const playerID = message.getUint32(1);
|
|
const guild = player.guild;
|
|
|
|
const isRequested = guild.hasRequested(playerID);
|
|
if (!isRequested) return
|
|
|
|
const acceptedMember = {
|
|
id: playerID
|
|
};
|
|
|
|
const isAcceptSuccessful = guild.addMember(acceptedMember);
|
|
if (!isAcceptSuccessful) return;
|
|
|
|
const topic = Game.getTopic(guild.topic);
|
|
|
|
const onlinePlayer = players[playerID];
|
|
if (onlinePlayer) {
|
|
onlinePlayer.guild = guild;
|
|
|
|
const guildMemberNew = {
|
|
playerID: onlinePlayer.id,
|
|
tag: player.guild.tag
|
|
};
|
|
|
|
const guildMemberStateConfirmation = GuildLeaveConfirmationPacket(true);
|
|
onlinePlayer.map.registerIndividualNetworkPacket(playerID, guildMemberStateConfirmation);
|
|
|
|
const packet = GuildMemberNewPacket(guildMemberNew);
|
|
onlinePlayer.map.registerNetworkPacket(onlinePlayer.id, packet);
|
|
|
|
const guildDataMember = {
|
|
id: onlinePlayer.id,
|
|
permission: 0,
|
|
isOnline: true,
|
|
pirateLevel: onlinePlayer.pirateLevel,
|
|
name: onlinePlayer.name
|
|
};
|
|
|
|
const guildMemberPacket = GuildDataMemberPacket(guildDataMember);
|
|
topic.push(guildMemberPacket);
|
|
|
|
const guildDataApplicantRemove = {
|
|
id: playerID
|
|
};
|
|
|
|
const guildDataApplicantRemovePacket = GuildDataApplicantRemovePacket(guildDataApplicantRemove);
|
|
topic.push(guildDataApplicantRemovePacket);
|
|
} else {
|
|
const offlinePlayerQuery = await execute(QUERY_FETCH_GUILD_OFFLINE_MEMBERS, [playerID]);
|
|
if (!offlinePlayerQuery.data) return;
|
|
|
|
const { username, amount } = offlinePlayerQuery.data[0];
|
|
|
|
const guildDataMember = {
|
|
id: playerID,
|
|
permission: 0,
|
|
isOnline: false,
|
|
pirateLevel: LEVELS.pirateLevel(amount),
|
|
name: username
|
|
};
|
|
|
|
const guildMemberPacket = GuildDataMemberPacket(guildDataMember);
|
|
topic.push(guildMemberPacket);
|
|
|
|
const guildDataApplicantRemove = {
|
|
id: playerID
|
|
};
|
|
|
|
const guildDataApplicantRemovePacket = GuildDataApplicantRemovePacket(guildDataApplicantRemove);
|
|
topic.push(guildDataApplicantRemovePacket);
|
|
};
|
|
|
|
await execute("INSERT INTO guildmembers (playerID, guildID) VALUES (?, ?)", [playerID, guild.id]);
|
|
await execute("DELETE FROM guildrequests WHERE playerID = ?", [playerID]);
|
|
}; |