Infinite powers + Multidrop*PUBLIC RELEASE*

easy :D

目前为 2024-03-16 提交的版本。查看 最新版本

// ==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}
})(); 

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址