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

52 lines
1.6 KiB
JavaScript

/*
@Packet name MainPlayer
@Packet identifier 128
@Description Sends the connected main player's data
@Data pId,
@Structure -
*/
module.exports = function (data) {
// const guildTag = data.guildTag;
const packetLength = 52 + 1; // (guildTag ? 51 : 48) + 1;
const buffer = new ArrayBuffer(packetLength);
const view = new DataView(buffer);
view.setUint8(0, 128);
view.setUint8(1, packetLength);
view.setUint32(2, data.id);
view.setUint32(6, data.hp.current);
view.setUint32(10, data.hp.maximum);
view.setUint16(14, data.position.x);
view.setUint16(16, data.position.y);
view.setUint16(18, data.speed);
view.setUint8(20, data.mapID);
view.setUint16(21, data.textureID);
view.setUint16(23, data.harpoonerRange);
view.setUint16(25, data.cannonRange)
view.setUint8(27, +data.isSpeedLowered)
view.setUint8(28, +data.isRepairing)
view.setUint16(29, data.pirateLevel);
view.setUint16(31, data.eliteLevel);
view.setUint16(33, data.fishingLevel);
view.setUint8(35, data.globalRank);
view.setUint8(36, data.levelRank);
const nameBuffer = Buffer.from(data.name);
for (const pair of nameBuffer.entries()) {
const index = pair[0];
view.setUint8(37 + index, pair[1]);
};
/*
if (guildTag) {
const guildBuffer = Buffer.from(guildTag);
for (const pair of guildBuffer.entries()) {
const index = pair[0];
view.setUint8(49 + index, pair[1]);
};
};
*/
return buffer;
};