Initial commit
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
const GuildMemberOldPacket = require("../Packets/GuildMemberOld");
|
||||
const GuildLeaveConfirmationPacket = require("../Packets/GuildLeaveConfirmation");
|
||||
const GuildDataMemberRemovedPacket = require("../Packets/GuildDataMemberRemoved");
|
||||
|
||||
const queries = require("../Data/queries");
|
||||
const { QUERY_DELETE_GUILD_MEMBER } = queries;
|
||||
|
||||
const constants = require("../Data/constants");
|
||||
const { GUILD_PERMISSIONS } = constants;
|
||||
const { GUILD_PERMISSION_KICK } = GUILD_PERMISSIONS;
|
||||
|
||||
const Game = require("../Game/Game");
|
||||
const { players, guilds } = Game;
|
||||
|
||||
module.exports = async function (ws, message, player) {
|
||||
const playerID = message.getUint32(1);
|
||||
|
||||
const targetKickPlayer = players[playerID];
|
||||
const guild = targetKickPlayer ? targetKickPlayer.guild : player.guild;
|
||||
|
||||
const targetMember = guild.getMember(playerID);
|
||||
if (!targetMember) return;
|
||||
|
||||
const authorMember = guild.getMember(player.id);
|
||||
if (!authorMember) return;
|
||||
|
||||
const permissionKick = authorMember.permission & GUILD_PERMISSION_KICK;
|
||||
if (playerID !== player.id && !permissionKick) return;
|
||||
if (playerID === player.id && guild.isLeader(playerID)) return;
|
||||
|
||||
const kickResultQuery = await execute(QUERY_DELETE_GUILD_MEMBER, [playerID, 0]);
|
||||
if (!kickResultQuery.data || kickResultQuery.data.affectedRows !== 1) return;
|
||||
|
||||
guild.removeMember(playerID);
|
||||
|
||||
const guildDataMemberRemoved = {
|
||||
id: playerID
|
||||
};
|
||||
|
||||
const guildDataMemberRemovedPacket = GuildDataMemberRemovedPacket(guildDataMemberRemoved);
|
||||
// player.map.registerIndividualNetworkPacket(player.id, guildDataMemberRemovedPacket);
|
||||
const topic = Game.getTopic(guild.topic);
|
||||
topic.push(guildDataMemberRemovedPacket);
|
||||
|
||||
if (!targetKickPlayer) return;
|
||||
|
||||
targetKickPlayer.topics.removeItem(targetKickPlayer.guild.topic);
|
||||
console.info("removed guild topic from player", targetKickPlayer.guild.topic);
|
||||
targetKickPlayer.guild = guilds[0];
|
||||
|
||||
const guildLeaveConfirmation = GuildLeaveConfirmationPacket(false);
|
||||
targetKickPlayer.map.registerIndividualNetworkPacket(playerID, guildLeaveConfirmation);
|
||||
|
||||
const guildMemberOld = { playerID };
|
||||
const guildMemberOldPacket = GuildMemberOldPacket(guildMemberOld);
|
||||
targetKickPlayer.map.registerNetworkPacket(playerID, guildMemberOldPacket);
|
||||
};
|
||||
Reference in New Issue
Block a user