Advertisement
ZergLurker

hwm_work

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