From bf74e57fdd5b6109412365d0b8135eabd3927636 Mon Sep 17 00:00:00 2001 From: Thomas Gaud <36661892+Irmagon@users.noreply.github.com> Date: Sun, 12 Jan 2025 22:09:17 +0300 Subject: [PATCH] 2.314 --- HeroWarsHelper_phone.user.js | 146 ++++++++++++++++++++++++++++++----- 1 file changed, 128 insertions(+), 18 deletions(-) diff --git a/HeroWarsHelper_phone.user.js b/HeroWarsHelper_phone.user.js index 8d11422..bc0fef2 100644 --- a/HeroWarsHelper_phone.user.js +++ b/HeroWarsHelper_phone.user.js @@ -3,7 +3,7 @@ // @name:en HeroWarsPhone // @name:ru HeroWarsPhone // @namespace HeroWarsPhone -// @version 2.312 +// @version 2.314 // @description Automation of actions for the game Hero Wars // @description:en Automation of actions for the game Hero Wars // @description:ru Автоматизация действий для игры Хроники Хаоса @@ -86,6 +86,10 @@ this.isTimeBetweenNewDays = function () { } return false; }; + +function getUserInfo() { + return userInfo; +} /** * Original methods for working with AJAX * @@ -1547,6 +1551,10 @@ let lastBattleInfo = null; */ let isCancalBattle = true; +function setIsCancalBattle(value) { + isCancalBattle = value; +} + /** * Certificator of the last open nesting doll * @@ -1995,6 +2003,7 @@ async function checkChangeSend(sourceData, tempData) { const cloneBattle = structuredClone(lastBattleInfo); lastBattleInfo = null; try { + const { BestOrWinFixBattle } = HWHClasses; const bFix = new BestOrWinFixBattle(cloneBattle); bFix.setNoMakeWin(noFixWin); let endTime = Date.now() + 3e4; @@ -2132,6 +2141,7 @@ async function checkChangeSend(sourceData, tempData) { const endTime = cloneBattle.endTime - 1e4; console.log('fixBossBattleStart'); + const { BossFixBattle } = HWHClasses; const bFix = new BossFixBattle(cloneBattle); const result = await bFix.start(endTime, 300); console.log(result); @@ -2159,6 +2169,7 @@ async function checkChangeSend(sourceData, tempData) { ); } else if (resultPopup > 3) { const cloneBattle = structuredClone(lastBossBattle); + const { masterFixBattle } = HWHClasses; const mFix = new masterFixBattle(cloneBattle); const result = await mFix.start(cloneBattle.endTime, resultPopup); console.log(result); @@ -2692,10 +2703,11 @@ async function checkChangeResponse(response) { if (!isChecked('preCalcBattle')) { continue; } + const preCalcBattle = structuredClone(battle); setProgress(I18N('BEING_RECALC')); let battleDuration = 120; try { - const typeBattle = getBattleType(battle.type); + const typeBattle = getBattleType(preCalcBattle.type); battleDuration = +lib.data.battleConfig[typeBattle.split('_')[1]].config.battleDuration; } catch (e) { } //console.log(battle.type); @@ -2707,16 +2719,16 @@ async function checkChangeResponse(response) { BattleCalc(battle, getBattleType(battle.type), e => resolve(e)); }); } - let actions = [getBattleInfo(battle, false)] + let actions = [getBattleInfo(preCalcBattle, false)]; let countTestBattle = getInput('countTestBattle'); if (call.ident == callsIdent['invasion_bossStart'] ) { countTestBattle = 0; } if (call.ident == callsIdent['battleGetReplay']) { - battle.progress = [{ attackers: { input: ['auto', 0, 0, 'auto', 0, 0] } }]; + preCalcBattle.progress = [{ attackers: { input: ['auto', 0, 0, 'auto', 0, 0] } }]; } for (let i = 0; i < countTestBattle; i++) { - actions.push(getBattleInfo(battle, true)); + actions.push(getBattleInfo(preCalcBattle, true)); } Promise.all(actions) .then(e => { @@ -3296,6 +3308,8 @@ this.getSignature = function(headers, data) { return md5(sign.signature); } + +let extintionsList = []; /** * Creates an interface * @@ -3307,7 +3321,23 @@ function createInterface() { showMenu: true }); scriptMenu.addHeader('HWP', justInfo); - scriptMenu.addHeader('v' + GM_info.script.version); + const versionHeader = scriptMenu.addHeader('v' + GM_info.script.version); + if (extintionsList.length) { + versionHeader.title = ''; + versionHeader.style.color = 'red'; + for (const extintion of extintionsList) { + const { name, ver, author } = extintion; + versionHeader.title += name + ', v' + ver + ' by ' + author + '\n'; + } +} +} + +function addExtentionName(name, ver, author) { + extintionsList.push({ + name, + ver, + author, + }); } function addControls() { @@ -3507,6 +3537,7 @@ function getTimer(time, div) { } function startSlave() { + const { slaveFixBattle } = HWHClasses; const sFix = new slaveFixBattle(); sFix.wsStart(); } @@ -3519,6 +3550,27 @@ this.testFuntions = { startSlave, }; +this.HWHFuncs = { + send, + I18N, + isChecked, + getInput, + copyText, + confShow, + hideProgress, + setProgress, + addProgress, + getTimer, + addExtentionName, + getUserInfo, + setIsCancalBattle, + random, +}; + +this.HWHClasses = { + checkChangeSend, + checkChangeResponse, +}; /** * Calculates HASH MD5 from string * @@ -3950,6 +4002,8 @@ const popup = new (function () { } }); +this.HWHFuncs.popup = popup; + /** * Script control panel * @@ -4254,6 +4308,7 @@ const scriptMenu = new (function () { header.addEventListener('click', func); } main.appendChild(header); + return header; } /** @@ -4547,6 +4602,7 @@ function getSaveVal(saveName, def) { const result = storage.get(saveName, def); return result; } +this.HWHFuncs.getSaveVal = getSaveVal; /** * Stores value @@ -4556,6 +4612,7 @@ function getSaveVal(saveName, def) { function setSaveVal(saveName, value) { storage.set(saveName, value); } +this.HWHFuncs.setSaveVal = setSaveVal; /** * Database initialization @@ -4721,6 +4778,7 @@ class ZingerYWebsiteAPI { * Отправка экспедиций */ function checkExpedition() { + const { Expedition } = HWHClasses; return new Promise((resolve, reject) => { const expedition = new Expedition(resolve, reject); expedition.start(); @@ -4875,12 +4933,15 @@ class Expedition { } } +this.HWHClasses.Expedition = Expedition; + /** * Walkthrough of the dungeon * * Прохождение подземелья */ function testDungeon() { + const { executeDungeon } = HWHClasses; return new Promise((resolve, reject) => { const dung = new executeDungeon(resolve, reject); const titanit = getInput('countTitanit'); @@ -5308,12 +5369,15 @@ function executeDungeon(resolve, reject) { } } +this.HWHClasses.executeDungeon = executeDungeon; + /** * Passing the tower * * Прохождение башни */ function testTower() { + const { executeTower } = HWHClasses; return new Promise((resolve, reject) => { tower = new executeTower(resolve, reject); tower.start(); @@ -5796,12 +5860,15 @@ function executeTower(resolve, reject) { } } +this.HWHClasses.executeTower = executeTower; + /** * Passage of the arena of the titans * * Прохождение арены титанов */ function testTitanArena() { + const { executeTitanArena } = HWHClasses; return new Promise((resolve, reject) => { titAren = new executeTitanArena(resolve, reject); titAren.start(); @@ -6233,6 +6300,8 @@ function executeTitanArena(resolve, reject) { } } +this.HWHClasses.executeTitanArena = executeTitanArena; + function hackGame() { const self = this; selfGame = null; @@ -8537,6 +8606,8 @@ function countdownTimer(seconds, message) { }); } +this.HWHFuncs.countdownTimer = countdownTimer; + /** Набить килов в горниле душк */ async function bossRatingEventSouls() { const data = await Send({ @@ -9010,6 +9081,7 @@ async function sellHeroSoulsForGold() { * Атака прислужников Асгарда */ function testRaidNodes() { + const { executeRaidNodes } = HWHClasses; return new Promise((resolve, reject) => { const tower = new executeRaidNodes(resolve, reject); tower.start(); @@ -9084,7 +9156,7 @@ function executeRaidNodes(resolve, reject) { raidData.nodes = clanRaidInfo.nodes; raidData.attempts = clanRaidInfo.attempts; - isCancalBattle = false; + setIsCancalBattle(false); checkNodes(); } @@ -9260,7 +9332,7 @@ function executeRaidNodes(resolve, reject) { * Завершение задачи */ function endRaidNodes(reason, info) { - isCancalBattle = true; + setIsCancalBattle(true); let textCancel = raidData.cancelBattle ? ` ${I18N('BATTLES_CANCELED')}: ${raidData.cancelBattle}` : ''; setProgress(`${I18N('MINION_RAID')} ${I18N('COMPLETED')}! ${textCancel}`, true); console.log(reason, info); @@ -9268,12 +9340,15 @@ function executeRaidNodes(resolve, reject) { } } +this.HWHClasses.executeRaidNodes = executeRaidNodes; + /** * Asgard Boss Attack Replay * * Повтор атаки босса Асгарда */ function testBossBattle() { + const { executeBossBattle } = HWHClasses; return new Promise((resolve, reject) => { const bossBattle = new executeBossBattle(resolve, reject); bossBattle.start(lastBossBattle); @@ -9349,6 +9424,8 @@ function executeBossBattle(resolve, reject) { } } +this.HWHClasses.executeBossBattle = executeBossBattle; + class FixBattle { minTimer = 1.3; maxTimer = 15.3; @@ -9485,6 +9562,8 @@ class FixBattle { } } +this.HWHClasses.FixBattle = FixBattle; + class WinFixBattle extends FixBattle { checkResult() { if (this.lastBattleResult.win) { @@ -9534,6 +9613,8 @@ class WinFixBattle extends FixBattle { } } +this.HWHClasses.WinFixBattle = WinFixBattle; + class BestOrWinFixBattle extends WinFixBattle { isNoMakeWin = false; @@ -9587,6 +9668,8 @@ class BestOrWinFixBattle extends WinFixBattle { } } +this.HWHClasses.BestOrWinFixBattle = BestOrWinFixBattle; + class BossFixBattle extends FixBattle { showResult() { super.showResult(); @@ -9600,6 +9683,8 @@ class BossFixBattle extends FixBattle { } } +this.HWHClasses.BossFixBattle = BossFixBattle; + class DungeonFixBattle extends FixBattle { init() { super.init(); @@ -9659,6 +9744,8 @@ class DungeonFixBattle extends FixBattle { } } +this.HWHClasses.DungeonFixBattle = DungeonFixBattle; + const masterWsMixin = { wsStart() { const socket = new WebSocket(this.url); @@ -9760,6 +9847,8 @@ class masterFixBattle extends FixBattle { Object.assign(masterFixBattle.prototype, masterWsMixin); +this.HWHClasses.masterFixBattle = masterFixBattle; + class masterWinFixBattle extends WinFixBattle { constructor(battle, url = 'wss://localho.st:3000') { super(battle, true); @@ -9794,6 +9883,8 @@ class masterWinFixBattle extends WinFixBattle { Object.assign(masterWinFixBattle.prototype, masterWsMixin); +this.HWHClasses.masterWinFixBattle = masterWinFixBattle; + const slaveWsMixin = { wsStop() { this.ws.close(); @@ -9850,6 +9941,8 @@ class slaveFixBattle extends FixBattle { Object.assign(slaveFixBattle.prototype, slaveWsMixin); +this.HWHClasses.slaveFixBattle = slaveFixBattle; + class slaveWinFixBattle extends WinFixBattle { constructor(url = 'wss://localho.st:3000') { super(null, false); @@ -9859,12 +9952,15 @@ class slaveWinFixBattle extends WinFixBattle { } Object.assign(slaveWinFixBattle.prototype, slaveWsMixin); + +this.HWHClasses.slaveWinFixBattle = slaveWinFixBattle; /** * Auto-repeat attack * * Автоповтор атаки */ function testAutoBattle() { + const { executeAutoBattle } = HWHClasses; return new Promise((resolve, reject) => { const bossBattle = new executeAutoBattle(resolve, reject); bossBattle.start(lastBattleArg, lastBattleInfo); @@ -9934,7 +10030,7 @@ function executeAutoBattle(resolve, reject) { let countWin = results.reduce((s, w) => w.result.win + s, 0); setProgress(`${I18N('CHANCE_TO_WIN')} ${Math.floor(countWin / results.length * 100)}% (${results.length})`, false, hideProgress); if (countWin > 0) { - isCancalBattle = false; + setIsCancalBattle(false); startBattle(); return; } @@ -9957,7 +10053,7 @@ function executeAutoBattle(resolve, reject) { { msg: I18N('BTN_DO_IT'), result: true }, ]) if (result) { - isCancalBattle = false; + setIsCancalBattle(false); startBattle(); return; } @@ -9978,7 +10074,7 @@ function executeAutoBattle(resolve, reject) { ]) if (result) { findCoeff = result; - isCancalBattle = false; + setIsCancalBattle(false); startBattle(); return; } @@ -10099,6 +10195,7 @@ function executeAutoBattle(resolve, reject) { endBattle(e, false); return; } else if (isChecked('tryFixIt_v2')) { + const { WinFixBattle } = HWHClasses; const cloneBattle = structuredClone(e.battleData); const bFix = new WinFixBattle(cloneBattle); let attempts = Infinity; @@ -10242,13 +10339,16 @@ function executeAutoBattle(resolve, reject) { * Завершение задачи */ function endAutoBattle(reason, info) { - isCancalBattle = true; + setIsCancalBattle(true); console.log(reason, info); resolve(); } } +this.HWHClasses.executeAutoBattle = executeAutoBattle; + function testDailyQuests() { + const { dailyQuests } = HWHClasses; return new Promise((resolve, reject) => { const quests = new dailyQuests(resolve, reject); quests.init(questsInfo); @@ -11061,8 +11161,10 @@ class dailyQuests { } this.questRun = dailyQuests; +this.HWHClasses.dailyQuests = dailyQuests; function testDoYourBest() { + const { doYourBest } = HWHClasses; return new Promise((resolve, reject) => { const doIt = new doYourBest(resolve, reject); doIt.start(); @@ -11247,12 +11349,15 @@ class doYourBest { } } +this.HWHClasses.doYourBest = doYourBest; + /** * Passing the adventure along the specified route * * Прохождение приключения по указанному маршруту */ function testAdventure(type) { + const { executeAdventure } = HWHClasses; return new Promise((resolve, reject) => { const bossBattle = new executeAdventure(resolve, reject); bossBattle.start(type); @@ -11481,15 +11586,15 @@ class executeAdventure { * * Отключаем штатную отменую боя */ - isCancalBattle = false; + setIsCancalBattle(false); if (await this.battle(toPath)) { this.turnsLeft--; toPath.splice(0, toPath.indexOf(nodeId)); nodeInfo.state = 'empty'; - isCancalBattle = true; + setIsCancalBattle(true); continue; } - isCancalBattle = true; + setIsCancalBattle(true); return this.end() } @@ -11672,19 +11777,22 @@ class executeAdventure { } end() { - isCancalBattle = true; + setIsCancalBattle(true); setProgress(this.terminatеReason, true); console.log(this.terminatеReason); this.resolve(); } } +this.HWHClasses.executeAdventure = executeAdventure; + /** * Passage of brawls * * Прохождение потасовок */ function testBrawls(isAuto) { + const { executeBrawls } = HWHClasses; return new Promise((resolve, reject) => { const brawls = new executeBrawls(resolve, reject); brawls.start(brawlsPack, isAuto); @@ -11756,7 +11864,7 @@ class executeBrawls { async start(args, isAuto) { this.isAuto = isAuto; this.args = args; - isCancalBattle = false; + setIsCancalBattle(false); this.brawlInfo = await this.getBrawlInfo(); this.attempts = this.brawlInfo.attempts; @@ -12349,7 +12457,7 @@ class executeBrawls { } end(endReason) { - isCancalBattle = true; + setIsCancalBattle(true); isBrawlsAutoStart = false; setProgress(endReason, true); console.log(endReason); @@ -12357,6 +12465,8 @@ class executeBrawls { } } +this.HWHClasses.executeBrawls = executeBrawls; + })(); /**