- // ==UserScript==
- // @name DigDig.IO Tag Bot
- // @namespace https://tampermonkey.net/
- // @version 0.0.1
- // @description A simple bot that tags people in digdig.io
- // @author Zertalious (Zert)
- // @match *://digdig.io/*
- // @icon https://www.google.com/s2/favicons?domain=digdig.io
- // @grant none
- // @run-at document-end
- // ==/UserScript==
-
- let inDeathScreen = false;
-
- let health = 0;
- const healthX = [];
-
- let border = null;
-
- let waitingText;
- let isWaiting = false;
-
- let seekerText, hiderText;
- let isSeeker = false;
-
- const hiders = [];
-
- let angle = 0;
- let lastTime = 0;
- let canBoost = true;
-
- let isRunning = true;
-
- Object.defineProperty( window, 'localStorage', {
- value: new Proxy( window.localStorage, {
- get( target, prop, receiver ) {
-
- if ( prop === 'digdig_gamemode' ) {
-
- return '2';
-
- }
-
- return Reflect.get( ...arguments );
-
- }
- } )
- } );
-
- window.requestAnimationFrame = new Proxy( window.requestAnimationFrame, {
- apply( target, thisArgs, args ) {
-
- if ( isRunning === true ) {
-
- args[ 0 ] = new Proxy( args[ 0 ], {
- apply( target, thisArgs, args ) {
-
- inDeathScreen = false;
- health = 0;
-
- isWaiting = false;
-
- hiders.length = 0;
-
- healthX.length = 0;
- health = 0;
-
- border = null;
-
- Reflect.apply( ...arguments );
-
- if ( inDeathScreen === true || health <= 0 ) {
-
- pressEnter();
-
- console.log( 'spam enter' );
-
- return;
-
- }
-
- if ( isWaiting === true ) {
-
- return;
-
- }
-
- if ( isSeeker === false ) {
-
- cp6.disconnect();
-
- return;
-
- }
-
- if ( health <= 0.05 ) {
-
- canBoost = false;
-
- setAttack( false );
-
- } else if ( health > 0.15 ) {
-
- canBoost = true;
-
- }
-
- if ( hiders.length > 0 ) {
-
- const [ x, y ] = hiders[ 0 ];
-
- setAttack( canBoost );
-
- angle = Math.atan2( y - window.innerHeight / 2, x - window.innerWidth / 2 );
-
- mouseMove( x, y );
-
- lastTime = Date.now() + 5000;
-
- return;
-
- }
-
- setAttack( false );
-
- const now = Date.now();
-
- if ( now - lastTime > 1000 ) {
-
- angle += ( Math.random() * 2 - 1 ) * Math.PI / 4;
-
- lastTime = now;
-
- }
-
- if ( border !== null ) {
-
- const x = border[ 0 ] - window.innerWidth / 2;
- const y = border[ 1 ] - window.innerHeight / 2;
-
- if ( Math.hypot( x, y ) > border[ 2 ] - 500 ) {
-
- angle = Math.atan2( y, x );
-
- }
-
- }
-
- mouseMove(
- ( Math.cos( angle ) * 0.5 + 0.5 ) * window.innerWidth,
- ( Math.sin( angle ) * 0.5 + 0.5 ) * window.innerHeight
- );
-
- }
- } );
-
- }
-
- return Reflect.apply( ...arguments );
-
- }
- } );
-
- const Context = CanvasRenderingContext2D.prototype;
-
- Context.arc = new Proxy( Context.arc, {
- apply( target, thisArgs, [ x, y, r ] ) {
-
- if ( r === 25 ) {
-
- if ( thisArgs.fillStyle === '#6096b5' ) {
-
- const { e, f } = thisArgs.getTransform();
-
- if ( Math.hypot( e - window.innerWidth, f - window.innerHeight ) > 10 ) {
-
- hiders.push( [ e, f ] );
-
- }
-
- }
-
- } else if ( thisArgs.fillStyle === '#222222' && x !== 0 && y !== 0 ) {
-
- border = [ x, y, r ];
-
- }
-
- return Reflect.apply( ...arguments );
-
- }
- } );
-
- const params = {
- apply( target, thisArgs, [ x ] ) {
-
- healthX[ target.name === 'moveTo' ? 0 : 1 ] = x;
-
- return Reflect.apply( ...arguments );
-
- }
- };
-
- Context.moveTo = new Proxy( Context.moveTo, params );
- Context.lineTo = new Proxy( Context.lineTo, params );
-
- Context.stroke = new Proxy( Context.stroke, {
- apply( target, thisArgs, args ) {
-
- if ( thisArgs.strokeStyle === '#75dd34' ) {
-
- health = ( healthX[ 0 ] - healthX[ 1 ] ) / ( 2 * healthX[ 0 ] );
-
- }
-
- return Reflect.apply( ...arguments );
-
- }
- } );
-
- const OffscreenContext = typeof OffscreenCanvasRenderingContext2D !== 'undefined' ?
- OffscreenCanvasRenderingContext2D.prototype : Context;
-
- OffscreenContext.fillRect = new Proxy( OffscreenContext.fillRect, {
- apply( target, thisArgs, args ) {
-
- if ( thisArgs.fillStyle === '#000000' ) {
-
- inDeathScreen = true;
-
- }
-
- return Reflect.apply( ...arguments );
-
- }
- } );
-
- OffscreenContext.fillText = new Proxy( OffscreenContext.fillText, {
- apply( target, { canvas }, [ text ] ) {
-
- if ( text.indexOf( 'Starting in' ) > - 1 && text.indexOf( 'Waiting for' ) > - 1 ) {
-
- waitingText = canvas;
-
- } else if ( text.indexOf( 'You are a seeker' ) > - 1 ) {
-
- seekerText = canvas;
-
- } else if ( text.indexOf( 'You are a hider' ) > - 1 ) {
-
- hiderText = canvas;
-
- }
-
- return Reflect.apply( ...arguments );
-
- }
- } );
-
- OffscreenContext.drawImage = new Proxy( OffscreenContext.drawImage, {
- apply( target, thisArgs, [ image ] ) {
-
- switch ( image ) {
-
- case waitingText : isWaiting = true; break;
- case seekerText : isSeeker = true; break;
- case hiderText : isSeeker = false; break;
-
- }
-
- return Reflect.apply( ...arguments );
-
- }
- } );
-
- function pressEnter() {
-
- keyEvent( 'keydown', 13 );
- keyEvent( 'keyup', 13 );
-
- }
-
- function setAttack( bool ) {
-
- keyEvent( bool !== false ? 'keydown' : 'keyup', 32 );
-
- }
-
- function setHeal( bool ) {
-
- keyEvent( bool !== false ? 'keydown' : 'keyup', 16 );
-
- }
-
- function keyEvent( type, keyCode ) {
-
- window.dispatchEvent( new KeyboardEvent( type, { keyCode } ) );
-
- }
-
- function mouseMove( clientX, clientY ) {
-
- window.Module.canvas.dispatchEvent(
- new MouseEvent( 'mousemove', {
- clientX,
- clientY
- } )
- );
-
- }