Advertisement
ZergLurker

heroeswm

Jun 17th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. pl_id = "5390900"; // ид своего перса
  2.  
  3.  
  4. // Настройки сервиса antigate - antigate setup
  5. var api_key = "c331c5a46b31c446f977baa6e14f60b2";   // ваш api-ключ, antigate key
  6. var captcha_min_len = 6;    // минимальный размер капчи, min size of capcha
  7. var captcha_max_len = 6;    // максимальный размер капчи, max size of capcha
  8.  
  9. // Общие настройки - General setup
  10. const base_url = "http://www.heroeswm.ru/";
  11.  
  12. const res_names = ["Золото", "Древесина", "Руда", "Ртуть", "Сера", "Кристаллы", "Самоцветы"];
  13. const res_links = ["gold", "wood", "ore", "mercury", "sulphur", "crystal", "gem"];
  14. var res_count = [0, 0, 0, 0, 0, 0, 0];
  15.  
  16. const RS_WOOD = 1;
  17. const RS_ORE = 2;
  18. const RS_MERCURY = 3;
  19. const RS_SULPHUR = 4;
  20. const RS_CRYSTAL = 5;
  21. const RS_LEATHER = 6;
  22.  
  23. const RS_NICKEL = 10;
  24. const RS_STEEL  = 9;
  25.  
  26. var res;
  27. var jsNewLine="\n";
  28. var i=0;
  29.  
  30. var l_obj_c;
  31. var l_obj;
  32. var can_buy = 0;
  33.  
  34.  
  35. const XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
  36.  
  37. var xmlHttp=createXmlHttpRequestObject();
  38. function createXmlHttpRequestObject()
  39. {
  40.     var xmlHttp;
  41.    
  42.     try
  43.     {
  44.         xmlHttp=new XMLHttpRequest();
  45.     }
  46.     catch(e)
  47.     {
  48.         var XMLHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
  49.                                       "MSXML2.XMLHTTP.5.0",
  50.                                       "MSXML2.XMLHTTP.4.0",
  51.                                       "MSXML2.XMLHTTP.3.0",
  52.                                       "MSXML2.XMLHTTP",
  53.                                       "Microsoft.XMLHTTP");
  54.                                  
  55.         for (var i=0; i < 6 && !xmlHttp; i++)
  56.         {
  57.             try
  58.             {
  59.                 xmlHttp= new ActiveXObject(XmlHttpVersions[i]);
  60.             }
  61.             catch(e) {}
  62.         }
  63.     }
  64.     if (!xmlHttp)
  65.         alert("error of creating XMLHttpRequest");
  66.     else
  67.         return xmlHttp;
  68. }
  69.  
  70. function postUrl(path, params)
  71. {
  72.   res = "";
  73.   var req = new XMLHttpRequest();
  74.     if (xmlHttp)
  75.     {    
  76.         try
  77.         {
  78.             req.open("POST", path, false); // синхронно и не паримся
  79.             req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  80. //            req.setRequestHeader("Referer","http://www.heroeswm.ru/auction_new_lot.php");
  81.                
  82.             req.send(params);  
  83.             res = req.responseText;
  84.         }
  85.         catch (e)
  86.         {
  87.             alert("Не удалось соединиться с сервером:\n" + e.toString());    
  88.         }  
  89.     }
  90. }
  91.  
  92.  
  93. function getUrl(path)
  94. {
  95.   res = "";
  96.   var req = new XMLHttpRequest();
  97.     if (xmlHttp)
  98.     {    
  99.         try
  100.         {
  101.             req.open("GET", path, false); // синхронно и не паримся
  102.             req.send();  
  103.             res = req.responseText;
  104.         }
  105.         catch (e)
  106.         {
  107.             alert("Не удалось соединиться с сервером:\n" + e.toString());    
  108.         }  
  109.     }
  110. }
  111.  
  112.  
  113.  
  114. function getBase64Image(img)
  115. {
  116.     // создаем канвас
  117.     var canvas = window.content.document.createElement("canvas");
  118.     canvas.width = img.width;
  119.     canvas.height = img.height;
  120.  
  121.     // Копируем изображение на канвас
  122.     var ctx = canvas.getContext("2d");
  123.     ctx.drawImage(img, 0, 0);
  124.  
  125.     // Получаем data-URL отформатированную строку
  126.     var dataURL = canvas.toDataURL("image/png");
  127.  
  128.     return encodeURIComponent(dataURL.replace(/^data:image\/(png);base64,/, ""));
  129. }
  130.  
  131. function getBase64ImageById(id)
  132. {
  133.    return getBase64Image(window.content.document.getElementsByName(id)[0]);
  134. }
  135.  
  136. function get_cookie(cname)
  137. {
  138.     cookie_name = cname + "=";
  139.     cookie_length = window.content.document.cookie.length;
  140.     cookie_begin = 0;
  141.     while (cookie_begin < cookie_length)
  142.     {
  143.         value_begin = cookie_begin + cookie_name.length;
  144.         if (window.content.document.cookie.substring(cookie_begin, value_begin) == cookie_name)
  145.         {
  146.             var value_end = window.content.document.cookie.indexOf (";", value_begin);
  147.             if (value_end == -1)
  148.             {
  149.                 value_end = cookie_length;
  150.             }
  151.             return unescape(window.content.document.cookie.substring(value_begin, value_end));
  152.         }
  153.         cookie_begin = window.content.document.cookie.indexOf(" ", cookie_begin) + 1;
  154.         if (cookie_begin == 0)
  155.         {
  156.             break;
  157.         }
  158.     }
  159.     return null;
  160. }
  161.  
  162.  
  163.  
  164. function send_captcha()
  165. {
  166. var base64_value = getBase64ImageById('imgcode');
  167.  
  168. do
  169. {
  170. var data = "method=base64&key=" + api_key + "&soft_id=490&body=" + base64_value +
  171.     "&min_len=" + captcha_min_len + "&max_len=" + captcha_max_len;
  172.  
  173. postUrl("http://antigate.com/in.php", data);
  174.  
  175. iimDisplay("Ответ от сервера: " + res);
  176.  
  177. if (res.substring(0, 2) == "OK") { var cap_id = res.substring(3); }
  178.  
  179. doSleep(5); // ждём
  180. } while (res.substring(0, 2) != "OK");
  181.  
  182. do
  183. {
  184.     doSleep(5);
  185.     data = "key=" + api_key + "&action=get&id=" +cap_id,
  186.     postUrl("http://antigate.com/res.php", data);
  187.     iimDisplay("Текст капчи: " + res);
  188. } while ((res == "CAPCHA_NOT_READY")&&(res.substring(0, 5)!="ERROR"))
  189.  
  190. if (res.substring(0, 5)!="ERROR")
  191.     {
  192.     // вводим текст и клацаем кнопку
  193.     URL_goto(base_url + "object_do.php?id=" + obj_id + "&code=" + res.substring(3) + "&code_id=" + l_obj_c + "&pl_id=" + pl_id + "&rand1=" + Math.random() + "&rand2=" + Math.random()*100);
  194.     } else {solve_captcha();};
  195.  
  196. }
  197.  
  198. function getRandomInt(min, max)
  199. {
  200.     return Math.floor(Math.random() * (max - min + 1)) + min;
  201. }
  202.  
  203. function doSleep(amount) {
  204.     var tmpCode = "CODE:" + jsNewLine;
  205.     tmpCode += "WAIT SECONDS=" + amount;
  206.     iimPlay(tmpCode);
  207. }
  208.  
  209. function URL_goto(url)
  210. {
  211.     iimDisplay("GOTO: " + url);
  212.     var code = "CODE:" + jsNewLine;
  213.     code = code + "URL GOTO=" + url;
  214.     iimPlay(code);
  215. }
  216.  
  217. function solve_captcha()
  218. {
  219.     // если просит капчу - вводим
  220.     var img = window.content.document.getElementsByName('imgcode');
  221.     if (img != null) {send_captcha();} // если видим капчу - решаем
  222. }
  223.  
  224.  
  225. function get_job(object_id)
  226. {
  227.     // идём на страничку предприятия
  228.     URL_goto(base_url + "object-info.php?id=" + object_id);
  229.    
  230.     // выцепляем куки
  231.     l_obj_c = get_cookie("l_obj_c")
  232.     l_obj = get_cookie("l_obj")
  233.    
  234.     doSleep(1); // ждём, пока картинка подгрузится
  235.    
  236.     if (
  237.     (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно золота") < 0) &&
  238.     (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно ресурсов для производства") < 0) &&
  239.     (window.content.document.documentElement.outerHTML.indexOf("Вы находитесь в другом секторе") < 0) &&
  240.     (window.content.document.documentElement.outerHTML.indexOf("рабочих мест") < 0) &&
  241.     (window.content.document.documentElement.outerHTML.indexOf("Прошло меньше часа с последнего устройства на работу.") < 0) &&   
  242.     (window.content.document.documentElement.outerHTML.indexOf("уже устроены") < 0)
  243.     ) {
  244.         solve_captcha(); // распознаём
  245.         if (
  246.         (window.content.document.documentElement.outerHTML.indexOf("Введен неправильный код.") > 0) ||
  247.         (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно золота.") > 0) ||
  248.         (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") > 0) ||
  249.         (window.content.document.documentElement.outerHTML.indexOf("недостаточно золота") > 0)
  250.         )
  251.             {return false} else {return true}
  252.  
  253.       } else { return false; }
  254.        
  255. }
  256.  
  257. function buy_res(object_id, count)
  258. {
  259. // купить ресурс (нужно находиться в секторе, добавить проверку)
  260.  
  261. if (count>0) {
  262. URL_goto(base_url + "object-info.php?id=" + object_id); // идём на объект
  263.  
  264. var ch_code = window.content.document.getElementsByName("check_code"); // читаем код операции
  265. var data =  "pl_id=" + pl_id + "&" +
  266.         "obj_id=" + object_id + "&" +
  267.         "check_code=" + ch_code[0].value + "&" +
  268.         "count=" + count;
  269. postUrl("http://www.heroeswm.ru/buy_res.php", data); // пинаем запрос
  270.  
  271. }
  272. }
  273.  
  274. function set_lot(item_name, count, atype, price, duration)
  275. {
  276. // идём на новый лот
  277. URL_goto("http://www.heroeswm.ru/auction_new_lot.php");
  278.  
  279. // Получим точное имя предмета из списка
  280. str_begin = window.content.document.documentElement.outerHTML.indexOf(item_name);
  281. str_end = window.content.document.documentElement.outerHTML.indexOf("\"", str_begin);
  282.  
  283. real_name = window.content.document.documentElement.outerHTML.substring(str_begin, str_end);
  284.  
  285. str_end = real_name.indexOf(".gif");
  286. if (str_end > 0) {real_name = real_name.substring(0, str_end);}
  287.  
  288. if (str_begin < 0) {
  289.     iimDisplay("Нет такого предмета");
  290.     return false
  291.     }
  292.  
  293. if (window.content.document.documentElement.outerHTML.indexOf("Достигнуто максимальное количество выставленных лотов") < 0)
  294. {
  295. // пинаем первый запрос серверу
  296. var data =  "item=" + real_name + "&" +
  297.         "count=" + count + "&" +
  298.         "atype=" + atype + "&" +
  299.         "price=" + price + "&" +
  300.         "duration=" + duration;
  301. //alert(data);
  302. postUrl("http://www.heroeswm.ru/auction_new_lot.php", data); // отправляем       
  303.  
  304. // получим код операции
  305. var sign_str = res.substr(res.indexOf("<input type=hidden name=sign value=")+36, 32);
  306. //alert(sign_str);
  307.  
  308.  
  309. // пинаем второй запрос с кодом операции
  310. data =  "sign=" + sign_str + "&" +
  311.         "item=" + real_name + "&" +
  312.         "count=" + count + "&" +
  313.         "atype=" + atype + "&" +
  314.         "price=" + price + "&" +
  315.         "duration=" + duration;
  316. postUrl("http://www.heroeswm.ru/auction_accept_new_lot.php", data); // отправляем
  317. } else {iimDisplay("Нет свободных лотов")}
  318. }
  319.  
  320. function count_res()
  321. {
  322.  
  323. var code = "CODE:" + jsNewLine;
  324. code += "TAG POS=23 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
  325. code += "TAG POS=25 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
  326. code += "TAG POS=27 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
  327. code += "TAG POS=29 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
  328. code += "TAG POS=31 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
  329. code += "TAG POS=33 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
  330. code += "TAG POS=35 TYPE=TD ATTR=TXT:* EXTRACT=TXT";
  331. iimPlay(code);
  332.  
  333. var resources = "";
  334.  
  335. for (i=0; i<=6; i++) {
  336.     res_count[i] = iimGetLastExtract(i+1).replace(",", "");
  337.     resources += res_count[i] + " ";
  338.     }
  339. iimDisplay(resources);
  340.  
  341. }
  342.  
  343. function sell_res(object_id, res_position, count)
  344. {
  345. // продаём ресурс на предприятие, возвращаем получилось ли
  346.  
  347. // TO DO: Попросить страничку методом GET, выцепить check_code для реса под номером res_position
  348. getUrl(base_url + "object-info.php?id=" + object_id);
  349. str_begin = res.indexOf("<input type=hidden name=res_id value=\"" + res_position + "\"");
  350.  
  351. if (str_begin > 0)
  352.     {
  353.                    
  354.     str_begin = res.indexOf("<input type=hidden name=check_code value=\"", str_begin-60) + 42;
  355.     check_code = res.substr(str_begin, 7);
  356.    
  357.  
  358.    
  359.     data =  "obj_id=" + object_id + "&" +
  360.             "check_code=" + check_code + "&" +
  361.             "res_id=" + res_position + "&" +       
  362.             "count=" + count;
  363.     postUrl("http://www.heroeswm.ru/sell_res.php", data); // отправляем
  364.     //alert(check_code);
  365.     } else
  366.     {return false;}
  367. }
  368.  
  369. function Extract_Href_Cell(row)
  370. {
  371. code = "CODE: TAG POS=" + row + " TYPE=A ATTR=HREF:\"object-info.php?id=*\" EXTRACT=HREF";
  372. iimPlay(code);
  373.  
  374. return iimGetLastExtract(1);
  375. }
  376.  
  377. // Точка входа
  378.  
  379. //var obj_id = 120; // щиты
  380. //var obj_id = 307; // рудник
  381. //var obj_id = 71; // амулеты
  382. var obj_id = 350; // клановая сталь
  383.  
  384. //set_lot("hunterdsword", 3, 1, 427, 2);
  385.  
  386. while (true)
  387. {
  388. URL_goto("http://www.heroeswm.ru/object-info.php?id="+obj_id);
  389. //count_res();
  390. //buy_res(obj_id, Math.floor(res_count[0]/360));
  391. /*
  392. if      (
  393.     (window.content.document.documentElement.outerHTML.indexOf("рабочих мест") < 0) &&
  394.     (window.content.document.documentElement.outerHTML.indexOf("Прошло меньше часа с последнего устройства на работу.") < 0) &&   
  395.     (window.content.document.documentElement.outerHTML.indexOf("уже устроены") < 0)
  396.     )
  397.     {buy_res(obj_id, 1);}
  398. */ 
  399. //sell_res(obj_id, RS_NICKEL, 1); // продать 1 никель
  400. sell_res(obj_id, RS_WOOD, 1);  
  401. sell_res(obj_id, RS_ORE, 1);
  402. while (get_job(obj_id) == false)
  403. {
  404. //  count_res();
  405. //  if (res_count[4]>40) {set_lot("sulphur", 50, 1, 363, 1);} // всю серу ставим на полчаса по 363
  406.  
  407. if (
  408.         (window.content.document.documentElement.outerHTML.indexOf("Введен неправильный код.") > 0) ||
  409.         (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно золота.") > 0) ||
  410.         (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") > 0) ||
  411.         (window.content.document.documentElement.outerHTML.indexOf("недостаточно золота") > 0)
  412.         )
  413.             {/*if (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") > 0) {
  414.             sell_res(obj_id, RS_NICKEL, 1);
  415.             sell_res(obj_id, RS_STEEL, 1);
  416.             }*/ // продать 1 никель
  417.                         sell_res(obj_id, RS_WOOD, 1);  
  418.             sell_res(obj_id, RS_ORE, 1);
  419.             doSleep(5);
  420.            
  421.             } else {doSleep(60*3)}
  422.  
  423.  
  424.    
  425. //  count_res();
  426. //  can_buy = Math.floor(res_count[0]/360);
  427. //  if (can_buy > 50) { can_buy = 50; }***//
  428. //  buy_res(obj_id, can_buy);
  429.  
  430.     if (
  431.     (window.content.document.documentElement.outerHTML.indexOf("рабочих мест") < 0) &&
  432.     (window.content.document.documentElement.outerHTML.indexOf("Прошло меньше часа с последнего устройства на работу.") < 0) &&   
  433.     (window.content.document.documentElement.outerHTML.indexOf("уже устроены") < 0)
  434. /*  (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") < 0)*/)
  435.     {buy_res(obj_id, 1);}
  436.  
  437.     sell_res(obj_id, RS_WOOD, 1); // продать 1 никель
  438.     sell_res(obj_id, RS_ORE, 1); // продать 1 никель
  439. }
  440.    
  441. /*
  442. set_lot("defender_shield", 3, 1, 1164, 2);
  443. set_lot("defender_shield", 3, 1, 1159, 2);
  444. set_lot("defender_shield", 3, 1, 1154, 2);
  445. set_lot("defender_shield", 3, 1, 1149, 2);
  446. set_lot("defender_shield", 3, 1, 1144, 2);
  447. set_lot("defender_shield", 3, 1, 1142, 2);
  448. */
  449. //set_lot("sring4", 3, 1, 600, 2);
  450.  
  451. URL_goto("http://www.heroeswm.ru/home.php");
  452. doSleep(3600);
  453.  
  454. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement