Re: Плагин взятия задания, все города, нужно протестить. От Gorlum
Так вот я к тому, что не хочу сидеть в хаотах... т.к. мало статов, допустим, или пур. вещи на персе...
А, понял, знач сделаю 3 версии)
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Так вот я к тому, что не хочу сидеть в хаотах... т.к. мало статов, допустим, или пур. вещи на персе...
А, понял, знач сделаю 3 версии)
Петро пишет:Так вот я к тому, что не хочу сидеть в хаотах... т.к. мало статов, допустим, или пур. вещи на персе...
тогда просить анахроника добавить какой external.close)
Было уже нечто такое, даже где то применялось, а может я путаю что-то. Слово Анахронику
Ну бота никто никогда не закрывал
надо - пишем в соответствующей теме
Так что там с пещерным екстерналом? Реально сломался, или у меня руки кривые?)
И кста, я думаю что плагины, которые не идут в пещеру уже можно выкладывать? Они же по моему полностью рабочие?
Отредактировано gorlum (2011-07-10 20:19:39)
Экстернал рабочий - просто надо маршрут указывать ещё.
Плагины выложить всегда успеешь
Экстернал рабочий - просто надо маршрут указывать ещё.
Плагины выложить всегда успеешь
Так его надо указывать в плагине чтоль?
anahronik пишет:Экстернал рабочий - просто надо маршрут указывать ещё.
Плагины выложить всегда успеешьТак его надо указывать в плагине чтоль?
external.DungeonLoadPath("имя");
вот такой метод есть (по крайней мере был)
gorlum пишет:anahronik пишет:Экстернал рабочий - просто надо маршрут указывать ещё.
Плагины выложить всегда успеешьТак его надо указывать в плагине чтоль?
external.DungeonLoadPath("имя");
вот такой метод есть (по крайней мере был)
Я его видел, вот только не знаю, зачем его включать в плагине, если при запуски модуля подземки - он прекрасно подключает маршрут. Может те, кто тестил - как-то не так, или не те маршруты вставляли?
Добрый день! испытал палагин из первого поста в ангельсе
Задание взял, начал поход и встал на первой клетке данжа.
Выключаешь плагин перезапускаешь бота и все норма бот начинает ходить.
Версия бота 9.1.1
Добрый день! испытал палагин из первого поста в ангельсе
Задание взял, начал поход и встал на первой клетке данжа.
Выключаешь плагин перезапускаешь бота и все норма бот начинает ходить.
Версия бота 9.1.1
Попробуй так:
var uspeh=false;
var proverkaTimer = {};
var zadanieTimer = {};
var questIsActive = false;
var room ='';
var randomValue;
var min = 360000;
var max = 400000;
function zadanie(enabled)
{
if(enabled)
{
proverkaTimer[mylogin] = setInterval("proverkaHandler()",1000);
}
else
{
if(zadanieTimer[mylogin]) clearInterval(zadanieTimer[mylogin]);
external.SBattleAbovePercent.Text = 100;
clearInterval(proverkaTimer[mylogin]);
}
}
function proverkaHandler()
{
clearInterval(proverkaTimer[mylogin]);
randomValue = Math.floor(Math.random()*(max - min) + min);
proverkaTimer[mylogin] = setInterval("proverkaHandler()", randomValue);
if(top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i))
{
external.SBattleAbovePercent.Text = 100;
return;
}
external.SBattleAbovePercent.Text = 101;
var tempstr = '';
var temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?skills=1&rand=" + Math.random());
if(external.SCity.Text == "suncity")
tempstr = "Suncity</B> - Рыцарь первого круга, 24999 / 24999";
if(external.SCity.Text == "sandcity")
tempstr = "Sandcity</B> - Рыцарь первого круга, 100300 / 24999";
if(external.SCity.Text == "angelscity")
tempstr = "Angels city</B> - Рыцарь первого круга, 10000 / 24999";
if(external.SCity.Text == "demonscity")
tempstr = "Demons city</B> - Рыцарь первого круга, 24999 / 24999";
if(external.SCity.Text == "mooncity")
tempstr = "Mooncity</B> - Рыцарь первого круга, 24999 / 24999";
if(zadanieTimer[mylogin]) clearInterval(zadanieTimer[mylogin]);
zadanieTimer[mylogin] = setInterval("zadanieHandler()",3000);
if(temp_inf.indexOf(tempstr) > -1 )
{
external.AddToChat("Задания не требуется");
uspeh = true;
questIsActive = false;
return;
}
var patt = external.SCity.Text + " - \\d+ (мин|ч.|сек)";
if(!temp_inf.toLowerCase().match(patt))
{
external.AddToChat("Требуется взять задание");
uspeh = false;
}
else
{
external.AddToChat("Задания не требуется");
uspeh = true;
questIsActive = false;
}
}
function zadanieHandler()
{
try
{
if(top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i)) return;
var temp_p = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
if(room = temp_p.match(/<nobr>([^<]+)<\/nobr>/))
room = String(room[1])
if(uspeh==false || questIsActive)
{
if(room)
{
if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Грибная лужайка");
else if(room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Странное Место");
else if(room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Грибная поляна");
else if(room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Грибница");
else if(room == "Бойцовский Клуб" && external.SCity.Text == "suncity" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральная грибница");
else if(room == "Бойцовский Клуб" && external.SCity.Text == "angelscity" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральный утес");
else if(room == "Бойцовский Клуб" && external.SCity.Text == "mooncity" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центр падения");
else if(room == "Бойцовский Клуб" && external.SCity.Text == "sandcity" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральный Оазис");
else if(room == "Бойцовский Клуб" && external.SCity.Text == "demoncity" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральный Разлом");
else if(room.match(/Зал воинов/i) && top.frames[external.mainFrameIndex].is_accessible)
Walk("\'Бойцовский Клуб\'");
else if(room == "Центральный утес" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Каменно-цветочная гряда");
else if(room == "Каменно-цветочная гряда" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Утес безысходности");
else if(room == "Утес безысходности" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Вход в Заповедник");
else if(room == "Вход в Заповедник" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Спуск в Бездну");
else if(room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Цветочный Пустырь");
else if(room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Последний Привал");
else if(room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Внутренний двор");
else if(room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Пещеры Мглы");
else if(room == "Центр падения" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Спящая площадь");
else if(room == "Спящая площадь" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Улица Камней");
else if(room == "Улица Камней" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Проклятые Руины");
else if(room == "Центральный Разлом" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Разлом Поклонения");
else if(room == "Разлом Поклонения" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Дорога Храбрости");
else if(room == "Дорога Храбрости" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Спуск в катакомбы");
else if(room == "Проклятые Руины" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Пещера Тысячи проклятий");
else if(room == "Спуск в катакомбы" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
Walk("Спуск в Катакомбы");
else if(room == "Пещера Тысячи проклятий" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
Walk("Пещера Тысячи проклятий");
else if((room == "Спуск в Катакомбы" || room == "Пещера Тысячи проклятий" || room == "Пещеры Мглы" || room == "Грибница" || room == "Спуск в Бездну"))
{
if(uspeh == false && top.frames[external.mainFrameIndex].document.getElementsByName("pass").length > 0)
{
var btn = top.frames[external.mainFrameIndex].document.getElementsByTagName("INPUT");
for(i = 0;i<btn.length;i++)
{
if(btn[i].outerHTML.match(/Задания/) && btn[i].style.visibility!="hidden")
{
btn[i].click();
break;
}
}
}
}
}
else
{
if(top.frames[external.mainFrameIndex].document.getElementsByName("quest_name").length > 0 && uspeh == false)
{
external.AddToChat("Завершаем задание");
if(top.frames[external.mainFrameIndex].document.getElementsByName("finishquest").length > 0)
{
top.frames[external.mainFrameIndex].document.getElementsByName("finishquest")[0].click();
uspeh = false;
questIsActive = false;
external.AddToChat("Завершаем задание");
}
if(!top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Репутация в Suncity: 0/))
{
if(top.frames[external.mainFrameIndex].document.getElementsByName("getquest").length > 0)
{
top.frames[external.mainFrameIndex].document.getElementsByName("getquest")[0].click();
external.AddToChat("Работает взятие задания");
}
else external.AddToChat("Задание уже есть");
uspeh=true;
questIsActive = true;
}
if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Вы получили новое задание/))
{
uspeh=true;
questIsActive = true;
}
else if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Для вас нет заданий/))
{
uspeh = true;
questIsActive = false;
}
if(uspeh == true)
{
external.AddToChat("Работает выход из комнаты");
btn = top.frames[external.mainFrameIndex].document.getElementsByTagName("INPUT");
for(i = 0;i<btn.length;i++)
{
if(btn[i].outerHTML.match(/Вернуться/) && btn[i].style.visibility!="hidden")
{
btn[i].click();
break;
}
}
}
}
}
}
if(questIsActive && uspeh)
{
if(top.frames[external.mainFrameIndex].document.getElementsByName("pass").length > 0 && (room == "Спуск в Катакомбы" || room == "Пещера Тысячи проклятий" || room == "Пещеры Мглы" || room == "Грибница" || room == "Спуск в Бездну"))
{
external.dungeonEnabled = true;
external.DungeonLoadPath("имя");
external.SBattleAbovePercent.Text = 100;
}
}
if(!questIsActive && uspeh)
{
external.dungeonEnabled = false;
var loc = '';
if(external.SCity.Text == "suncity")
loc = "Грибная поляна";
if(external.SCity.Text == "sandcity")
loc = "Внутренний двор";
if(external.SCity.Text == "angelscity")
loc = "Вход в Заповедник";
if(external.SCity.Text == "demonscity")
loc = "Спуск в катакомбы";
if(external.SCity.Text == "mooncity")
loc = "Пещера Тысячи проклятий";
if((room == "Спуск в Катакомбы" || room == "Пещера Тысячи проклятий" || room == "Пещеры Мглы" || room == "Грибница" || room == "Спуск в Бездну") && top.frames[external.mainFrameIndex].document.getElementsByName("pass").length > 0)
{
external.SBattleAbovePercent.Text = 101;
var tmp = top.frames[external.mainFrameIndex].document.anchors;
for(i = 0;i<tmp.length;i++)
{
if(tmp[i].outerHTML.match(loc) && tmp[i].style.visibility!="hidden" && tmp[i].onclick)
{
tmp[i].click();
break;
}
}
}
else if(room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Странное Место");
else if(room == "Спуск в катакомбы" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
Walk("Дорога Храбрости");
else if(room == "Пещера Тысячи проклятий" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
Walk("Проклятые Руины");
else if(room == "Дорога Храбрости" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Разлом Поклонения");
else if(room == "Разлом Поклонения" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральный Разлом");
else if(room == "Проклятые Руины" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Улица Камней");
else if(room == "Улица Камней" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Спящая площадь");
else if(room == "Спящая площадь" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центр падения");
else if(room == "Центр падения" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Бойцовский Клуб");
else if(room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Грибная лужайка");
else if(room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральная грибница");
else if(room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Бойцовский Клуб");
else if(room == "Бойцовский Клуб" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Зал воинов");
else if(room == "Вход в Заповедник" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Утес безысходности");
else if(room == "Утес безысходности" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Каменно-цветочная гряда");
else if(room == "Каменно-цветочная гряда" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральный утес");
else if(room == "Центральный утес" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Бойцовский Клуб");
else if(room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Последний Привал");
else if(room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Цветочный Пустырь");
else if(room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Центральный Оазис");
else if(room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
Walk("Бойцовский Клуб");
else if(room == "Зал воинов")
external.SBattleAbovePercent.Text = 100;
}
}
catch(err)
{
external.AddToChat("Ошибка!");
}
}
function Walk(name)
{
var imgs = top.frames[external.mainFrameIndex].document.images;
for(i = 0;i<imgs.length;i++)
{
if(imgs[i].outerHTML.match(name) && imgs[i].style.visibility != "hidden" && imgs[i].onclick && (imgs[i].height*imgs[i].width)>60)
{
external.AddToChat("Иду в " + name);
imgs[i].click();
break;
}
}
}
function doLoad(url)
{
if (window.XMLHttpRequest)
req = new XMLHttpRequest();
else
req = new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET", url, false); // задать параметры методу open
req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); //чтоб не кэшировались GET запросы
req.send(null); // отправить запрос
return req.responseText;
}
В коде найди строку external.DungeonLoadPath("имя"), и вместо "имя" напиши туда название своего маршрута.
gorlum
Испытал. Порадовало что бот проверяет есть ли задание и если есть, то идет копать.
Но опять встал на первой клетке данжа.
external.DungeonLoadPath("имя") указывал и так и external.DungeonLoadPath("имя.path")
Все равно стоит. Может что не так делаю?
gorlum
Испытал. Порадовало что бот проверяет есть ли задание и если есть, то идет копать.
Но опять встал на первой клетке данжа.
external.DungeonLoadPath("имя") указывал и так и external.DungeonLoadPath("имя.path")
Все равно стоит. Может что не так делаю?
Попробуй поменять строки
external.DungeonEnabled и external.DungeonLoadPath местами. Мало ли, вдруг сработает.
Попробовал, не помогло также стоит, мне кажется проблема именно в том что палагин как-то конфликтует с модулем подземки бота и external.DungeonLoadPath тут не причем, даже просто когда бот включен бот не ходит по подземке а если выключен то успешно передвигается.
То есть, при нажатой кнопке "Стоп" и тебя чар ходит по подземке?
То есть, при нажатой кнопке "Стоп" и тебя чар ходит по подземке?
Так нет, я имею ввиду допустим палагин выключен, бот копает подземку, врубаю палагин - бот останавливается и стоит. Выключаю палагин, рестартую бота и все он опять копает.
LurkeR82 Скопировал криво. Скобку забыл.
Гип, если бы я забыл скобку, то палагин бы вообще не запустился.
Нет скопировал я все нормально, на всякий случай перепроверил.
Странно, никто больше не тестит, было бы интересно узнать мнения других тестеров, как у них работает сей палагин.
Так и нет тестеров или у всех работает кроме меня?
У меня тоже, как ты раньше говорил, при включении плагина (версия "лайт") бот даже не ходит.
Я подумал что это из-за того что плагин не создан чтобы его включали посреди похода. Больше не тестировал, логично предположив что надо подождать когда доделают Похоже работает принцип "никто кроме нас". Айда тестировать!
Опечатка.
17:04:28 Задания не требуется
Надо либо:
Задания не требуются
либо:
Задание не требуется
Ну опечатки, это не считается, все-таки почему бот встает в подземке.
Ведь осталось сделать всего ничего, задание берется в пещеру заходит, остается только сделать чтоб он стоял и не тупил.
Скопировал себе из 1 поста самый верхний код, в итоге:
- Из любой локации Angels city и Demons city к пещере бот добирается без проблем, открывает вкладку на взятие задания и начинает тупить: если задание есть - логично от бота ожидать фразы на подобие "Задание уже есть"; если задания нет, но есть другие выполненные и/или невыполненные задания из других городов - бот так же не берет задания, т.е. не нажимает на кнопку "Получить задание", а выходит из данного диалога на вход в пещеру.
- Как уже было замечено, если плагин на автозабор включался и бот заходит в пещеру (у меня он заходил за счет "Подземелье включено, Старт"), то он стоит на первоначальной клетке не двигаясь. Если плагин "задания" выключить и перезапустить - нормально копает пещеру.
как уже писал Гип
Айда тестировать!
наконец-то подключились еще люди. Проблема общая, бот не ходит по пещере, остается только ждать автора....
если задания нет, но есть другие выполненные и/или невыполненные задания из других городов - бот так же не берет задания, т.е. не нажимает на кнопку "Получить задание", а выходит из данного диалога на вход в пещеру.
А вот об этом я не подумал.
Сейчас поправлю.
В коде не шарю, потому - если мысли покажутся бредом - не критиковать строго, итак:
-если сделать массив с городами, а каждый город - это массив с заданиями (полный текст всех заданий можно на дарках глянуть), далее бот берет из url знание в каком он сейчас городе, и проверяет есть ли такое задание в имеющихся, если есть - пишет - "задание есть, выполнено/не выполнено"..
-привязать взятие задания - ко времени сервера..чтоб он время, когда взял новое в каждом городе - заносил в переменную, и не проверял каждые 6-7 минут..
-ну и можно настроить перелеты между городами для копания репы, с учетом времени перелетов: взял - сделал - улетел в другой