Роботрон вот исходный код, проверь его на наличие нарушений правил игры
// ==UserScript==
// @name [GWars] Navigator Timer(ver 1.0)
// @namespace gwars.navtimer
// @version 1.0
// @description Показывает, на сколько хватит навигатора и время окончания
// @author Mr.Bonanno
// @match
https://www.gwars.io/walk*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gwars.io
// @grant none
// ==/UserScript==
(function(){
'use strict';
var UNIT_MS = 1000; // мс на 1 единицу заряда
function findNavTd() {
var tds = document.querySelectorAll('td');
for (var i = 0; i < tds.length; i++) {
var td = tds[i];
if (td.textContent.indexOf('Заряд навигатора') === -1) continue;
if (td.querySelector('td')) continue; // не листовой — пропускаем
return td;
}
return null;
}
function recalc(force) {
var td = findNavTd();
if (!td) return;
if (!force && td.getAttribute('data-nav-timer') === '1') return;
var old = td.querySelector('.nav-timer-ext');
if (old) old.remove();
// Найти текстовый узел с "Заряд навигатора: ... [N%]"
var walker = document.createTreeWalker(td, NodeFilter.SHOW_TEXT, null);
var textNode = null, node;
while ((node = walker.nextNode())) {
if (node.nodeValue.indexOf('Заряд навигатора') !== -1) { textNode = node; break; }
}
if (!textNode) return;
var m = textNode.nodeValue.match(/Заряд навигатора:s*(d+)s*/s*(d+)s*[(d+)%]/);
if (!m) return;
var cur = parseInt(m[1], 10);
var max = parseInt(m[2], 10);
var pct = parseInt(m[3], 10);
var remainMs = cur * UNIT_MS;
var totalMin = Math.floor(remainMs / 60000); // округление вниз, как в игре
var hh = Math.floor(totalMin / 60);
var mm = totalMin % 60;
var human = hh > 0 ? (hh + ' ч ' + mm + ' мин') : (mm + ' мин');
var end = new Date(Date.now() + remainMs);
var endStr = end.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
var span = document.createElement('span');
span.className = 'nav-timer-ext';
span.style.color = '#990000';
span.style.fontWeight = 'bold';
span.style.whiteSpace = 'nowrap';
span.textContent = ' ~' + human + ' до ' + endStr;
// Вставить сразу после текста "Заряд навигатора...", т.е. перед <br>
textNode.parentNode.insertBefore(span, textNode.nextSibling);
td.setAttribute('data-nav-timer', '1');
}
var scheduled = false;
function checkBodyChanged() {
if (scheduled) return;
scheduled = true;
setTimeout(function(){
scheduled = false;
recalc();
}, 0);
}
var mo = new MutationObserver(function(){
checkBodyChanged();
});
function attachObserver() {
var body = document.body;
if (!body) { setTimeout(attachObserver, 100); return; }
if (window.__navBody === body) return;
window.__navBody = body;
mo.observe(body, { childList: true, subtree: false });
}
attachObserver();
// Первый запуск
recalc();
})();