26

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

if(!get_mainframe().document.all[0].innerHTML.match(/Задания отсюда недоступны/) && get_mainframe().document.all[0].innerHTML.match(/Репутация в Suncity/))
get_mainframe().document.getElementsByName("getquest")[0].click();

Проверил этот кусок кода на боте. Работает.

ZhEkA_BK, как ты тестишь js в дебагбаре? Я чегойто найти не могу, где так сделать)
А то приходится тестить всё через плагины бота и алертами проверять работу)

Отредактировано Exile (2011-06-27 22:14:57)

Оставь надежду всяк сюда входящий ©

27

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Та все через дебагбар не потестишь, только отдельные функции...по крайней мере я только такое умею smile
Там в дебагбаре есть вкладка скрипты, и если на нее нажать, то внизу можно вставить кусок кода и запустить на выполнение. Я так с помощью get_mainframe().document.getElementsByName("getquest")[0].click(); взял задание сеня без мышки smile
А так я сам когда плагины пишу все в боте тестирую так же, как и ты smile

Анахроник....интересно, а насколько сложно организовать такое же окошко для теста скриптов в самом боте ? И выпустить версию бота для плагино-писателей smile

Отредактировано ZhEkA_BK (2011-06-27 22:22:41)

У меня все работает, что я делаю не так ?

28

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

if(external.room_name == "Грибница") 
{
    if(!top.frames[external.mainFrameIndex].location.toString().match(/dungeon.pl?ql=/))
    {
        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?ql=" + Math.random();         
    }
    if(!get_mainframe().document.all[0].innerHTML.match(/Задания отсюда недоступны/) && get_mainframe().document.all[0].innerHTML.match(/Репутация в Suncity/))
        get_mainframe().document.getElementsByName("getquest")[0].click();
}

Вот так будет правильнее

Оставь надежду всяк сюда входящий ©

29

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Та все через дебагбар не потестишь, только отдельные функции...по крайней мере я только такое умею

Хреново( Ладно, будем по старинке.
Кстати, есть какой способ вывода всего текста, скажем, из document.all[0].innerHTML?
Через алерт выводит, но там скроллбара нету(

Оставь надежду всяк сюда входящий ©

30

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

А зачем if(external.room_name == "Грибница") ? Там Грибница почти везде пишет как локацию. Тем более, что местоположение в комнате в данный момент легко определяется get_mainframe().document.all[0].innerHTML.match(/Репутация в Suncity/). Такой строчки точно больше ни в одной локации нет.

У меня все работает, что я делаю не так ?

31

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Берет, спасибо Жека)

32

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Мастерство, какое бы кривое оно ни было, не пропьешь  big_smile

У меня все работает, что я делаю не так ?

33

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Gorlum, как я понимаю ты близок к осуществлению задумки?)) молодец) и все тоже кто помагал)

34

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

drsn пишет:

Gorlum, как я понимаю ты близок к осуществлению задумки?)) молодец) и все тоже кто помагал)

Ну, сан уже почти готов, ломаю голову, как бота обратно заводить в зв. По городам полетаю, сделаю маршруты, проверю, и потом уже выложу) Да, без помощи - никуда)

35

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

var uspeh=false;
 
function zadanie(enabled)
{
    if(enabled)
    {
     zadanieTimer = setInterval("zadanieHandler()",5000);// тут ставил разный интервал что бы проверить, 5-10 секунд
 
    }
    else
    {
     clearInterval(zadanieTimer);
    }
}
 
