Advertisement
BenSyt

Cursors.io client

Jun 8th, 2021 (edited)
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <h1> Cursors.io development program </h1><div style="border: 10px solid #000000; margin: 20px auto 10px auto; padding: 0; width: 800px; height: 600px;"><canvas id="cursor" style="width: 800px; height: 600px;" width="800" height="600"></canvas></div><p id="ponline" style="text-align:center"></p> <script>
  2.     const ws = new WebSocket('wss://websocketproxy-1.bens7.repl.co/');
  3.     var img = document.createElement("img");
  4. img.crossOrigin="anonymous";
  5.  img.src="https://raw.githubusercontent.com/BenS12362/Cursorsiopicture/main/cursor.png";
  6.  // zursor master parser functions see i stole code lol
  7. // updated may 26, 2019
  8. zM = {};//added by ME
  9. window.drawings = [];
  10. window.clicks = [];
  11. var players = [];
  12. var x,y;
  13. zM.ease = function(n, o, upd) {
  14.         var dist = n - o,
  15.             prog = (Date.now() - upd) / 100,
  16.             maxMin = Math.min(Math.max(0, prog), 1);
  17.  
  18.         return o + (maxMin ** 2 * (3 - 2 * maxMin)) * dist;
  19.     }
  20. zM.parse = {
  21.     /**
  22.      * Returns an array as [local, players, offset]
  23.      */
  24.     cursors: function(buffer, offset) {
  25.         var dat = new DataView(buffer);
  26.         var local = dat.getUint16(offset, true);
  27.  
  28.         offset += 2;
  29.  
  30.         var players = [];
  31.         for (var i = 0; i < local; ++i) {
  32.         if(window.id === dat.getUint32(offset, true)){window.x=dat.getUint16(offset + 4, true);window.y=dat.getUint16(offset + 6, true);}
  33.             players.push({
  34.                 id: dat.getUint32(offset, true),
  35.                 x: dat.getUint16(offset + 4, true),
  36.                 y: dat.getUint16(offset + 6, true),
  37.             });
  38.             offset += 8;
  39.         }
  40.  
  41.         return [local, players, offset];
  42.     },
  43.  
  44.     /**
  45.      * Returns an array as [clicks, offset]
  46.      */
  47.     clicks: function(buffer, offset) {
  48.         var dat = new DataView(buffer);
  49.        
  50.         var count = dat.getUint16(offset, true);
  51.         var clicks = [];
  52.  
  53.         offset += 2;
  54.         for (var i = 0; i < count; ++i) {
  55.             clicks.push({
  56.                 x: dat.getUint16(offset, true),
  57.                 y: dat.getUint16(offset + 2, true),
  58.                 time: Date.now()
  59.             });
  60.             offset += 4;
  61.         }
  62.  
  63.         return [clicks, offset];
  64.     },
  65.  
  66.     /**
  67.      * Returns an array as [clicks, offset]
  68.      */
  69.     drawing: function(buffer, offset) {
  70.         var dat = new DataView(buffer);
  71.        
  72.         var count = dat.getUint16(offset, true);
  73.         var drawings = [];
  74.  
  75.         offset += 2;
  76.         for (var i = 0; i < count; ++i) {
  77.             drawings.push({
  78.                 x: dat.getUint16(offset, true),
  79.                 y: dat.getUint16(offset + 2, true),
  80.                 x2: dat.getUint16(offset + 4, true),
  81.                 y2: dat.getUint16(offset + 6, true),
  82.                 time: Date.now()
  83.             });
  84.             offset += 8;
  85.         }
  86.  
  87.         return [drawings, offset];
  88.     },
  89.  
  90.     /**
  91.      * Returns an array as [ids, offset]
  92.      */
  93.     remove: function(buffer, offset) {
  94.         var dat = new DataView(buffer);
  95.  
  96.         var count = dat.getUint16(offset, true);
  97.         var ids = [];
  98.  
  99.         offset += 2;
  100.         for (var i = 0; i < count; ++i) {
  101.             ids.push(dat.getUint32(offset, true));
  102.             offset += 4;
  103.         }
  104.  
  105.         return [ids, offset];
  106.     },
  107.  
  108.     /**
  109.      * Parses objdata (string) and outputs as objects.
  110.      */
  111.     objData: function(objdata) {
  112.         var obj = objdata;
  113.         var nObj = [];
  114.  
  115.         for (var i = 0; i < obj.length; ++i) {
  116.             var nO = {};
  117.             obj[i] = obj[i].split(/\.+/g);
  118.             nO.id = parseInt(obj[i].shift());
  119.             var type = obj[i].shift();
  120.             switch (type) {
  121.                 case '0':
  122.                     nO.type = 0;
  123.                     nO.x = parseInt(obj[i].shift());
  124.                     nO.y = parseInt(obj[i].shift());
  125.                     nO.size = parseInt(obj[i].shift());
  126.                     nO.isCentered = obj[i].shift() === 'false'?false:true;
  127.  
  128.                     nO.content = obj[i].join('');
  129.                     break;
  130.                 case '1':
  131.                     nO.type = 1;
  132.                     nO.x = parseInt(obj[i].shift());
  133.                     nO.y = parseInt(obj[i].shift());
  134.                     nO.w = parseInt(obj[i].shift());
  135.                     nO.h = parseInt(obj[i].shift());
  136.                     nO.color = obj[i].shift();
  137.                     break;
  138.                 case '2':
  139.                     nO.type = 2;
  140.                     nO.x = parseInt(obj[i].shift());
  141.                     nO.y = parseInt(obj[i].shift());
  142.                     nO.w = parseInt(obj[i].shift());
  143.                     nO.h = parseInt(obj[i].shift());
  144.                     nO.isBad = obj[i].shift()==='false'?false:true;
  145.                     break;
  146.                 case '3':
  147.                     nO.type = 3;
  148.                     nO.x = parseInt(obj[i].shift());
  149.                     nO.y = parseInt(obj[i].shift());
  150.                     nO.w = parseInt(obj[i].shift());
  151.                     nO.h = parseInt(obj[i].shift());
  152.                     nO.count = parseInt(obj[i].shift());
  153.                     nO.color = obj[i].shift();
  154.                     break;
  155.                 case '4':
  156.                     nO.type = 4;
  157.                     nO.x = parseInt(obj[i].shift());
  158.                     nO.y = parseInt(obj[i].shift());
  159.                     nO.w = parseInt(obj[i].shift());
  160.                     nO.h = parseInt(obj[i].shift());
  161.                     nO.count = parseInt(obj[i].shift());
  162.                     nO.color = obj[i].shift();
  163.                     nO.lastClickAt = 0;
  164.                     break;
  165.             }
  166.  
  167.             nObj.push(nO);
  168.         }
  169.  
  170.         return nObj;
  171.     },
  172.  
  173.     /**
  174.      * Returns an array as [objdata, offset]
  175.      * objdata is required to be further parsed with zM.parse.objData()
  176.      */
  177.     objects: function(buffer, offset) {
  178.         var dat = new DataView(buffer);
  179.  
  180.         var count = dat.getUint16(offset, true);
  181.         var objdata = [];
  182.  
  183.         offset += 2;
  184.         for (var i = 0; i < count; ++i) {
  185.             var id = dat.getUint32(offset, true);
  186.             offset += 4;
  187.             var type = dat.getUint8(offset);
  188.             var objdat = id+'.';
  189.             ++offset;
  190.             switch (type) {
  191.                 case 0:
  192.                     objdat += '0.';
  193.                     objdat += `${dat.getUint16(offset, true)}.`;
  194.                     objdat += `${dat.getUint16(offset+2, true)}.`;
  195.                     objdat += `${dat.getUint8(offset+4)}.`;
  196.                     objdat += `${!!dat.getUint8(offset+5)}.`;
  197.                     offset += 5;
  198.                     for (;1;) if (dat.getUint8(++offset) != 0) objdat += String.fromCharCode(dat.getUint8(offset));
  199.                               else break;
  200.                    
  201.                     ++offset;
  202.                     break;
  203.                 case 1:
  204.                     objdat += '1.';
  205.                     objdat += `${dat.getUint16(offset, true)}.`;
  206.                     objdat += `${dat.getUint16(offset+2, true)}.`;
  207.                     objdat += `${dat.getUint16(offset+4, true)}.`;
  208.                     objdat += `${dat.getUint16(offset+6, true)}.`;
  209.                     var color = dat.getUint32(offset+8, true).toString(16);
  210.                     for (; color.length < 6;) color = '0' + color;
  211.                     objdat += '#' + color + '.';
  212.  
  213.                     offset += 12;
  214.  
  215.                     break;
  216.  
  217.                 case 2:
  218.                     objdat += '2.';
  219.                     objdat += `${dat.getUint16(offset, true)}.`;
  220.                     objdat += `${dat.getUint16(offset+2, true)}.`;
  221.                     objdat += `${dat.getUint16(offset+4, true)}.`;
  222.                     objdat += `${dat.getUint16(offset+6, true)}.`;
  223.                     objdat += `${!!dat.getUint8(offset+8)}.`;
  224.                     offset += 9;
  225.                     break;
  226.  
  227.                 case 3:
  228.                     objdat += '3.';
  229.                     objdat += `${dat.getUint16(offset, true)}.`;
  230.                     objdat += `${dat.getUint16(offset+2, true)}.`;
  231.                     objdat += `${dat.getUint16(offset+4, true)}.`;
  232.                     objdat += `${dat.getUint16(offset+6, true)}.`;
  233.                     objdat += `${dat.getUint16(offset+8, true)}.`;
  234.                     var color = dat.getUint32(offset+10, true).toString(16);
  235.                     for (; color.length < 6;) color = '0' + color;
  236.                     objdat += '#' + color + '.';
  237.    
  238.                     offset += 14;
  239.                     break;
  240.  
  241.                 case 4:
  242.                     objdat += '4.';
  243.                     objdat += `${dat.getUint16(offset, true)}.`;
  244.                     objdat += `${dat.getUint16(offset+2, true)}.`;
  245.                     objdat += `${dat.getUint16(offset+4, true)}.`;
  246.                     objdat += `${dat.getUint16(offset+6, true)}.`;
  247.                     objdat += `${dat.getUint16(offset+8, true)}.`;
  248.                     var color = dat.getUint32(offset+10, true).toString(16);
  249.                     for (; color.length < 6;) color = '0' + color;
  250.                     objdat += '#' + color + '.';
  251.                     offset += 14;
  252.                     break;
  253.             }
  254.             objdata.push(objdat);
  255.         }
  256.  
  257.         return [objdata, offset];
  258.     }
  259. }
  260.  
  261. zM.packet = {
  262.     /**
  263.      *
  264.      * @param {array} sockets Array of sockets to move
  265.      */
  266.     moveSocket(sockets, x, y, bots) {
  267.         var buf = new ArrayBuffer(9),
  268.             dat = new DataView(buf);
  269.  
  270.         dat.setUint8(0, 1);
  271.         dat.setUint16(1, x, true);
  272.         dat.setUint16(3, y, true);
  273.         dat.setUint32(5, -1, true);
  274.         sockets.forEach(X => typeof X.send === 'function' && X.send(buf));
  275.         bots.forEach(X => {
  276.             ++X.packets.sentTotal;
  277.             ++X.packets.sentPS;
  278.             setTimeout(()=>{--X.packets.sentPS},1000);
  279.             X.packets.lastSent = Date.now();
  280.         });
  281.     },
  282.  
  283.     /**
  284.      *
  285.      * @param {array} sockets Array of sockets to click with
  286.      */
  287.     clickSocket(sockets, x, y, bots) {
  288.         var buf = new ArrayBuffer(9),
  289.             dat = new DataView(buf);
  290.  
  291.         dat.setUint8(0, 2);
  292.         dat.setUint16(1, x, true);
  293.         dat.setUint16(3, y, true);
  294.         dat.setUint32(5, -1, true);
  295.         sockets.forEach(X => typeof X.send === 'function' && X.send(buf));
  296.         bots.forEach(X => {
  297.             ++X.packets.sentTotal;
  298.             ++X.packets.sentPS;
  299.             setTimeout(()=>{--X.packets.sentPS},1000);
  300.             X.packets.lastSent = Date.now();
  301.         });
  302.     },
  303.  
  304.     /**
  305.      *
  306.      * @param {array} sockets Array of sockets to draw with
  307.      */
  308.     drawSocket(sockets, x, y, x2, y2, bots) {
  309.         var buf = new ArrayBuffer(9),
  310.             dat = new DataView(buf);
  311.  
  312.         dat.setUint8(0, 3);
  313.         dat.setUint16(1, x, true);
  314.         dat.setUint16(3, y, true);
  315.         dat.setUint16(5, x2, true);
  316.         dat.setUint16(7, y2, true);
  317.         sockets.forEach(X => typeof X.send === 'function' && (X.send(buf)));
  318.         bots.forEach(X => {
  319.             ++X.packets.sentTotal;
  320.             ++X.packets.sentPS;
  321.             setTimeout(()=>{--X.packets.sentPS},1000);
  322.             X.packets.lastSent = Date.now();
  323.         });
  324.     }
  325. }
  326. window.playersOnline = 0;
  327. window.objs = [];
  328. var abs = [];
  329. var c = document.getElementById("cursor");
  330. var a = c.getContext("2d");
  331. window.updatec = function(objs){
  332. a.fillStyle="#FFFFFF";
  333. a.fillRect(0,0,800,600);
  334. a.fillStyle="#000000";
  335. var m = objs;
  336. var t = +new Date();
  337. a.textAlign="start";
  338. for (n = 0; n < m.length; n++) {
  339.                 var b = m[n];
  340.                 if (0 == b.type) {
  341.                     a.font = b.size + "px NovaSquare";
  342.                     var c = b.x << 1,
  343.                         d = b.y << 1;
  344.                     b.isCentered && (c -= a.measureText(b.content).width / 2);
  345.                     a.fillStyle = "#000000";
  346.                     a.fillText(b.content, c, d)
  347.                 } else if (1 == b.type) a.fillStyle = b.color,
  348.                     a.fillRect(b.x << 1, b.y << 1, b.w << 1, b.h << 1), a.strokeStyle = "#000000", a.globalAlpha = .2, a.lineWidth = 2, a.strokeRect((b.x << 1) + 1, (b.y << 1) + 1, (b.w << 1) - 2, (b.h << 1) - 2), a.globalAlpha = 1;
  349.                 else if (2 == b.type) a.fillStyle = b.isBad ? "#FF0000" : "#00FF00", a.globalAlpha = .2, a.fillRect(b.x << 1, b.y << 1, b.w << 1, b.h << 1), a.globalAlpha = 1;
  350.                 else if (3 == b.type) {
  351.                     var c = b.x << 1,
  352.                         d = b.y << 1,
  353.                         f = b.w << 1,
  354.                         e = b.h << 1;
  355.                     a.fillStyle = b.color;
  356.                     a.globalAlpha = .2;
  357.                     a.fillRect(c, d, f, e);
  358.                     a.globalAlpha = .5;
  359.                     a.fillStyle = "#000000";
  360.                     40 > b.w ||
  361.                         40 > b.h ? (a.font = "30px NovaSquare", a.fillText(b.count, c + f / 2 - a.measureText(b.count).width / 2, d + e / 2 + 10)) : (a.font = "60px NovaSquare", a.fillText(b.count, c + f / 2 - a.measureText(b.count).width / 2, d + e / 2 + 20));
  362.                     a.globalAlpha = 1
  363.                 } else if (4 == b.type) {
  364.                     c = b.x << 1;
  365.                     d = b.y << 1;
  366.                     f = b.w << 1;
  367.                     e = b.h << 1;
  368.                     a.fillStyle = b.color;
  369.                     a.strokeStyle = b.color;
  370.                     a.globalAlpha = 1;
  371.                     a.fillRect(c, d, f, e);
  372.                     a.globalAlpha = .2;
  373.                     a.fillStyle = "#000000";
  374.                     a.fillRect(c, d, f, e);
  375.                     a.globalAlpha = 1;
  376.                     a.fillStyle = b.color;
  377.                     var h = false,
  378.                         g = h ? 8 : 12;
  379.                     a.fillRect(c + g,
  380.                         d + g, f - 2 * g, e - 2 * g);
  381.                     a.strokeStyle = "#000000";
  382.                     a.globalAlpha = .1;
  383.                     a.beginPath();
  384.                     a.moveTo(c, d);
  385.                     a.lineTo(c + g, d + g);
  386.                     a.moveTo(c + f, d);
  387.                     a.lineTo(c + f - g, d + g);
  388.                     a.moveTo(c, d + e);
  389.                     a.lineTo(c + g, d + e - g);
  390.                     a.moveTo(c + f, d + e);
  391.                     a.lineTo(c + f - g, d + e - g);
  392.                     a.moveTo(c, d);
  393.                     a.rect(c, d, f, e);
  394.                     a.rect(c + g, d + g, f - 2 * g, e - 2 * g);
  395.                     a.stroke();
  396.                     a.fillStyle = "#000000";
  397.                     a.globalAlpha = .5;
  398.                     50 > b.w || 50 > b.h ? (a.font = "35px NovaSquare", a.fillText(b.count, c + f / 2 - a.measureText(b.count).width / 2, d + e / 2 + 13)) : (a.font = "45px NovaSquare", a.fillText(b.count, c + f / 2 - a.measureText(b.count).width /
  399.                         2, d + e / 2 + 16));
  400.                     h && (a.fillStyle = "#000000", a.globalAlpha = .15, a.fillRect(c + g, d + g, f - 2 * g, e - 2 * g));
  401.                     a.globalAlpha = 1
  402.                 }
  403.             }}
  404. function plays(b) {
  405.     var offset = 1;
  406.     var players = [];
  407.     var local = b.getUint16(offset, !0);
  408.     offset += 2;
  409.     for (var i = 0; i < local; i++) {
  410.         players.push({
  411.             id: b.getUint32(offset, !0),
  412.             x: b.getUint16(offset + 4, !0),
  413.             y: b.getUint16(offset + 6, !0)
  414.         })
  415.     }
  416.     return players;
  417. }
  418. function objs2(dat) {
  419.     var offset = 5;
  420.     let count = dat.getUint16(offset, !0);
  421.     let objdata = [];
  422.     offset += 2;
  423.     for (let i = 0; i < count; ++i) {
  424.         let id = dat.getUint32(offset, !0);
  425.         offset += 4;
  426.         let type = dat.getUint8(offset, !1);
  427.         ++offset;
  428.         switch (type) {
  429.             case 0:
  430.                 objdata.push({
  431.                     type: 0,isCentered:!!dat.getUint8(offset+5,!1),                     x:dat.getUint16(offset,!0),
  432.                         y:dat.getUint16(offset+2,!0),
  433.                         size:dat.getUint8(offset+4,!1)
  434.                 });
  435.                 offset += 5;
  436.                 objdata[i].content = "";
  437.                 for (; 1;){
  438.                     if (dat.getUint8(++offset, !1) != 0) {
  439.                         objdata[i].content += String.fromCharCode(dat.getUint8(offset, !1));
  440.                     }
  441.                 else {
  442.                     break;
  443.                 }}
  444.                 ++offset;break;
  445.                 case 1:
  446.                 let color = dat.getUint32(offset + 8, !0).toString(16);
  447.           for (; color.length < 6;) color = '0' + color;
  448.           color2 = '#' + color;
  449.                     objdata.push({
  450.                         type: 1
  451.                         ,color:color2,                        x:dat.getUint16(offset,!0),
  452.                         y:dat.getUint16(offset+2,!0),
  453.                         w:dat.getUint16(offset+4,!0),
  454.                         h:dat.getUint16(offset+6,!0)
  455.                     });
  456.                     offset += 12;
  457.                     break;
  458.                 case 2:
  459.                     objdata.push({
  460.                         type: 2,
  461.                         isBad:!!dat.getUint8(offset+8,!1),
  462.                         x:dat.getUint16(offset,!0),
  463.                         y:dat.getUint16(offset+2,!0),
  464.                         w:dat.getUint16(offset+4,!0),
  465.                         h:dat.getUint16(offset+6,!0)
  466.                     });
  467.                     offset += 9;
  468.                     break;
  469.                 case 3:
  470.                                 let color4 = dat.getUint32(offset + 10, !0).toString(16);
  471.           for (; color4.length < 6;){ color4 = '0' + color4;}
  472.           color2 = '#' + color4;
  473.                     objdata.push({
  474.                         type: 3,                        x:dat.getUint16(offset,!0),
  475.                         y:dat.getUint16(offset+2,!0),
  476.                         w:dat.getUint16(offset+4,!0),
  477.                         h:dat.getUint16(offset+6,!0),count:dat.getUint16(offset+8, !0),color:color2
  478.                     });
  479.                     offset += 14;
  480.                     break;
  481.                 case 4:
  482.                 let color3 = dat.getUint32(offset + 10, !0).toString(16);
  483.           for (; color3.length < 6;) color3 = '0' + color3;
  484.           color2 = '#' + color3;
  485.                     objdata.push({
  486.                         type: 4,                        x:dat.getUint16(offset,!0),
  487.                         y:dat.getUint16(offset+2,!0),
  488.                         w:dat.getUint16(offset+4,!0),
  489.                         h:dat.getUint16(offset+6,!0),count:dat.getUint16(offset+8, !0),color:color2
  490.                     });
  491.                     offset += 14;
  492.                     break;
  493.         }
  494.     }
  495.     return objdata;
  496. }
  497. window.logged2=0;
  498. window.loggged=false;
  499.  function ren(plays){for(var j = 0;j<plays.length;j++){this.players = plays;
  500.  this.players[j].ox = zM.ease(this.players[j].x, this.players[j].ox, this.players[j].lastUpdate);
  501.                                     this.players[j].oy = zM.ease(this.players[j].y, this.players[j].oy, this.players[j].lastUpdate);
  502.  a.drawImage(img, this.players[j].ox*2 - 6, this.players[j].oy*2 - 6, 23, 30);}if(window.logged2<3){console.log(plays);}
  503.  window.logged2+=1;}
  504. function msg(a) {
  505.     var b = new DataView(a.data);
  506.     let len = b.byteLength;
  507.     switch (b.getUint8(0)) {
  508.         case 0:
  509.             console.log("Got id: " + b.getUint32(1, !0));
  510.             window.id = b.getUint32(1, !0);
  511.             move(300, 175);
  512.             break;
  513.         case 1:
  514.         var buf = a.data;
  515.         var dat = new DataView(a.data);
  516.             window.playersOnline = b.getUint32(len - 4, !0);
  517.             document.getElementById("ponline").innerHTML = "Players online: " + b.getUint32(len - 4, !0);
  518.                                     var out = zM.parse.cursors(buf, 1);
  519.                         this.local = out.shift();
  520.                         var players = out.shift();
  521.                         var idsHere = [];
  522.                         // create players for all new ids
  523.                         for (var i = 0; i < players.length; ++i) {
  524.                             if (players[i].id === this.id) this.realX = players[i].x, this.realY = players[i].y;
  525.                             var index = -1;
  526.                             for (var j = 0; j < this.players.length; ++j) {
  527.                                 if (this.players[j].id === players[i].id) {index = j; break;}
  528.                             }
  529.                             if (index === -1) this.players.push({
  530.                                 x: players[i].x,
  531.                                 y: players[i].y,
  532.                                 lastUpdate: Date.now(),
  533.                                 ox: players[i].x,
  534.                                 oy: players[i].y,
  535.                                 id: players[i].id
  536.                             });
  537.                         }
  538.                         for (var i = 0; i < players.length; ++i) {
  539.                             for (var j = 0; j < this.players.length; ++j) {
  540.                                 if (this.players[j].id === players[i].id) {
  541.                                     this.players[j].ox = this.players[i].ox
  542.                                     this.players[j].oy = this.players[i].oy
  543.                                     this.players[j].x = players[i].x;
  544.                                     this.players[j].y = players[i].y;
  545.                                     this.players[j].lastUpdate = Date.now();
  546.                                     idsHere.push(players[i].id);
  547.                                 }
  548.                             }
  549.                         }
  550.                         var nPl = [];
  551.                         for (var i = 0; i < idsHere.length; ++i) {
  552.                             for (var j = 0; j < this.players.length; ++j) {
  553.                                 if (idsHere[i] === this.players[j].id) nPl.push(this.players[j]);
  554.                             }
  555.                         }
  556.        
  557.                         this.players = nPl;
  558.                         var off = out.shift();
  559.        
  560.                         out = zM.parse.clicks(buf, off);
  561.                         for (;0 < out[0].length;) {
  562.                             window.clicks.push(out[0].shift());
  563.                         }
  564.         this.obj = window.objs;
  565.                         off = out.pop();
  566.                         out = zM.parse.remove(buf, off);
  567.                         for (var i = 0; i < out[0].length; ++i) {
  568.                             for (var j = 0; j < this.obj.length; ++j) {
  569.                                 if (this.obj[j].id === out[0][i]) {this.obj.splice(j, 1); break;}
  570.                             }
  571.                         }
  572.        
  573.                         off = out.pop();
  574.                            
  575.                         out = zM.parse.objects(buf, off);
  576.                         var obj = zM.parse.objData(out.shift());
  577.                         for (var i = 0; i < obj.length; ++i) {
  578.                             var index = -1;
  579.                             for (var j = 0; j < this.obj.length; ++j) {
  580.                                 if (this.obj[j].id === obj[i].id) {index = j; break;};
  581.                             }
  582.                             if (index === -1){ this.obj.push(obj[i]);}
  583.                             else {this.obj[j] = obj[i];}
  584.                         }
  585.        
  586.                         off = out.pop();
  587.        
  588.                         out = zM.parse.drawing(buf, off);
  589.        
  590.                         for (var i = 0; i < out[0].length; ++i) {
  591.                             var todo = out[0][i];
  592.                             window.drawings.push(todo);
  593.                         }
  594.         window.players = this.players;
  595.         window.objs = this.obj;
  596.                         this.online = dat.getUint32(dat.byteLength-4, true);
  597.             break;
  598.         case 4:var objs3 = objs2(b);
  599.             window.updatec(objs3);window.objs=objs3;
  600.             break;
  601.     }
  602. }
  603.  
  604. function move(x, y) {
  605.     var a = new ArrayBuffer(9);
  606.     var b = new DataView(a);
  607.     b.setUint8(0, 1);
  608.     b.setUint16(1, x, !0);
  609.     b.setUint16(3, y, !0);
  610.     b.setUint32(5, -1, !0);
  611.     ws.send(a);
  612. }
  613.  
  614. function movet(p, x, y, t = -1) {
  615.     var a = new ArrayBuffer(9);
  616.     var b = new DataView(a);
  617.     eval("b.setUint8(" + p + ");");
  618.     b.setUint16(1, x, !0);
  619.     b.setUint16(3, y, !0);
  620.     b.setUint32(5, t, !0);
  621.     ws.send(a);
  622. }
  623.  
  624. function click(x, y) {
  625.     var c = new ArrayBuffer(9),
  626.         d = new DataView(c);
  627.     d.setUint8(0, 2);
  628.     d.setUint16(1, x, !0);
  629.     d.setUint16(3, y, !0);
  630.     d.setUint32(5, -1, !0);
  631.     ws.send(c);
  632. }
  633. window.moves=[];
  634. var there = JSON.parse('[{"x":68,"y":190},{"x":71,"y":228},{"x":11,"y":233.5},{"x":12,"y":289.5},{"x":50,"y":284},{"x":45,"y":288},{"x":53,"y":273.5},{"x":172,"y":269.5},{"x":168,"y":291.5},{"x":213,"y":291.5},{"x":210,"y":228},{"x":243.5,"y":227.5},{"x":247.5,"y":290},{"x":294,"y":286.5},{"x":288.5,"y":215.5},{"x":329.5,"y":213.5},{"x":326.5,"y":291},{"x":391,"y":290.5},{"x":383,"y":50},{"x":309,"y":50},{"x":303,"y":70.5},{"x":272,"y":73},{"x":265,"y":37},{"x":8.5,"y":32},{"x":10,"y":110.5},{"x":30,"y":113},{"x":29,"y":149.5},{"x":10,"y":145},{"x":325.5,"y":145},{"x":7,"y":11.5},{"x":60,"y":7.5},{"x":60,"y":236.5},{"x":116,"y":231.5},{"x":111.5,"y":17.5},{"x":159.5,"y":15},{"x":162.5,"y":237},{"x":212.5,"y":234.5},{"x":204,"y":11},{"x":264.5,"y":10},{"x":265.5,"y":241},{"x":314,"y":236},{"x":314,"y":10.5},{"x":307,"y":7},{"x":364.5,"y":5.5},{"x":361.5,"y":231.5},{"x":394,"y":238},{"x":399,"y":287.5},{"x":311.5,"y":283.5}]');
  635. /*for(var i = 0;i<there.length;i++){move(there[i].x,there[i].y);}*/
  636.  
  637. c.addEventListener('click',function(e){
  638. move(e.offsetX/2,e.offsetY/2);
  639. window.moves.push({x:e.offsetX/2,y:e.offsetY/2});
  640. console.log(JSON.stringify(window.moves));
  641. click(e.offsetX/2,e.offsetY/2);
  642. })
  643. document.addEventListener('keydown',function(e){
  644. console.log(e.keyCode);
  645. if(e.keyCode===38){//up
  646. move(window.x,window.y-5);
  647. }
  648. else if(e.keyCode===40){//down
  649. move(window.x,window.y+5);
  650. }
  651. else if(e.keyCode===40){//down
  652. move(window.x,window.y+5);
  653. }
  654. else if(e.keyCode===37){//left
  655. move(window.x-5,window.y);
  656. }
  657. else if(e.keyCode===39){//right
  658. move(window.x-5,window.y);
  659. }})
  660.  function nocrap(){
  661.             window.updatec(window.objs);
  662.             ren(window.players);
  663.  }
  664.  setInterval(function(){requestAnimationFrame(nocrap);},15);
  665. ws.binaryType = "arraybuffer";
  666. ws.onmessage = msg; </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement