const Game = require("../Game/Game"); const { players, guilds } = Game; const buffer = new ArrayBuffer(3 + 250); const view = new DataView(buffer); const MAXIMUM_GUILD_REQUEST_MESSAGE_LENGTH = 256; view.setUint8(0, 10); view.setUint16(1, 213); const QUERY_GUILD_REQUEST_SUBMIT = "INSERT INTO guildrequests (guildID, playerID, message) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE message = ?"; const QUERY_GUILD_REQUEST_SUBMIT_DEFAULT = "INSERT INTO guildrequests (guildID, playerID) VALUES (?, ?) ON DUPLICATE KEY UPDATE message = ?"; let str = new Array(250).fill("a").join(""); for (let i = 0, strLen = str.length; i < strLen; i++) { const charCode = str.charCodeAt(i); view.setUint8(3 + i, charCode); }; module.exports = function (ws, message, player) { const guildID = view.getUint16(1); const guild = guilds[guildID]; if (!guild) return; const playerID = 45; // player.id const requestingPlayer = players[playerID]; // if (!requestingPlayer) return; // if (requestingPlayer.guild) return console.log("has guild, can't request"); if (guild.hasRequested(playerID)) return console.log("has already requested"); const requestMessageLength = view.byteLength - 3; console.log(requestMessageLength) if (requestMessageLength > MAXIMUM_GUILD_REQUEST_MESSAGE_LENGTH) return console.log("request message length is > 256"); const requestMessage = view.byteLength > 3 ? view.buffer.slice(3, view.byteLength) : null; const isRequestSuccessful = guild.addRequest(playerID, requestMessage); if (!isRequestSuccessful) return console.log("request was unsuccessful"); const query = view.byteLength > 3 ? QUERY_GUILD_REQUEST_SUBMIT : QUERY_GUILD_REQUEST_SUBMIT_DEFAULT; const queryParameters = view.byteLength > 3 ? [guildID, playerID, requestMessage, requestMessage] : [guildID, playerID, requestMessage]; console.log(requestMessage) db.execute(query, queryParameters).then(_ => console.log("guild request is in the db")); };