您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically switches your gym before training
当前为
// ==UserScript== // @name Auto gym switch // @namespace https://gitgud.com/stephenlynx // @version 1.1.2 // @description Automatically switches your gym before training // @author Stephen Lynx // @license MIT // @match https://www.torn.com/gym.php // @icon https://www.google.com/s2/favicons?sz=64&domain=torn.com // @run-at document-start // @grant none // ==/UserScript== var lynx = {}; lynx.gymInfo = { 1 : { 'str': 2, 'spe': 2, 'def': 2, 'dex': 2 }, 2 : { 'str': 2.4, 'spe': 2.4, 'def': 2.7, 'dex': 2.4 }, 3 : { 'str': 2.7, 'spe': 3.2, 'def': 3.0, 'dex': 2.7 }, 4 : { 'str': 3.2, 'spe': 3.2, 'def': 3.2, 'dex': 0 }, 5 : { 'str': 3.4, 'spe': 3.6, 'def': 3.4, 'dex': 3.2 }, 6 : { 'str': 3.4, 'spe': 3.6, 'def': 3.6, 'dex': 3.8 }, 7 : { 'str': 3.7, 'spe': 0, 'def': 3.7, 'dex': 3.7 }, 8 : { 'str': 4, 'spe': 4, 'def': 4, 'dex': 4 }, 9 : { 'str': 4.8, 'spe': 4.4, 'def': 4, 'dex': 4.2 }, 10 : { 'str': 4.4, 'spe': 4.6, 'def': 4.8, 'dex': 4.4 }, 11 : { 'str': 5, 'spe': 4.6, 'def': 5.2, 'dex': 4.6 }, 12 : { 'str': 5, 'spe': 5.2, 'def': 5, 'dex': 5 }, 13 : { 'str': 5, 'spe': 5.4, 'def': 4.8, 'dex': 5.2 }, 14 : { 'str': 5.5, 'spe': 5.7, 'def': 5.5, 'dex': 5.2 }, 15 : { 'str': 0, 'spe': 5.5, 'def': 5.5, 'dex': 5.7 }, 16 : { 'str': 6, 'spe': 6, 'def': 6, 'dex': 6 }, 17 : { 'str': 6, 'spe': 6.2, 'def': 6.4, 'dex': 6.2 }, 18 : { 'str': 6.5, 'spe': 6.4, 'def': 6.2, 'dex': 6.2 }, 19 : { 'str': 6.4, 'spe': 6.5, 'def': 6.4, 'dex': 6.8 }, 20 : { 'str': 6.4, 'spe': 6.4, 'def': 6.8, 'dex': 7 }, 21 : { 'str': 7, 'spe': 6.4, 'def': 6.4, 'dex': 6.5 }, 22 : { 'str': 6.8, 'spe': 6.5, 'def': 7, 'dex': 6.5 }, 23 : { 'str': 6.8, 'spe': 7, 'def': 7, 'dex': 6.8 }, 24 : { 'str': 7.3, 'spe': 7.3, 'def': 7.3, 'dex': 7.3 }, 25 : { 'str': 0, 'spe': 0, 'def': 7.5, 'dex': 7.5 }, 26 : { 'str': 7.5, 'spe': 7.5, 'def': 0, 'dex': 0 }, 27 : { 'str': 8, 'spe': 0, 'def': 0, 'dex': 0 }, 28 : { 'str': 0, 'spe': 0, 'def': 8, 'dex': 0 }, 29 : { 'str': 0, 'spe': 8, 'def': 0, 'dex': 0 }, 30 : { 'str': 0, 'spe': 0, 'def': 0, 'dex': 8 }, 31 : { 'str': 9, 'spe': 9, 'def': 9, 'dex': 9 }, 32 : { 'str': 10, 'spe': 10, 'def': 10, 'dex': 10 }, 33 : { 'str': 3.4, 'spe': 3.4, 'def': 4.6, 'dex': 0 } }; //lynx.currentGym is used to store the current gym being used lynx.classList = ['specialist', 'heavyweight', 'middleweight', 'lightweight', 'jail']; lynx.picks = {}; lynx.stats = ['str', 'def', 'spe', 'dex']; lynx.checkGym = function(gymId) { lynx.gymInfo[gymId].checked = true; var gymStats = lynx.gymInfo[gymId]; for (var i = 0; i < lynx.stats.length; i++) { var stat = lynx.stats[i]; var pick = lynx.picks[stat]; //avoid unnecessary swaps when the gain is the same by using the more advanced gym if (gymStats[stat] && (!pick || pick.gain < gymStats[stat] || (pick.gain === gymStats[stat] && pick.id < gymId))) { lynx.picks[stat] = { id: gymId, gain: gymStats[stat] }; } } }; lynx.pickGyms = function(gymStatus) { for (var i = 0; i < lynx.classList.length; i++) { var gymClass = gymStatus[lynx.classList[i]]; for (var j = 0; j < gymClass.length; j++) { var gym = gymClass[j]; lynx.gymInfo[gym.id].name = gym.name; lynx.gymInfo[gym.id].cost = gym.energyCost; if (gym.status === 'locked' || gym.status === 'inProgress') { continue; } if (gym.status === 'active') { lynx.currentGym = gym.id; } lynx.checkGym(gym.id); } } }; (function() { 'use strict'; var originalFetch = window.fetch; window.fetch = async function(...args) { if (!args[0].indexOf('/gym.php?step=train')) { var stat = JSON.parse(args[1].body).stat.substring(0, 3); var gymToUse = lynx.picks[stat].id; if (gymToUse !== lynx.currentGym) { var changeResult = await getAction({ type: 'post', action: 'gym.php', data: { step: 'changeGym', gymID: gymToUse } }); if (changeResult.success) { lynx.currentGym = gymToUse; try { var logo = document.getElementsByClassName('logo___iY1NL')[0]; var newSrc = logo.src.split('/'); newSrc[newSrc.length - 1] = gymToUse + '.png'; logo.src = newSrc.join('/'); var labelName = document.getElementsByClassName('notificationText___jArOy')[0].getElementsByTagName('b')[0]; labelName.innerHTML = lynx.gymInfo[gymToUse].name; var listLabelEnergy = document.getElementsByClassName('description___h40Cs'); for (var i = 0; i < listLabelEnergy.length; i++) { var label = listLabelEnergy[i].getElementsByTagName('p')[1]; label.innerHTML = lynx.gymInfo[gymToUse].cost + ' energy per train'; } document.getElementsByClassName('active___dgNyD')[0].classList.remove('active___dgNyD'); document.getElementById('gym-' + gymToUse).classList.add("active___dgNyD"); } catch (error) { console.log(error); return new Response(JSON.stringify({ message: 'Gym changed but failed to update visual elements. Wait for patch.' })); } } return new Response(JSON.stringify({ message: changeResult.message })); } } var result = await originalFetch(...args); if (!lynx.booted && !args[0].indexOf('/gym.php?step=getInitialGymInfo')) { lynx.booted = true; var jsonData = await result.clone().json(); lynx.pickGyms(jsonData.gyms); } else if (!args[0].indexOf('/gym.php?step=changeGym')) { lynx.currentGym = JSON.parse(args[1].body).gymID; if (!lynx.gymInfo[lynx.currentGym].checked) { lynx.checkGym(lynx.currentGym); } } return result; }; })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址