Files
2026-08-24 22:20:36 +02:00

57 lines
2.4 KiB
JavaScript

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