Greasy Fork is available in English.
Отображение картинок юнитов ГЛ, которые получены за бой
// ==UserScript== // @name Картинки юнитов ГЛ в конце боя // @version 0.1.2 // @description Отображение картинок юнитов ГЛ, которые получены за бой // @author isnt // @include /^https:\/\/((www|qrator|my)(\.heroeswm\.ru|\.lordswm\.com))\/war.php/ // @grant GM_setValue // @grant GM_getValue // @grant GM.xmlHttpRequest // @namespace https://greasyfork.org/users/239593 // ==/UserScript== (function(window, undefined) { let dailyRequest = false; const doGet = (url, callback) => { GM.xmlHttpRequest({ method: "GET", url: url, overrideMimeType: "text/xml; charset=windows-1251", headers: { 'User-agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1)', 'Accept': 'text/xml,text/html', 'Content-Type': 'text/plain; charset=windows-1251' }, synchronous: false, onload: function(res) { callback(new DOMParser().parseFromString(res.responseText, "text/html")) } }); } let arr = []; let arrReserv = []; const getLeader = () => { let re1 = /(, |опыта )([^,]*)(?= в резерв)/gm; let re2 = /((.*) \(|\+(.*) шт.)/gm; let final = document.querySelector("#finalr###lt_text").innerHTML; for(let i = 0; i < final.match(re1).length; i++) { let m = final.match(re1)[i]; let name = re2.exec(m.match(re2)[0])[2]; if(/опыта/i.test(name)) name = name.replace('опыта ', ''); else name = name.replace(', ', ''); let count = re2.exec(m.match(re2)[1])[3]; arrReserv.push({ replace: final.match(re1)[i], name: name, fon: arr.find(item => item.name === name).fon, img: arr.find(item => item.name === name).img, count: Number(count), cost: arr.find(item => item.name === name).cost }); } } const divHtml = () => { let divMon = document.createElement('div'); divMon.setAttribute('style', 'margin-bottom: 20px;'); document.querySelector("#win_BattleR###lt > div.info_separator_horizontal").after(divMon); let mon = ''; for(let i = 0; i < arrReserv.length; i++) { // document.querySelector("#finalr###lt_text").innerHTML = document.querySelector("#finalr###lt_text").innerHTML.replace(arrReserv[i].replace,`<span>, </span><div class="creature_slider_portrait creature_level1 new-leader" title="${arrReserv[i].name}" style="background: url(https://dcdn.heroeswm.ru/i/army_html/fon_lvl${arrReserv[i].fon}.png) no-repeat;image-rendering: -webkit-optimize-contrast;"> // <img src="https://dcdn.heroeswm.ru/i/army_html/frame_lvl${arrReserv[i].fon}.png" class="mon_image2"> // <img src="https://dcdn.heroeswm.ru/i/portraits/${arrReserv[i].img}.png"> // <div class="amount reserve_amount" style="font-size: 20px;">${arrReserv[i].count}</div> // <p style="display: none;position: absolute; z-index: 10; top: 4px; left: 5px; font-weight: 600; font-size: 11px; color: #140e06;background-color: #f5c140;padding: 1px 5px;border-radius: 4px;">${arrReserv[i].count*arrReserv[i].cost}</p> // </div>`); mon += `<div class="creature_slider_portrait creature_level1 new-leader" title="${arrReserv[i].name}" style="background: url(https://dcdn.heroeswm.ru/i/army_html/fon_lvl${arrReserv[i].fon}.png) no-repeat;image-rendering: -webkit-optimize-contrast;"> <img src="https://dcdn.heroeswm.ru/i/army_html/frame_lvl${arrReserv[i].fon}.png" class="mon_image2"> <img src="https://dcdn.heroeswm.ru/i/portraits/${arrReserv[i].img}.png"> <div class="amount reserve_amount" style="font-size: 20px;">${arrReserv[i].count}</div> <p style="display: none;position: absolute; z-index: 10; top: 4px; left: 5px; font-weight: 600; font-size: 11px; color: #140e06;background-color: #f5c140;padding: 1px 5px;border-radius: 4px;">${arrReserv[i].count*arrReserv[i].cost}</p> </div>`; } divMon.innerHTML = `<b>Полученные юниты</b><div>${mon}</div>`; document.querySelectorAll(".new-leader").forEach(function(el) { el.addEventListener('mouseenter', function(e) { // this.children[3].style.display = 'block'; }); el.addEventListener('mouseleave', function(e) { // this.children[3].style.display = 'none'; }); }); } const dailyLeader = () => { return new Promise(((resolve, reject) => { let dailyURL = "https://daily." + location.host.substring(location.host.indexOf(".") + 1) + "/leader/leader"; doGet(dailyURL, doc => { let mon = doc.querySelectorAll("div[class=ccont]"); let re = /(title="(.*)" href="https|fon_lvl(.*)\.png\?|portraits\/(.*)\.png|">(?=[^.]*$)(.*)<\/a>)/g; for(let i = 0; i < mon.length; i++) { let x = mon[i].innerHTML; let name = x.match(re)[0]; name = re.exec(name)[2]; let fon = x.match(re)[1]; fon = re.exec(fon)[3]; let img = x.match(re)[2]; img = re.exec(img)[4]; let cost = x.match(re)[3]; cost = re.exec(cost); cost = Number(cost[5]); arr.push({ name: name, fon: fon, img: img, cost: cost }); } dailyRequest = true; setImg(); resolve() }) })) } const setImg = () => { if(dailyRequest !== false) { let timerId = setInterval(() => { if(document.querySelector("#finalr###lt_text").children.length !== 0) { clearInterval(timerId); if(document.querySelector("#finalr###lt_text").innerHTML.indexOf('в резерв') !== - 1) { getLeader(); divHtml(); } } }, 1000) } } window.onload = function() { dailyLeader(); } })(window);