Initial commit
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
const GuildSearchResultPacket = require("../Packets/GuildSearchResult");
|
||||
|
||||
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;
|
||||
|
||||
const dec = new TextDecoder();
|
||||
|
||||
module.exports = async function (ws, message, player) {
|
||||
const guildTagLength = message.getUint8(1);
|
||||
const guildNameLength = message.getUint8(1 + guildTagLength + 1);
|
||||
if (!guildTagLength && !guildNameLength) return;
|
||||
|
||||
const guildTagView = new DataView(message.buffer, 2, guildTagLength);
|
||||
const guildTag = dec.decode(guildTagView);
|
||||
|
||||
const guildNameView = new DataView(message.buffer, 2 + guildTagLength + 1, guildNameLength);
|
||||
const guildName = dec.decode(guildNameView);
|
||||
|
||||
const guildSearchResult = await execute("SELECT guilds.id, guilds.tag, guilds.name, d.size AS size, CASE WHEN guildrequests.playerID IS NULL THEN 0 ELSE 1 END AS hasApplied FROM guilds LEFT JOIN guildrequests ON guilds.id = guildrequests.guildID AND guildrequests.playerID = ? JOIN (SELECT guildID, COUNT(*) AS size FROM guildmembers GROUP BY guildID) AS d ON guilds.id = d.guildID WHERE guilds.tag = ? OR guilds.name LIKE ?", [player.id, guildTag, + `%${guildName}%`]);
|
||||
if (!guildSearchResult.data) return;
|
||||
|
||||
const packets = [];
|
||||
|
||||
const length = guildSearchResult.data.length;
|
||||
if (!length) {
|
||||
const guildSearchResult = {
|
||||
id: 0,
|
||||
tag: "",
|
||||
name: "",
|
||||
size: {
|
||||
current: 0,
|
||||
maximum: 0
|
||||
},
|
||||
hasApplied: false,
|
||||
isLastEntry: true
|
||||
};
|
||||
|
||||
const guildSearchResultPacket = GuildSearchResultPacket(guildSearchResult);
|
||||
packets.push(guildSearchResultPacket);
|
||||
} else {
|
||||
guildSearchResult.data.forEach((g, i) => {
|
||||
const guild = guilds[g.id];
|
||||
const sizeMaximum = guild ? guild.sizeMaximum : 0;
|
||||
|
||||
const guildSearchResult = {
|
||||
id: g.id,
|
||||
tag: g.tag,
|
||||
name: g.name,
|
||||
size: {
|
||||
current: g.size,
|
||||
maximum: sizeMaximum
|
||||
},
|
||||
hasApplied: g.hasApplied,
|
||||
isLastEntry: i === length - 1
|
||||
};
|
||||
|
||||
const guildSearchResultPacket = GuildSearchResultPacket(guildSearchResult);
|
||||
packets.push(guildSearchResultPacket);
|
||||
});
|
||||
};
|
||||
|
||||
player.map.registerIndividualNetworkPacket(player.id, packets);
|
||||
};
|
||||
Reference in New Issue
Block a user