Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // zursor master parser functions
- // updated may 26, 2019
- zM.dependenciesLoaded |= 0b010000;
- zM.parse = {
- /**
- * Returns an array as [local, players, offset]
- */
- cursors: function(buffer, offset) {
- var dat = new DataView(buffer);
- var local = dat.getUint16(offset, true);
- offset += 2;
- var players = [];
- for (var i = 0; i < local; ++i) {
- players.push({
- id: dat.getUint32(offset, true),
- x: dat.getUint16(offset + 4, true),
- y: dat.getUint16(offset + 6, true),
- });
- offset += 8;
- }
- return [local, players, offset];
- },
- /**
- * Returns an array as [clicks, offset]
- */
- clicks: function(buffer, offset) {
- var dat = new DataView(buffer);
- var count = dat.getUint16(offset, true);
- var clicks = [];
- offset += 2;
- for (var i = 0; i < count; ++i) {
- clicks.push({
- x: dat.getUint16(offset, true),
- y: dat.getUint16(offset + 2, true),
- time: Date.now()
- });
- offset += 4;
- }
- return [clicks, offset];
- },
- /**
- * Returns an array as [clicks, offset]
- */
- drawing: function(buffer, offset) {
- var dat = new DataView(buffer);
- var count = dat.getUint16(offset, true);
- var drawings = [];
- offset += 2;
- for (var i = 0; i < count; ++i) {
- drawings.push({
- x: dat.getUint16(offset, true),
- y: dat.getUint16(offset + 2, true),
- x2: dat.getUint16(offset + 4, true),
- y2: dat.getUint16(offset + 6, true),
- time: Date.now()
- });
- offset += 8;
- }
- return [drawings, offset];
- },
- /**
- * Returns an array as [ids, offset]
- */
- remove: function(buffer, offset) {
- var dat = new DataView(buffer);
- var count = dat.getUint16(offset, true);
- var ids = [];
- offset += 2;
- for (var i = 0; i < count; ++i) {
- ids.push(dat.getUint32(offset, true));
- offset += 4;
- }
- return [ids, offset];
- },
- /**
- * Parses objdata (string) and outputs as objects.
- */
- objData: function(objdata) {
- var obj = objdata;
- var nObj = [];
- for (var i = 0; i < obj.length; ++i) {
- var nO = {};
- obj[i] = obj[i].split(/\.+/g);
- nO.id = parseInt(obj[i].shift());
- var type = obj[i].shift();
- switch (type) {
- case '0':
- nO.type = 0;
- nO.x = parseInt(obj[i].shift());
- nO.y = parseInt(obj[i].shift());
- nO.size = parseInt(obj[i].shift());
- nO.isCentered = obj[i].shift() === 'false'?false:true;
- nO.content = obj[i].join('');
- break;
- case '1':
- nO.type = 1;
- nO.x = parseInt(obj[i].shift());
- nO.y = parseInt(obj[i].shift());
- nO.w = parseInt(obj[i].shift());
- nO.h = parseInt(obj[i].shift());
- nO.color = obj[i].shift();
- break;
- case '2':
- nO.type = 2;
- nO.x = parseInt(obj[i].shift());
- nO.y = parseInt(obj[i].shift());
- nO.w = parseInt(obj[i].shift());
- nO.h = parseInt(obj[i].shift());
- nO.isBad = obj[i].shift()==='false'?false:true;
- break;
- case '3':
- nO.type = 3;
- nO.x = parseInt(obj[i].shift());
- nO.y = parseInt(obj[i].shift());
- nO.w = parseInt(obj[i].shift());
- nO.h = parseInt(obj[i].shift());
- nO.count = parseInt(obj[i].shift());
- nO.color = obj[i].shift();
- break;
- case '4':
- nO.type = 4;
- nO.x = parseInt(obj[i].shift());
- nO.y = parseInt(obj[i].shift());
- nO.w = parseInt(obj[i].shift());
- nO.h = parseInt(obj[i].shift());
- nO.count = parseInt(obj[i].shift());
- nO.color = obj[i].shift();
- nO.lastClickAt = 0;
- break;
- }
- nObj.push(nO);
- }
- return nObj;
- },
- /**
- * Returns an array as [objdata, offset]
- * objdata is required to be further parsed with zM.parse.objData()
- */
- objects: function(buffer, offset) {
- var dat = new DataView(buffer);
- var count = dat.getUint16(offset, true);
- var objdata = [];
- offset += 2;
- for (var i = 0; i < count; ++i) {
- var id = dat.getUint32(offset, true);
- offset += 4;
- var type = dat.getUint8(offset);
- var objdat = id+'.';
- ++offset;
- switch (type) {
- case 0:
- objdat += '0.';
- objdat += `${dat.getUint16(offset, true)}.`;
- objdat += `${dat.getUint16(offset+2, true)}.`;
- objdat += `${dat.getUint8(offset+4)}.`;
- objdat += `${!!dat.getUint8(offset+5)}.`;
- offset += 5;
- for (;1;) if (dat.getUint8(++offset) != 0) objdat += String.fromCharCode(dat.getUint8(offset));
- else break;
- ++offset;
- break;
- case 1:
- objdat += '1.';
- objdat += `${dat.getUint16(offset, true)}.`;
- objdat += `${dat.getUint16(offset+2, true)}.`;
- objdat += `${dat.getUint16(offset+4, true)}.`;
- objdat += `${dat.getUint16(offset+6, true)}.`;
- var color = dat.getUint32(offset+8, true).toString(16);
- for (; color.length < 6;) color = '0' + color;
- objdat += '#' + color + '.';
- offset += 12;
- break;
- case 2:
- objdat += '2.';
- objdat += `${dat.getUint16(offset, true)}.`;
- objdat += `${dat.getUint16(offset+2, true)}.`;
- objdat += `${dat.getUint16(offset+4, true)}.`;
- objdat += `${dat.getUint16(offset+6, true)}.`;
- objdat += `${!!dat.getUint8(offset+8)}.`;
- offset += 9;
- break;
- case 3:
- objdat += '3.';
- objdat += `${dat.getUint16(offset, true)}.`;
- objdat += `${dat.getUint16(offset+2, true)}.`;
- objdat += `${dat.getUint16(offset+4, true)}.`;
- objdat += `${dat.getUint16(offset+6, true)}.`;
- objdat += `${dat.getUint16(offset+8, true)}.`;
- var color = dat.getUint32(offset+10, true).toString(16);
- for (; color.length < 6;) color = '0' + color;
- objdat += '#' + color + '.';
- offset += 14;
- break;
- case 4:
- objdat += '4.';
- objdat += `${dat.getUint16(offset, true)}.`;
- objdat += `${dat.getUint16(offset+2, true)}.`;
- objdat += `${dat.getUint16(offset+4, true)}.`;
- objdat += `${dat.getUint16(offset+6, true)}.`;
- objdat += `${dat.getUint16(offset+8, true)}.`;
- var color = dat.getUint32(offset+10, true).toString(16);
- for (; color.length < 6;) color = '0' + color;
- objdat += '#' + color + '.';
- offset += 14;
- break;
- }
- objdata.push(objdat);
- }
- return [objdata, offset];
- }
- }
- zM.packet = {
- /**
- *
- * @param {array} sockets Array of sockets to move
- */
- moveSocket(sockets, x, y, bots) {
- var buf = new ArrayBuffer(9),
- dat = new DataView(buf);
- dat.setUint8(0, 1);
- dat.setUint16(1, x, true);
- dat.setUint16(3, y, true);
- dat.setUint32(5, -1, true);
- sockets.forEach(X => typeof X.send === 'function' && X.send(buf));
- bots.forEach(X => {
- ++X.packets.sentTotal;
- ++X.packets.sentPS;
- setTimeout(()=>{--X.packets.sentPS},1000);
- X.packets.lastSent = Date.now();
- });
- },
- /**
- *
- * @param {array} sockets Array of sockets to click with
- */
- clickSocket(sockets, x, y, bots) {
- var buf = new ArrayBuffer(9),
- dat = new DataView(buf);
- dat.setUint8(0, 2);
- dat.setUint16(1, x, true);
- dat.setUint16(3, y, true);
- dat.setUint32(5, -1, true);
- sockets.forEach(X => typeof X.send === 'function' && X.send(buf));
- bots.forEach(X => {
- ++X.packets.sentTotal;
- ++X.packets.sentPS;
- setTimeout(()=>{--X.packets.sentPS},1000);
- X.packets.lastSent = Date.now();
- });
- },
- /**
- *
- * @param {array} sockets Array of sockets to draw with
- */
- drawSocket(sockets, x, y, x2, y2, bots) {
- var buf = new ArrayBuffer(9),
- dat = new DataView(buf);
- dat.setUint8(0, 3);
- dat.setUint16(1, x, true);
- dat.setUint16(3, y, true);
- dat.setUint16(5, x2, true);
- dat.setUint16(7, y2, true);
- sockets.forEach(X => typeof X.send === 'function' && (X.send(buf)));
- bots.forEach(X => {
- ++X.packets.sentTotal;
- ++X.packets.sentPS;
- setTimeout(()=>{--X.packets.sentPS},1000);
- X.packets.lastSent = Date.now();
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement