Помощь кузнецу
// ==UserScript==
// @name smithHelper
// @author omne
// @namespace omne
// @description Помощь кузнецу
// @version 0.3
// @include /^https{0,1}:\/\/((www|qrator|my|mirror)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/inventory.php/
// @license GNU GPLv3
// ==/UserScript==
(function() {
function addSmithInfo() {
let transfers = document.querySelectorAll(".inv_request_info");
for (let i = 0; i < transfers.length; i++) {
if (transfers[i].querySelector('.smith_helper_info')) continue;
if (transfers[i].innerHTML.indexOf("ремонт") > 0) {
let art_id = transfers[i].innerHTML.match(/art_info.php.id=([^\"]+)/)[1];
let gold = Number(transfers[i].querySelectorAll("b")[1].innerHTML.replace(",", ""));
let perc = Number(transfers[i].innerHTML.match(/\(([0-9]+)%\)/)[1]);
let repair_cost = Math.round(gold/perc*100);
let repair_score = (repair_cost/4000).toFixed(2);
let date = new Date(Date.now() + Math.round(repair_cost/4*60*60));
let profit = gold - repair_cost;
let divs = transfers[i].querySelectorAll("div");
for (let j = 0; j < divs.length; j++) {
if (divs[j].innerHTML.indexOf("Прочноcть:") >= 0) {
let infoSpan = document.createElement('span');
infoSpan.className = 'smith_helper_info';
infoSpan.innerHTML = "<BR>+<B>" + repair_score + "</b> ГК, до <b>" +
date.getHours() + ":" + (date.getMinutes() < 10 ? "0" + date.getMinutes():date.getMinutes()) +
"</b>, прибыль <b style = 'color:" + (profit >= 0 ? "green":"red") + "'>" + profit + "</b>";
divs[j].appendChild(infoSpan);
}
}
}
}
}
addSmithInfo();
const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url) {
this._inventoryUrl = url;
return originalOpen.apply(this, arguments);
};
const originalSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function() {
const xhr = this;
xhr.addEventListener('readystatechange', function() {
if (xhr.readyState === 4 && xhr._inventoryUrl && xhr._inventoryUrl.indexOf('dress=') > 0) {
setTimeout(() => {
addSmithInfo();
}, 100);
}
});
return originalSend.apply(this, arguments);
};
})();