您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
当前为
// ==UserScript== // @name Shape Aimbot UPDATED // @namespace http://tampermonkey.net/ // @version 10 // @description try to take over the world! // @author Mi300 // @match https://diep.io/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @license dont copy thx // @grant none // ==/UserScript== setTimeout(function(){ const canvas = document.getElementById ('canvas'); const context = canvas.getContext ('2d'); let mouse = [0, 0] let shapes = {}; const p = CanvasRenderingContext2D.prototype, _fill = p.fill, _moveTo = p.moveTo, _lineTo = p.lineTo, _beginPath = p.beginPath, _toString = Function.prototype.toString; let fill, moveTo, lineTo, beginPath; function clearShapes() { shapes = { squares: [], triangles: [], pentagons: [], } } clearShapes(); let shapeData = { triangles: { sides: 3, colour: '', }, squares: { sides: 4, colour: '', }, pentagons: { sides: 5, colour: '', }, } let debugOptions = { lines: true, shapeInfo: true, aim: false, } const names = { squares: 'square', triangles: 'triangle', pentagons: 'pentagon', } document.addEventListener('keydown', function(e) { if (e.key === 't') { debugOptions.aim = !debugOptions.aim; } if (e.key === 'r') { debugOptions.lines = !debugOptions.lines; } if (e.key === 'q') { debugOptions.shapeInfo = !debugOptions.shapeInfo; } }); let calls = 0; let points = []; const onClose = (c) => { if(['#999999', '#000000', '#00b2e1', '#fcc376'].includes(c)) { return; } if(calls == 4){ shapes.triangles.push(getCentre(points)) } if(calls == 5){ shapes.squares.push(getCentre(points)) } if(calls == 6){ shapes.pentagons.push(getCentre(points)) } } beginPath = function(...args) { calls = 1; points = []; _beginPath.call(this, ...args); } moveTo = function(...args) { calls = 2; points.push (args); _moveTo.call(this, ...args) } lineTo = function(...args) { if (calls >= 2 && calls <= 5) { calls ++; points.push (args); } else { calls = 0; } _lineTo.call(this, ...args) } fill = function(...args) { onClose(this.fillStyle); _fill.call(this, ...args) } function getCentre (vertices) { let centre = [0, 0]; vertices.forEach (vertex => { centre [0] += vertex[0] centre [1] += vertex[1] }); centre[0] /= vertices.length; centre[1] /= vertices.length; return centre; } document.addEventListener('mousemove', function() { if (!debugOptions.aim) { return; } input.mouse(...mouse) }); function getDist(t1, t2){ const distX = t1[0] - t2[0]; const distY = t1[1] - t2[1]; return [Math.hypot(distX, distY), distX, distY]; }; function getClosest (entities) { let acc = [0, 0] for (let i = 0; i < entities.length; i ++) { const accumulator = getDist (acc, [canvas.width / 2, canvas.height / 2])[0]; const current = getDist (entities[i], [canvas.width / 2, canvas.height / 2])[0]; if (current < accumulator) acc = entities[i]; } return acc; } function aim() { const target = getClosest ( shapes.pentagons.length>0 ?shapes.pentagons :shapes.triangles.length>0 ?shapes.triangles :shapes.squares ) if (!debugOptions.aim) { return; } mouse = target; input.mouse(...target) } function drawDebug() { if (debugOptions.lines) { const everyshape = [].concat( shapes.squares, shapes.triangles, shapes.pentagons, ) everyshape.forEach(function(shape){ context.beginPath(); context.lineWidth = 0.5; context.strokeStyle == 'black'; context.moveTo(canvas.width / 2, canvas.height / 2); context.lineTo(...shape) context.stroke() context.closePath() }); } if (debugOptions.shapeInfo) { for (let key in shapes) { const type = shapeData[key]; context.strokeStyle = 'red'; context.lineWidth = 2; shapes[key].forEach(function(shape){ const size = 75; context.beginPath(); context.strokeRect(shape[0] - size / 2, shape[1] - size / 2, size, size); context.closePath(); }); } for (let key in shapes) { const type = shapeData[key]; shapes[key].forEach(function(shape){ const size = 75; context.beginPath(); context.lineWidth = 2; context.font = "bold 23px serif"; context.strokeStyle = '#000000'; context.fillStyle = 'red'; context.strokeText(names[key], shape[0] - 25, shape[1] + size / 2.5) context.fillText(names[key], shape[0] - 25, shape[1] + size / 2.5) context.closePath(); }); } } } function mainloop() { window.requestAnimationFrame(mainloop); drawDebug(); aim(); clearShapes(); } mainloop(); const toString = function() { switch(this) { case fill: return _toString.call(_fill); case moveTo: return _toString.call(_moveTo); case beginPath: return _toString.call(_beginPath); case lineTo: return _toString.call(_lineTo); case toString: return _toString.call(_toString); } return _toString.call(this); }; p.fill = fill; p.beginPath = beginPath; p.moveTo = moveTo; p.lineTo = lineTo; Function.prototype.toString = toString; },2500);