Greasy Fork is available in English.
Пишет в консоль статистику хп армии. Дробь = хп сейчас/хп в начале боя, процент = выбитый процент предприятия в клановых ПВП боях. Цифра в скобках = сколько хп осталось до неслома (клановые ПВП бои)
// ==UserScript== // @name HP_battle_stats // @namespace http://tampermonkey.net/ // @version 0.1 // @description Пишет в консоль статистику хп армии. Дробь = хп сейчас/хп в начале боя, процент = выбитый процент предприятия в клановых ПВП боях. Цифра в скобках = сколько хп осталось до неслома (клановые ПВП бои) // @author Something begins // @license none // @match https://www.heroeswm.ru/war* // @match https://my.lordswm.com/war* // @match https://www.lordswm.com/war* // @icon https://www.google.com/s2/favicons?sz=64&domain=heroeswm.ru // @grant unsafeWindow // ==/UserScript== let timer = 0; unsafeWindow.bs = ""; function calcCreHP(creObjIndex){ const cre = stage.pole.obj[creObjIndex]; const fullHealth = (cre.nownumber - 1) * cre.maxhealth; } function main(){ if (!stage) return; if (Object.values(stage.pole.obj).length === 0) return; let consoleString =""; for (const side of [1, -1]){ const lordsList = Object.values(stage.pole.obj).filter(cre => {return (cre.hero && cre.side === side)}); consoleString += side === 1 ? "LEFT ": "RIGHT " /* consoleString+=`Герои: `; for(const lord of lordsList){ consoleString += lord.nametxt + "," ; } */ let allHP = 0; let maxHP = 0; // current situation for (const cre of Object.values(stage.pole.obj)){ if (cre.hero || [0, -1].includes(cre.nownumber) || cre.nametxt === "" || cre.side !== side || cre.summoned2 || cre.summonedc) continue; // console.log(cre.obj_index, cre.nametxt, cre.nownumber, cre); const creHP = (cre.nownumber - 1) * cre.maxhealth + cre.nowhealth; // console.log(cre.nametxt, creHP); allHP += creHP; } // battle start situation for (const cre of Object.values(stage.pole.obj)){ if (cre.hero || [-1].includes(cre.nownumber) || cre.nametxt === "" || cre.side !== side || cre.summoned2 || cre.summonedc) continue; // console.log(cre.obj_index, cre.nametxt, cre.maxnumber, cre); const creMaxHP = cre.maxnumber * cre.realhealth; // console.log(cre.nametxt, creHP); maxHP += creMaxHP; } const untilNotWorn = 27/45 * maxHP - allHP; const prefix = untilNotWorn > 0 ? "+" : ""; consoleString += ` | ${allHP} / ${maxHP} |`; consoleString +=` | ${(allHP/maxHP * 45).toFixed(2)}% (${prefix}${untilNotWorn.toFixed(2)}) | `; } unsafeWindow.bs = consoleString; timer++; if (timer%5 === 0) console.log(unsafeWindow.bs); return unsafeWindow.bs; }; setInterval(main, 1000);