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