Macro AGMA.IO

Editado por EmersonxD

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

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

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

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

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

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

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Macro AGMA.IO
// @namespace https://greasyfork.org/pt-BR/users/305931-emerson-bardusco
// @version      6.1
// @license      MIT
// @description  Editado por EmersonxD
// @author       EmersonxD
// @match        http://agma.io/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function () {
  'use strict';

  // Configurações globais
  const FEEDING_KEY = 'W';
  const FEEDING_INTERVAL = 20;
  const SPLIT_KEY = 'Space';
  const SPLIT_INTERVAL = 50;
  const SPLIT_COUNT_KEY = 'Q';
  const SPLIT_COUNT_DEFAULT = 4;
  const CUSTOM_SPLIT_COUNT_PROMPT = 'Digite a quantidade de vezes que deseja dividir a célula:';
  const CUSTOM_SPLIT_COUNT_MIN = 2;
  const MOVE_KEY = 'Shift';
  const MOVE_KEY_ALT = '4';
  const FEED_MOUSE_KEY = 'R';
  const FEED_MOUSE_MESSAGE = 'nick';

  // Variáveis globais
  let feeding = false;
  let splitCount = SPLIT_COUNT_DEFAULT;

  // Função para alimentar a célula
  function feed() {
    if (feeding) {
      const eventKeyDown = new KeyboardEvent('keydown', { keyCode: getKeyCode(FEEDING_KEY) });
      const eventKeyUp = new KeyboardEvent('keyup', { keyCode: getKeyCode(FEEDING_KEY) });
      document.dispatchEvent(eventKeyDown);
      document.dispatchEvent(eventKeyUp);
      setTimeout(feed, FEEDING_INTERVAL);
    }
  }

  // Função para dividir a célula em várias partes
  function split() {
    const eventKeyDown = new KeyboardEvent('keydown', { keyCode: getKeyCode(SPLIT_KEY) });
    const eventKeyUp = new KeyboardEvent('keyup', { keyCode: getKeyCode(SPLIT_KEY) });
    document.dispatchEvent(eventKeyDown);
    document.dispatchEvent(eventKeyUp);
  }

  // Função para executar o truque de divisão
  function doSplitTrick() {
    split();
    setTimeout(split, SPLIT_INTERVAL);
    setTimeout(split, SPLIT_INTERVAL * 2);
    setTimeout(split, SPLIT_INTERVAL * 3);
  }

  // Função para executar a divisão personalizada
  function doCustomSplit() {
    splitCount = prompt(CUSTOM_SPLIT_COUNT_PROMPT, splitCount);
    splitCount = parseInt(splitCount, 10);
    if (isNaN(splitCount) || splitCount < CUSTOM_SPLIT_COUNT_MIN) {
      alert(`A quantidade de divisão deve ser um número maior ou igual a ${CUSTOM_SPLIT_COUNT_MIN}.`);
      return;
    }
    for (let i = 0; i < splitCount; i++) {
      split();
    }
  }

  // Função para mover a célula para o centro da tela
  function moveToCenter() {
    const x = window.innerWidth / 2;
    const y = window.innerHeight / 2;
    const eventMouseMove = new MouseEvent('mousemove', { clientX: x, clientY: y });
    document.querySelector('canvas').dispatchEvent(eventMouseMove);
  }

  // Função para executar a ação do botão do mouse
  function doFeedMouse() {
    const nick = document.getElementById(FEED_MOUSE_MESSAGE).value;
    const eventRspwn = new CustomEvent('rspwn', { detail: { nick } });
    document.dispatchEvent(eventRspwn);
  }

  // Função para lidar com a tecla pressionada
  function onKeyDown(event) {
    switch (getKeyCode(event)) {
      case getKeyCode(FEEDING_KEY):
        feeding = true;
        feed();
        break;
      case getKeyCode(MOVE_KEY):
      case getKeyCode(MOVE_KEY_ALT):
        moveToCenter();
        break;
      case getKeyCode(SPLIT_KEY):
        split();
        break;
      case getKeyCode(SPLIT_COUNT_KEY):

        doCustomSplit();

        break;

      case getKeyCode(FEED_MOUSE_KEY):

        doFeedMouse();

        break;

      default:

        break;

    }

  }


  // Função para lidar com a tecla solta

  function onKeyUp(event) {

    if (getKeyCode(event) === getKeyCode(FEEDING_KEY)) {

      feeding = false;

    }

  }


  // Função para obter o código da tecla

  function getKeyCode(event) {

    return event.keyCode || event.which;

  }


  // Função para adicionar event listeners para as teclas pressionadas e soltas

  function addEventListeners() {

    document.addEventListener('keydown', onKeyDown);

    document.addEventListener('keyup', onKeyUp);

  }


  // Função para inicializar o script

  function init() {

    addEventListeners();

  }


  // Inicializa o script quando a página é carregada

  window.addEventListener('load', init);

})();