Заменяет текстовое описание ресурсов на изображения
当前为
// ==UserScript==
// @name HWM - Resourses as images, clickable links Style Mod
// @namespace Resourses as images, clickable links to resources and timers
// @author code: Dinozon2
// @collaborator code: ElMarado; style: sw.East
// @version 1.21
// @description Заменяет текстовое описание ресурсов на изображения
// @icon http://i.imgur.com/GScgZzY.jpg
// @include https://www.heroeswm.*/pl_info.php*
// @include *//178.248.235.15/pl_info.php*
// @include *//*.lordswm.*/pl_info.php*
// @grant GM_addStyle
// @copyright 2013-2018, sw.East (https://www.heroeswm.ru/pl_info.php?id=3541252)
// @license MIT
// ==/UserScript==
//ver 1.4
// в плане: при продаже лота отображать картинку и цену (монеты)
//ver 1.3
// в плане: свободно рабочих мест
//ver 1.2.1
// [+] выровнено отображение ресурсов
// [+] обновлены картинки ресурсов
// [*] добавлены артефакты империи, изменен код
//ver 1.2
// [+] добавлен таймер до начала битвы с сурвилургами
// [+] в меню замены ссылки Битвы на Бои за территории
// [*] переписан код, добавлена совместимость с таймерами охот/гв/гн
//ver 1.1
// [+] в шапке проставлены ссылки на закупку ресурсов на рынке
//ver 1.0
// [+] на странице персонажа ресурсы заменяются на изображения
/**
* ============= Style =============
*/
GM_addStyle ( `
#box{
width: 93%;
height: 100%;
margin: 5px 5px 0 10px;
}
#amount_slot{
overflow: hidden;
float: right;
width: 48px;
height: 48px;
margin: 5px 5px 5px 0;
padding: 0;
border: 3px solid #fff;
box-shadow: 0px 0px 5px #aaa;
z-index: 1;
}
#amount_slot img {
display: block;
width: 42px;
height: 42px;
margin: 3px 0 0 3px;
padding: 0;
}
#amount_slot a img {
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
}
#amount_slot:hover a img {
-webkit-transform: scale(1.20,1.20);
-moz-transform: scale(1.20,1.20);
-ms-transform: scale(1.20,1.205);
-o-transform: scale(1.20,1.20);
transform: scale(1.20,1.20);
opacity:1;
}
#amount_slot a{
text-decoration: none;
}
.amount_wrap {
position: absolute;
min-width:14px;
height: 13px;
margin: -48px 0 0 -3px;
padding:0 1px 1px;
color:#fff;
border:2px solid #fff;
background:#222;
-webkit-box-shadow: 1px 1px 1px #aaa;
-moz-box-shadow: 1px 1px 1px #aaa;
box-shadow: 1px 1px 1px #aaa;
z-index: 15;
font-size: 10px;
text-align: center;
text-decoration: none !important;
text-shadow: 1px 1px 1px rgba(0,0,0, 0.8);
cursor: pointer;
opacity:.7;
-webkit-transition: opacity 0.4s ease-in-out, visibility 0.4s ease-in-out;
-moz-transition: opacity 0.4s ease-in-out, visibility 0.4s ease-in-out;
-ms-transition: opacity 0.4s ease-in-out, visibility 0.4s ease-in-out;
-o-transition: opacity 0.4s ease-in-out, visibility 0.4s ease-in-out;
transition: opacity 0.4s ease-in-out, visibility 0.4s ease-in-out;
}
` );
/* Style End */
var HTMLOut='<div id="box">';
var ElementsArray = [];
ElementsArray['Кожа']= 'https://i.imgur.com/Xn82L25.png';
ElementsArray['Сталь']= 'https://i.imgur.com/hwThTJE.png';
ElementsArray['Никель']= 'https://i.imgur.com/6lHniay.png';
ElementsArray['Волшебный порошок']= 'https://i.imgur.com/IuqF7rI.png';
ElementsArray['Мифриловая руда']= 'https://i.imgur.com/dv6rzKn.png';
ElementsArray['Обсидиан']= 'https://i.imgur.com/4yOWbK8.png';
ElementsArray['Мифрил']= 'https://i.imgur.com/1Y1Z7Mq.png';
ElementsArray['Орихалк']= 'https://i.imgur.com/qRGZzCs.png';
ElementsArray['осколок метеорита']= 'meteorit';
ElementsArray['абразив']= 'abrasive';
ElementsArray['змеиный яд']= 'snake_poison';
ElementsArray['клык тигра']= 'tiger_tusk';
ElementsArray['ледяной кристалл']= 'ice_crystal';
ElementsArray['лунный камень']= 'moon_stone';
ElementsArray['огненный кристалл']= 'fire_crystal';
ElementsArray['цветок ведьм']= 'witch_flower';
ElementsArray['цветок ветров']= 'wind_flower';
ElementsArray['цветок папоротника']= 'fern_flower';
ElementsArray['ядовитый гриб']= 'badgrib';
ElementsArray['Имперский арбалет']= 'part_imp_crossbow';
ElementsArray['Имперские сапоги']= 'part_imp_boots';
ElementsArray['Имперский щит']= 'part_imp_shield';
ElementsArray['Имперский шлем']= 'part_imp_helmet';
ElementsArray['Имперский амулет']= 'part_imp_amul';
ElementsArray['Имперский доспех']= 'part_imp_armor';
var a = document.body.getElementsByClassName("wb");
for (var i = 0, length = a.length; i < length; i++) {
if (i in a) {
// Находим блок с элементами
if (a[i].innerHTML.indexOf(' <b>') + 1){
// создаем массив из строк:
var text=a[i].innerHTML;
console.log(a[i]);
var arr = text.split('<br>');
// очищаем строку от мусора
for (var k=0,len=arr.length;k<len;k++) {
if (k==Math.round((len-1)/2)) {HTMLOut = HTMLOut+'<div id="top">';}
var line=arr[k];
line=line.replace(' ', '');
line=line.replace('<b>', '');
line=line.replace('</b>', '');
var res = line.split(':');
// res[0] - название элемента
// res[1] - количество
if (res[1]>0) {
// фикс ширины
if (res[1]>9999) var w_length = 39;
else if (res[1]>999) var w_length = 31;
else if (res[1]>99) var w_length = 24;
else var w_length = 13;
if (res[0].indexOf('\u0418\u043c\u043f\u0435\u0440') !=-1) { // обработка имперских артов
if(ElementsArray[res[0]].length<24){
HTMLOut = HTMLOut + '<div id="amount_slot">'+
'<a href="/auction.php?cat=part&sort=0&art_type='+ElementsArray[res[0]]+'"> '+
'<img src="/i/artifacts/parts/'+ElementsArray[res[0]]+'.png" alt="'+line+'" title="'+line+'">'+
'</a>'+
'<div class="amount_wrap" style="width:'+w_length+'px">'+res[1]+'</div>'+
'</div>';
}
} else { // остальные ресурсы
if(ElementsArray[res[0]].length>24){
HTMLOut = HTMLOut + '<div id="amount_slot">'+
'<a href="#"> '+
'<img src="'+ElementsArray[res[0]]+'" alt="'+line+'" title="'+line+'">'+
'</a>'+
'<div class="amount_wrap" style="width:'+w_length+'px">'+res[1]+'</div>'+
'</div>';
} else {
HTMLOut = HTMLOut + '<div id="amount_slot">'+
'<a href="/auction.php?cat=elements&sort=0&art_type='+ElementsArray[res[0]]+'"> '+
'<img src="/i/'+ElementsArray[res[0]]+'.gif" alt="'+line+'" title="'+line+'"> '+
'</a>'+
'<div class="amount_wrap" style="width:'+w_length+'px">'+res[1]+'</div>'+
'</div>';
}
}
}
}
HTMLOut = HTMLOut+'</div>';
// Выводим на страницу
a[i].innerHTML = HTMLOut;
}
}
}
var a = document.body.getElementsByTagName("img");
for (var i = 0, length = a.length; i < length; i++) {
//if (i in a) {
if (a[i].title=="Древесина"){
a[i].outerHTML = '<a href=/auction.php?cat=res&sort=0&type=1>'+a[i].outerHTML+'</a>';
} else if (a[i].title=="Руда"){
a[i].outerHTML = '<a href=/auction.php?cat=res&sort=0&type=2>'+a[i].outerHTML+'</a>';
} else if (a[i].title=="Ртуть"){
a[i].outerHTML = '<a href=/auction.php?cat=res&sort=0&type=3>'+a[i].outerHTML+'</a>';
} else if (a[i].title=="Сера"){
a[i].outerHTML = '<a href=/auction.php?cat=res&sort=0&type=4>'+a[i].outerHTML+'</a>';
} else if (a[i].title=="Кристаллы"){
a[i].outerHTML = '<a href=/auction.php?cat=res&sort=0&type=5>'+a[i].outerHTML+'</a>';
} else if (a[i].title=="Самоцветы"){
a[i].outerHTML = '<a href=/auction.php?cat=res&sort=0&type=6>'+a[i].outerHTML+'</a>';
} else if (a[i].title=="Золото"){
a[i].outerHTML = a[i].outerHTML;
}
}
// замена ссылок на Битвы
var a = document.body.getElementsByTagName("a");
for (var i = 0, length = a.length; i < length; i++) {
if (a[i].getAttribute('href')=='bselect.php') {
a[i].setAttribute('href','mapwars.php');
}
// ver 1.3 - количество свободных мест на предприятиях
//if (a[i].getAttribute('href').indexOf('object')+1){
// alert(a[i].getAttribute('href'));
//};
}
var zayvok=0;
var freecell=0;
var allcell=0;
var timetogo = 0;
var cnt=0;
var alreadyin = 0;
var freecellavaibale = 0;
var bb = document.getElementsByTagName("title");
// таймер до начала боя с Сурвилургами только на странице боев
//if (window.location.pathname == '/map.php'){ }
if (window.location.pathname == '/mapwars.php'){
// узнаем количество свободных мест
var f = document.body.getElementsByTagName("font");
for (var x = 0, length = f.length; x < length; x++) {
// всего вступило участников
if (f[x].getAttribute('style')=='font-size:9px;'){
if(0==f[x].innerHTML.indexOf('[')){
cnt=cnt+1;
}
}
// всего защит
if (f[x].innerHTML.indexOf('Сурвилурги')+1) {
zayvok=zayvok+1;
}
if (f[x].innerHTML=='Вы уже в заявке, ожидайте начала битвы!') {
alreadyin = 1;
}
}
// свободных мест
freecell = (Math.ceil(cnt/21)*21)-cnt;
// всего мест
allcell = Math.ceil(cnt/21)*21;
var c = document.body.getElementsByTagName("td");
for (var i = 0, length = c.length; i < length; i++) {
if (c[i].innerHTML.length==37&&c[i].getAttribute('class')=='wb') {
// если больше нет свободных мест и игрок не успле зайти смотрим следующую ближайшую заявку
if (alreadyin==0&&freecell==0) {continue;}
//красное время
redtime = c[i].innerHTML[21] + c[i].innerHTML[22] + c[i].innerHTML[23] + c[i].innerHTML[24] + c[i].innerHTML[25];
// еще не в заявке -> считаем свободные слоты
var b = document.body.getElementsByTagName("b");
for (var bi = 0, length = b.length; bi < length; bi++) {
if(b[bi].innerHTML=='[Вступить]'){// есть свободные места
// замена заголовка/////////////////////////// freecell allcell
// узнаем сколько осталось до начала
var h = new Date();
startmin = c[i].innerHTML[24] + c[i].innerHTML[25];
startmin = parseInt(startmin);
curmin = h.getMinutes();
timetogo = startmin - curmin;
if (timetogo<0){
timetogo = timetogo + 60;
}
bb[0].innerHTML = freecell + ' ('+ timetogo +' мин) свободно';
var freecellavaibale =1;
//Math.round(freecell/allcell*100)
break;
}
}
//if (freecellavaibale) { // уже в заявке - > начало через x минут.
if (alreadyin){
// узнаем сколько осталось до начала
var h = new Date();
startmin = c[i].innerHTML[24] + c[i].innerHTML[25];
startmin = parseInt(startmin);
curmin = h.getMinutes();
timetogo = startmin - curmin;
if (timetogo<0){
timetogo = timetogo + 60;
}
// замена заголовка///////////////////////////
bb[0].innerHTML = timetogo + ' мин до вступления на защиту';
}
// break;
//}
// "обычное" время
} else if (c[i].innerHTML.length==5&&c[i].getAttribute('class')=='wb') {
// обычное время - ищем первое и стоп
// узнаем сколько осталось до начала
if (c[i].innerHTML.indexOf(':')+1) {
var txt=c[i].innerHTML;
txt.toString();
txt.split(':');
var h = new Date();
var curmin = h.getMinutes();
var dtime1 = parseInt(txt[3]+txt[4])-15;
if (dtime1>curmin) {
dif = dtime1 - curmin;
} else {
dif = 60 + dtime1 - curmin;
}
// dif - осталось минут до боя
// замена заголовка///////////////////////////
bb[0].innerHTML = dif + ' мин до вступления на защиту';
}
break;
}
}
}