hwm_battlelinks

Быстрые ссылки на итоги боя; начало, конец, чат боя (by Demin)

目前为 2014-08-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name hwm_battlelinks
  3. // @author Demin
  4. // @namespace Demin
  5. // @description Быстрые ссылки на итоги боя; начало, конец, чат боя (by Demin)
  6. // @homepage https://greasyfork.org/users/1602-demin
  7. // @icon http://i.imgur.com/LZJFLgt.png
  8. // @version 3.1
  9. // @encoding utf-8
  10. // @include http://*heroeswm.ru/*
  11. // @include http://178.248.235.15/*
  12. // @include http://209.200.152.144/*
  13. // @include http://*lordswm.com/*
  14. // @include http://*hwmguide.ru/*
  15. // @exclude */rightcol.php*
  16. // @exclude */ch_box.php*
  17. // @exclude */chat*
  18. // @exclude */ticker.html*
  19. // @exclude */frames*
  20. // @exclude */brd.php*
  21. // @exclude */auction.php*
  22. // @grant GM_deleteValue
  23. // @grant GM_getValue
  24. // @grant GM_listValues
  25. // @grant GM_setValue
  26. // @grant GM_addStyle
  27. // @grant GM_log
  28. // @grant GM_openInTab
  29. // ==/UserScript==
  30.  
  31. // (c) 2010-2014, demin ( http://www.heroeswm.ru/pl_info.php?id=15091 )
  32.  
  33. (function() {
  34.  
  35. var version = '3.1';
  36.  
  37.  
  38. if (!this.GM_getValue || (this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported")>-1)) {
  39. this.GM_getValue=function (key,def) {
  40. return localStorage[key] || def;
  41. };
  42. this.GM_setValue=function (key,value) {
  43. return localStorage[key]=value;
  44. };
  45. this.GM_deleteValue=function (key) {
  46. return delete localStorage[key];
  47. };
  48. }
  49.  
  50.  
  51. var script_num = 92536;
  52. var script_name = 'hwm_battlelinks: Быстрые ссылки на итоги боя; начало, конец, чат боя (by Demin)';
  53. // see down
  54.  
  55. var url_cur = location.href;
  56. var url = 'http://'+location.hostname+'/';
  57.  
  58.  
  59. var blank = ' target="_blank"';
  60. //var blank = '';
  61.  
  62.  
  63. var a = document.querySelectorAll("a[href*='warid=']");
  64. var a_len = a.length;
  65. var warid = /warid=(\d+)/;
  66. var ai, warid_ai, bt;
  67.  
  68. if ( url.match('daily') || url.match('hwmguide') || url.match('radio') ) { url = 'http://www.heroeswm.ru/'; }
  69. else { update_n(version,script_num,script_name); }
  70.  
  71. for ( var i=a_len; i--; ) {
  72. ai = a[i];
  73. if ( warid_ai = warid.exec(ai) ) {
  74. warid_ai = warid_ai[1];
  75. bt = document.createElement('span');
  76.  
  77. bt.innerHTML = '&nbsp;[<a href="'+url+'war.php?lt=-1&warid='+warid_ai+'"'+blank+'>#</a>'+
  78. '&nbsp;<a href="'+url+'battlechat.php?warid='+warid_ai+'"'+blank+'>chat</a>'+
  79. '&nbsp;<a href="'+url+'war.php?warid='+warid_ai+'"'+blank+'>$</a>'+
  80. '&nbsp;<a href="'+url+'battle.php?lastturn=-3&warid='+warid_ai+'"'+blank+'>E</a>]';
  81.  
  82. ai.parentNode.insertBefore(bt, ai.nextSibling);
  83. addEvent(ai, "click", show_result);
  84. }
  85. }
  86.  
  87. function show_result(event)
  88. {
  89. event = event || window.event;
  90. event.preventDefault ? event.preventDefault() : (event.returnValue=false);
  91. var ai = event.target || event.srcElement;
  92.  
  93. while ( !warid.exec(ai.href) ) { ai = ai.parentNode; }
  94. // for home page (once) && pl_info page (in battle) (twice)
  95. warid_ai = warid.exec(ai.href)[1];
  96.  
  97. var newdiv = $('war_result');
  98. if ( !newdiv ) {
  99. newdiv = document.createElement('div');
  100. newdiv.setAttribute('id', 'war_result');
  101. with ( newdiv.style ) {
  102. position = 'absolute';
  103. borderStyle = 'solid';
  104. borderColor = '#000000';
  105. borderWidth = '2px';
  106. padding = '0px';
  107. zIndex = '3';
  108. }
  109. }
  110.  
  111. newdiv.style.left = event.pageX + 5;
  112. newdiv.style.top = event.pageY + 5;
  113.  
  114. newdiv.innerHTML = '<table cellspacing=4 cellpadding=0 bgcolor="#f5f3ea"><tr>'+
  115. '<td align="left">warid: '+warid_ai+
  116.  
  117. '&nbsp;[<a href="'+url+'war.php?lt=-1&warid='+warid_ai+'"'+blank+'>#</a>'+
  118. '&nbsp;<a href="'+url+'battlechat.php?warid='+warid_ai+'"'+blank+'>chat</a>'+
  119. '&nbsp;<a href="'+url+'war.php?warid='+warid_ai+'"'+blank+'>$</a>'+
  120. '&nbsp;<a href="'+url+'battle.php?lastturn=-3&warid='+warid_ai+'"'+blank+'>E</a>]'+
  121.  
  122. '</td><td width=100></td>'+
  123. '<td align="right" id="close_div_result" title="Close">[x]</td></tr>'+
  124. '<tr><td align="left" id="war_result_cont" colspan="3"><br>'+loaders()+'</td></tr>'+
  125. '</table>';
  126.  
  127. ai.parentNode.insertBefore(newdiv, ai.nextSibling);
  128. addEvent($("close_div_result"), "click", div_close_result);
  129.  
  130. if ( url != 'http://'+location.hostname+'/' ) {
  131. var div = $('war_result_cont');
  132. div.innerHTML = '<br>Не выполнимо на данном домене';
  133. return;
  134. }
  135.  
  136. var objXMLHttpReqWid = new XMLHttpRequest();
  137. objXMLHttpReqWid.open('GET', url + 'battle.php?lastturn=-2&warid=' + warid_ai, true);
  138. //objXMLHttpReqWid.overrideMimeType("text/plain; charset=windows-1251");
  139. objXMLHttpReqWid.onreadystatechange = function() { handleHttpResponseWid(objXMLHttpReqWid); }
  140. objXMLHttpReqWid.send(null);
  141. }
  142.  
  143. function div_close_result() {
  144. var temp_rez = $('war_result');
  145. temp_rez.parentNode.removeChild(temp_rez);
  146. }
  147.  
  148. function handleHttpResponseWid(obj) {
  149. if ( obj.readyState != 4 ) return;
  150. var div = $('war_result_cont');
  151. if ( obj.status != 200 ) {
  152. div.innerHTML = "<br>Http error "+String(obj.status);
  153. return;
  154. }
  155. var arr = obj.responseText.split(";/", 2);
  156.  
  157. var lwm = 0;
  158. if ( url.match('lordswm') ) {
  159. lwm = 1;
  160. var pos = arr[0].indexOf('#f_en');
  161. if ( pos==-1 ) { lwm = 0; pos = arr[0].indexOf('f<font size="18"><b>'); } // esli staryi boj na lwm.com do ob'edinenija
  162. } else {
  163. var pos = arr[0].indexOf('f<font size="18"><b>');
  164. }
  165.  
  166. if ( pos==-1 ) {
  167. div.innerHTML = '<br>Parse error';
  168. return;
  169. }
  170.  
  171. if ( lwm==1 ) {
  172. var tmp = arr[0].substr(pos+5);
  173. } else {
  174. var tmp = arr[0].substr(pos+1);
  175. }
  176.  
  177. var pos2 = tmp.indexOf('|#');
  178. div.innerHTML = '<br>'+tmp.substr(0, pos2).replace(/ size="18"/g, '');
  179. }
  180.  
  181. function loaders() {
  182. return '<img border="0" align="absmiddle" height="11" src="data:image/gif;base64,'+
  183. 'R0lGODlhEAAQAMQAAP///+7u7t3d3bu7u6qqqpmZmYiIiHd3d2ZmZlVVVURERDMzMyIiIhEREQAR'+
  184. 'AAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05F'+
  185. 'VFNDQVBFMi4wAwEAAAAh+QQFBwAQACwAAAAAEAAQAAAFdyAkQgGJJOWoQgIjBM8jkKsoPEzgyMGs'+
  186. 'CjPDw7ADpkQBxRDmSCRetpRA6Rj4kFBkgLC4IlUGhbNQIwXOYYWCXDufzYPDMaoKGBoKb886OjAK'+
  187. 'dgZAAgQkfCwzAgsDBAUCgl8jAQkHEAVkAoA1AgczlyIDczUDA2UhACH5BAUHABAALAAAAAAPABAA'+
  188. 'AAVjICSO0IGIATkqIiMKDaGKC8Q49jPMYsE0hQdrlABCGgvT45FKiRKQhWA0mPKGPAgBcTjsspBC'+
  189. 'AoH4gl+FmXNEUEBVAYHToJAVZK/XWoQQDAgBZioHaX8igigFKYYQVlkCjiMhACH5BAUHABAALAAA'+
  190. 'AAAQAA8AAAVgICSOUGGQqIiIChMESyo6CdQGdRqUENESI8FAdFgAFwqDISYwPB4CVSMnEhSej+Fo'+
  191. 'gNhtHyfRQFmIol5owmEta/fcKITB6y4choMBmk7yGgSAEAJ8JAVDgQFmKUCCZnwhACH5BAUHABAA'+
  192. 'LAAAAAAQABAAAAViICSOYkGe4hFAiSImAwotB+si6Co2QxvjAYHIgBAqDoWCK2Bq6A40iA4yYMgg'+
  193. 'NZKwGFgVCAQZotFwwJIF4QnxaC9IsZNgLtAJDKbraJCGzPVSIgEDXVNXA0JdgH6ChoCKKCEAIfkE'+
  194. 'BQcAEAAsAAAAABAADgAABUkgJI7QcZComIjPw6bs2kINLB5uW9Bo0gyQx8LkKgVHiccKVdyRlqjF'+
  195. 'SAApOKOtR810StVeU9RAmLqOxi0qRG3LptikAVQEh4UAACH5BAUHABAALAAAAAAQABAAAAVxICSO'+
  196. '0DCQKBQQonGIh5AGB2sYkMHIqYAIN0EDRxoQZIaC6bAoMRSiwMAwCIwCggRkwRMJWKSAomBVCc5l'+
  197. 'UiGRUBjO6FSBwWggwijBooDCdiFfIlBRAlYBZQ0PWRANaSkED1oQYHgjDA8nM3kPfCmejiEAIfkE'+
  198. 'BQcAEAAsAAAAABAAEAAABWAgJI6QIJCoOIhFwabsSbiFAotGMEMKgZoB3cBUQIgURpFgmEI0EqjA'+
  199. 'CYXwiYJBGAGBgGIDWsVicbiNEgSsGbKCIMCwA4IBCRgXt8bDACkvYQF6U1OADg8mDlaACQtwJCEA'+
  200. 'IfkEBQcAEAAsAAABABAADwAABV4gJEKCOAwiMa4Q2qIDwq4wiriBmItCCREHUsIwCgh2q8MiyEKO'+
  201. 'DK7ZbHCoqqSjWGKI1d2kRp+RAWGyHg+DQUEmKliGx4HBKECIMwG61AgssAQPKA19EAxRKz4QCVIh'+
  202. 'ACH5BAUHABAALAAAAAAQABAAAAVjICSOUBCQqHhCgiAOKyqcLVvEZOC2geGiK5NpQBAZCilgAYFM'+
  203. 'ogo/J0lgqEpHgoO2+GIMUL6p4vFojhQNg8rxWLgYBQJCASkwEKLC17hYFJtRIwwBfRAJDk4Obwsi'+
  204. 'dEkrWkkhACH5BAUHABAALAAAAQAQAA8AAAVcICSOUGAGAqmKpjis6vmuqSrUxQyPhDEEtpUOgmgY'+
  205. 'ETCCcrB4OBWwQsGHEhQatVFhB/mNAojFVsQgBhgKpSHRTRxEhGwhoRg0CCXYAkKHHPZCZRAKUERZ'+
  206. 'MAYGMCEAIfkEBQcAEAAsAAABABAADwAABV0gJI4kFJToGAilwKLCST6PUcrB8A70844CXenwILRk'+
  207. 'IoYyBRk4BQlHo3FIOQmvAEGBMpYSop/IgPBCFpCqIuEsIESHgkgoJxwQAjSzwb1DClwwgQhgAVVM'+
  208. 'IgVyKCEAIfkECQcAEAAsAAAAABAAEAAABWQgJI5kSQ6NYK7Dw6xr8hCw+ELC85hCIAq3Am0U6JUK'+
  209. 'jkHJNzIsFAqDqShQHRhY6bKqgvgGCZOSFDhAUiWCYQwJSxGHKqGAE/5EqIHBjOgyRQELCBB7EAQH'+
  210. 'fySDhGYQdDWGQyUhADs=">';
  211. }
  212.  
  213. function $(id) { return document.querySelector("#"+id); }
  214.  
  215. function addEvent(elem, evType, fn) {
  216. if (elem.addEventListener) {
  217. elem.addEventListener(evType, fn, false);
  218. }
  219. else if (elem.attachEvent) {
  220. elem.attachEvent("on" + evType, fn);
  221. }
  222. else {
  223. elem["on" + evType] = fn;
  224. }
  225. }
  226.  
  227. function update_n(a,b,c,d,e){if(e){e++}else{e=1;d=(Number(GM_getValue(b+'_update_script_last2','0'))||0)}if(e>3){return}var f=new Date().getTime();var g=document.querySelector('#update_demin_script2');if(g){if((d+86400000<f)||(d>f)){g=g.innerHTML;if(/100000=1.1/.exec(g)){var h=new RegExp(b+'=(\\d+\\.\\d+)=(\\d+)').exec(g);var i=/url7=([^%]+)/.exec(g);if(a&&h&&i){if(Number(h[1])>Number(a))setTimeout(function(){if(confirm('\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u043A\u0440\u0438\u043F\u0442\u0430: "'+c+'".\n\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E \u0441\u0435\u0439\u0447\u0430\u0441?\n\nThere is an update available for the script: "'+c+'".\nWould you like install the script now?')){if(typeof GM_openInTab=='function'){GM_openInTab(i[1].replace(/\s/g,'')+h[2])}else{window.open(i[1].replace(/\s/g,'')+h[2],'_blank')}}},500)}GM_setValue(b+'_update_script_last2',''+f)}else{setTimeout(function(){update_n(a,b,c,d,e)},1000)}}}else{var j=document.querySelector('body');if(j){var k=GM_getValue(b+'_update_script_array2');if(e==1&&((d+86400000<f)||(d>f)||!k)){if(k){GM_deleteValue(b+'_update_script_array2')}setTimeout(function(){update_n(a,b,c,d,e)},1000);return}var l=document.createElement('div');l.id='update_demin_script2';l.setAttribute('style','position: absolute; width: 0px; height: 0px; top: 0px; left: 0px; display: none;');l.innerHTML='';j.appendChild(l);if((d+86400000<f)||(d>f)||!k){var m=new XMLHttpRequest();m.open('GET','photo_pl_photos.php?aid=1777'+'&rand='+(Math.random()*100),true);m.onreadystatechange=function(){update(m,a,b,c,d,e)};m.send(null)}else{document.querySelector('#update_demin_script2').innerHTML=k;setTimeout(function(){update_n(a,b,c,d,e)},10)}}}}function update(a,b,c,d,e,f){if(a.readyState==4&&a.status==200){a=a.responseText;var g=/(\d+=\d+\.\d+(=\d+)*)/g;var h='';var i=/(url7=[^%]+\%)/.exec(a);if(i){h+=i[1]}while((i=g.exec(a))!=null){if(h.indexOf(i[1])==-1){h+=' '+i[1]}};GM_setValue(c+'_update_script_array2',''+h);var j=document.querySelector('#update_demin_script2');if(j){j.innerHTML=h;setTimeout(function(){update_n(b,c,d,e,f)},10)}}}
  228.  
  229. })();