Greasy Fork is available in English.

Predator and Hunter Stack (Any reload)

Press J to stack predator, U to stack hunter and , and . to change the reload

// ==UserScript==
// @name         Predator and Hunter Stack (Any reload)
// @namespace    http://tampermonkey.net/
// @version      2
// @description  Press J to stack predator, U to stack hunter and , and . to change the reload
// @author       MI300#4401
// @match        https://diep.io/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      dont copy
// ==/UserScript==
let isPredator = true;
function shoot(w) {
  input.key_down(1);
  setTimeout (() => {
    input.key_up(1);
  },w);
}

let reload = 7;
const predator = [
  [50, 500, 1400, 2800], // 0 reload
  [50, 500, 1300, 2700], // 1 reload
  [50, 400, 1200, 2450], // 2 reload
  [50, 300, 1100, 2200], // 3 reload
  [50, 300, 1000, 2100], // 4 reload
  [50, 300, 900, 1800], // 5 reload
  [50, 300, 800, 1700], // 6 reload
  [50, 300, 750, 1500], // 7 reload
]
const hunter = [
  [50, 1200], // 0 reload
  [50, 1100], // 1 reload
  [50, 1000], // 2 reload
  [50, 950], // 3 reload
  [50, 800], // 4 reload
  [50, 725], // 5 reload
  [50, 700], // 6 reload
  [50, 625], // 7 reload
]

function clump() {
  shoot(predator[reload][0]);
  setTimeout(() => {
    shoot(predator[reload][1]);
  },predator[reload][2]);
  setTimeout(() => {
    input.key_down (69);
    input.key_up (69);
  },predator[reload][3]);
}
function clump2(){
  shoot(hunter[reload][0])
  setTimeout(() => {
    input.key_down (69);
    input.key_up (69);
  },hunter[reload][1])
}

function increaseReload(){
  if(reload != 7){
    reload++;
  }
}
function decreaseReload(){
  if(reload != 0){
    reload--;
  }
}

document.addEventListener ('keydown', e => {
  if(!input || !input.should_prevent_unload()){
    return;
  }
  if(e.key == 'j') clump();
  if(e.key == 'u') clump2();
  if(e.key == ',') decreaseReload();
  if(e.key == '.') increaseReload();
});

// gui
setTimeout(function(){
  const canvas = document.getElementById("canvas");
  const context = canvas.getContext("2d");
  const themes = [
    // dark      // light
    ['#75ba50', '#aeff82'], // green
    ['#2a25fa', '#7d7afa'], // blue
    ['#c92233', '#fa6b77'], // red
    ['#9a9c43', '#def58c'], // yellow
  ]
  let buttons = [];

  function render(){
    window.requestAnimationFrame(render)

    const scale = window.devicePixelRatio

    buttons.forEach(button => {
      let text = button.text;
      context.beginPath()
      context.strokeStyle = '#4d4c4c'
      context.fillStyle = button.style[0]
      context.lineWidth = 5 / scale;
      context.rect(button.x / scale, button.y / scale, button.width / scale, button.height / scale)
      context.fillRect(button.x / scale, button.y / scale + button.height / scale / 2, button.width / scale, button.height / scale / 2)
      context.fillStyle = button.style[1]
      context.fillRect(button.x / scale, button.y / scale, button.width / scale, button.height / scale / 2)
      context.stroke();

      context.font = 20 / scale + "px arial";
      context.strokeStyle = '#000000';
      context.fillStyle = '#FFFFFF';

      if(button.id == 2 || button.id == 3){
        text = reload + button.text;
      }
      context.strokeText(text, (button.x + 5) / scale, button.y / scale + (button.height - 8) / scale)
      context.fillText(text, (button.x + 5) / scale, button.y / scale + (button.height - 8) / scale)
    });
  }
  function createButton(x, y, width, height, text, id, callback){
    buttons.push(
      {
        x: x,
        y: y,
        width: width,
        height: height,
        text: text,
        style: themes[id],
        id: id,
      }
    )

  }
  createButton(450, 20, 100, 35, "Predator [J]", 0, clump)
  createButton(570, 20, 100, 35, "Hunter [U]", 1, clump2)
  createButton(690, 20, 50, 35, "- [,]", 2, decreaseReload)
  createButton(760, 20, 50, 35, "+ [.]", 3, increaseReload)

  window.requestAnimationFrame(render)
}, 2500)