Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pl_id = "5390900";
- // Настройки сервиса antigate - antigate setup
- var api_key = "c339c5a46b21c446f977baa6e14f60b1"; // ваш api-ключ, antigate key
- var captcha_min_len = 6; // минимальный размер капчи, min size of capcha
- var captcha_max_len = 6; // максимальный размер капчи, max size of capcha
- // Общие настройки - General setup
- const base_url = "http://www.heroeswm.ru/";
- const res_names = ["Золото", "Древесина", "Руда", "Ртуть", "Сера", "Кристаллы", "Самоцветы"];
- const res_links = ["gold", "wood", "ore", "mercury", "sulphur", "crystal", "gem"];
- var res_count = [0, 0, 0, 0, 0, 0, 0];
- const RS_WOOD = 1;
- const RS_ORE = 2;
- const RS_MERCURY = 3;
- const RS_SULPHUR = 4;
- const RS_CRYSTAL = 5;
- const RS_LEATHER = 6;
- const RS_NICKEL = 10;
- var res;
- var jsNewLine="\n";
- var i=0;
- var l_obj_c;
- var l_obj;
- var can_buy = 0;
- const XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
- var xmlHttp=createXmlHttpRequestObject();
- function createXmlHttpRequestObject()
- {
- var xmlHttp;
- try
- {
- xmlHttp=new XMLHttpRequest();
- }
- catch(e)
- {
- var XMLHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
- "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP");
- for (var i=0; i < 6 && !xmlHttp; i++)
- {
- try
- {
- xmlHttp= new ActiveXObject(XmlHttpVersions[i]);
- }
- catch(e) {}
- }
- }
- if (!xmlHttp)
- alert("error of creating XMLHttpRequest");
- else
- return xmlHttp;
- }
- function postUrl(path, params)
- {
- res = "";
- var req = new XMLHttpRequest();
- if (xmlHttp)
- {
- try
- {
- req.open("POST", path, false); // синхронно и не паримся
- req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- // req.setRequestHeader("Referer","http://www.heroeswm.ru/auction_new_lot.php");
- req.send(params);
- res = req.responseText;
- }
- catch (e)
- {
- alert("Не удалось соединиться с сервером:\n" + e.toString());
- }
- }
- }
- function getUrl(path)
- {
- res = "";
- var req = new XMLHttpRequest();
- if (xmlHttp)
- {
- try
- {
- req.open("GET", path, false); // синхронно и не паримся
- req.send();
- res = req.responseText;
- }
- catch (e)
- {
- alert("Не удалось соединиться с сервером:\n" + e.toString());
- }
- }
- }
- function getBase64Image(img)
- {
- // создаем канвас
- var canvas = window.content.document.createElement("canvas");
- canvas.width = img.width;
- canvas.height = img.height;
- // Копируем изображение на канвас
- var ctx = canvas.getContext("2d");
- ctx.drawImage(img, 0, 0);
- // Получаем data-URL отформатированную строку
- var dataURL = canvas.toDataURL("image/png");
- return encodeURIComponent(dataURL.replace(/^data:image\/(png);base64,/, ""));
- }
- function getBase64ImageById(id)
- {
- return getBase64Image(window.content.document.getElementsByName(id)[0]);
- }
- function get_cookie(cname)
- {
- cookie_name = cname + "=";
- cookie_length = window.content.document.cookie.length;
- cookie_begin = 0;
- while (cookie_begin < cookie_length)
- {
- value_begin = cookie_begin + cookie_name.length;
- if (window.content.document.cookie.substring(cookie_begin, value_begin) == cookie_name)
- {
- var value_end = window.content.document.cookie.indexOf (";", value_begin);
- if (value_end == -1)
- {
- value_end = cookie_length;
- }
- return unescape(window.content.document.cookie.substring(value_begin, value_end));
- }
- cookie_begin = window.content.document.cookie.indexOf(" ", cookie_begin) + 1;
- if (cookie_begin == 0)
- {
- break;
- }
- }
- return null;
- }
- function send_captcha()
- {
- var base64_value = getBase64ImageById('imgcode');
- do
- {
- var data = "method=base64&key=" + api_key + "&soft_id=490&body=" + base64_value +
- "&min_len=" + captcha_min_len + "&max_len=" + captcha_max_len;
- postUrl("http://antigate.com/in.php", data);
- iimDisplay("Ответ от сервера: " + res);
- if (res.substring(0, 2) == "OK") { var cap_id = res.substring(3); }
- doSleep(5); // ждём
- } while (res.substring(0, 2) != "OK");
- do
- {
- doSleep(5);
- data = "key=" + api_key + "&action=get&id=" +cap_id,
- postUrl("http://antigate.com/res.php", data);
- iimDisplay("Текст капчи: " + res);
- } while ((res == "CAPCHA_NOT_READY")&&(res.substring(0, 5)!="ERROR"))
- if (res.substring(0, 5)!="ERROR")
- {
- // вводим текст и клацаем кнопку
- 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);
- } else {solve_captcha();};
- }
- function getRandomInt(min, max)
- {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
- function doSleep(amount) {
- var tmpCode = "CODE:" + jsNewLine;
- tmpCode += "WAIT SECONDS=" + amount;
- iimPlay(tmpCode);
- }
- function URL_goto(url)
- {
- iimDisplay("GOTO: " + url);
- var code = "CODE:" + jsNewLine;
- code = code + "URL GOTO=" + url;
- iimPlay(code);
- }
- function solve_captcha()
- {
- // если просит капчу - вводим
- var img = window.content.document.getElementsByName('imgcode');
- if (img != null) {send_captcha();} // если видим капчу - решаем
- }
- function get_job(object_id)
- {
- // идём на страничку предприятия
- URL_goto(base_url + "object-info.php?id=" + object_id);
- // выцепляем куки
- l_obj_c = get_cookie("l_obj_c")
- l_obj = get_cookie("l_obj")
- doSleep(1); // ждём, пока картинка подгрузится
- if (
- (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно золота") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно ресурсов для производства") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("Вы находитесь в другом секторе") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("рабочих мест") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("Прошло меньше часа с последнего устройства на работу.") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("уже устроены") < 0)
- ) {
- solve_captcha(); // распознаём
- if (
- (window.content.document.documentElement.outerHTML.indexOf("Введен неправильный код.") > 0) ||
- (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно золота.") > 0) ||
- (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") > 0) ||
- (window.content.document.documentElement.outerHTML.indexOf("недостаточно золота") > 0)
- )
- {return false} else {return true}
- } else { return false; }
- }
- function buy_res(object_id, count)
- {
- // купить ресурс (нужно находиться в секторе, добавить проверку)
- if (count>0) {
- URL_goto(base_url + "object-info.php?id=" + object_id); // идём на объект
- var ch_code = window.content.document.getElementsByName("check_code"); // читаем код операции
- var data = "pl_id=" + pl_id + "&" +
- "obj_id=" + object_id + "&" +
- "check_code=" + ch_code[0].value + "&" +
- "count=" + count;
- postUrl("http://www.heroeswm.ru/buy_res.php", data); // пинаем запрос
- }
- }
- function set_lot(item_name, count, atype, price, duration)
- {
- // идём на новый лот
- URL_goto("http://www.heroeswm.ru/auction_new_lot.php");
- // Получим точное имя предмета из списка
- str_begin = window.content.document.documentElement.outerHTML.indexOf(item_name);
- str_end = window.content.document.documentElement.outerHTML.indexOf("\"", str_begin);
- real_name = window.content.document.documentElement.outerHTML.substring(str_begin, str_end);
- str_end = real_name.indexOf(".gif");
- if (str_end > 0) {real_name = real_name.substring(0, str_end);}
- if (str_begin < 0) {
- iimDisplay("Нет такого предмета");
- return false
- }
- if (window.content.document.documentElement.outerHTML.indexOf("Достигнуто максимальное количество выставленных лотов") < 0)
- {
- // пинаем первый запрос серверу
- var data = "item=" + real_name + "&" +
- "count=" + count + "&" +
- "atype=" + atype + "&" +
- "price=" + price + "&" +
- "duration=" + duration;
- postUrl("http://www.heroeswm.ru/auction_new_lot.php", data); // отправляем
- // получим код операции
- var sign_str = res.substr(res.indexOf("<input type=hidden name=sign value=")+36, 32);
- //alert(sign_str);
- // пинаем второй запрос с кодом операции
- data = "sign=" + sign_str + "&" +
- "item=" + real_name + "&" +
- "count=" + count + "&" +
- "atype=" + atype + "&" +
- "price=" + price + "&" +
- "duration=" + duration;
- postUrl("http://www.heroeswm.ru/auction_accept_new_lot.php", data); // отправляем
- } else {iimDisplay("Нет свободных лотов")}
- }
- function count_res()
- {
- var code = "CODE:" + jsNewLine;
- code += "TAG POS=23 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
- code += "TAG POS=25 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
- code += "TAG POS=27 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
- code += "TAG POS=29 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
- code += "TAG POS=31 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
- code += "TAG POS=33 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsNewLine;
- code += "TAG POS=35 TYPE=TD ATTR=TXT:* EXTRACT=TXT";
- iimPlay(code);
- var resources = "";
- for (i=0; i<=6; i++) {
- res_count[i] = iimGetLastExtract(i+1).replace(",", "");
- resources += res_count[i] + " ";
- }
- iimDisplay(resources);
- }
- function sell_res(object_id, res_position, count)
- {
- // продаём ресурс на предприятие, возвращаем получилось ли
- // TO DO: Попросить страничку методом GET, выцепить check_code для реса под номером res_position
- getUrl(base_url + "object-info.php?id=" + object_id);
- str_begin = res.indexOf("<input type=hidden name=res_id value=\"" + res_position + "\"");
- if (str_begin > 0)
- {
- str_begin = res.indexOf("<input type=hidden name=check_code value=\"", str_begin-60) + 42;
- check_code = res.substr(str_begin, 7);
- data = "obj_id=" + object_id + "&" +
- "check_code=" + check_code + "&" +
- "res_id=" + res_position + "&" +
- "count=" + count;
- postUrl("http://www.heroeswm.ru/sell_res.php", data); // отправляем
- //alert(check_code);
- } else
- {return false;}
- }
- function Extract_Href_Cell(row)
- {
- code = "CODE: TAG POS=" + row + " TYPE=A ATTR=HREF:\"object-info.php?id=*\" EXTRACT=HREF";
- iimPlay(code);
- return iimGetLastExtract(1);
- }
- // Точка входа
- var obj_id = 120; // щиты
- //var obj_id = 307; // рудник
- //var obj_id = 71; // амулеты
- /*
- while(true)
- {
- URL_goto("http://www.heroeswm.ru/object-info.php?id="+obj_id);
- sell_res(obj_id, RS_NICKEL, 1);
- doSleep(10);
- }*/
- /*
- set_lot("amulet_of_luck", 3, 1, 983, 2);
- set_lot("amulet_of_luck", 3, 1, 983, 2);
- set_lot("amulet_of_luck", 3, 1, 983, 2);
- set_lot("amulet_of_luck", 3, 1, 983, 2);
- set_lot("amulet_of_luck", 3, 1, 983, 2);
- set_lot("amulet_of_luck", 3, 1, 983, 2);
- */
- /*
- set_lot("defender_shield", 3, 1, 1142, 2);
- set_lot("defender_shield", 3, 1, 1142, 2);
- set_lot("defender_shield", 3, 1, 1142, 2);
- set_lot("defender_shield", 3, 1, 1142, 2);
- set_lot("defender_shield", 3, 1, 1142, 2);
- set_lot("defender_shield", 3, 1, 1142, 2);
- */
- while (true)
- {
- URL_goto("http://www.heroeswm.ru/object-info.php?id="+obj_id);
- //count_res();
- //buy_res(obj_id, Math.floor(res_count[0]/360));
- if (
- (window.content.document.documentElement.outerHTML.indexOf("рабочих мест") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("Прошло меньше часа с последнего устройства на работу.") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("уже устроены") < 0)
- )
- {buy_res(obj_id, 1);}
- sell_res(obj_id, RS_NICKEL, 1); // продать 1 никель
- while (get_job(obj_id) == false)
- {
- // count_res();
- // if (res_count[4]>40) {set_lot("sulphur", 50, 1, 363, 1);} // всю серу ставим на полчаса по 363
- if (
- (window.content.document.documentElement.outerHTML.indexOf("Введен неправильный код.") > 0) ||
- (window.content.document.documentElement.outerHTML.indexOf("На объекте недостаточно золота.") > 0) ||
- (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") > 0) ||
- (window.content.document.documentElement.outerHTML.indexOf("недостаточно золота") > 0)
- )
- {if (window.content.document.documentElement.outerHTML.indexOf("недостаточно ресурсов") > 0) {
- //sell_res(obj_id, RS_NICKEL, 1);
- } // продать 1 никель
- doSleep(5);
- } else {doSleep(60*3)}
- // count_res();
- // can_buy = Math.floor(res_count[0]/360);
- // if (can_buy > 50) { can_buy = 50; }***//
- // buy_res(obj_id, can_buy);
- if (
- (window.content.document.documentElement.outerHTML.indexOf("рабочих мест") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("Прошло меньше часа с последнего устройства на работу.") < 0) &&
- (window.content.document.documentElement.outerHTML.indexOf("уже устроены") < 0))
- {buy_res(obj_id, 1);}
- // set_lot("sulphur", res_count[4], 1, 363, 1);
- sell_res(obj_id, RS_NICKEL, 1); // продать 1 никель
- }
- /*
- set_lot("amulet_of_luck", 3, 1, 989, 2);
- set_lot("amulet_of_luck", 3, 1, 988, 2);
- set_lot("amulet_of_luck", 3, 1, 987, 2);
- set_lot("amulet_of_luck", 3, 1, 986, 2);
- set_lot("amulet_of_luck", 3, 1, 985, 2);
- set_lot("amulet_of_luck", 3, 1, 984, 2);
- */
- set_lot("defender_shield", 3, 1, 1164, 2);
- set_lot("defender_shield", 3, 1, 1159, 2);
- set_lot("defender_shield", 3, 1, 1154, 2);
- set_lot("defender_shield", 3, 1, 1149, 2);
- set_lot("defender_shield", 3, 1, 1144, 2);
- set_lot("defender_shield", 3, 1, 1142, 2);
- //set_lot("sring4", 3, 1, 600, 2);
- URL_goto("http://www.heroeswm.ru/home.php");
- doSleep(3600);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement