- // ==UserScript==
- // @name OWOP Plot Bot
- // @namespace lol
- // @description hax
- // @version 1
- // @author Bela, modified by ucrain3
- // @include http://www.ourworldofpixels.com/*
- // @run-at document-start
- // @grant GM_getValue
- // @grant GM_setValue
- // ==/UserScript==
- var lastcursorx = 0;
- var lastcursory = 0;
- var undefPut = true;
- var canNext = true;
- var offX = 0;
- var offY = 0;
- var tSkip = 30;
- var lastMap = -1;
- var randShuf = 1;
- var randShufA = [1,3,17,15,33,63,31];
- var randOffset = 0;
- var randRev = 1;
- var preRender = null;
-
- var rArray = [
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
- ];
- var gArray = [
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
- ];
- var bArray = [
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
- ];
-
- window.addEventListener('keyup', function(e)
- {
- var key = e.keyCode || e.which;
- if(key == 90)
- {
- canNext = true;
- }
- else if(key == 87)
- {
- offY -= 1;
- }
- else if(key == 83)
- {
- offY += 1;
- }
- else if(key == 68)
- {
- offX += 1;
- }
- else if(key == 65)
- {
- offX -= 1;
- }
- });
-
- function loop()
- {
- tSkip -= 1;
- if(tSkip < 0)
- {
- tSkip = 0;
- }
- if(!canNext || typeof socket == "undefined" || tSkip > 0)
- {
- return;
- }
- canNext = false;
- if(!undefPut || typeof put != "undefined")
- {
- if(preRender === null)
- {
- preRender = render;
- /**render = function()
- {
- if(document.hasFocus())
- {
- render2();
- }
- };**/
- render = render2;
- for(var rgbFlip = 0; rgbFlip < 192; rgbFlip++)
- {
- rArray[192] = rArray[191];
- gArray[192] = gArray[191];
- bArray[192] = bArray[191];
- }
- }
- if(document.hasFocus())
- {
- GM_setValue("camx", camx);
- GM_setValue("camy", camy);
- GM_setValue("cursorx", cursorx);
- GM_setValue("cursory", cursory);
- GM_setValue("chnkx", chnkx);
- GM_setValue("chnky", chnky);
- GM_setValue("pixlx", pixlx);
- GM_setValue("pixly", pixly);
- GM_setValue("r", rgb[rgbn][0]);
- GM_setValue("g", rgb[rgbn][1]);
- GM_setValue("b", rgb[rgbn][2]);
- }
- if(true)
- {
- var maincamx = GM_getValue("camx");
- var maincamy = GM_getValue("camy");
- var maincursorx = GM_getValue("cursorx");
- var maincursory = GM_getValue("cursory");
- var mainchnkx = GM_getValue("chnkx");
- var mainchnky = GM_getValue("chnky");
- var mainpixlx = GM_getValue("pixlx");
- var mainpixly = GM_getValue("pixly");
- var randIndex = Math.ceil(visible.length * Math.random()) - 1;
- var theP = visible[randIndex];
- if(lastMap == -1)
- {
- lastMap = theP;
- randOffset = Math.ceil(Math.random() * 256) - 1;
- randRev = Math.ceil(Math.random() * 2) * 2 - 3;
- randShuf = randShufA[Math.ceil(randShufA.length * Math.random()) - 1];
- }
- theP = lastMap;
- if(theP === null || visible.indexOf(lastMap) == -1){lastMap = visible[randIndex];randOffset = Math.ceil(Math.random() * 256) - 1;randRev = Math.ceil(Math.random() * 2) * 2 - 3;randShuf = randShufA[Math.ceil(randShufA.length * Math.random()) - 1];canNext = true;return;}
- var poinP = map[theP];
- if(poinP === null || poinP === undefined){lastMap = visible[randIndex];randOffset = Math.ceil(Math.random() * 256) - 1;randRev = Math.ceil(Math.random() * 2) * 2 - 3;randShuf = randShufA[Math.ceil(randShufA.length * Math.random()) - 1];canNext = true;return;}
- if(camx != maincamx || camy != maincamy)
- {
- camx = maincamx;
- camy = maincamy;
- updatevisible();
- }
- cursorx = maincursorx + offX * 16;
- cursory = maincursory + offY * 16;
- chnkx = mainchnkx;
- chnky = mainchnky;
- pixlx = mainpixlx;
- pixly = mainpixly;
- var found = false;
- for(var inci = 0; inci < 256 && !found; inci++)
- {
- var inciP = inci;
- if(randRev == -1)
- {
- inciP = 255-inciP;
- }
- var inc = (((inciP) + randOffset) * randShuf) % 256;
- if(poinP[0][inc * 3] !== rArray[inc] || poinP[0][inc * 3 + 1] !== gArray[inc] || poinP[0][inc * 3 + 2] !== bArray[inc])
- {
- var b = theP.split(',').map(function(item) {
- return parseInt(item, 10);
- });
- //console.log(b);
- rgb[rgbn][0] = rArray[inc];
- rgb[rgbn][1] = gArray[inc];
- rgb[rgbn][2] = bArray[inc];
- mainchnkx = chnkx = b[0];
- mainchnky = chnky = b[1];
- mainpixlx = pixlx = inc % 16;
- mainpixly = pixly = Math.floor(inc / 16);
- cursorx = mainchnkx * 256 + mainpixlx * 16;
- cursory = mainchnky * 256 + mainpixly * 16;
- found = true;
- }
- }
- if(!found)
- {
- lastMap = visible[randIndex];
- randOffset = Math.ceil(Math.random() * 256) - 1;
- randRev = Math.ceil(Math.random() * 2) * 2 - 3;
- randShuf = randShufA[Math.ceil(randShufA.length * Math.random()) - 1];
- }
- var xOffset = offX;
- var yOffset = offY;
- pixlx += xOffset;
- pixly += yOffset;
- if(pixlx > 15)
- {
- chnkx += Math.floor(pixlx / 16);
- pixlx = pixlx % 16;
- }
- if(pixly > 16)
- {
- chnky += Math.floor(pixly / 16);
- pixly = pixly % 16;
- }
- if(pixlx < 0)
- {
- chnkx -= Math.ceil(-pixlx / 16);
- pixlx = -(-pixlx % 16);
- }
- if(pixly < 0)
- {
- chnky -= Math.ceil(-pixly / 16);
- pixly = -(-pixly % 16);
- }
- }
- put2(0);
- undefPut = false;
- //clicking = true;
- //dragnpaint = true;
- }
- simulateKeyPress(90, true);
- simulateKeyPress(90, false);
- }
- setInterval(loop, 80);
-
- function put2(btn){
- var ref = map[[chnkx, chnky]];
- if(socket.readyState != socket.OPEN || !ref) {return;};
- switch(tool){
- case 0:
- var paint = true;
- var sel = rgb[rgbn];
- switch(btn){
- case 1:
- var nrgb = new Uint8Array(
- [ref[0][(pixly * 16 + pixlx) * 3],
- ref[0][(pixly * 16 + pixlx) * 3 + 1],
- ref[0][(pixly * 16 + pixlx) * 3 + 2]]);
- var i = findrgb(nrgb);
- if(i == -1){
- rgbn = 0;
- rgb.unshift(nrgb);
- } else {
- rgbn = i;
- }
- paint = false;
- break;
- case 2:
- sel = [255, 255, 255];
- break;
- }
- if(paint && !(ref[0][(pixly * 16 + pixlx) * 3] == sel[0] &&
- ref[0][(pixly * 16 + pixlx) * 3 + 1] == sel[1] &&
- ref[0][(pixly * 16 + pixlx) * 3 + 2] == sel[2]) && pbuckt.canspend(1)){
- undos.push([cursorx >> 4, cursory >> 4, pixlx << 4 | pixly,
- ref[0][(pixly * 16 + pixlx) * 3],
- ref[0][(pixly * 16 + pixlx) * 3 + 1],
- ref[0][(pixly * 16 + pixlx) * 3 + 2]]);
- updatechunk(ref, pixlx, pixly, sel);
- var arr = new ArrayBuffer(11);
- var dv = new DataView(arr);
- dv.setInt32(0, cursorx >> 4, true);
- dv.setInt32(4, cursory >> 4, true);
- dv.setUint8(8, sel[0]);
- dv.setUint8(9, sel[1]);
- dv.setUint8(10, sel[2]);
- socket.send(arr);
- }
- break;
- case 2:
- var nrgb = new Uint8Array(
- [ref[0][(pixly * 16 + pixlx) * 3],
- ref[0][(pixly * 16 + pixlx) * 3 + 1],
- ref[0][(pixly * 16 + pixlx) * 3 + 2]]);
- var i = findrgb(nrgb);
- if(i == -1){
- rgbn = 0;
- rgb.unshift(nrgb);
- } else {
- rgbn = i;
- }
- break;
-
- case 3:
- var cl = false;
- for(var i = ref[0].length; i--;){
- if(ref[0][i] != 255){
- cl = true;
- break;
- }
- }
- if(cl){
- var arr = new ArrayBuffer(9);
- var dv = new DataView(arr);
- dv.setInt32(0, chnkx, true);
- dv.setInt32(4, chnky, true);
- dv.setUint8(8, 0);
- socket.send(arr);
- }
- break;
- }
- }
-
- function render2(){
- nt = Date.now();
- if(!document.hasFocus())
- {
- window.requestAnimationFrame(render);
- return;
- }
- ctx.save();
- ctx.transform(zoom, 0, 0, zoom, camx, camy);
- for(var i = visible.length; i--;){
- var pos = visible[i].split(',');
- if(pos in map){
- if(!map[pos][1]){
- map[pos][1] = renderchunk(map[pos][0]);
- }
- ctx.drawImage(map[pos][1], pos[0] << 8, pos[1] << 8);
- } else {
- ctx.beginPath();
- ctx.fillStyle = unloadedpat;
- ctx.rect(pos[0] << 8, pos[1] << 8, 256, 256);
- ctx.fill();
- }
- }
- ctx.lineWidth = 2.5;
- ctx.globalAlpha = .8;
- if([chnkx, chnky] in map){
- ctx.globalAlpha = .8;
- if(tool == 0){
- ctx.strokeStyle = "rgb(" + rgb[rgbn].join(',') + ")";
- ctx.strokeRect(~(~cursorx | 0xF), ~(~cursory | 0xF), 16, 16);
- } else if(tool == 3){
- ctx.strokeStyle = "#FFFFFF";
- ctx.strokeRect(~(~cursorx | 0xFF) + 1, ~(~cursory | 0xFF), 254, 255);
- }
- }
- for(var c in ppl){
- if(c != id){
- var pplx = ppl[c].getX();
- var pply = ppl[c].getY();
- if(!isvisible(pplx - 32, pply - 32, 64, 64))
- continue;
- var chxy = [pplx >> 8, pply >> 8];
- if(chxy in map){
- if(ppl[c].tool == 0){
- ctx.strokeStyle = "rgb(" + ppl[c].r + "," + ppl[c].g + "," + ppl[c].b + ")";
- ctx.strokeRect(~(~pplx | 0xF), ~(~pply | 0xF), 16, 16);
- } else if(ppl[c].tool == 2){
- ctx.globalAlpha = 1;
- var pxy = [pplx - (chxy[0] << 8) >> 4, pply - (chxy[1] << 8) >> 4];
- var m = map[chxy];
- var nrgb = [m[0][(pxy[1] * 16 + pxy[0]) * 3],
- m[0][(pxy[1] * 16 + pxy[0]) * 3 + 1],
- m[0][(pxy[1] * 16 + pxy[0]) * 3 + 2]];
- ctx.fillStyle = "rgb(" + nrgb.join(',') + ")";
- ctx.fillRect(pplx + .5, pply - 30.5, 8, 8);
- ctx.strokeStyle = "#4d313b";
- ctx.strokeRect(pplx - .5, pply - 31.5, 10, 10);
- ctx.strokeStyle = "#FFFFFF";
- ctx.lineWidth = 1;
- ctx.strokeRect(pplx - .5, pply - 31.5, 10, 10);
- ctx.lineWidth = 3.5;
- } else if(ppl[c].tool == 3){
- ctx.strokeStyle = "#FFFFFF";
- ctx.strokeRect(~(~pplx | 0xFF) + 1, ~(~pply | 0xFF), 254, 255);
- }
- }
- }
- }
- ctx.lineWidth = 1.75;
- for(var i = fx.length; i--;){
- if((ctx.globalAlpha = 1 + (fx[i][2] - nt) / 1000) <= 0){
- fx.splice(i, 1);
- continue;
- }
- if(fx[i].length == 4){
- ctx.strokeStyle = "rgb(" + ((fx[i][3] >> 16) & 0xFF) + "," + ((fx[i][3] >> 8) & 0xFF) + "," + (fx[i][3] & 0xFF) + ")";
- ctx.strokeRect(.5+(fx[i][0] << 4), .5+(fx[i][1] << 4), 15, 15);
- } else {
- ctx.strokeStyle = "#000000";
- ctx.strokeRect(.5+(fx[i][0] << 8), .5+(fx[i][1] << 8), 256, 256);
- }
- }
- ctx.globalAlpha = 1;
- ctx.strokeStyle = "#000000";
- for(var c in ppl){
- if(c != id){
- var pplx = ppl[c].getX();
- var pply = ppl[c].getY();
- if(!isvisible(pplx - 32, pply - 32, 64, 64))
- continue;
- ctx.drawImage(cur[ppl[c].tool][0], pplx + cur[ppl[c].tool][1], pply + cur[ppl[c].tool][2]);
- ctx.font = "10px sans-serif";
- var w = ctx.measureText(c.toString()).width + 8;
- var h = 10;
- var ofs = cur[ppl[c].tool][0].height + cur[ppl[c].tool][2];
- ctx.fillStyle = "#" + ppl[c].clr;
- ctx.fillRect(pplx, pply + ofs, w, h + 6);
- ctx.globalAlpha = 0.2;
- ctx.lineWidth = 3;
- ctx.strokeRect(pplx, pply + ofs, w, h + 6);
- ctx.globalAlpha = 1;
- drawtext(c.toString(), pplx + 4, pply + h + ofs + 2);
- ctx.font = "14px sans-serif";
- }
- }
- if([[chnkx, chnky]] in map && tool == 2){
- var ref = map[[chnkx, chnky]];
- var nrgb = new Uint8Array(
- [ref[0][(pixly * 16 + pixlx) * 3],
- ref[0][(pixly * 16 + pixlx) * 3 + 1],
- ref[0][(pixly * 16 + pixlx) * 3 + 2]]);
- ctx.fillStyle = "rgb(" + nrgb.join(',') + ")";
- ctx.fillRect(cursorx + .5, cursory - 30.5, 8, 8);
- ctx.strokeStyle = "#4d313b";
- ctx.lineWidth = 3.5;
- ctx.strokeRect(cursorx - .5, cursory - 31.5, 10, 10);
- ctx.strokeStyle = "#FFFFFF";
- ctx.lineWidth = 1;
- ctx.strokeRect(cursorx - .5, cursory - 31.5, 10, 10);
- }
- ctx.restore();
- ctx.strokeStyle = "#000000";
- /* Render windows */
- ctx.globalAlpha = 0.9;
- ctx.save();
- for(var x = 0; x < windows.length; x++){
- if(x == windows.length - 1)
- ctx.globalAlpha = 1;
- windows[x].render(ctx);
- }
- ctx.restore();
- var hudx = canvas.width - 40;
- var hudy = (canvas.height >> 1) - 16;
- ctx.fillStyle = "#DDDDDD";
- ctx.fillRect(hudx - 4, hudy - 4, 44, 40);
- ctx.fillStyle = "#888888";
- ctx.fillRect(hudx - 32, hudy + 4, 24, 24);
- ctx.globalAlpha = 0.2;
- ctx.strokeRect(hudx - 4, hudy - 4, 44, 40);
- ctx.strokeRect(hudx - 32, hudy + 4, 24, 24);
- ctx.globalAlpha = 1;
- ctx.strokeStyle = "#FFFFFF";
- ctx.beginPath();
- ctx.moveTo(hudx - 20, hudy + 8);
- ctx.lineTo(hudx - 20, hudy + 24);
- ctx.stroke();
- ctx.beginPath();
- ctx.moveTo(hudx - 28, hudy + 16);
- ctx.lineTo(hudx - 12, hudy + 16);
- ctx.stroke();
- ctx.strokeStyle = "#000000";
- for(var j = rgbn + 1, i = 0; --j >= 0; --i){
- ctx.fillStyle = "rgb(" + rgb[j].join(',') + ")";
- ctx.fillRect(hudx, hudy - 40 * i, 32, 32);
- ctx.globalAlpha = 0.2;
- ctx.strokeRect(hudx, hudy - 40 * i, 32, 32);
- ctx.globalAlpha = 1;
- }
- for(var j = rgbn, i = 1; ++j < rgb.length; ++i){
- ctx.fillStyle = "rgb(" + rgb[j].join(',') + ")";
- ctx.fillRect(hudx, hudy - 40 * i, 32, 32);
- ctx.globalAlpha = 0.2;
- ctx.strokeRect(hudx, hudy - 40 * i, 32, 32);
- ctx.globalAlpha = 1;
- }
- ctx.fillStyle = "#444444";
- if(chatting){
- ctx.globalAlpha = .7;
- var maxw = 300;
- for(var i = chatlog.length, j = 0; i-- && j < 12; j++){
- maxw = Math.max(ctx.measureText(chatlog[i]).width, maxw);
- }
- maxw = Math.max(ctx.measureText("> " + chatstr).width, maxw);
- var h = chatlog.length;
- h = (h >= 12 ? 12 : h) + 1;
- ctx.fillRect(0, canvas.height - h * 16 - 8, maxw + 10, h * 16 + 16);
- ctx.globalAlpha = .2;
- ctx.lineWidth = 3;
- ctx.strokeRect(-1, canvas.height - h * 16 - 8, maxw + 10.5, h * 16 + 16);
- ctx.globalAlpha = .4;
- ctx.strokeRect(-1, canvas.height - 18, maxw + 10.5, 19);
- ctx.fillStyle = "#DDDDDD";
- ctx.fillRect(-1, canvas.height - 18, maxw + 10.5, 19);
- drawtext("> " + chatstr + (((nt >> 8) & 1) ? '_' : ''), 5, canvas.height - 5);
- }
- ctx.globalAlpha = 1;
- for(var i = chatlog.length, j = +chatting; i-- && j <= (chatting ? 12 : 6); j++){
- drawtext(chatlog[i], 5, canvas.height - j * 16 - 8);
- }
- var j = (nt - dt[0]) / 500;
- j = j >= 1 ? 1 : j <= 0 ? 0 : j;
- ctx.drawImage(drop, (canvas.width >> 1) - (drop.width >> 1), -drop.height + 14 + (drop.height - 14) * (dt[1] ? j : 1 - j));
- ctx.drawImage(cur[tool][0], mousex + cur[tool][1], mousey + cur[tool][2]);
- var xystr = "X: " + ((chnkx << 4) + pixlx) + ", Y: " + ((chnky << 4) + pixly);
- if(con){
- var pplstr = count + " cursor" + (count != 1 ? "s" : "") + " online";
- drawtext(pplstr, canvas.width - ctx.measureText(pplstr).width - 5, 14);
- }
- var xyw = ctx.measureText(xystr).width;
- ctx.fillStyle = "#888888";
- ctx.globalAlpha = .7;
- ctx.fillRect(0, 0, xyw + 8, 19);
- ctx.globalAlpha = .2;
- ctx.strokeRect(-1, -1, xyw + 8, 19);
- drawtext(xystr, 4, 14);
- if(nt - t < 2500 || true){
- window.requestAnimationFrame(render);
- }
- }
-
- function simulateKeyPress(key, hold)
- {
- var eventObj;
- if(hold)
- {
- eventObj = document.createEvent("Events"); eventObj.initEvent("keydown", true, true); eventObj.keyCode = key; window.dispatchEvent(eventObj);
- }
- else
- {
- eventObj = document.createEvent("Events"); eventObj.initEvent("keyup", true, true); eventObj.keyCode = key; window.dispatchEvent(eventObj);
- }
- }
- function simulateMousePress(button, clientX, clientY, press)
- {
- if(press)
- {
- canvas.dispatchEvent(new MouseEvent('mousedown', { 'clientX': clientX, 'clientY': clientY, 'button': button, 'mozPressure' : 1.0 }));
- }
- else{
- canvas.dispatchEvent(new MouseEvent('mouseup', { 'clientX': clientX, 'clientY': clientY, 'button': button, 'mozPressure' : 1.0 }));
- }
- }
- function simulateMouseMove(clientX, clientY)
- {
- canvas.dispatchEvent(new MouseEvent('mousemove', { 'clientX': clientX, 'clientY': clientY }));
- }