NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name BattleLinks
// @author Demin
// @namespace Battle
// @version 3.61
// @description Быстрые ссылки на итоги боя; начало, конец, чат боя.
// @homepage https://greasyfork.org/en/scripts/1231
// @icon http://i.imgur.com/LZJFLgt.png
// @encoding utf-8
// @include *heroeswm.ru/forum.php*
// @include *heroeswm.ru/home.php
// @include *heroeswm.ru/pl_transfers.php?id=*
// @include *heroeswm.ru/pl_warlog.php?id=*
// @include *heroeswm.ru/bselect.php*
// @include *heroeswm.ru/pl_info.php?id=*
// @include *lordswm.com/*
// @include *hwmguide.ru/*
// @exclude */rightcol.php*
// @exclude */ch_box.php*
// @exclude */chat*
// @exclude */ticker.html*
// @exclude */frames*
// @exclude */brd.php*
// @exclude */auction.php*
// @exclude */object-info.php*
// @exclude */home.php*
// @grant GM_deleteValue
// @grant GM_getValue
// @grant GM_listValues
// @grant GM_setValue
// @grant GM_addStyle
// @grant GM_log
// @grant GM_openInTab
// @grant GM_xmlhttpRequest
// @license MIT
// ==/UserScript==
(function() {
setTimeout(function() {
var version = '3.61';
var blank = ' target="_blank"';
//var blank = '';
if (typeof GM_deleteValue != 'function') {
this.GM_getValue=function (key,def) {return localStorage[key] || def;};
this.GM_setValue=function (key,value) {return localStorage[key]=value;};
this.GM_deleteValue=function (key) {return delete localStorage[key];};
this.GM_addStyle=function (key) {
var style = document.createElement('style');
style.textContent = key;
document.querySelector("head").appendChild(style);
}
this.GM_xmlhttpRequest=function (details) {
function setupEvent(xhr, url, eventName, callback) {
xhr[eventName] = function() {
var isComplete = xhr.readyState == 4;
var responseState = {
responseText: xhr.responseText,
readyState: xhr.readyState,
responseHeaders: isComplete ? xhr.getAllResponseHeaders() : "",
status: isComplete ? xhr.status : 0,
statusText: isComplete ? xhr.statusText : "",
finalUrl: isComplete ? url : ""
};
callback(responseState);
};
}
var xhr = new XMLHttpRequest();
var eventNames = ["onload", "onerror", "onreadystatechange"];
for (var i = 0; i < eventNames.length; i++) {
var eventName = eventNames[i];
if (eventName in details) {
setupEvent(xhr, details.url, eventName, details[eventName]);
}
}
xhr.open(details.method, details.url);
if (details.overrideMimeType) {
xhr.overrideMimeType(details.overrideMimeType);
}
if (details.headers) {
for (var header in details.headers) {
xhr.setRequestHeader(header, details.headers[header]);
}
}
xhr.send(details.data ? details.data : null);
}
}
var script_num = 92536;
var script_name = 'hwm_battlelinks: Быстрые ссылки на итоги боя; начало, конец, чат боя (by Demin)';
// see down
var url_cur = location.href;
var url = 'http://'+location.hostname+'/';
var a = document.querySelectorAll("a[href*='warid=']");
var warid = /warid=(\d+)/;
var ai, warid_ai, bt;
if ( url=='http://www.heroeswm.ru/' || url=='http://qrator.heroeswm.ru/' || url=='http://178.248.235.15/' || url=='http://www.lordswm.com/' ) { }
else { url = 'http://www.heroeswm.ru/'; }
for ( var i=a.length; i--; ) {
ai = a[i];
if ( warid_ai = warid.exec(ai) ) {
warid_ai = warid_ai[1];
bt = document.createElement('span');
bt.innerHTML = ' [<a href="'+url+'war.php?lt=-1&warid='+warid_ai+'"'+blank+'>#</a>'+
' <a href="'+url+'battlechat.php?warid='+warid_ai+'"'+blank+'>chat</a>'+
' <a href="'+url+'war.php?warid='+warid_ai+'"'+blank+'>$</a>'+
' <a href="'+url+'battle.php?lastturn=-3&warid='+warid_ai+'"'+blank+'>E</a>]';
ai.parentNode.insertBefore(bt, ai.nextSibling);
addEvent(ai, "click", show_result);
}
}
function show_result(event)
{
event = event || window.event;
event.preventDefault ? event.preventDefault() : (event.returnValue=false);
var ai = event.target || event.srcElement;
while ( !warid.exec(ai.href) ) { ai = ai.parentNode; }
// for home page (once) && pl_info page (in battle) (twice)
warid_ai = warid.exec(ai.href)[1];
GM_addStyle('\
#war_result table, #war_result td {background-image: none; text-align: left; border: 0px; margin: 0px; padding: 0px; line-height: 16px; border-collapse: separate;}\
#war_result td, #war_result a, #war_result b {FONT-SIZE: 9pt; COLOR: #592C08; FONT-FAMILY: verdana, geneva, arial cyr;}\
#war_result font {FONT-SIZE: 9pt; FONT-FAMILY: verdana, geneva, arial cyr}\
');
var newdiv = $('war_result');
if ( !newdiv ) {
newdiv = document.createElement('div');
newdiv.setAttribute('id', 'war_result');
with ( newdiv.style ) {
position = 'absolute';
borderStyle = 'solid';
borderColor = '#000000';
borderWidth = '2px';
padding = '0px';
zIndex = '3';
}
}
newdiv.style.left = event.pageX + 25;
newdiv.style.top = event.pageY + 5;
newdiv.innerHTML = '<table cellspacing=4 cellpadding=0 bgcolor="#f5f3ea"><tr>'+
'<td align="left">warid: '+warid_ai+
' [<a href="'+url+'war.php?lt=-1&warid='+warid_ai+'"'+blank+'>#</a>'+
' <a href="'+url+'battlechat.php?warid='+warid_ai+'"'+blank+'>chat</a>'+
' <a href="'+url+'war.php?warid='+warid_ai+'"'+blank+'>$</a>'+
' <a href="'+url+'battle.php?lastturn=-3&warid='+warid_ai+'"'+blank+'>E</a>]'+
'</td><td width=100></td>'+
'<td align="right" id="close_div_result" title="Close" style="text-align: right;">[x]</td></tr>'+
'<tr><td align="left" id="war_result_cont" colspan="3"><br>'+loaders()+'</td></tr>'+
'</table>';
ai.parentNode.insertBefore(newdiv, ai.nextSibling);
addEvent($("close_div_result"), "click", div_close_result);
/*
if ( url != 'http://'+location.hostname+'/' ) {
var div = $('war_result_cont');
div.innerHTML = '<br>Не выполнимо на данном домене';
return;
}
*/
GM_xmlhttpRequest
({
method: "GET",
url: url + 'battle.php?lastturn=-2&warid=' + warid_ai,
onload: function(obj)
{
handleHttpResponseWid(obj);
}
});
/*
var objXMLHttpReqWid = new XMLHttpRequest();
objXMLHttpReqWid.open('GET', url + 'battle.php?lastturn=-2&warid=' + warid_ai, true);
//objXMLHttpReqWid.overrideMimeType("text/plain; charset=windows-1251");
objXMLHttpReqWid.onreadystatechange = function() { handleHttpResponseWid(objXMLHttpReqWid); }
objXMLHttpReqWid.send(null);
*/
}
function div_close_result() {
var temp_rez = $('war_result');
temp_rez.parentNode.removeChild(temp_rez);
}
function handleHttpResponseWid(obj) {
if ( obj.readyState != 4 ) return;
var div = $('war_result_cont');
if ( obj.status != 200 ) {
div.innerHTML = "<br>Http error "+String(obj.status);
return;
}
var arr = obj.responseText.split(";/", 2);
var lwm = 0;
if ( url.match('lordswm') ) {
var regexp_exp = /(\d+) exp/;
var regexp_skill = /(\d*\.?\d+) skill/;
var err = "Parse error.";
lwm = 1;
var pos = arr[0].indexOf('#f_en');
if ( pos==-1 ) { lwm = 0; pos = arr[0].indexOf('f<font size="18"><b>'); } // esli staryi boj na lwm.com do ob'edinenija
} else {
var regexp_exp = /(\d+) опыт/;
var regexp_skill = /(\d*\.?\d+) умени/;
var err = "Результаты боя не найдены.";
var pos = arr[0].indexOf('f<font size="18"><b>');
}
if ( pos==-1 ) {
div.innerHTML = "<br>" + err;
return;
}
if ( lwm==1 ) {
var tmp = arr[0].substr(pos+5);
} else {
var tmp = arr[0].substr(pos+1);
}
tmp = tmp.substr(0, tmp.indexOf('|#')).replace(/ size="18"/g, '').replace(/font color="/g, 'font style="color: ');
arr = tmp.split("<br");
var exp1, um1;
for (var i in arr) {
if ( exp1 = regexp_exp.exec( arr[i] ) ) {
um1 = regexp_skill.exec( arr[i] )[1];
if ( um1 != 0 ) {
arr[i] = arr[i].slice(0, -1) + " (" + Math.ceil( exp1[1] / um1 ) + ").";
if (location.href.indexOf('mercenary_guild') != -1) {arr[i] += "=>("+ Math.ceil(exp1[1] / um1 * 1.7) +")";}
}
}
}
div.innerHTML = '<br>' + arr.join("<br");
}
function loaders() {
return '<img border="0" align="absmiddle" height="11" src="data:image/gif;base64,'+
'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'+
'fySDhGYQdDWGQyUhADs=">';
}
function $(id) { return document.querySelector("#"+id); }
function addEvent(elem, evType, fn) {
if (elem.addEventListener) {
elem.addEventListener(evType, fn, false);
}
else if (elem.attachEvent) {
elem.attachEvent("on" + evType, fn);
}
else {
elem["on" + evType] = fn;
}
}}, 100);
})();