您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Plays (mostly) automatically instead of you. Work very much in progress.
// ==UserScript== // @name Automate Arcanum // @name:hu Automata Arcanum // @namespace https://greasyfork.org/users/390287 // @version 0.001 // @description Plays (mostly) automatically instead of you. Work very much in progress. // @description:hu Automatizáló script az Arcanum játékhoz. // @author Yoyó // @icon https://i.ibb.co/Y7W0Zwd/pinkieemote.png // @match http://www.lerpinglemur.com/arcanum/ // @match https://game312933.konggames.com/gamez/0031/2933/* // @grant none // ==/UserScript== //user settings var timeToIdle = 3; //how many ticks should it take for the idle stuff to kick in. default 3 var stamToKeep = 80; // stamina to keep for stuff, in percentage. default 80 var tickTime = 2000; // how many milliseconds should a tick take. default 2000 //program starts here var idleTimer = 0; var idling = 0; const data = { "qa": { //for quick action "Clean Stables":{ "stam":-0.08, "virtue":0.1, "gold":0.2 }, "Buy Scroll":{ "gold":-10, "scrolls":1 } } } var repetitionIsTheKeyToSuccess = window.setInterval (function(){ let stamXPath="//div[@class='vitals']//table[@class='bars']//div[@class='stamina']//span[@class='bar-text']"; let stamText = document.evaluate(stamXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let stamValues = stamText.textContent.split("/"); let currentStam = parseFloat(stamValues[0]); let maxStam = parseFloat(stamValues[1]); let goldXPath = "//div[@class='resource-list']/tr[@class='item-name']/td[text()='gold']/following-sibling::td[@class='num-align']"; let goldText = document.evaluate(goldXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let goldValues = goldText.textContent.split("/"); let currentGold = parseInt(goldValues[0]); let maxGold = parseInt(goldValues[1]); let pumpkinXPath = "//div[@class='resource-list']/tr[contains(@class,'item-name')]/td[text()='pumpkins🎃']/following-sibling::td[@class='num-align']"; let pumpkinText = document.evaluate(pumpkinXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let pumpkinValues = pumpkinText.textContent.split("/"); let currentPump = parseInt(pumpkinValues[0]); let maxPump = parseInt(pumpkinValues[1]); let toStam = maxStam*stamToKeep/100; let jackoXPath = `//div[@class='resource-list']/tr[contains(@class,'item-name')]/td[text()="jack o' lantern🎃"]/following-sibling::td[@class='num-align']`; let jackoText = document.evaluate(jackoXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let jackoValues = jackoText.textContent.split("/"); let currentJacko = parseInt(jackoValues[0]); let maxJacko = parseInt(jackoValues[1]); let runningXPath = "//div[@class='vitals']/div[@class='running']/div/span/text()"; let runningText = document.evaluate(runningXPath, document, null, XPathResult.STRING_TYPE, null); let restXPath = "//div[@class='vitals']/div[@class='separate']/button[2]"; let restButton = document.evaluate(restXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let studyXPath = "//span[@class='action-btn runnable']/button[text()='study']"; let studyButton = document.evaluate(studyXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let filchXPath = "//span[@class='action-btn runnable']/button[text()='filch pumpkins🎃']"; let filchButton = document.evaluate(filchXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let carveXPath = "//span[@class='action-btn runnable']/button[text()='carve lantern🎃']"; let carveButton = document.evaluate(carveXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; let cleanStableXPath = "//span[contains(@class,'action-btn')]/button[text()='Clean Stables']"; let cleanStableButton = document.evaluate(cleanStableXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (!cleanStableButton.disabled && currentGold < maxGold && currentStam > toStam) { let needToRun = (maxGold - currentGold)/data.qa["Clean Stables"].gold; while (needToRun > 0 && !cleanStableButton.disabled && currentStam > toStam) { cleanStableButton.click(); currentStam = currentStam + data.qa["Clean Stables"].stam; needToRun = needToRun - 1; } } let upgradeXPath = "//div[@class='upgrade-list'][1]/span[@class='action-btn' and not(@class='locked')]/button[@class='wrapped-btn' and not(@disabled)]"; let upgradeButton = document.evaluate(upgradeXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (upgradeButton != null) { upgradeButton.click(); } let buyScrollXPath = "//span[@class='action-btn']/button[text()='Buy scroll' and not(@disabled)]"; let buyScrollButton = document.evaluate(buyScrollXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (buyScrollButton !== null && currentGold == maxGold) { buyScrollButton.click(); } if (idling === 0) { idleTimer = idleTimer + 1; } if (idleTimer >= timeToIdle) { idleTimer = 0; idling = 1; } if (idling == 100) { if (runningText.stringValue != "studying scrolls") { if(runningText.stringValue != "resting") { idling = 0; } } } if (idling == 2) { if (currentPump == maxPump && runningText.stringValue === "") { idling = 1; } } if (idling == 3) { if (currentJacko == maxJacko) { idling = 2; filchButton.click(); } } if (idling == 1) { if (currentStam <= maxStam && runningText.stringValue === "") { restButton.click(); } if (currentStam == maxStam && runningText.stringValue === "") { if (filchButton !== null) { if (!filchButton.disabled) { filchButton.click(); idling = 2; } else if (carveButton !== null) { carveButton.click(); idling = 3; } else if (studyButton !== null) { if (!studyButton.disabled) { studyButton.click(); idling = 100; } } } else if (studyButton !== null) { if (!studyButton.disabled) { studyButton.click(); idling = 100; } } } } },tickTime);