Infinite powers + Multidrop*PUBLIC RELEASE*

easy :D

当前为 2024-03-16 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Infinite powers + Multidrop*PUBLIC RELEASE*
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  easy :D
// @author       Vaqu
// @match        https://agma.io/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=agma.io
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    //virus not made yet cuz im lazy
    /*
    YOU SET THE KEYS U WANT IN SETTINGS
*/
    //important variables

    let socket = new WebSocket("wss://agma.io")
    var $ = window.$
    var pwAmnt = $("invRecombine").value
    var pwAmnt2 = $("invSpeed").value
    var pwAmnt3 = $("invVirus").value
    var user = document.getElementByClassName("username")
    var keyLol1 = "E";
    var keyLol2 = "S";
    var keyLol3 = "X";
    var keyLol4 = "1";
    var keyLol5 = "Q";
    var keyLol6 = "2";
    var keyLol7 = "3";
    var scriptSuccess = true;

window.addEventListener('keydown', keydown);
setTimeout(function() {
    keyLol1 = keyLol1.charCodeAt(0)
    keyLol2 = keyLol2.charCodeAt(0)
    keyLol3 = keyLol3.charCodeAt(0)
    keyLol4 = keyLol4.charCodeAt(0)
    keyLol5 = keyLol5.charCodeAt(0)
    keyLol6 = keyLol6.charCodeAt(0)
    keyLol7 = keyLol7.charCodeAt(0)
    

}, 5000)
    window.alert("Script is already started, no buttons")
    //this code has been patched, make new version
    /*if(event.keyCode == keyLol1){
        socket.send("#invRecombine", () => {
            class AddRecs {
                constructor(){
                    pwAmnt++
                }
            }
            this.recombine = new AddRecs()
            this.recombine.init()
            user.pwAmnt = user.pwAmnt + 1
            
        })
    }*/
    if(e.which == keyLol1){
        socket.send("#invRecombine", () => {
            class NewRec {
                constructor(){
                    pwAmnt.getUint64(32, dataPosOnScreen(this, false))
                    pwAmnt++
                }
                recval(val){
                    return new Array(32)
                    $("#invRecombine").removeAttr("undef")
                }
                recall(byte){
                    //recall incase agma doesnt join 2 arrays
                    byte.DataArray(() =>{
                        return async function(){
                            await DelayNode(59)
                            DataTransfer.redefine()
                        }
                    })
                    agma.innerJs.getUint8(1, 130).removeAttr("block")
                }
            }
            if( style.display.document.chatBox == "block") return
            NewRec.recall("recombine")
            setUint8(fetch(document.agma(js, true)))
            NewRec.recval()
        })
    }
    /* =========================================================================================
    if(event.keyCode == keyLol2){
        socket.send("#invSpeed", () => {
            class AddSpeed {
                constructor(){
                    pwAmnt2++
                }
            }
            this.speed = new AddSpeed()
            this.speed.init()
            user.pwAmnt2 = user.pwAmnt2 + 1
            
        })
    }
     ============================================================================================
    */
     if(e.which == keyLol1){
        socket.send("#invSpeed", () => {
            class NewSpeed {
                constructor(){
                    pwAmnt.getUint64(32, dataPosOnScreen(this, false))
                    pwAmnt++
                }
                speedval(val){
                    return new Array(16)
                    $("#invSpeed").removeAttr("undef")
                }
                recall(byte){
                    //recall incase agma doesnt join 2 arrays
                    byte.DataArray(() =>{
                        return async function(){
                            await DelayNode(59)
                            DataTransfer.redefine()
                        }
                    })
                    agma.innerJs.getUint8(1, 140).removeAttr("block")
                }
            }
            if( style.display.document.chatBox == "block") return
            NewSpeed.recall("speed")
            setUint8(fetch(document.agma(js, true)))
            NewRec.speedval()
        })
    }
    // VIRUS COMING SOON!
        if(event.keyCode == keyLol3){
        socket.send("#invVirus", () => {
            class AddVirus {
                constructor(){
                    pwAmnt3++
                }
            }
            if(e.which != 1){return false;}
            this.virus = new AddVirus()
            this.virus.init(() => {if(user.usedVirus) new AddVirus()})
            user.pwAmnt3 = user.pwAmnt3 + 1
            
        })
    }
    parseFloat(pwAmnt.val())
    parseFloat(pwAmnt2.val())
