Advertisement
ZergLurker

ВП Фарм

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