TPPC v8: Battle Script

Auto-battles the specified trainer; used to level up Pokemon.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         TPPC v8: Battle Script
// @description  Auto-battles the specified trainer; used to level up Pokemon.
// @include      http://*tppcrpg.net*
// @grant        GM_deleteValue
// @grant        GM_getValue
// @grant        GM_setValue
// @namespace    https://gitlab.com/toxocious
// @author       Toxocious
// @version      8.0
// ==/UserScript==

/**
 * Gyms
 */
const GYMS = {
  '3379420': { 'Roster_Levels': [ 25, 25, 25, 25, 25, 25 ] },
  '3166941': { 'Roster_Levels': [ 43, 40, 40, 40, 40, 40 ] },
  '3269882': { 'Roster_Levels': [ 75, 75, 75, 75, 75, 75 ] },
  '3101815': { 'Roster_Levels': [ 100, 100, 100, 100, 100, 100 ] },
  '1113640': { 'Roster_Levels': [ 150, 150, 150, 150, 150, 150 ] },
  '1325349': { 'Roster_Levels': [ 200, 200, 200, 200, 200, 200 ] },
  '924714':  { 'Roster_Levels': [ 250, 250, 250, 250, 250, 250 ] },
  '913641':  { 'Roster_Levels': [ 350, 350, 350, 350, 350, 350 ] },
  '3033909': { 'Roster_Levels': [ 400, 400, 400, 400, 400, 400 ] },
  '3384456': { 'Roster_Levels': [ 500, 500, 500, 500, 500, 500 ] },
  '2646064': { 'Roster_Levels': [ 650, 650, 650, 650, 650, 650 ] },
  '2656958': { 'Roster_Levels': [ 800, 800, 800, 815, 815, 815 ] },
  '1933117': { 'Roster_Levels': [ 900, 900, 900, 900, 900, 900 ] },
  '3384457': { 'Roster_Levels': [ 1000, 1000, 1000, 1000, 1000, 1000 ] },
  '3394572': { 'Roster_Levels': [ 1200, 1200, 1200, 1200, 1200, 1200 ] },
  '498042':  { 'Roster_Levels': [ 1506, 1551, 1576, 1550, 1550, 1550 ] },
  '2536240': { 'Roster_Levels': [ 1760, 1760, 1760, 1760, 1760, 1760 ] },
  '3384459': { 'Roster_Levels': [ 2000, 2000, 2000, 2000, 2000, 2000 ] },
  '482301':  { 'Roster_Levels': [ 2500, 2500, 2500, 2500, 2500, 2500 ] },
  '3439851': { 'Roster_Levels': [ 3000, 3000, 3000, 3000, 3000, 3000 ] },
  '3421893': { 'Roster_Levels': [ 3499, 3499, 3500, 3499, 3499, 3499 ] },
  '995268':  { 'Roster_Levels': [ 4000, 4000, 4000, 4000, 4000, 4000 ] },
  '3328818': { 'Roster_Levels': [ 4499, 4499, 4499, 4499, 4499, 4499 ] },
  '3101818': { 'Roster_Levels': [ 5000, 5000, 5000, 5000, 5000, 5000 ] },
  '3395546': { 'Roster_Levels': [ 5500, 5500, 5500, 5500, 5500, 5500 ] },
  '3402750': { 'Roster_Levels': [ 6000, 6000, 6000, 6000, 6000, 6000 ] },
  '3387834': { 'Roster_Levels': [ 6500, 6500, 6500, 6500, 6500, 6500 ] },
  '3355075': { 'Roster_Levels': [ 7000, 7000, 7000, 7000, 7000, 7000 ] },
  '3395547': { 'Roster_Levels': [ 7500, 7500, 7500, 7500, 7500, 7500 ] },
};

// Pick an ID from above, and the macro will auto-battle that account.
const GYM_ID = 3397010;

/**
 * The level in which you want the script to stop macroing.
 */
const goalLevel = 150;

// Variables ( Don't touch these. )
let randClick = 0;
let clicked = 0;
let count = 0;
let set = 0;
let randWidth = Math.floor(Math.random() * 50 + 20);
let randArea = Math.floor(Math.random() * 6 + 10);

// Sleep function.
function sleep(miliseconds)
{
  var currentTime = new Date().getTime();
  while (currentTime + miliseconds >= new Date().getTime()) {}
}

