DailyHelper

Помощь

  1. // ==UserScript==
  2. // @name DailyHelper
  3. // @author omne
  4. // @namespace omne
  5. // @connect daily.heroeswm.ru
  6. // @description Помощь
  7. // @version 0.1
  8. // @include /^https{0,1}:\/\/((www|qrator|)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(leader_guild|war).php/
  9. // @grant GM_xmlhttpRequest
  10. // @license GNU GPLv3
  11. // ==/UserScript==
  12.  
  13. (function() {
  14.  
  15. var host = location.host;
  16. var imgHost = host.includes("my.") ? "//cfcdn.lordswm.com" : "//dcdn.heroeswm.ru";
  17. var dailyHost = host.includes("my.") ? "//daily.lordswm.com" : "//daily.heroeswm.ru";
  18. if (/leader_guild/.test(location.href)) {
  19. if (document.documentElement.innerHTML.indexOf("Опасная цель устранена!") != -1) {
  20. let cent = document.createElement('center');
  21. cent.innerHTML = "Вы молодцы! Приходите завтра."
  22. document.querySelector('.wbwhite').append(cent);
  23. } else {
  24. var lg;
  25. if (document.documentElement.innerHTML.indexOf("Ваша армия слишком слаба") == -1) {
  26. lg = Math.ceil((Number(document.documentElement.innerHTML.match("attr_leadership.+?<b>([^<]+)")[1].replace(",", "")) - 10001)/1000);
  27. } else {
  28. lg = Math.ceil((Number(document.documentElement.innerHTML.match("на ([0-9,]+) или больше очков")[1].replace(",", "")) - 9999)/1000);
  29. }
  30. var creatures = {};
  31. getCol();
  32. }
  33. }
  34.  
  35. function getCol() {
  36. GM_xmlhttpRequest({
  37. method: "GET",
  38. url: "/leader_army.php",
  39. onload: function(res) {
  40. let data = res.responseText;
  41. let monsters = [];
  42. monsters[0] = data.match(/obj\[[0-9]+\]\[\'monster_id\'\] = \'[^\']+\'/g);
  43. monsters[1] = data.match(/obj\[[0-9]+\]\[\'count\'\] = [0-9]+/g);
  44. for (let i = 0; i < monsters[0].length; i++) {
  45. let id = monsters[0][i].match(/obj\[[0-9]+\]\[\'monster_id\'\] = \'([^\']+)\'/)[1];
  46. let count = monsters[1][i].match(/obj\[[0-9]+\]\[\'count\'\] = ([0-9]+)/)[1];
  47. creatures[id] = Number(count);
  48. }
  49. getLgd(dailyHost + "/api.php?t=lgd&lg=" + lg);
  50. }
  51. });
  52. }
  53.  
  54. function getCre(id, img, rarity, count, flag) {
  55. return '<div class="cre_creature" style="width: 45px"><div class="cre_mon_parent" style="height:37px">' +
  56. '<img src="' + imgHost + '/i/army_html/fon_lvl' + rarity + '.png?v=1" width="45" height="37" class="cre_mon_image2">' +
  57. '<img src="' + imgHost + '/i/portraits/' + img + 'anip33.png" width="45" height="37" class="cre_mon_image1">' +
  58. '<img src="' + imgHost + '/i/army_html/frame_lvl' + rarity + '.png?v=1" width="45" height="37" class="cre_mon_image2" title="" border="0">' +
  59. '</div>' +
  60. '<div class="cre_amount" style="font-size:100%">' + count + '</div>' +
  61. '<div class="' + (flag ? "y":"n") + '"></div></div>';
  62. }
  63.  
  64. var post_army = Array();
  65.  
  66. function army_try_to_submit(num) {
  67. let body = post_army[num];
  68. let ReqSend = new XMLHttpRequest();
  69. ReqSend.open('POST', '/leader_army_apply.php', true);
  70. ReqSend.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  71. ReqSend.addEventListener("load", function() {location.reload()});
  72. ReqSend.send(body);
  73. }
  74. function getLgd(url) {
  75. GM_xmlhttpRequest({
  76. method: "GET",
  77. url: url,
  78. onload: function(res) {
  79. console.log(creatures);
  80. let cent = document.createElement('center');
  81. cent.innerHTML += '<style>.y {background-color: green;}.n {background-color: red;}.y, .n {position: absolute;left: 2px;top: 2px;width: 10px;height: 10px;border-radius: 5px;}.examples{width:450px;border-bottom: 1px solid #cad3dc;border-left: 1px solid #cad3dc;}.cont{border-right: 1px solid #cad3dc;border-top: 1px solid #cad3dc;}.info{padding:10px;flex:1}.battle{flex:7;text-align: left;}.examples>div{padding:5px}.cont{display:flex;align-items: center;}.info, .info *{font-size:12px}</style>';
  82. cent.innerHTML += '<b>Доступные прохождения:</b>';
  83. let battleExamples = document.createElement('div');
  84. battleExamples.className = "examples";
  85. let closedBattleExamples = document.createElement('div');
  86. closedBattleExamples.className = "examples";
  87. let data = JSON.parse(res.responseText);
  88. console.log(data);
  89. for(let i in data) {
  90. let cont = document.createElement('div');
  91. cont.className = "cont";
  92. let info = document.createElement('div');
  93. info.className = "info";
  94. info.innerHTML += data[i].proc + "%<BR><a href = '/war.php?lt=-1&warid=" + data[i].warid + "&show_for_all="+ data[i].key +"'>Бой</a>";
  95. cont.append(info);
  96. let battle = document.createElement('div');
  97. battle.className = "battle";
  98. post_army[i] = "idx=0";
  99. let battleColsed = false;
  100. for (let j in data[i].army) {
  101. let flag = false;
  102. if ((data[i].army[j].id in creatures)&&(creatures[data[i].army[j].id] > data[i].army[j].count)) {
  103. post_army[i] += "&countv" + (Number(j) + 1) + "=" + data[i].army[j].count + "&mon_id" + (Number(j) + 1) + "=" + data[i].army[j].id;
  104. flag = true;
  105. } else {
  106. battleColsed = true;
  107. }
  108. battle.innerHTML += getCre(data[i].army[j].id, data[i].army[j].img, data[i].army[j].rarity, data[i].army[j].count, flag);
  109. }
  110. battle.innerHTML += '<img title = "Набрать эту армию" id = "b'+ i +'" style = "cursor:pointer;float:right" width = "35px" src="' + imgHost + '/i/combat/btn_recruit.png">';
  111. cont.append(battle);
  112. if (battleColsed) {
  113. closedBattleExamples.append(cont);
  114. } else {
  115. battleExamples.append(cont);
  116. }
  117. }
  118. cent.append(battleExamples);
  119. cent.innerHTML += '<b>Недоступные прохождения:</b>';
  120. cent.append(closedBattleExamples);
  121. document.querySelector('.wbwhite').append(cent);
  122. for (let i in data) {
  123. document.getElementById("b"+ i).onclick = function() {army_try_to_submit(i)};
  124. }
  125. }
  126. });
  127. }
  128.  
  129. })();