- // ==UserScript==
- // @name Multibox script Working December 2023
- // @namespace http://tampermonkey.net/
- // @version 20232
- // @description multibox
- // @author Mi300#4401
- // @match https://diep.io/*
- // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
- // @grant GM_getValue
- // @grant GM_setValue
- // @license dont copy thx
- // ==/UserScript==
-
-
- let WTF = setInterval (function() {
- if (!document.querySelector('d-base').shadowRoot.children[0].shadowRoot.getElementById('username-input')) {
- return;
- }
- clearInterval (WTF)
-
- let canRespawn = false;
- let worldPosition = [0, 0];
- let overlay;
- let mouseOffset = [0, 0];
- let gui = true;
- let moveKeys = new Array(4)
- let tabId = Math.round(Math.random()*10000)
- GM_setValue('multiboxEnabled', false)
-
- setInterval(function(){
- document.title = 'diep.io tab #' + tabId
- }, 1000)
-
- const canvas = document.getElementById ('canvas');
-
- function hook(target, callback){
-
- const check = () => {
- window.requestAnimationFrame(check)
- const func = CanvasRenderingContext2D.prototype[target]
-
- if(func.toString().includes(target)){
-
- CanvasRenderingContext2D.prototype[target] = new Proxy (func, {
- apply (method, thisArg, args) {
- callback(method, thisArg, args)
-
- return Reflect.apply (method, thisArg, args)
- }
- });
- }
- }
- check()
- }
- let dgg = 'i';
-
- function hookMinimapArrow () {
-
- let drawInstructions = 0;
- let minimapArrowVertex = [];
- hook ('beginPath', (method, thisArg, args) => {
- //console.log('beginPath', args)
- drawInstructions = 1;
- minimapArrowVertex = [];
- });
- hook ('moveTo', (method, thisArg, args) => {
- //console.log('moveTo', args)
- drawInstructions = 2;
- minimapArrowVertex.push ( args );
- });
- hook ('lineTo', (method, thisArg, args) => {
- //console.log('lineTo', args)
- if (drawInstructions >= 2 && drawInstructions <= 5) {
- drawInstructions ++;
- minimapArrowVertex.push ( args );
-
- } else {
- drawInstructions = 0;
- }
- });
- hook ('fill', (method, thisArg, args) => {
- //console.log('fill', args)
- if (thisArg.fillStyle != '#000000' || thisArg.globalAlpha < 1) {
- return;
- }
- if (drawInstructions === 4) {
- const pos = getAverage (minimapArrowVertex);
- //console.log(pos)
- worldPosition = getWorldPosition (pos);
- }
- });
- }
- let minimapPosition = [0, 0];
- let minimapDim = [0, 0];
-
- function hookMinimap () {
- hook ('strokeRect', (method, thisArg, args) => {
- const transform = thisArg.getTransform ();
- minimapPosition = [transform.e, transform.f];
- minimapDim = [transform.a, transform.d];
- });
- }
-
- function getWorldPosition (position) {
- const ret = [
- parseFloat((((position[0] - minimapPosition[0] - minimapDim[0] / 2) / minimapDim[0] * 100) * 460).toFixed (3)),
- parseFloat((((position[1] - minimapPosition[1] - minimapDim[1] / 2) / minimapDim[1] * 100) * 460).toFixed (3)),
- ]
- return ret;
- }
- const Mi = '';
-
- function getAverage (points) {
- let ret = [0, 0];
- points.forEach (point => {
- ret[0] += point[0];
- ret[1] += point[1];
- });
- ret[0] /= points.length;
- ret[1] /= points.length;
-
- return ret;
- }
- let dgh = 'M';
-
-
- const getDist = (t1, t2) => {
- const distX = t1[0] - t2[0];
- const distY = t1[1] - t2[1];
-
- return [Math.hypot(distX, distY), distX, distY];
- };
-
- function moveBot () {
-
- if (input.should_prevent_unload()) {
- canRespawn = true;
- }
- let masterMouse = GM_getValue('multiboxMouse');
- let masterMove = GM_getValue ('multiboxWorld');
-
- console.log(masterMove, worldPosition)
- const distanceMove = getDist (masterMove, worldPosition);
- if (!masterMouse[0] || !masterMouse[1] || !masterMove[0] || !masterMove[1]) {
- return;
- }
-
-
-
- if (GM_getValue('copyMovement')) {
- //console.log(distanceMove[0])
- if (distanceMove[0] > 400) {
- angleMove(distanceMove[1], distanceMove[2])
- } else {
- copyMove(GM_getValue('keys'))
- }
- }
- if (GM_getValue('copyMouse')) {
- angleShoot(...masterMouse)
- }
- }
-
-
-
- function angleMove(dX, dY){
- if (dX > 0) {
- input.key_up (65);
- input.key_down (68);
- } else if (dX < 0) {
- input.key_up (68);
- input.key_down (65);
- } else {
- input.key_up (68);
- input.key_up (65);
- }
-
- if (dY > 0) {
- input.key_up (87);
- input.key_down (83);
- } else if (dY < 0) {
- input.key_up (83);
- input.key_down (87);
- } else {
- input.key_up (83);
- input.key_up (87);
- }
- }
- function angleShoot(stepX, stepY){
- const x = stepX * canvas.width * window.devicePixelRatio;
- const y = stepY * canvas.height * window.devicePixelRatio;
-
- input.mouse(x, y)
- }
- function copyMove(keys){
- if(keys[0]){
- input.key_down(87)
- }
- else{
- input.key_up(87)
- }
- if(keys[1]){
- input.key_down(65)
- }
- else {
- input.key_up(65)
- }
- if(keys[2]){
- input.key_down(83)
- }
- else {
- input.key_up(83)
- }
- if(keys[3]){
- input.key_down(68)
- }
- else {
- input.key_up(68)
- }
- }
-
-
-
- function frame () {
- overlay.innerHTML = `
- <h1>MULTIBOX</h1>
- <br> <br>
- World position: <br> ${Math.round(worldPosition[0]) || 0} ${Math.round(worldPosition[1]) || 0}
- <br> <br>
- [P] Master Tab: #${GM_getValue('master') || 0}
- <br> <br>
- [F] Multibox Enabled: ${GM_getValue('multiboxEnabled') || false}
- <br> <br>
- [G] Copy Movement: ${GM_getValue('copyMovement') || false}
- <br> <br>
- [J] Copy Mouse: ${GM_getValue('copyMouse') || false}
- <br> <br>
- [Q] Toggle Gui: true
- <br> <br>
- [Z] Auto Respawn: ${GM_getValue('autoRespawn') || false}
- <br> <br>
- [,] Always Shoot: ${GM_getValue('autoShoot') || false}
- <br> <br>
- `
- if(GM_getValue('autoShoot')){
- input.key_down(1)
- }
- else{
- input.key_up(1)
- }
- if (GM_getValue('autoRespawn')) {
- input.execute('game_spawn ' + localStorage.name)
- }
- if (GM_getValue('master') == tabId){
- GM_setValue('multiboxWorld', worldPosition)
- GM_setValue('multiboxMouse', mouseOffset)
- GM_setValue('keys', moveKeys)
-
- } else if (GM_getValue('multiboxEnabled')) {
- moveBot ();
- }
- window.requestAnimationFrame (frame);
- }
-
-
- document.addEventListener ('keydown', e => {
- if (e.key === 'f') {
- GM_setValue('multiboxEnabled', !GM_getValue('multiboxEnabled'))
- if(GM_getValue('multiboxEnabled')){
- GM_setValue('master', tabId)
- }
- }
- if (e.key === 'g') {
- GM_setValue('copyMovement', !GM_getValue('copyMovement'))
- }
- if (e.key === 'j') {
- GM_setValue('copyMouse', !GM_getValue('copyMouse'))
- }
- if (e.key === 'q') {
- gui = !gui;
- overlay.style.display = gui ? 'block' : 'none'
- }
- if (e.key === ',') {
- GM_setValue('autoShoot', !GM_getValue('autoShoot'))
- }
- if (e.key === 'z') {
- GM_setValue('autoRespawn', !GM_getValue('autoRespawn'))
- }
- if(e.key === 'p'){
- GM_setValue('master', tabId)
- }
-
- if(e.key === 'w'){
- moveKeys[0] = true;
- }
- if(e.key === 'a') {
- moveKeys[1] = true;
- }
- if(e.key === 's') {
- moveKeys[2] = true;
- }
- if(e.key === 'd') {
- moveKeys[3] = true;
- }
- })
- document.addEventListener('keyup', e => {
- if(e.key === 'w'){
- moveKeys[0] = false;
- }
- if(e.key === 'a') {
- moveKeys[1] = false;
- }
- if(e.key === 's') {
- moveKeys[2] = false;
- }
- if(e.key === 'd') {
- moveKeys[3] = false;
- }
- });
-
- document.addEventListener ('mousemove', e => {
- mouseOffset = [
- e.x / canvas.width,
- e.y / canvas.height,
- ]
- });
- function terminate () {
- overlay = document.createElement('div');
- overlay.style.position = 'fixed';
- overlay.style.top = '1px';
- overlay.style.left = '1px';
- overlay.style.fontFamily = 'Lucida Console, Courier, monospace';
- overlay.style.fontSize = '12px';
- overlay.style.color = '#ffffff';
- overlay.style.pointerEvents = 'none';
- overlay.style.userSelect = 'none';
- overlay.style.fontSize = '14px';
- overlay.style.backgroundColor = 'gray';
- overlay.style.height = '450px';
- overlay.style.width = '250px';
- overlay.style.borderRadius = '1px'
- overlay.style.borderStyle = 'solid'
- overlay.style.borderColor = '#404040'
- overlay.style.borderWidth = '5px'
- overlay.style.textAlign = 'center';
- document.body.appendChild(overlay);
-
- frame ();
- hookMinimapArrow ();
- hookMinimap ();
-
-
-
- }
- terminate ();
- },400);