//multidrop
const multiple = (num, type) => {
    for (let i = 0; i < num; i++) {
      sendPw(type);
    }
  };
  window.addEventListener("keydown", function(e) {
    if (ischecked === true && !$('input, textarea').is(':focus')) {
      if (e.repeat) {
        e.preventDefault(); // Prevents the default repeating behavior of the key
        return; // Exit the function if the key is being held down
      }
  
      if (e.keyCode === keyCodes.multiple) {
        multiple(amountpellet, 3);
      } else if (e.keyCode === keyCodes.mothercellantirecfreeze) {
      sendPw(12);
          sendPw(5);
      } else if (e.keyCode === keyCodes.virusantifreeze) {
       sendPw(12);
          sendPw(4);
      } else if (e.keyCode === keyCodes.rec) {
        sendPw(1);
      } else if (e.keyCode === keyCodes.speed) {
        sendPw(2);
      } else if (e.keyCode === keyCodes.virus) {
        sendPw(4);
      } else if (e.keyCode === keyCodes.mothercell) {
        sendPw(5);
      } else if (e.keyCode === keyCodes.portal) {
        sendPw(6);
      } else if (e.keyCode === keyCodes.block) {
        sendPw(9);
      } else if (e.keyCode === keyCodes.freeze) {
        sendPw(8);
      } else if (e.keyCode === keyCodes.antiFreeze) {
        sendPw(11);
      } else if (e.keyCode === keyCodes.antiRec) {
        sendPw(12);
      } else if (e.keyCode === keyCodes.shield) {
        sendPw(14);
      }
    }
  });
  
  var amountpellet;
  var ischecked = false;
  var checkbox = document.createElement('input');
  checkbox.type = 'checkbox';
  checkbox.id = 'myCheckbox';
  checkbox.name = 'myCheckbox';
  var label = document.createElement('label');
  label.textContent = 'Multi';
  label.setAttribute('for', 'myCheckbox');
  var settingTab3 = document.getElementById('userSettings');
  settingTab3.appendChild(checkbox);
  settingTab3.appendChild(label);
  checkbox.addEventListener('change', function() {
    if (checkbox.checked) {
      console.log('Checkbox is checked. Set to true.');
      ischecked = true;
      curserMsg(`Multi: Active`, 'green')
    } else {
      console.log('Checkbox is not checked. Set to false.');
      ischecked = false;
      curserMsg(`Multi: Disactivated`, 'red')
    }
  });
  const pelletSlider = document.createElement("input");
  pelletSlider.type = "range";
  pelletSlider.min = "1";
  pelletSlider.max = "30";
  pelletSlider.value = "15";
    const pelletLabel = document.createElement("label");
  pelletLabel.textContent = "Multi-Pellet Amount:";
  pelletSlider.addEventListener("input", function() {
    pelletLabel.textContent = `Multi-Pellet Amount: ${pelletSlider.value}`;
  });
      pelletSlider.dispatchEvent(new Event("input"));
  settingTab3.appendChild(pelletSlider);
      settingTab3.appendChild(pelletLabel);
  var box = document.createElement("div");
  box.style.width = "355px";
  box.style.height = "250px";
  box.style.backgroundColor = "rgba(0, 0, 0, 0.5)";
  box.style.border = "2px solid black";
  box.style.position = "absolute";
  box.style.top = "50%";
  box.style.left = "50%";
  box.style.transform = "translate(-50%, 80%)";
  var centerPanel = document.querySelector(".user-settings");
  centerPanel.appendChild(box);
  
  var label1 = document.createElement("span");
  label1.innerText = "Multidrop by Mhero ;D";
  label1.style.position = "absolute";
  label1.style.top = "0";
  label1.style.left = "50%";
  label1.style.transform = "translateX(-50%)";
  label1.style.fontSize = "18px";
  //label1.style.color = "";
  box.appendChild(label1);
  
  const powers = [
    { name: "rec", label: "Recombine", key: "" },
    { name: "speed", label: "Speed", key: "" },
    { name: "growth", label: "Growth", key: "" },
    { name: "virus", label: "Virus", key: "" },
    { name: "mothercell", label: "Mothercell", key: "" },
    { name: "portal", label: "Portal", key: "" },
    { name: "block", label: "Block", key: "" },
    { name: "freeze", label: "Freeze", key: "" },
    { name: "antiFreeze", label: "Anti Freeze", key: "" },
    { name: "antiRec", label: "Anti Recombine", key: "" },
    { name: "shield", label: "Shield", key: "" },
    { name: "multiple", label: "Mulit-pellet", key: "" },
    { name: "virusantifreeze", label: "Mul-virus", key: "" },
    { name: "mothercellantirecfreeze", label: "Mul-mothercelll", key: "" }
    ];
  const combo = [
  
  ];
  let activeHotkey = null;
  const numRows = 2; // Number of rows to display
  const powersPerRow = Math.ceil(powers.length / numRows); // Number of powers per row
  
  const rowHeight = 10; // Adjust the height of each row
  const powerSpacing = 25; // Adjust the vertical spacing between hotkeys in a row
  
  const multikeyData = JSON.parse(localStorage.getItem("Multikey")) || {};
  
  powers.forEach((power) => {
    const rowIndex = Math.floor(powers.indexOf(power) / powersPerRow); // Determine the row index
  
    const powerLabel = document.createElement("label");
    powerLabel.innerText = power.label;
    powerLabel.style.position = "absolute";
    powerLabel.style.left = `${rowIndex === 0 ? "0" : "60%"}`; // Adjust the left position based on the row index
    powerLabel.style.top = `${rowIndex * rowHeight + powerSpacing * (powers.indexOf(power) % powersPerRow) + 30}px`; // Calculate the top position with spacing
    powerLabel.style.transform = `translateY(-50%) translateX(${rowIndex === 0 ? "0%" : "0"})`; // Adjust the transform based on the row index
    powerLabel.style.fontSize = "16px";
    box.appendChild(powerLabel);
  
    const powerHotkey = document.createElement("div");
    powerHotkey.className = "hotkey";
    powerHotkey.style.width = "40px";
    powerHotkey.style.height = "25px";
    powerHotkey.style.border = "1px solid black";
    powerHotkey.style.borderRadius = "20px";
    powerHotkey.style.position = "absolute";
    powerHotkey.style.top = `${rowIndex * rowHeight + powerSpacing * (powers.indexOf(power) % powersPerRow) + 30}px`; // Calculate the top position with spacing
    powerHotkey.style.left = `${rowIndex === 0 ? "80px" : "315px"}`; // Adjust the left position based on the row index
    powerHotkey.style.transform = "translateY(-50%)";
    powerHotkey.style.backgroundColor = "yellow";
    powerHotkey.style.textAlign = "center";
    powerHotkey.style.fontSize = "20px";
    powerHotkey.style.cursor = "pointer";
      power.key = multikeyData[power.name]?.key || ""; // Set the hotkey value from stored data
    powerHotkey.innerText = power.key.toUpperCase();
      powerHotkey.style.color = "black";
    box.appendChild(powerHotkey);
  
    let click = false;
  
    powerHotkey.addEventListener("click", function() {
      if (click) {
        powerHotkey.style.backgroundColor = "yellow";
        powerHotkey.innerText = power.key.toUpperCase();
          const amount = parseInt(pelletSlider.value, 10);
      pelletLabel.textContent = `Mul-Pellet Amount: ${amount}`;
        click = false;
      } else {
        powerHotkey.style.backgroundColor = "#ffff99";
        click = true;
      }
    });
  
    document.addEventListener("keydown", function(event) {
      if (click) {
        const keyCode = event.keyCode;
        let key = "";
  
        const specialCharacters = {
          186: ";",
          187: "=",
          188: ",",
          189: "-",
          190: ".",
          191: "/",
          192: "`",
          219: "[",
          220: "\\",
          221: "]",
          222: "'"
        };
  
        const numpadNumbers = {
          96: "0",
          97: "1",
          98: "2",
          99: "3",
          100: "4",
          101: "5",
          102: "6",
          103: "7",
          104: "8",
          105: "9",
          111: "/",
          106:"*",
          109: "-",
          107: "+",
          110: "."
        };
  
        const specialKeys = {
          8: "Backspace",
          9: "Tab",
          13: "Enter",
          16: "Shift",
          17: "Ctrl",
          18: "Alt",
          19: "Pause",
          20: "CapsLock",
          27: "Escape",
          32: "Space",
          33: "Page Up",
          34: "Page Down",
          35: "End",
          36: "Home",
          37: "Arrow Left",
          38: "Arrow Up",
          39: "Arrow Right",
          40: "Arrow Down",
          45: "Insert",
          46: "Delete",
          91: "Windows",
          92: "Windows",
          93: "Context Menu",
          112: "F1",
          113: "F2",
          114: "F3",
          115: "F4",
          116: "F5",
          117: "F6",
          118: "F7",
          119: "F8",
          120: "F9",
          121: "F10",
          122: "F11",
          123: "F12",
          173: "f1",
          174:"123",
          175:"lol",
          177:"fuck",
          179:":V",
          176: "nothing",
          144: "NumLock",
          145: "ScrollLock",
          12: "5"
        };
  
        if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 48 && keyCode <= 57)) {
          key = String.fromCharCode(keyCode).toLowerCase();
        } else if (specialCharacters.hasOwnProperty(keyCode)) {
          key = specialCharacters[keyCode];
        } else if (numpadNumbers.hasOwnProperty(keyCode)) {
          key = numpadNumbers[keyCode];
        } else if (specialKeys.hasOwnProperty(keyCode)) {
          curserMsg("Invalid key", "red");
          click = false;
          powerHotkey.style.backgroundColor = "yellow";
          return;
        }
  
        powerHotkey.innerText = key.toUpperCase();
        powerHotkey.style.color = "black";
        power.key = key;
  
        // Update the multikeyData object with the power's key and keyCode
        multikeyData[power.name] = {
          ...multikeyData[power.name], // Preserve existing data
          key: key,
          keyCode: keyCode
        };
  
        // Update and store the multikeyData object in localStorage
        localStorage.setItem("Multikey", JSON.stringify(multikeyData));
  
        curserMsg(`Hotkey set for ${power.name}`, "green");
        click = false;
        powerHotkey.style.backgroundColor = "yellow";
      }
    });
  
    powerHotkey.addEventListener("contextmenu", function(event) {
      event.preventDefault(); // Prevent the default right-click context menu
      removeHotkey();
    });
  
    function removeHotkey() {
      powerHotkey.innerText = ""; // Clear the hotkey display
      powerHotkey.style.backgroundColor = "yellow";
      power.key = ""; // Clear the hotkey data
  
      // Remove the hotkey from the multikeyData object
      delete multikeyData[power.name];
      localStorage.setItem("Multikey", JSON.stringify(multikeyData));
      curserMsg(`Hotkey removed for ${power.name}`, "green");
    }
  });
  
  
  let curserTimeout;
  
  function curserMsg(msg, color, time) {
    if (color == "green") color = "rgb(0, 192, 0)";
    if (color == "red") color = "rgb(255, 0, 0)";
    if (color == "gray") color = "rgb(153, 153, 153)";
    clearTimeout(curserTimeout);
    $('#curser').text(msg).show().css('color', color);
    if (time !== 0) curserTimeout = setTimeout(() => $('#curser').fadeOut(400), time ?? 4e3);
  }
  
  pelletSlider.addEventListener("input", function() {
    multikeyData["multiple"] = {
    ...multikeyData["multiple"],
    amount: pelletSlider.value.toString()
  };
      pelletSlider.addEventListener("input", function() {
    const amount = parseInt(pelletSlider.value, 10);
    pelletLabel.textContent = `Mul-Pellet Amount: ${amount}`;
  });
  localStorage.setItem("Multikey", JSON.stringify(multikeyData));
    pelletLabel.textContent = `Mul-Pellet Amount: ${pelletSlider.value}`;
  });
  const savedMultikeyData = JSON.parse(localStorage.getItem("Multikey")) || {};
  const defaultPelletValue = parseInt(savedMultikeyData["multiple"]?.amount, 10) || 15;
  pelletSlider.value = defaultPelletValue;
  pelletLabel.textContent = `Mul-Pellet Amount: ${defaultPelletValue}`;
  if (!savedMultikeyData["multiple"]) {
    savedMultikeyData["multiple"] = { amount: defaultPelletValue };
    localStorage.setItem("Multikey", JSON.stringify(savedMultikeyData));
  }
  // Function to update the Mul-Pellet Amount value in local storage
  const updatePelletAmount = () => {
    const amount = parseInt(pelletSlider.value, 10);
    localStorage.setItem("Multikey", JSON.stringify({ ...multikeyData, pelletAmount: amount }));
      amountpellet = amount;
      console.log(amountpellet)
  };
  
  // Update the pellet amount initially
  updatePelletAmount();
  
  // Update the pellet amount in local storage every 2 seconds
  setInterval(updatePelletAmount, 1000);
  
  const getKeyCodes = () => {
    const controls = JSON.parse(localStorage.getItem('Multikey')) || {};
  
    return {
      rec: controls.rec?.keyCode || '',
      speed: controls.speed?.keyCode || '',
      growth: controls.growth?.keyCode || '',
      virus: controls.virus?.keyCode || '',
      mothercell: controls.mothercell?.keyCode || '',
      portal: controls.portal?.keyCode || '',
      block: controls.block?.keyCode || '',
      freeze: controls.freeze?.keyCode || '',
      antiFreeze: controls.antiFreeze?.keyCode || '',
      antiRec: controls.antiRec?.keyCode || '',
      shield: controls.shield?.keyCode || '',
      multiple: controls.multiple?.keyCode || '',
      virusantifreeze: controls.virusantifreeze?.keyCode || '',
      mothercellantirecfreeze: controls.mothercellantirecfreeze?.keyCode || '',
    };
  };
  const keyCodes = getKeyCodes();
  setInterval(() => {
    const updatedKeyCodes = getKeyCodes();
    Object.assign(keyCodes, updatedKeyCodes);
  }, 2000);
  const keys = {};
  powers.forEach((power) => {
    const storedData = multikeyData[power.name] || {};
    power.key = storedData.key || "";
    powerHotkey.innerText = storedData.key ? storedData.key.toUpperCase() : "";
    keys[power.name] = storedData.keyCode || "";
  });
  const powerupMap = {
      [keys.rec]: 1,
      [keys.speed]: 2,
      [keys.growth]: 3,
      [keys.virus]: 4,
      [keys.mothercell]: 5,
      [keys.portal]: 6,
      [keys.block]: 9,
      [keys.freeze]: 8,
      [keys.antiFreeze]: 11,
      [keys.antiRec]: 12,
      [keys.shield]: 14
  }
  
  const macro = (num, types) => {
    for (let i = 0; i < num; i++) {
      for (let j = 0; j < types.length; j++) {
        sendPw(types[j]);
      }
    }
  };
  
  const anti = (type) => {
    sendPw(type);
  };
    //ANTI PATCH
    let scriptPatched = false
    if(agma.innerJS == false){scriptPatched = true}
})();