function zadanieHandler()
{
    external.battleWeared = false;
    top.Chat.Self.AddMessage(external.room_name);
if (external.room_name == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o8&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду на грибную лужайку");
    else if(external.room_name == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в странное место");
    else if(external.room_name == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в грибную поляну");
    else if(external.room_name == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в грибницу");         
    else if(external.room_name == "Бойцовский Клуб" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o6&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду на ЦП");
    else if(external.room_name == "Зал воинов" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в БК");   
    else if(external.room_name == "Зал воинов 2" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в БК");
    else if(external.room_name == "Зал воинов 3" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в БК");
    else if(external.room_name == "Этаж 2" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в БК");
    else if(external.room_name == "Башня рыцарей-магов" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в Рыцарский зал");
    else if(external.room_name == "Рыцарский зал" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в Этаж 2");
    else if(external.room_name == "Торговый Зал" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
            //top.Chat.Self.AddMessage("Иду в Этаж 2");
    else if(external.room_name == "Грибница" && uspeh==false)
            {
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?ql=" + Math.random();         
    if(!get_mainframe().document.all[0].innerHTML.match(/Задания отсюда недоступны/) && get_mainframe().document.all[0].innerHTML.match(/Репутация в Suncity/))
            get_mainframe().document.getElementsByName("getquest")[0].click();
            top.Chat.Self.AddMessage("Работает взятие задания");
            }
    if(get_mainframe().document.all[0].innerHTML.match(/Для вас нет заданий в этом подземелье.../))
            { //Для вас нет заданий в этом подземелье...Задания отсюда недоступны///// пока что поставил 1-й вариант, чтобы проверить работоспособность
 
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?" + Math.random();
            top.Chat.Self.AddMessage("Работает выход из комнаты");
            }
 
 
 
 
    //Возврат в зв1
            else if(external.room_name == "Грибница" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?top=" + Math.random();
            else if(external.room_name == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
            else if(external.room_name == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
            else if(external.room_name == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o6&rnd=" + Math.random();
            else if(external.room_name == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
             else if(external.room_name == "Бойцовский Клуб" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd" + Math.random();
 
//external.AddToChat("Взял задание");
 
}

Никак не могу понять, куда вписать

uspeh=true;

чтобы бот шел обратно. Вставляю сюда

if(!get_mainframe().document.all[0].innerHTML.match(/Задания отсюда недоступны/) && get_mainframe().document.all[0].innerHTML.match(/Репутация в Suncity/))
            get_mainframe().document.getElementsByName("getquest")[0].click();
            uspeh=true;
            top.Chat.Self.AddMessage("Работает взятие задания");

и после этого кнопка "Получить задание" не жмётся. Пробовал тыкать этот  uspeh=true; уже куда угодно, но нажатие не пашет(

36

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Ещё, ссылка на возврат на на грибную поляну имеет вид

http://suncity.combats.com/dungeon.pl?rnd=0.881243425895349&path=1.108.1

в плагине для выхода из грибницы написал

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?rnd=" + Math.random() + "&path=" + Math.random();

но говорит что перехода не существует. Пробовал тупо перейти на лужайку и скопировать ссылку через свойства, но она вида

http://suncity.combats.com/main.pl?top=72.4959358513555

и это вродь не подходит. Пробовал через дебагбар найти кнопку  по названию, но его нету(

37

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

uspeh=true; надо писать уже когда взято задание...т.е. когда появится строчка Задания отсюда недоступны
Т.е. в том месте, где стоит условие на выход из комнаты:

if(get_mainframe().document.all[0].innerHTML.match(/Задания отсюда недоступны/))
ссылка на выход с комнаты
uspeh=true;
top.Chat.Self.AddMessage("Работает выход из комнаты");

А ты пытался вставить в строку с условием типа "если нет строки Задания отсюда недоступны". Там у тебя воскл знак вначале стоит перед гетмаинфрейм.
Т.е. сперва у тебя должно стоять условие взятия задания, потом в условии перехода обратно в комнату в конце вставить успех=тру.
По поводу последнего поста вот правильная ссылка на возврат из задания

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?" + Math.random();
У меня все работает, что я делаю не так ?

38

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

если надо могу с других городов пособирать названия комнат и ссылки

39

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

drsn пишет:

если надо могу с других городов пособирать названия комнат и ссылки

Не спрашивай — делай  wink

(Please log in or register to see this URL)

40

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Нужно ж еще условие if(uspeh=true)  добавить к функции возврата. Плюс как-то закрутить это все дело не только для хаотов, но и для подземки  roll
Ну и раз уже используешь top.frames[external.mainFrameIndex].is_accessible, то можно делать плагин не по работе счетчика по времени, а по обновлению верхнего фрейма.

У меня все работает, что я делаю не так ?

41

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

ZhEkA_BK пишет:

uspeh=true; надо писать уже когда взято задание...т.е. когда появится строчка Задания отсюда недоступны
Т.е. в том месте, где стоит условие на выход из комнаты:

if(get_mainframe().document.all[0].innerHTML.match(/Задания отсюда недоступны/))
ссылка на выход с комнаты
uspeh=true;
top.Chat.Self.AddMessage("Работает выход из комнаты");

А ты пытался вставить в строку с условием типа "если нет строки Задания отсюда недоступны". Там у тебя воскл знак вначале стоит перед гетмаинфрейм.
Т.е. сперва у тебя должно стоять условие взятия задания, потом в условии перехода обратно в комнату в конце вставить успех=тру.
По поводу последнего поста вот правильная ссылка на возврат из задания

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?" + Math.random();

Проблема была не в выходе из заданий, а в выходе на грибную поляну из грибницы. Та ссылка работает, спасибо, но нужна другая) Да и таймер изначально я хотел поставить не на действие бота, а что бы он каждые 86400000 млсек запускался (то есть ровно через сутки).

42

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

ZhEkA_BK пишет:

Нужно ж еще условие if(uspeh=true)  добавить к функции возврата. Плюс как-то закрутить это все дело не только для хаотов, но и для подземки  roll
Ну и раз уже используешь top.frames[external.mainFrameIndex].is_accessible, то можно делать плагин не по работе счетчика по времени, а по обновлению верхнего фрейма.

Теоретически, если сделать запуск плагина по времени - то ему вродь как должно быть пофиг где ты находишься, в хаотах или подземке, можно ещё придумать нажатие кнопки выход, если в походе, но не думаю что людям это понравиться)

Тут ещё надо подумать, как сделать так, чтобы через 24 часа успех снова становился фолсом.

43

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Вот выход на грибную поляну теоретически smile

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?rnd=" + Math.random()+"&path=1.108.1";

Тут с успех=тру и успех=фолс надо полюбому думать, чтобы бот, когда стоял в определенной локации знал куда ему идти...за заданием или обратно.
Идея с таймаутом в сутки оригинальная smile Но тут тогда надо делать не так. Нужно отдельно ставить счетчик на сутки для переменной uspeh. Чтобы раз в сутки она становилась false. А сам плагин пусть работает по обновлению верхнего фрейма...причем в нем, после взятия задания должна по обновлению фрейма переменная uspeh становиться тру. Мне кажеться так будет менее ресурсоемко. А еще менее ресурсоемко было бы привязать переменную uspeh к часам планировщика  roll

У меня все работает, что я делаю не так ?

44

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

ZhEkA_BK не хочется упускать возможность брать задание через 23 часа, а не через 24 smile Поэтому раз в сутки по планировщику не катит. Делать так уж со всеми выкрутасами wink

(Please log in or register to see this URL)

45

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Хех...ну тогда уже учить бота считывать раз в пол часа время до смены задания в умении/репутация и по нему смотреть, брать задание, или нет smile А кстати идея неплохая  big_smile
Просто если делать так, чтоб плагин обновлялся по таймеру раз в 23 часа, то следовательно бот круглосуточно работать должен, а это палево и ресурсоемко...все-равно тормозить бот за сутки начнет и придется перезагружать его. Поэтому надо либо к планировщику привязываться, либо учить заглядывать в состояние репутации.

У меня все работает, что я делаю не так ?

46

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

hyppo пишет:

ZhEkA_BK не хочется упускать возможность брать задание через 23 часа, а не через 24 smile Поэтому раз в сутки по планировщику не катит. Делать так уж со всеми выкрутасами wink

Ну это уже из 86400000мс нужно час убавить... т.е. 86400000-360000мс=86040000мс (если я конечно не ошибаюсь)

47

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

descalui пишет:
hyppo пишет:

ZhEkA_BK не хочется упускать возможность брать задание через 23 часа, а не через 24 smile Поэтому раз в сутки по планировщику не катит. Делать так уж со всеми выкрутасами wink

Ну это уже из 86400000мс нужно час убавить... т.е. 86400000-360000мс=86040000мс (если я конечно не ошибаюсь)

Нет, на самом деле - делать по таймеру - плохая идея. Видимо только один я гружу комп раз в неделю)

48

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

КЭП не дремлет  big_smile

У меня все работает, что я делаю не так ?

49

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

Посмотрел через дебагбар закладку "Репутация", у неё есть id, которые равно L6, значит её можно нажать как-то так?

get_mainframe().document.getElementsById("L6")[0].click();

Отредактировано gorlum (2011-06-28 15:35:15)

50

Re: Плагин взятия задания, все города, нужно протестить. От Gorlum

gorlum пишет:

Посмотрел через дебагбар закладку "Репутация", у неё есть id, которые равно L6, значит её можно нажать как-то так?

get_mainframe().document.getElementsById("L6")[0].click();

Зачем её нажимать?
Это лишь закладка цельной страницы, которая уже подгружена в documents.all[0]

Оставь надежду всяк сюда входящий ©