您需要先安装一个扩展,例如 篡改猴、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);