// If you're on the battle page.
if (window.location.pathname == "/battle.php")
{
  // Track random battle pauses.
  $(document).ready(function()
  {
    let set = 0;

    if (!localStorage.getItem('TPPC-v8-BS-Short-Pause'))
    {
      localStorage.setItem('TPPC-v8-BS-Short-Pause', 0);
    }

    if (!localStorage.getItem('TPPC-v8-BS-Long-Pause'))
    {
      localStorage.setItem('TPPC-v8-BS-Long-Pause', 0);
    }

    if ( set == 0 )
    {
      $(".lvlitem").append(`
        <br>
        <a href='#' style='color:#FFFFFF !important;text-decoration:none;'>
          Pause Count:
        </a> ` + localStorage.getItem('TPPC-v8-BS-Short-Pause') + ` <br />
        Long Pause: ` + localStorage.getItem('TPPC-v8-BS-Long-Pause')
      );
    }

    set = 1;

    $(".lvlitem a").click(function()
    {
      if(clicked === 0)
      {
        if (confirm("Reset counter?"))
        {
          clicked = 1;
          clearInterval(interval);
          localStorage.removeItem('TPPC-v8-BS-Short-Pause')
          localStorage.removeItem('TPPC-v8-BS-Long-Pause')
        }
      }
    });
  });

  // Set an interval.
  interval = setInterval(function()
  {
    // Alert once you've reached your set Goal Level.
    if (document.body.innerHTML.search("has reached level (" + goalLevel + ")") != -1)
    {
      clearInterval(interval);
      alert("Done!");
      return true;
    }

    // Restart battle with a random delay.
    links = document.getElementsByTagName("a");
    if ($("#cancelBattle > A").html() == "Restart Battle" && count === 0)
    {
      count++;
      myDelay = 200;
      randInt = Math.floor(Math.random() * 200 + 1);

      if (randInt == 1)
      {
        randDelay = Math.floor(Math.random() * 300 + Math.random() * 125 + 225);
        myDelay = myDelay * randDelay;

        var longpause = localStorage.getItem('TPPC-v8-BS-Long-Pause') + 1;
        localStorage.setItem('TPPC-v8-BS-Long-Pause', longpause);
      }

      setTimeout(function()
      {
        window.location = document.location.href.replace(/battle\.php.*$/, '') + 'battle.php?Battle=Trainer&Trainer=' + GYM_ID;
      }, Math.random() * 400 + myDelay);

    }

    // Get battle button position and top left, bottom right coords.
    x = $('.submit').position();
    cordX = x.left;
    cordY = x.top;

    if (document.body.innerHTML.lastIndexOf(/Loading.../) == -1)
    {
      inputs = document.getElementsByTagName("input");
      randInt = Math.floor(Math.random() * 720 + 1);

      if (randInt == 1)
      {
        randClick = Math.floor(Math.random() * 25000) + 5000;
        sleep(randClick);

        var shortpause = localStorage.getItem('TPPC-v8-BS-Short-Pause') + 1;
        localStorage.setItem('TPPC-v8-BS-Short-Pause', shortpause);
      }

      // Check to see if Blissey's levels have changed.
      let validGym = true;
      storeText = $('#Trainer2_Pokemon').text();
      storeText.split('|').slice(1).map(index =>
      {
        let pokemon = index.split(' ')[0];

        if (pokemon.indexOf('Chansey') < 0 && pokemon.indexOf('Blissey') < 0)
          validGym = false;

        let level = pokemon.split('(L:')[1].split(')')[0];
        if (GYMS[GYM_ID]['Roster_Levels'].includes(level) < 0)
          validGym = false;
      });

      if (!validGym)
      {
        clearInterval(interval);
        alert("The gym has been altered to some extent, so the macro has stopped execution.");

        return true;
      }

      for (i = 0; i < inputs.length; i++)
      {
        if (inputs[i].value.search(/(Attack)/) != -1)
        {
          count = 0;
          Move = document.getElementById("MyMove").value;

          var genX = Math.floor(Math.random() * randArea + cordX + randWidth);
          var genY = Math.floor(Math.random() * randArea + cordY + randWidth);

          unsafeWindow.getBattleStatus({
            "MyMove": Move,
            "pageID": Math.floor(Math.random() * randArea + cordX + randWidth) + "." + Math.floor(Math.random() * 18 + cordY + 3)
          });
        }

        if (inputs[i].value.search(/(Continue)/) != -1)
        {
          unsafeWindow.getBattleStatus({
            "MyMove": "WaitFaint",
            "pageID": Math.floor(Math.random() * randArea + cordX + randWidth) + "." + Math.floor(Math.random() * 15 + cordY + 2)
          });
        }
      }
    }
  }, Math.random() * 75 + 225);
}

/* =========== Captcha stuff =========== */
$(document).ready(function()
{
  // Alert when a captcha appears.
  if (document.body.innerHTML.search(/Please Enter The Combination You See Above/) != -1)
  {
    alert("Captcha!");
  }

  // After you solve the captcha, redirect to the battle trainer page.
  if (document.body.innerHTML.search(/You can resume battling/) != -1)
  {
    window.location = "http://www.tppcrpg.net/battle_trainer.php";
  }

  // If you're on the battle trainer page, begin battling.
  if (window.location == "http://www.tppcrpg.net/battle_trainer.php")
  {
    var input = document.getElementById('Trainer');
    input.value = input.value + battleGym["b" + gymLevel];
    $('input').click();
  }
});
// ==UserScript==
// @name        New script - google.com
// @namespace   Violentmonkey Scripts
// @match       https://chromewebstore.google.com/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag
// @grant       none
// @version     1.0
// @author      -
// @description 06/12/2023, 19:34:14
// ==/UserScript==