51

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

И привязать бота, если в "Репутации" нету теста "Время до смены задания: " - то uspeh=false. И сделать эту проверку каждые полчаса.

52

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

Exile пишет:
gorlum пишет:

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

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

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

То есть, можно сразу искать фразу "Время до смены задания: ", и по ней уже ориентироваться?

53

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

gorlum пишет:
Exile пишет:
gorlum пишет:

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

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

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

То есть, можно сразу искать фразу "Время до смены задания: ", и по ней уже ориентироваться?

Конечно. Закладки - лишь для визуального удобства.

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

54

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

Как-то так?

тут запуск этой функции каждые полчаса
            if(!get_mainframe().document.all[0].innerHTML.match(/Время до смены задания: /))
            uspeh=true;

55

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

gorlum пишет:

Как-то так?

тут запуск этой функции каждые полчаса
            if(!get_mainframe().document.all[0].innerHTML.match(/Время до смены задания: /))
            uspeh=true;

Да, только вот в регулярке убери последний пробел после двоеточия. А то реагирует неправильно.

Кстати, вручную можно включить режим данжа?

Отредактировано Exile (2011-06-28 15:55:29)

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

56

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

Exile пишет:
gorlum пишет:

Как-то так?

тут запуск этой функции каждые полчаса
            if(!get_mainframe().document.all[0].innerHTML.match(/Время до смены задания: /))
            uspeh=true;

Да, только вот в регулярке убери последний пробел после двоеточия. А то реагирует неправильно.

Кстати, вручную можно включить режим данжа?


Это как "вручную"?

57

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

gorlum пишет:
Exile пишет:
gorlum пишет:

Как-то так?

тут запуск этой функции каждые полчаса
            if(!get_mainframe().document.all[0].innerHTML.match(/Время до смены задания: /))
            uspeh=true;

Да, только вот в регулярке убери последний пробел после двоеточия. А то реагирует неправильно.

Кстати, вручную можно включить режим данжа?


Это как "вручную"?

Бот взял задание. Надо включить данж, чтобы он начал выполнять его. Программно это как-то можно сделать?

Отредактировано Exile (2011-06-28 16:04:25)

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

58

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

А, понял, придёт Анахроник - скажет)

59

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

var uspeh=false;
 
function zadanie(enabled)
{
    if(enabled)
    {
     zadanieTimer = setInterval("zadanieHandler()",5000);// тут ставил разный интервал что бы проверить, 5-10 секунд
 
    }
    else
    {
     clearInterval(zadanieTimer);
    }
}
function proverka(enabled)
{
    if(enabled)
    {
     zadanieTimer = setTimeout("proverkaHandler()",360000);
 
    }
    else
    {
     clearTimeout(proverkaTimer);
    }
}
function proverkaHandler(uspeh)
{
    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?skills=1&rand=" + Math.random();
    if(!get_mainframe().document.all[0].innerHTML.match(/Время до смены задания:/))
    top.Chat.Self.AddMessage("Проверяю наличие задания");
    uspeh=false;
    return uspeh;
}
 
function zadanieHandler()
{
    external.battleWeared = false;
    top.Chat.Self.AddMessage(external.room_name);
    proverkaHandler(uspeh);
    if(uspeh==false){
    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();
            uspeh=true;
            top.Chat.Self.AddMessage("Работает выход из комнаты");
            }
 
       }     
      } 
 
 
 
    //Возврат в зв1
            if(uspeh==true)
            {
                if(external.room_name == "Грибница" && top.frames[external.mainFrameIndex].is_accessible)
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?rnd=" + Math.random()+"&path=1.108.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?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", поставил интервал работы в 5 минут "setTimeout", я так понял что это оно. Но после запуска плагина бот постоянно проверяет наличие задания, значит он постоянно лезет в функцию "function proverkaHandler(uspeh)", и дальше не идёт.

Отредактировано gorlum (2011-06-28 16:55:34)

60

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

Потому что лепишь таймер в одну переменную + setTimeout - однократное выполнение. Для твоих целей нужен setInterval

var uspeh=false;
 
function zadanie(enabled)
{
    if(enabled)
    {
     zadanieTimer = setInterval("zadanieHandler()",5000);// тут ставил разный интервал что бы проверить, 5-10 секунд
     proverkaTimer = setInterval("proverkaHandler()",360000);
    }
    else
    {
     clearInterval(zadanieTimer);
     clearInterval(proverkaTimer);
    }
}

И зачем передавать в proverkaHandler() переменную, если она у тебя глобальная?

Да, и для функции проверки, м.б. лучше сделать так:

function proverkaHandler()
{
    var temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?skills=1&rand=" + Math.random());
    if(!temp_inf.match(/Время до смены задания:/)) uspeh=false;
    top.Chat.Self.AddMessage("Проверяю наличие задания");
}
 
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;
}

Два вопроса:
1.что именно показывает переменная uspeh
2.что делает external.battleWeared

Отредактировано Exile (2011-06-28 17:27:01)

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

61

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

если uspeh==false, то выполняется строка

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();
            uspeh=true;
            top.Chat.Self.AddMessage("Работает выход из комнаты");
            }
 
       }

Где она берет задание. Если успех==тру, то выполняется возврат в зв1.

external.battleWeared не даёт боту ломится в бои при выполнении плагина, но она не работает, думал вернуться к ней позже.

62

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

Тогда уж лучше считывать не "Время до смены задания", а:
1) "<ТЕКУЩИЙ_ГОРОД> city - [0-9] ч. [0-9] мин."
2) "<ТЕКУЩИЙ_ГОРОД> city - [0-9] мин."
3) "<ТЕКУЩИЙ_ГОРОД> city - [0-9] сек."

