Infinite powers + Multidrop*PUBLIC RELEASE*

easy :D

目前為 2024-03-16 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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}
})();