GN_ResourcesCost

Подсчет стоимости ресурсов в золоте

  1. // ==UserScript==
  2. // @name GN_ResourcesCost
  3. // @namespace Gradient
  4. // @description Подсчет стоимости ресурсов в золоте
  5. // @include /^https{0,1}:\/\/(www\.heroeswm\.ru|178\.248\.235\.15)\/.+/
  6. // @exclude /^https{0,1}:\/\/(www\.heroeswm\.ru|178\.248\.235\.15)\/(login|war|cgame|frames|chat|chatonline|ch_box|chat_line|ticker|chatpost|chat2020|battlechat|campaign)\.php.*/
  7. // @version 1.0.4
  8. // ==/UserScript==
  9.  
  10. "use strict";
  11.  
  12. //----------------------------------------------------------------------------//
  13.  
  14. var script_name = 'GN_ResourcesCost'; // Enter your script name here
  15.  
  16. //----------------------------------------------------------------------------//
  17.  
  18. (function(){ try{ // wrapper start
  19.  
  20. //----------------------------------------------------------------------------//
  21. // UnifiedLibrary 1.7.0 start
  22. //----------------------------------------------------------------------------//
  23.  
  24. //----------------------------------------------------------------------------//
  25. // SysUtils
  26. //----------------------------------------------------------------------------//
  27.  
  28. var GN_SysUtils = new SysUtils(script_name);
  29. var SU = GN_SysUtils;
  30.  
  31. //----------------------------------------------------------------------------//
  32.  
  33. function SysUtils(name){ // wrapper start
  34.  
  35. //----------------------------------------------------------------------------//
  36.  
  37. this.show_error = function(error_string, use_alert){
  38. if(use_alert)
  39. alert(error_string);
  40.  
  41. throw new Error(error_string);
  42. };
  43.  
  44. if(arguments.length != 1)
  45. this.show_error('Wrong SysUtils arguments');
  46.  
  47. if(!arguments[0])
  48. this.show_error('Empty SysUtils argument');
  49.  
  50. //----------------------------------------------------------------------------//
  51.  
  52. this.load_value = function(value, def){
  53. var div = document.getElementById('GN_GM_Handler');
  54. div.setAttribute('desc', value);
  55. div.setAttribute('operation', 'load');
  56.  
  57. div.click();
  58.  
  59. if(div.getAttribute('state') != 'complete')
  60. this.show_error('Ошибка при загрузке значения');
  61.  
  62. return (div.getAttribute('is_null') == 'true' ? def : div.getAttribute('value'));
  63. };
  64.  
  65. //----------------------------------------------------------------------------//
  66.  
  67. var current_id = null;
  68.  
  69. //----------------------------------------------------------------------------//
  70.  
  71. function check_mandatory_scripts(alerter){
  72. var persistent_storage_sign = document.getElementById('GN_GM_Handler');
  73. var common_values_sign = document.getElementById('GN_CommonValuesSign');
  74. var alert_sign = document.getElementById('GN_AlertSign');
  75.  
  76. if(!alert_sign){
  77. alert_sign = document.createElement('div');
  78. alert_sign.id = 'GN_AlertSign';
  79. alert_sign.setAttribute('alerted', 'false');
  80. document.body.appendChild(alert_sign);
  81. }
  82.  
  83. var alerted = alert_sign.getAttribute('alerted') != 'false';
  84.  
  85. if(!persistent_storage_sign){
  86. alert_sign.setAttribute('alerted', 'true');
  87. alerter('Скрипт ' + name + ' требует для своей работы скрипт управления данными (GN_PersistentStorage), который должен стоять первым в порядке выполнения скриптов.\n'
  88. + 'Подробнее здесь: "https://gf.qytechs.cn/ru/scripts/14049-Как-устанавливать-скрипты-читать-здесь"', !alerted);
  89. }
  90.  
  91. if(!common_values_sign){
  92. alert_sign.setAttribute('alerted', 'true');
  93. alerter('Скрипт ' + name + ' требует для своей работы скрипт, хранящий данные (GN_CommonValuesFiller), который должен стоять вторым в порядке выполнения скриптов.\n'
  94. + 'Подробнее здесь: "https://gf.qytechs.cn/ru/scripts/14049-Как-устанавливать-скрипты-читать-здесь"', !alerted);
  95. }
  96. }
  97.  
  98. this.check_login = function(){
  99. var re = /.*?pl_id=(\d+)[^\d]*?/gmi;
  100. var matches = re.exec(document.cookie.toString());
  101.  
  102. if(matches){
  103. current_id = +matches[1];
  104.  
  105. check_mandatory_scripts(this.show_error);
  106. }
  107. };
  108.  
  109. //----------------------------------------------------------------------------//
  110.  
  111. this.check_login();
  112.  
  113. //----------------------------------------------------------------------------//
  114.  
  115. } // wrapper end
  116.  
  117. //----------------------------------------------------------------------------//
  118. // CommonValues
  119. //----------------------------------------------------------------------------//
  120.  
  121. var GN_CommonValues = new CommonValues();
  122.  
  123. //----------------------------------------------------------------------------//
  124.  
  125. function CommonValues(){ // wrapper start
  126.  
  127. //----------------------------------------------------------------------------//
  128. // Basic resources
  129. //----------------------------------------------------------------------------//
  130.  
  131. this.basic_resources = JSON.parse(SU.load_value('GN_CommonValues_BasicResources', '[]'));
  132.  
  133. //----------------------------------------------------------------------------//
  134.  
  135. } // wrapper end
  136.  
  137. //----------------------------------------------------------------------------//
  138. // UnifiedLibrary end
  139. //----------------------------------------------------------------------------//
  140.  
  141. var CV = GN_CommonValues;
  142.  
  143. start_work();
  144.  
  145. //----------------------------------------------------------------------------//
  146.  
  147. function start_work(){
  148. var market_link = '/auction.php?cat=res&sort=0&type=';
  149.  
  150. var gold_tds = document.querySelectorAll('td > img[width="24"][height="24"][src*="gold.png"]');
  151.  
  152. var trs = [];
  153. for(var i = 0; i < gold_tds.length; ++i){
  154. var count = gold_tds[i].parentNode.parentNode.childElementCount;
  155. var td_count = gold_tds[i].parentNode.parentNode.querySelectorAll('tr > td').length;
  156.  
  157. if(count > 2 && count % 2 === 0 && count == td_count)
  158. trs.push(gold_tds[i].parentNode.parentNode);
  159. }
  160.  
  161. trs.forEach(function(current){
  162. var amount = 0;
  163. var tds = current.querySelectorAll('tr > td');
  164.  
  165. for(var i = 0; i < tds.length; i += 2){
  166. var res_td = tds[i];
  167. var count_td = tds[i + 1];
  168.  
  169. var img = res_td.querySelector('img');
  170. var resource = resource_by_name(img.title);
  171.  
  172. if(resource){
  173. amount += resource.min_price * +count_td.textContent.replace(/,/g, '');
  174.  
  175. if(resource.market_type)
  176. res_td.innerHTML = '<a href="' + market_link + resource.market_type + '">' + res_td.innerHTML + '</a>'; // NB inner
  177. }
  178. }
  179.  
  180. var td = tds[0];
  181. td.firstChild.setAttribute('title', 'Сумма ресурсов в золоте: ' + amount);
  182. });
  183. }
  184.  
  185. //----------------------------------------------------------------------------//
  186.  
  187. function resource_by_name(name){
  188. var resources = CV.basic_resources;
  189.  
  190. for(var i = 0; i < resources.length; ++i)
  191. if(resources[i].name == name)
  192. return resources[i];
  193.  
  194. return null;
  195. }
  196.  
  197. //----------------------------------------------------------------------------//
  198.  
  199. } catch(e){
  200. alert('Ошибка в скрипте ' + script_name + ', обратитесь к разработчику:\n' + e);
  201. throw e;
  202. }}()); // wrapper end
  203.  
  204. //----------------------------------------------------------------------------//

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址