Т.к. получается что если делаешь задания на несколько городов, то бот не будет брать задание!

63

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

Да, и кста, что делает

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;
}

?

Я её не первый раз вижу в плагинах, но не могу понять для чего она.

64

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

gorlum пишет:

Да, и кста, что делает

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;
}

?

Я её не первый раз вижу в плагинах, но не могу понять для чего она.

Загружает указанный урл и возвращает исходник загруженной страницы

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

65

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

if(!temp_inf.match(external.SCity.Text + /" - [0-9] ч. [0-9] мин."/||external.SCity.Text + /" - [0-9] мин."/||external.SCity.Text + /" - [0-9] сек."/)) uspeh=false;

Вот так?

66

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

Вставил это

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();
            uspeh=true;
            top.Chat.Self.AddMessage("Работает выход из комнаты");
            }
 
       }

но теперь в грибнице после взятия задания не меняет успех в тру, то есть не идёт обратно.

67

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

malrom пишет:

Тогда уж лучше считывать не "Время до смены задания", а:
1) "<ТЕКУЩИЙ_ГОРОД> city - [0-9] ч. [0-9] мин."
2) "<ТЕКУЩИЙ_ГОРОД> city - [0-9] мин."
3) "<ТЕКУЩИЙ_ГОРОД> city - [0-9] сек."

Т.к. получается что если делаешь задания на несколько городов, то бот не будет брать задание!

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

если uspeh==false, то выполняется строка

Так. Во первых ты не написал проверку, есть ли уже задание в Умениях.
Во вторых, нужна еще проверка на выполнение задания. А то выполнив, задание всё еще будет висеть, и бот всё еще будет ломиться его выполнять.

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

68

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

gorlum пишет:

Вставил это

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();
            uspeh=true;
            top.Chat.Self.AddMessage("Работает выход из комнаты");
            }
 
       }

но теперь в грибнице после взятия задания не меняет успех в тру, то есть не идёт обратно.

Так, хорошо. А где именно ты после взятия задания изменяешь значение переменной?
Я вижу только в месте, где стоит проверка  на то, что задания нельзя взять)
Кстати, я бы на твоем месте переделал проверку для "Для вас нет заданий в этом подземелье" след образом:
регуляркой выдирал бы значение Suncity: xxx репы.
И if(xxx == 24999) - выходим

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

69

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

gorlum пишет:
if(!temp_inf.match(external.SCity.Text + /" - [0-9] ч. [0-9] мин."/||external.SCity.Text + /" - [0-9] мин."/||external.SCity.Text + /" - [0-9] сек."/)) uspeh=false;

Вот так?

ну да, что-то вроде того.. я правда еще яваскрипт плохо знаю, но идея такая)

70

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

Exile пишет:

Т.к. получается что если делаешь задания на несколько городов, то бот не будет брать задание!

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

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

71

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

Кстати [0-9] надо заменить на "любая цифра", не знаю просто как это в яваскрипте делается.. но как горлум написал, там будет искать текст [0-9]..

72

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

malrom пишет:

Кстати [0-9] надо заменить на "любая цифра", не знаю просто как это в яваскрипте делается.. но как горлум написал, там будет искать текст [0-9]..

А зачем, пардон, ебаться с цифрами? smile
Если в текущем городе будет задержка на задание, то достаточно будет взять

if(!get_mainframe().document.all[0].innerHTML.toLowerCase().match(external.SCity.Text + " - "))
uspeh = false;
Оставь надежду всяк сюда входящий ©

73

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

Exile пишет:
malrom пишет:

Кстати [0-9] надо заменить на "любая цифра", не знаю просто как это в яваскрипте делается.. но как горлум написал, там будет искать текст [0-9]..

А зачем, пардон, ебаться с цифрами? smile
Если в текущем городе будет задержка на задание, то достаточно будет взять

if(!get_mainframe().document.all[0].innerHTML.toLowerCase().match(external.SCity.Text + " - "))
uspeh = false;

кстати да)

74

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

Значит должно быть как-то так:

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("Работает взятие задания");
            }
    var temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?skills=1&rand=" + Math.random());
    if(temp_inf.match(/Время до смены задания:/))
    uspeh=true;
    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("Работает выход из комнаты");
            }
 
       }

Добавил ещё одну проверку, именно после клацанья на получение. Правда протестить не могу, нету чаров с возможностью взятия задания в сане.

75

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

gorlum пишет:

Значит должно быть как-то так:

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("Работает взятие задания");
            }
    var temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?skills=1&rand=" + Math.random());
    if(temp_inf.match(/Время до смены задания:/))
    uspeh=true;
    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("Работает выход из комнаты");
            }
 
       }

Добавил ещё одну проверку, именно после клацанья на получение. Правда протестить не могу, нету чаров с возможностью взятия задания в сане.

Тогда уж лучше так:

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(/Репутация в Suncity/) && !get_mainframe().document.all[0].innerHTML.match(/24999/))
    {
        get_mainframe().document.getElementsByName("getquest")[0].click();
        uspeh=true;
        top.Chat.Self.AddMessage("Работает взятие задания");
    }
    if(get_mainframe().document.all[0].innerHTML.match(/Вы получили новое задание/)) uspeh=true;
    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?" + Math.random();
    top.Chat.Self.AddMessage("Работает выход из комнаты");
}
Оставь надежду всяк сюда входящий ©