126

(8 ответов, оставленных в Настройки / Плагины)

Ко всем приёмам, которым требуется остлеживать поставил ли противник размен, проверку на IsUnderlined добавь.
Бот сам будет обновлять фрэйм, если ни один приём не подошёл.

127

(9 ответов, оставленных в Общий)

В групповых никто не дерётся, поэтому отзывов по этому функционалу давно не было.
В хаотах всё хорошо.

128

(347 ответов, оставленных в Настройки / Плагины)

()
иначе у нас тут портянка вопросов по названиям будет...
смотрим FAQ по "идентификатор приема"

()

130

(102 ответов, оставленных в Общий)

конечно будет, но для всего в целом, а не для ТН в частности.

131

(347 ответов, оставленных в Настройки / Плагины)

Есть мнение, что "1411_kup_shredd_blag", судя по ()

Боту было запрещено подавать заявки.
Только приём с последующей подачей.
Сделано для того, чтобы не было по 20 одинаковых заявок на бой в городе.

А с приёмом заявки нельзя предугадать, через какое время она начнётся...т.е. считать время ослаба, потом постоянно мониторить заявки, конечно можно, но не так надёжно как просто дождаться завершения ослаба.

133

(102 ответов, оставленных в Общий)

semenspb, Evgeny99
проверьте, пожалуйста, приваты smile

134

(9 ответов, оставленных в Проблемы / Баги / Неполадки)

на одной есть на другой нет

Открой папку Plugins
там есть текстовый файлы для каждого аккаунта с перечнем плагинов, которые надо включить при старте.
Выключай в файле по одному плагину и пробуй запустить бота: включил, запустил выключенный плагин, выключил, повторно запустил, повторно выключил, закрыл бота.

Было подобное поведение с одним из плагинов, но вот не могу вспомнить, каким...

На всякий случай не забываем почистить файлы временные:
C:\Users\anahronik\AppData\Local\Microsoft\Windows\Temporary Internet Files

136

(102 ответов, оставленных в Общий)

1) Администрация БК существенно изменила механизм работы скриптов в подземельях
2) Процесс внесения изменений не завершён

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

Мои планы относительно данной проблемы: до выходных ничего не делать, т.к. ещё 15 раз всё изменится, а работу работать мне всё же надо  neutral 

Рекомендую заняться хаотами / прокачкой новых персонажей и т.п. Можно руками в подземелья спускаться и в боях с монстрами приёмы понастраивать.

Прошу извинить за неудобства  roll

semenspb пишет:

вроде откат сделали)))

Может кто ещё подтвердить?

1) Бот не ниже версии 9.2.8.26 должен быть, иначе жалобы не принимаются.
2) *Тут был способ, но админы второй раз за день скрипты поменяли и в общем не работает больше способ*

139

(38 ответов, оставленных в Настройки / Плагины)

volok пишет:

Подскажите как добавить в данный плагин условие на износ шмота чтоб не выходил из боя если износ шмота больше 3 едениц 37/40 потому как получаются неприятные ситуации когда проиграеш 3,4 боя подрят и потом  стоит и не идет  ремонтироваться

Можно вот так попробовать:

var FightExitTimer = {};
 
function FightExit(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["FightExit"] = "FightExitHandler";
        FightExitTimer[mylogin] = setInterval("FightExitHandler()", 3000);
    }
    else
    {
        PluginsOnLoad["FightExit"] = "";
        clearInterval(FightExitTimer[mylogin]);
    }
}
 
function FightExitHandler(){
    try
    {
        if(!external.inBattle) return;
 
        var curDurability;
        var mask = /Долговечность\:\s(\d+)\/(\d+)/g;
        var temp_objects = external.objects.replace(/invoke[^,]*,/g,'');
        while(curDurability = mask.exec(temp_objects))
        {
            if(curDurability != null)
            {
                if((curDurability[2]-curDurability[1]) <= 3 && curDurability[1]>0 && curDurability[2]>1)
                {
                    return;
                 }
            }
        }
 
        if(((top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) <= 0) && document.all[0].innerHTML.match(/Для вас бой окончен/))
        {
            top.Battle.oBattle.arrButtons.exit.click();
            top.document.all[0].getElementsByTagName('TBODY')[top.document.all[0].getElementsByTagName('TBODY').length-1].getElementsByTagName('BUTTON')[0].click();
        }
    }
    catch(err)
    {
    }
}

140

(121 ответов, оставленных в Подземелье / Маршруты)

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

141

(7 ответов, оставленных в Проблемы / Баги / Неполадки)

"Если запустить програму от имени той учётка в которой был создан то работает"
Допустим, проблема в правах доступа на директорию бота.

Правой кнопкой по директории бота - Свойства - Безопасность - Изменить - Добавить - Написать "Все" - Ок - Выбрать "Все" и отметить галочку "Полный доступ" - Ок - Ок - Ок.

142

(5 ответов, оставленных в Настройки / Плагины)

Можно добавить проверку, что разогнано до 3 уже

var bloodlustcount = (typeof(top.Battle.oBattle.oEnemySlot.arrEffects["krit_bloodlust"]) != "object") ? null : top.Battle.oBattle.oEnemySlot.arrEffects["krit_bloodlust"].innerHTML.match(/<br><span[^>]*>.(\d)?<\/span><\/div><img[^"]*".+\/krit_bloodlust\.gif">/i);
bloodlustcount = (bloodlustcount != null) ? bloodlustcount[1] : 0;
//external.AddToChat("Усиление разогнано на " + bloodlustcount); // раскомментировать для теста
if(bloodlustcount > 2)
{
// приём порезов или усиления...
}

* написал по памяти без тестирования....

143

(7 ответов, оставленных в Проблемы / Баги / Неполадки)

Пробовал залогиниться новым пользователем в windows и там бота запустить?

144

(7 ответов, оставленных в Проблемы / Баги / Неполадки)

Не понял...на этой же winXP есть другие пользователи, от которых бот входит?
и что за ручной режим?...

145

(1 ответов, оставленных в Настройки / Плагины)

$.ajax({url:"/main.pl?edit=&"+ Math.random()}).done(function(data){var skmp_name="ИмяКомплекта"; var res = data.match('href="(/main.pl\\?skmp[^"]+)">Надеть "' + skmp_name + '"'); if (res) $.ajax({url: res[1]}); else external.AddToChat("<b>Не найден комплект</b> " + skmp_name);})

Осознает, что одел комплект только на следующей клетке

146

(279 ответов, оставленных в Общий)

Race
В последних боях ты часто имел имя Боец (1)?
Я за своим посмотрел - в последних боях не был + при мне заявка принималась, а не подавалась.
Подалась только когда других не было.
У нас же не единственный бот для БК...наверное...никогда коллегами не интересовался smile

P.S.
Забыл сразу написать, что других заявок было несколько подходящих, а выбрал корректную.

147

(4 ответов, оставленных в Общий)

Таймауты? "Интервалы действий бота", которые на первой закладке настроек? smile

Как вариант:
Откройте сохраненный плагин через обычный блокнот и нажмите Файл - Сохранить как
В нижней части должна быть указана кодировка ANSI, иначе возникают проблемы с распознаванием русского текста в плагине.

149

(12 ответов, оставленных в Настройки / Плагины)

if((top.Battle.oBattle.oEnemySlot.nHP * 100 / top.Battle.oBattle.oEnemySlot.nMaxHP) < 30 && top.Battle.oBattle.oEnemySlot.nMaxHP > 2000)
    _name = "hit_execute";
else if((EnemiesCount >= 3) && parseInt(top.Battle.oBattle.arrRes["hit"].innerHTML) > 11)
_name = "hit_grinder";
else if((EnemiesCount < 3) && parseInt(top.Battle.oBattle.arrRes["hit"].innerHTML) > 10)
{
_target = top.Battle.oBattle.sEnemyLogin;
_name = "hit_throwdblaxe";
}

так?

Вот в таком виде в сане и ангеле работает

var phrasesAng = ["[(?:&quot;|<b>|\")]*Литейщик","[(?:&quot;|<b>|\")]*(?:Рубак[ауи]|Надзирател[ейьяи]*|Служител[ейьяи]*) [Гг]лубин","[(?:&quot;|<b>|\")]*Служител[ейьяи]* [Бб]ездны","[(?:&quot;|<b>|\")]*Бур","выполняете зачистку [(?:&quot;|<b>|\")]*Бездны","не один труп в [(?:&quot;|<b>|\")]*Бездн","в захвате [(?:&quot;|<b>|\")]*Бездн","[(?:&quot;|<b>|\")]*Тряпье необходимо нашим работницам","монстров в [(?:&quot;|<b>|\")]*Бездн","[(?:&quot;|<b>|\")]*Брага - продукт этой примитивной","их у монстров в [(?:&quot;|<b>|\")]*Бездн","Ну, не знаю, [(?:&quot;|<b>|\")]*Клыки, например","квадратный сантиметр [(?:&quot;|<b>|\")]*Бездн","в [(?:&quot;|<b>|\")]*Бездне, необходимы [(?:&quot;|<b>|\")]*Аутсвайс","Из [(?:&quot;|<b>|\")]*Подгорных Эдельвейсов, растущих исключительно в [(?:&quot;|<b>|\")]*Бездне","один темный угол в [(?:&quot;|<b>|\")]*Бездн","срочно необходим [(?:&quot;|<b>|\")]*Драконий камень","придется отправиться в [(?:&quot;|<b>|\")]*Бездн","всеми красками, нам необходим [(?:&quot;|<b>|\")]*Гранит","Ах, [(?:&quot;|<b>|\")]*Хрусталь - это так прекрасно","множество углов в [(?:&quot;|<b>|\")]*Бездн","Хоть и гадость этот [(?:&quot;|<b>|\")]*[Пп]ещерный [Мм]ох","один десяток монстров в Бездн"];
var phrasesMoon = ["[(?:&quot;|<b>|\")]*Пустынник[ова]* (?:[Аа]таман|[Мм]аньяк|[Уу]бийц)","[(?:&quot;|<b>|\")]*Дарьян[ау] [Кк]орт","[(?:&quot;|<b>|\")]*Маула? [Сс]частливчик","[(?:&quot;|<b>|\")]*Стража? [Кк]рантон","[(?:&quot;|<b>|\")]*Изгнанника? [Мм]глы","[(?:&quot;|<b>|\")]*Древнее [Пп]роклят[иь]е [Гг]лубин","[(?:&quot;|<b>|\")]*Дух[ов]*-Хранител","[(?:&quot;|<b>|\")]*Заблудш[аяихе]* [Дд]уш","[(?:&quot;|<b>|\")]*Механически[хей]* (?:[Оо]хранник|[Гг]олем|[Уу]бийц)","[(?:&quot;|<b>|\")]*Механик","[(?:&quot;|<b>|\")]*Мастера? [Гг]рит","[(?:&quot;|<b>|\")]*Стража? [Сс]окровищ","[(?:&quot;|<b>|\")]*Каменны[йхе] [Сс]траж","квадратный сантиметр [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","один темный угол в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","придется отправиться в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","порыскать в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","Поищите их в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","обыскать все уголки в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","[(?:&quot;|<b>|\")]*Инструменты","[(?:&quot;|<b>|\")]*Череп путешественника","не один труп в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","у монстров в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий"," в захвате [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","смерть монстрам из [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","один десяток монстров в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","[(?:&quot;|<b>|\")]*Зель[ея] Пустынник","[(?:&quot;|<b>|\")]*Механическ[аяуюие]* [Рр]ук","[(?:&quot;|<b>|\")]*Запчасти","[(?:&quot;|<b>|\")]*Призрачн[аяую]* [Пп]ыл","[(?:&quot;|<b>|\")]*Серд[цае]* [Гг]олем","с множеством монстров в [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","побродить по [(?:&quot;|<b>|\")]*Пещер[ае] Тысячи Проклятий","(?:отыскать|поискать|(?:найти)|(?:должны доставить)|принести) [(?:&quot;|<b>|\")]*(?:(?:Драконий [Кк]амень)|Гранит|(?:Подгорный [Ээ]дейльвейс)|Тряпье|(?:Пещерный [Мм]ох)|Хрусталь(?:Амулет [Пп]устынника))"];
var phrasesSand = ["[(?:&quot;|<b>|\")]*(?:Рабочи[йех]|Сторож[ейа]*|Смотрител[ейь]*) [Мм]глы","[(?:&quot;|<b>|\")]*Шахтерски[хйе] [Кк]рюк|[Оо]г[оньяъ]*","один десяток монстров в [(?:&quot;|<b>|\")]*Пещер[еы] Мглы","в захвате [(?:&quot;|<b>|\")]*Пещер[еы] Мглы","один труп в [(?:&quot;|<b>|\")]*Пещер[еы] Мглы","квадратный сантиметр [(?:&quot;|<b>|\")]*Пещер[еы] Мглы","один темный угол в [(?:&quot;|<b>|\")]*Пещер[еы] Мглы","в захвате [(?:&quot;|<b>|\")]*Пещер[еы] Мглы","отправиться в [(?:&quot;|<b>|\")]*Пещер[ые] Мглы","лежащие глыбы [(?:&quot;|<b>|\")]*[Гг]ранита","богаты [(?:&quot;|<b>|\")]*[Дд]раконьим [Кк]амнем","Из [(?:&quot;|<b>|\")]*[Пп]ещерного [Мм]ха, что растет в [(?:&quot;|<b>|\")]*[Пп]ещерах [Мм]глы","так называемые [(?:&quot;|<b>|\")]*[Пп]одгорные [Ээ]дельвейсы","городу нужен [(?:&quot;|<b>|\")]*[Хх]русталь","оторые они называют [(?:&quot;|<b>|\")]*[Аа]утсвайс","что [(?:&quot;|<b>|\")]*[Кк]лыки [Пп]роклятья [Гг]лубин","наши стражники с [(?:&quot;|<b>|\")]*[Кк]остями","[(?:&quot;|<b>|\")]*Тряпье - совершенно бесполезная вещь"];
var phrasesDem = ["[(?:&quot;|<b>|\")]*Слизь","[(?:&quot;|<b>|\")]*Пожирател[ьейми]* [Пп]адал","[(?:&quot;|<b>|\")]*(?:Окоченелы[ехй]|Каменны[ехй]|Зубасты[ехй]|Голодны[ехй]|Древни[ехй]|Загадочны[ехй]) [Зз]омб","[(?:&quot;|<b>|\")]*Древни[хей] [Сс]траж","[(?:&quot;|<b>|\")]*Прокляты[йех] (?:[Пп]ламенос|[Уу]бийц|[Сс]траж|[Оо]руженос|[Зз]ащитник|[Сс]китал)","[(?:&quot;|<b>|\")]*Берсерк","[(?:&quot;|<b>|\")]*Офицер[аов]* [Гг]лубин","[(?:&quot;|<b>|\")]*(?:Зубаст[ыхуюаяе]*|Хищн[ыхуюаяе]*) [Сс]лиз","[(?:&quot;|<b>|\")]*Чернокнижник","[(?:&quot;|<b>|\")]*Епископ","[(?:&quot;|<b>|\")]*Шута? [Пп]овелителя","[(?:&quot;|<b>|\")]*Трупожор","[(?:&quot;|<b>|\")]*Проклят[ыхей]* [Пп]ленник","[(?:&quot;|<b>|\")]*Повелитель?","дин десяток монстров в [(?:&quot;|<b>|\")]*Катакомб","хорошо поработать, чтобы достать [(?:&quot;|<b>|\")]*[Кк]ости","остараться, чтобы найти [(?:&quot;|<b>|\")]*[Аа]мулет [Пп]устынника","попал в эти места [(?:&quot;|<b>|\")]*[Аа]мулет [Пп]устынника","они гонят [(?:&quot;|<b>|\")]*[Бб]рагу из","от вас - это несколько [(?:&quot;|<b>|\")]*[Кк]остей"];
var phrasesSun = ["[(?:&quot;|<b>|\")]*(?:Искрящи[йехм]ся|Пылающи[ехмй]) [Пп]аразит","[(?:&quot;|<b>|\")]*Скользки[йхем] [Рр]огонос","[(?:&quot;|<b>|\")]*Усохши[хийм] [Пп]алочник","[(?:&quot;|<b>|\")]*Мясисты[хйым] [Гг]усениц","[(?:&quot;|<b>|\")]*Яростн[аяыхме]* [Мм]окриц","[(?:&quot;|<b>|\")]*Брата? Скорпиончика","[(?:&quot;|<b>|\")]*Скорпиончик","[(?:&quot;|<b>|\")]*Трут[еньйя]*","[(?:&quot;|<b>|\")]*Королев[еау] [Гг]рибницы","[(?:&quot;|<b>|\")]*Сторожев[уюая]* [Гг]рибоножк[уа]","[(?:&quot;|<b>|\")]*Грибков[уюая]* [Мм]оль","[(?:&quot;|<b>|\")]*Кольчат[ыйхе]* [Сс]трахочерв[ьией]*","[(?:&quot;|<b>|\")]*Жвала","[(?:&quot;|<b>|\")]*Куск[иов]* [Хх]итина","[(?:&quot;|<b>|\")]*Усик[ови]* [Нн]асекомых","[(?:&quot;|<b>|\")]*Крупицы? [Мм]еталла","[(?:&quot;|<b>|\")]*Мембрана? [Тт]рутня","[(?:&quot;|<b>|\")]*Остры[йех]* [Кк]ог[тейяьо]*","[(?:&quot;|<b>|\")]*Кус[коваи]* [Пп]анциря","оно вскоре покрывается [(?:&quot;|<b>|\")]*слизью","[(?:&quot;|<b>|\")]*Грибн[уюаяых]* (?:[Шш]ляпк|[Нн]ожк|[Гг]усениц)","[(?:&quot;|<b>|\")]*Глазик","[(?:&quot;|<b>|\")]*Потерявши[хйе]ся [Гг]усениц","[(?:&quot;|<b>|\")]*Улит[аоки]*","[(?:&quot;|<b>|\")]*Слизняк","[(?:&quot;|<b>|\")]*Отрост[кови]* [Гг]рибницы","[(?:&quot;|<b>|\")]*Кореш[окви]*","[(?:&quot;|<b>|\")]*Мелки[хе] [Хх]люп","[(?:&quot;|<b>|\")]*Сем[яена]*","[(?:&quot;|<b>|\")]*[Пп]уст[ыхуюе]* бутыл[ейьи]* из под"];
var allQuests = [];
allQuests.push(phrasesAng);
allQuests.push(phrasesMoon);
allQuests.push(phrasesSand);
allQuests.push(phrasesDem);
allQuests.push(phrasesSun);
var proverkaTimer = {};
var roomNameUpdTimer = {};
var zadanieTimer = {};
var sellTimer = {};
var questIsActive = false;
var needToFinish = false;
var pathAngels = "Все маршруты"; //имя файла маршрута бездны
var pathDemons = "Все маршруты"; //имя файла маршрута кат
var pathSun = "Все маршруты"; //имя файла маршрута грибов
var pathSand = "Все маршруты"; //имя файла маршрута мглы
var pathMoon = "Все маршруты"; //имя файла маршрута птп
var enableSellInShop = true; // режим продажи пуршмота в гос
var dungMode = true; //режим подземки
var currentRoom ='';
var randomValue;
var min = 360000;
var max = 400000;
var questName = "";
var questID = "";
var needToDo = -1;
var hasBeenDone = -1;
var needToFinish = false;
var needToTake = false;
var dungeonLocked = false;
var beenInShop = true;
var itemsToSell = [];
itemsToSell.push("item");
itemsToSell.push("Кольцо старого безумца");
itemsToSell.push("Ожерелье жестокого разбойника");
itemsToSell.push("Порченный ремень свирепого варвара");
itemsToSell.push("Затасканное кольцо жестокого старца");
itemsToSell.push("Потертый пояс неумолимого садиста");
itemsToSell.push("Пояс зоркого путешественника");
itemsToSell.push("Ботинки странного грабителя");
itemsToSell.push("Перстень забытого безумца");
itemsToSell.push("Истертые ботинки уставшего старца");
itemsToSell.push("Ветхое острие бессердечного лазутчика");
itemsToSell.push("Жилет старого предка");
itemsToSell.push("Истертый пояс властного путешественника");
itemsToSell.push("Старинная броня высокомерного странника");
itemsToSell.push("Секира мрачного гладиатора");
itemsToSell.push("Подержанные ботинки беспощадного демона");
itemsToSell.push("Истертое ожерелье опытного аристократа");
itemsToSell.push("Устаревший покров бессмертного предка");
itemsToSell.push("Подержанный амулет загубленного предателя");
itemsToSell.push("Грубые сапоги старого клятвоотступника");
itemsToSell.push("Ветхое жало странного бойца");
itemsToSell.push("Старинная кираса властного отшельника");
itemsToSell.push("Наручи старого предка");
itemsToSell.push("Грубые ботинки вечного снайпера");
itemsToSell.push("Перчатки вечного лесничего");
itemsToSell.push("Наколенники странного проходимца");
itemsToSell.push("Перчатки мифического лесничего");
itemsToSell.push("Порченный меч бывалого вождя");
itemsToSell.push("Бесполезный пояс мудрого проходимца");
itemsToSell.push("Топор безрассудного отшельника");
itemsToSell.push("Истертые сапоги странного духа");
itemsToSell.push("Грубый доспех мифического разбойника");
itemsToSell.push("Кольцо благородного проходимца");
itemsToSell.push("Баллиста алчного клятвоотступника");
itemsToSell.push("Кольцо стойкого легионера");
itemsToSell.push("Серьги неистового вождя");
itemsToSell.push("Неряшливые серьги известного героя");
itemsToSell.push("Ископаемый арбалет доблестного призрака");
itemsToSell.push("Грубые наручи злопамятного искателя");
itemsToSell.push("Грубые перчатки бодрого отшельника");
itemsToSell.push("Выбрать Кольцо стойкого легионера");
itemsToSell.push("Молот лютого военачальника");
itemsToSell.push("Неряшливый кулон бессмертного охотника");
itemsToSell.push("Устаревший лук мрачного мертвеца");
itemsToSell.push("Перстень неистового обитателя подземелий");
itemsToSell.push("Грубые наручи злопамятного искателя");
itemsToSell.push("Старинные наручи властного предка");
itemsToSell.push("Перстень злопамятного зверолова");
itemsToSell.push("Затасканные перчатки безвольного изувера");
itemsToSell.push("Разваливающиеся серьги вечного палача");
itemsToSell.push("Перчатки мертвого следопыта");
itemsToSell.push("Ветхое кольцо вечного разбойника");
itemsToSell.push("Наручи неистового героя");
itemsToSell.push("Наручи прославленного головореза");
itemsToSell.push("Старинная броня высокомерного странника");
itemsToSell.push("Ветхие латы непобедимого путешественника");
itemsToSell.push("Бесполезное ожерелье забытого духа");
itemsToSell.push("Перчатки странного гладиатора");
itemsToSell.push("Серьги странного клятвоотступника");
itemsToSell.push("Перчатки ловкого предателя");
itemsToSell.push("Порченные наручи бесчестного клятвоотступника");
itemsToSell.push("Потертые сапоги загубленного следопыта");
itemsToSell.push("Потертые наручи безвольного варвара");
itemsToSell.push("item");
itemsToSell.push("Неряшливый лук мудрого стрелка");
itemsToSell.push("Бесполезное жало бессмертного варвара");
itemsToSell.push("Потертый меч беспощадного изверга");
itemsToSell.push("Наручи безвольного духа");
itemsToSell.push("Секира кровожадного солдата");
itemsToSell.push("Булава известного безумца");
itemsToSell.push("Безобразный шлем бесчестного воителя");
itemsToSell.push("Острие кровожадного воителя");
itemsToSell.push("Разваливающийся меч кровожадного грабителя");
itemsToSell.push("Грубые наколенники опытного варвара");
itemsToSell.push("Шапка опытного предка");
itemsToSell.push("Ветхие штаны чуткого странника");
itemsToSell.push("Затасканные рукавицы бывалого клятвоотступника");
itemsToSell.push("Ветхие наручи умелого пилигрима");
itemsToSell.push("Устаревший топор непобедимого аристократа");
itemsToSell.push("Порченный меч лютого героя");
itemsToSell.push("Острие кровожадного воителя");
itemsToSell.push("Ветхое кольцо высокомерного бойца");
itemsToSell.push("Разваливающиеся перчатки странного разбойника");
itemsToSell.push("Серьги важного охотника");
itemsToSell.push("Серьги опытного акробата");
itemsToSell.push("Потрепанное кольцо благородного солдата");
itemsToSell.push("Безобразное кольцо лютого воителя");
itemsToSell.push("Бесполезное кольцо щедрого убийцы");
itemsToSell.push("Рукавицы безвольного клятвоотступника");
itemsToSell.push("Старые ботинки Охранницы");
itemsToSell.push("Штатный шлем Охранницы");
itemsToSell.push("Серьги Охранницы");
itemsToSell.push("Гнилая роба Служителей");
itemsToSell.push("Вспомогательный топорик Охранницы");
itemsToSell.push("Наручи Служителя");
itemsToSell.push("Магический шлем Служителя");
itemsToSell.push("Вонючие ботинки Охранницы");
itemsToSell.push("Штатная броня охранницы");
itemsToSell.push("Ржавый меч Охранницы");
itemsToSell.push("Разваливающийся пояс Охранницы");
itemsToSell.push("Рваные одеяния Охранницы");
itemsToSell.push("Тусклое кольцо Охранницы");
itemsToSell.push("Затхлое одеяние Служителей");
itemsToSell.push("Прогнившие наручи Служителя");
itemsToSell.push("Гнилая роба Служителей");
itemsToSell.push("Поножи Служителя");
itemsToSell.push("Боевые перчатки Охранницы");
itemsToSell.push("Легкие сапоги Охранницы");
itemsToSell.push("Могучие серьги Служителя");
itemsToSell.push("Тапочки Служителя");
itemsToSell.push("Амулет Служителя");
itemsToSell.push("Старые перчатки Охранниц");
itemsToSell.push("Старый нож Охранницы");
itemsToSell.push("Ржавое кольцо Служителя");
itemsToSell.push("Дрянные серьги Охранницы");
itemsToSell.push("Надежный посох Служителя");
itemsToSell.push("Штатные поножи Охранницы");
itemsToSell.push("Амулет Охранницы");
itemsToSell.push("Старые браслеты Охранницы");
itemsToSell.push("Кольцо Охранниц");
itemsToSell.push("Старая шапка опытного духа");
itemsToSell.push("Подержанные наручи известного призрака");
itemsToSell.push("Штаны властного скитальца");
itemsToSell.push("Испорченные серьги Служителя");
itemsToSell.push("Нож Охранницы");
itemsToSell.push("Шлем Служителя");
itemsToSell.push("Удобные наручи Служителя");
itemsToSell.push("Надежный амулет Служителя");
itemsToSell.push("Кольцо Служителя");
itemsToSell.push("Гнилая дубина Охранниц");
itemsToSell.push("Жалкий шлем Охранницы");
itemsToSell.push("Изящные перчатки Служителей");
itemsToSell.push("Усиленные наручи Охранницы");
itemsToSell.push("Ржавый топорик Охранницы");
itemsToSell.push("Тяжелый посох Служителя");
itemsToSell.push("Неудобный шлем Служителя");
itemsToSell.push("Кривой посох Служителя");
itemsToSell.push("Непробиваемая туника Охранницы");
itemsToSell.push("Дырявые поножи Охранницы");
itemsToSell.push("Сношенные сандали Служителя");
itemsToSell.push("Гнилые поножи Служителей");
itemsToSell.push("Ветхий шлем Служителя");
itemsToSell.push("Старый амулет Служителя");
itemsToSell.push("Мантия Служителя");
itemsToSell.push("Перчатки Служителей");
itemsToSell.push("Боевой топорик Охранницы");
itemsToSell.push("Удобные ботинки Служителя");
itemsToSell.push("Наручи Охранницы");
itemsToSell.push("Боевой шлем Охранницы");
itemsToSell.push("Порванные ботинки Служителя");
itemsToSell.push("Посох Служителя");
itemsToSell.push("Крепкий посох Служителя");
itemsToSell.push("Гнилые перчатки Служителей");
itemsToSell.push("Разломанные браслеты Охранницы");
itemsToSell.push("Обычное одеяние Служителя");
itemsToSell.push("Крепкая роба Служителя");
itemsToSell.push("Приличный пояс Охранницы");
itemsToSell.push("Браслеты охранницы");
itemsToSell.push("Туника Охранницы");
itemsToSell.push("Утяжеленные наручи Охранницы");
itemsToSell.push("Сандали успешных Служителей");
itemsToSell.push("Острый меч Охранницы");
itemsToSell.push("Рваная туника Охранницы");
itemsToSell.push("Неплохой шлем Охранницы");
itemsToSell.push("Надежный шлем Охранницы");
itemsToSell.push("Дрянной амулет Охранницы");
itemsToSell.push("Прекрасный амулет Охранницы");
itemsToSell.push("Порванный пояс Служителя");
itemsToSell.push("Штатный меч Охранницы");
itemsToSell.push("Ветхие наручи Служителя");
itemsToSell.push("Блестящее кольцо Охранницы");
itemsToSell.push("Мощная броня Охранницы");
itemsToSell.push("Отличные наручи Служителя");
itemsToSell.push("Удивительный шлем Служителя");
itemsToSell.push("Ремень Служителей");
itemsToSell.push("Отличные поножи Служителей");
itemsToSell.push("Ритуальные поножи Охранницы");
itemsToSell.push("Укрепленная дубинка Охранницы");
itemsToSell.push("Пояс Охранницы");
itemsToSell.push("Серьги Служителя");
itemsToSell.push("Хороший шлем Служителя");
itemsToSell.push("Парадные серьги Охранницы");
itemsToSell.push("Сандали Служителя");
itemsToSell.push("Дубинка Охранницы");
itemsToSell.push("Отличный пояс Служителя");
itemsToSell.push("Облегченные ботинки Охранницы");
itemsToSell.push("Блестящий перстень Служителей");
itemsToSell.push("Хорошая мантия Служителя");
itemsToSell.push("Штатные сандали Охранницы");
itemsToSell.push("Треснувший шлем Охранницы");
itemsToSell.push("Утяжеленные сапоги Охранницы");
itemsToSell.push("Крепкие наручи Служителей");
//7 бездна
itemsToSell.push("Каска мудрого злодея");
itemsToSell.push("Перчатки бывалого гладиатора");
itemsToSell.push("Старый капюшон высокомерного стрелка");
itemsToSell.push("Дубина забытого духа");
itemsToSell.push("Порченный меч лютого героя");
itemsToSell.push("Серьги яростного гладиатора");
itemsToSell.push("Наколенники лютого разведчика");
itemsToSell.push("Затасканная секира мертвого аристократа");
itemsToSell.push("Серьги алчного путешественника");
itemsToSell.push("Кинжал опытного путешественника");
itemsToSell.push("Шапка уставшего путешественника");
itemsToSell.push("Серьги аккуратного безумца");
itemsToSell.push("Перчатки забывчивого обитателя подземелий");
itemsToSell.push("Безобразные брюки забытого предателя");
//8 бездна
itemsToSell.push("Грубые наколенники опытного варвара");
itemsToSell.push("Устаревший топор непобедимого аристократа");
itemsToSell.push("Булава известного безумца");
itemsToSell.push("Разваливающиеся перчатки странного разбойника");
itemsToSell.push("Грубые серьги алчного старца");
itemsToSell.push("Безобразный шлем бесчестного воителя");
itemsToSell.push("Шапка опытного предка");
itemsToSell.push("Разваливающийся меч кровожадного грабителя");
itemsToSell.push("Ветхие штаны чуткого странника");
itemsToSell.push("Острие кровожадного воителя");
itemsToSell.push("Старая шапка алчного мага");
itemsToSell.push("Серьги мудрого обитателя подземелий");
itemsToSell.push("Затасканные перчатки мифического старца");
itemsToSell.push("Ископаемые штаны алчного предсказателя");
//9 бездна
itemsToSell.push("Потертые штаны вечного стража");
itemsToSell.push("Молот бессмертного предка");
itemsToSell.push("Меч мифического отшельника");
itemsToSell.push("Потрепанные серьги алчного предка");
itemsToSell.push("Разваливающиеся поножи жестокого варвара");
itemsToSell.push("Острие властного военачальника");
itemsToSell.push("Топор жестокого разбойника");
itemsToSell.push("Потрепанные перчатки бдительного стрелка");
itemsToSell.push("Рукавицы мертвого путешественника");
itemsToSell.push("Разваливающийся шлем бессмертного героя");
itemsToSell.push("Капюшон мудрого старца");
itemsToSell.push("Неряшливые серьги аккуратного мудреца");
itemsToSell.push("Старые перчатки забывчивого старца");
itemsToSell.push("Потрепанные кальсоны известного пророка");
//8 каты
itemsToSell.push("Старое кольцо алчного проходимца");
itemsToSell.push("Старинные перчатки педантичного призрака");
itemsToSell.push("Наручи безвольного духа");
itemsToSell.push("Затасканные рукавицы бывалого клятвоотступника");
itemsToSell.push("Неряшливый лук мудрого стрелка");
itemsToSell.push("Серьги амбициозного мистика");
itemsToSell.push("Ветхие наручи умелого пилигрима");
itemsToSell.push("Серьги важного охотника");
itemsToSell.push("Серьги опытного акробата");
itemsToSell.push("Бесполезное кольцо щедрого убийцы");
itemsToSell.push("Неряшливый лук мудрого стрелка");
//9 каты
itemsToSell.push("Перчатки странного гладиатора");
itemsToSell.push("Баллиста алчного клятвоотступника");
itemsToSell.push("Неряшливые серьги известного героя");
itemsToSell.push("Ископаемые серьги щепетильного старца")
//11 каты
itemsToSell.push("Ископаемый арбалет доблестного призрака");
itemsToSell.push("Разваливающиеся серьги вечного палача");
itemsToSell.push("Серьги странного клятвоотступника");
itemsToSell.push("Серьги хитроумного обитателя подземелий");
//7-9 Пещера мглы
itemsToSell.push("Перстень лютого воина");
itemsToSell.push("Безобразное кольцо лютого воителя");
itemsToSell.push("Грубый доспех мифического разбойника");
itemsToSell.push("Безобразный клинок мудрого солдата");
itemsToSell.push("Кинжал дерзкого клятвоотступника");
itemsToSell.push("Грубые сапоги старого клятвоотступника");
itemsToSell.push("Безобразные сапоги неукротимого предателя");
itemsToSell.push("Балахон высокомерного духа");
itemsToSell.push("Секира мрачного гладиатора");
itemsToSell.push("Секира кровожадного солдата");
itemsToSell.push("Башмаки неумолимого предка");
itemsToSell.push("Сапоги высокомерного предка");
itemsToSell.push("Перстень забытого безумца");
itemsToSell.push("Перстень бессмертного странника");
itemsToSell.push("Перстень амбициозного пророка");
itemsToSell.push("Бесполезный пояс мудрого проходимца");
itemsToSell.push("Ремень высокомерного старца");
itemsToSell.push("Бесполезный амулет зоркого демона");
itemsToSell.push("Разваливающийся пояс щепетильного предателя");
itemsToSell.push("Ожерелье опытного старца");
itemsToSell.push("Старинная броня высокомерного странника");
itemsToSell.push("Ожерелье жестокого разбойника");
itemsToSell.push("Бесполезные ботинки странного путешественника");
itemsToSell.push("Истертый пояс властного путешественника");
itemsToSell.push("Старинная кираса властного отшельника");
itemsToSell.push("Пояс умелого обитателя подземелий");
itemsToSell.push("Пояс мертвого пророка");
itemsToSell.push("Пояс забывчивого аристократа");
itemsToSell.push("Истертый покров бессмертного странника");
itemsToSell.push("Неряшливый кулон бессмертного охотника");
itemsToSell.push("Истертый доспех неусыпного духа");
itemsToSell.push("Потрепанные ботинки амбициозного мага");
itemsToSell.push("Потертый меч беспощадного изверга");
itemsToSell.push("Грубая булава опытного гиганта");
itemsToSell.push("Истертые ботинки уставшего старца");
itemsToSell.push("Истертое ожерелье опытного аристократа");
itemsToSell.push("Ископаемый кулон алчного клятвоотступника");
itemsToSell.push("Ветхое кольцо высокомерного бойца");
itemsToSell.push("Бесполезное ожерелье яростного варвара");
itemsToSell.push("Посох щепетильного путешественника");
itemsToSell.push("Порченный ремень свирепого варвара");
itemsToSell.push("Ветхое жало странного бойца");
itemsToSell.push("Порченный меч бывалого вождя");
itemsToSell.push("Топор безрассудного отшельника");
itemsToSell.push("Ветхий посох педантичного пророка");
itemsToSell.push("Старинный посох странствующего путешественника");
itemsToSell.push("Амулет опытного путешественника");
itemsToSell.push("Старинный пояс непобедимого гиганта");
itemsToSell.push("Покров неумолимого путешественника");
itemsToSell.push("Покров ворчливого неофита");
itemsToSell.push("Бесполезное жало бессмертного варвара");
itemsToSell.push("Затасканное кольцо жестокого старца");
itemsToSell.push("Молот странного вождя");
itemsToSell.push("Молот лютого военачальника");
itemsToSell.push("Подержанные ботинки беспощадного демона");
itemsToSell.push("Жилет старого предка");
itemsToSell.push("Безобразные башмаки высокомерного духа");
itemsToSell.push("Кольцо странного обитателя подземелий");
itemsToSell.push("Старое кольцо известного демона");
itemsToSell.push("Кольцо старого безумца");
 
itemsToSell.push("Пустая бутыль");
 
function zadanie(enabled)
{
    if(enabled)
    {
        roomNameUpdTimer[mylogin] = setInterval("GetRoomName()", 500);
        if(enableSellInShop) sellTimer[mylogin] = setInterval("SellAction()", 1500);
        if(dungMode && !external.dungeonEnabled) external.dungeonEnabled = true;
        proverkaTimer[mylogin] = setInterval("proverkaHandler()",2000);       
    }
    else
    {
        if(zadanieTimer[mylogin]) clearInterval(zadanieTimer[mylogin]);
        external.SBattleAbovePercent.Text = 100;
        if(sellTimer[mylogin]) clearInterval(sellTimer[mylogin]);
        clearInterval(proverkaTimer[mylogin]);
        clearInterval(roomNameUpdTimer[mylogin]);       
    }
}
 
Array.prototype.inArray = function(item)
{
    for (var i in this)
        if (item.indexOf(this[i]) > -1)
            return true;
    return false;
}
 
function GetRoomName()
{
    try
    {
        if(top.Battle.bInBattle || !external.Started()) return;
        if(top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i))
        {
            external.SBattleAbovePercent.Text = 100;
            return;
        }
        var pageSource = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
 
        if(currentRoom = pageSource.match(/<nobr>([^<]+)<\/nobr>/))currentRoom = String(currentRoom[1]);
        else if(top.frames[external.mainFrameIndex].document.getElementsByName("quest_name").length > 0) currentRoom = "inQuestWindow";
        else currentRoom = "inDialog";
        if(currentRoom == "inDialog") external.ClickLink("Вернуться",4);
    }
    catch(err)
    {
        external.AddToChat("Error in GetRoomName function");
    }
}
 
function proverkaHandler()
{
    try
    {
        clearInterval(proverkaTimer[mylogin]);
        randomValue = Math.floor(Math.random()*(max - min) + min);
        proverkaTimer[mylogin] = setInterval("proverkaHandler()", randomValue);
 
        if(top.Battle.bInBattle || !external.Started())
        {
            external.SBattleAbovePercent.Text = 100;
            return;
        }
 
        if(top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i)) external.SBattleAbovePercent.Text = 100;       
        else 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";
        else if(external.SCity.Text == "sandcity") tempstr = "Sandcity</B> - Рыцарь первого круга, 10000 / 24999";
        else if(external.SCity.Text == "angelscity") tempstr = "Angels city</B> - Рыцарь первого круга, 10000 / 24999";
        else if(external.SCity.Text == "demonscity") tempstr = "Demons city</B> - Рыцарь первого круга, 24999 / 24999";
        else if(external.SCity.Text == "mooncity") tempstr = "Mooncity</B> - Рыцарь первого круга, 24999 / 24999";
 
        if(!zadanieTimer[mylogin]) zadanieTimer[mylogin] = setInterval("zadanieHandler()",3000);       
 
        if(temp_inf.match(tempstr))
        {
            external.AddToChat("Задания не требуется");
            questIsActive = false;
            needToTake = false;
            return;
        }
 
        var patt = external.SCity.Text + " - \\d+ (мин|ч|сек)";
 
        if(temp_inf.match(/Время до подземелья/)) dungeonLocked = true;
        else dungeonLocked = false;           
 
        if(GetQuestFromInfo(temp_inf))
        {
            external.AddToChat("Задание:");
            top.Chat.Self.AddMessage(questName + " " + hasBeenDone + "/" + needToDo);
            questIsActive = true;
            needToTake = false;
            var pickingQuest = isPickingQuest();
            if((!pickingQuest && hasBeenDone == needToDo) || (pickingQuest && (hasBeenDone == (Math.floor(needToDo/4) + needToDo)))) needToFinish = true;
            if(needToFinish) external.AddToChat("Нужно завершить задание");
        }       
        else
        {
            if(!temp_inf.toLowerCase().match(patt))
            {
                external.AddToChat("Требуется взять задание");
                needToTake = true;
                questIsActive = false;
            }
            else
            {
                external.AddToChat("Задержка на взятие задания");
                needToTake = false;
                questIsActive = false;
            }
        }
    }
    catch(err)
    {
        external.SBattleAbovePercent.Text = 100;
        external.AddToChat("Error in proverkaHandler function");
    }
}
 
function zadanieHandler()
{
    try
    {
        if(top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i) || !external.Started()) return;
 
        if(enableSellInShop && !beenInShop) return;
 
        var pgSource = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
 
        if(dungMode || (!dungMode && !dungeonLocked && (needToTake || questIsActive)))
        {
            if(!currentRoom.match(/Спуск в Катакомбы|inQuestWindow|Пещеры Мглы|Пещера Тысячи проклятий|Грибница|Спуск в Бездну/) || (currentRoom.match(/Пещера Тысячи проклятий/) && pgSource.match(/Никогда и никому не говорите пароль от своего персонажа/)))
            {
                MoveToDung();
                return;
            }           
        }
 
        if(!questIsActive && !needToTake && !dungMode)
        {
            if(currentRoom == "inQuestWindow") external.ClickLink("Вернуться",4);
            if(external.dungeonEnabled) external.dungeonEnabled = false;
            if(!currentRoom.match(/Зал воинов/))
                MoveFromDung();
            else
                external.SBattleAbovePercent.Text = 100;
            return;
        }
 
        if(needToTake || needToFinish)
        {
            if(currentRoom != "inQuestWindow") external.ClickLink("Задания",4);
            else
            {
                if(pgSource.match(/Для вас нет заданий/))
                {
                    needToTake  = false;
                    questIsActive = false;
                    needToFinish = false;
                    return;
                }
                var gotRep = pgSource.match(/Вы получили \d* награды за выполнение задания/);
                if(gotRep) external.AddToChat(gotRep);
 
                var btns = top.frames[external.mainFrameIndex].document.getElementsByName("finishquest");
                if(questID != "" && needToFinish && btns)
                {           
                    for(var i = 0; i < btns.length; i++)
                        if(btns[i].onclick && String(btns[i].onclick).match(questID) && btns[i].style.visibility != "hidden")
                        {
                            needToTake  = true;
                            questIsActive = false;
                            needToFinish = false;
                            questName = "";
                            questID = "";
                            needToDo = -1;
                            hasBeenDone = -1;
                            btns[i].click();
                            return;
                        }
                    external.AddToChat("Не нашел кнопки завершения задания");   
                }           
 
                if(external.SCity.Text == "suncity" && pgSource.match(/Репутация в Suncity: 0/))
                {
                    needToTake  = false;
                    questIsActive = false;
                    return;
                }
 
                needToTake  = false;
                questIsActive = true;
                if(external.ClickLink("Получить задание",4)) external.AddToChat("Работает взятие задания");
                else external.AddToChat("Задание уже есть");               
            }
        }
        else if(questIsActive || !needToTake)
        {
            if(currentRoom == "inQuestWindow" && pgSource.match(/Для вас нет заданий/))
            {
                questIsActive = false;
                needToTake = false;
                external.ClickLink("Вернуться",4);
                return;
            }
 
            if(currentRoom == "inQuestWindow") external.ClickLink("Вернуться",4);
 
            if(currentRoom != "inQuestWindow" && currentRoom.match(/Спуск в Катакомбы|Пещера Тысячи проклятий|Пещеры Мглы|Грибница|Спуск в Бездну/))
            {
                var fp = GetPathFileName();
                if(fp == "")
                {
                    questIsActive = false;
                    needToTake = false;
                    external.AddToChat("Файл маршрута не найден");
                    return;
                }
 
                if(!dungMode)
                {
                    external.DungeonLoadPath(fp);
                    external.dungeonEnabled = true;
                    external.SBattleAbovePercent.Text = 100;
                }               
            }
        }
    }
    catch(err)
    {
        external.AddToChat("Error in zadanieHandler function");
    }
}
 
function SellAction()
{
    try
    {
        if(!external.Started() || top.Battle.bInBattle) return;
        if(get_mainframe().DungMap)
        {
            beenInShop = false;
            return;
        }       
        if(beenInShop) return;   
 
        var sellTmp = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
        if(currentRoom != "Магазин" || sellTmp.indexOf("dem_newbot_magaz") > -1) MoveFromDung();
        else
        {
            if(!sellTmp.match(/Отдел \"Скупка\"/i)) external.ClickLink("Продать вещи",4);
            else
            {
                var items = sellTmp.match(/<a\s(?:onclick="[^"]*"\s)?href="shop\.pl\?sl=[^"]*">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>[^&<]*/ig);
                if(!items)
                {
                    beenInShop = true;
                    return;
                }
                for(var i = 0; i < items.length; i++)
                {
                    items[i] = items[i].match(/<a\s(?:onclick="[^"]*"\s)?href="(shop\.pl\?sl=[^"]*)">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>([^&<]*)/i);
                    if(!items[i]) continue;
                    items[i][1] = items[i][1].replace(/&amp;/g, '&');
                    if(!items[i][1]) continue;
                    if(itemsToSell.inArray(items[i][2]))
                    {
                        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + items[i][1];
                        return;
                    }
                }
                beenInShop = true;
            }
        }
    }
    catch(err)
    {
        external.AddToChat("Error in SellAction function");
    }
}
 
function GetQuestFromInfo(inf)
{
    try
    {
        var flds = inf.match(/<fieldset>[^<]*<legend>\s?Текущие (?:квесты|задания)[^@]*<\/fieldset>/i);
        if(!flds) return false;
        flds = flds[0].match(/<img[^>]*>[^@]*<span [^>]*>\d*\/\d*<\/span>/ig);
        if(!flds) return false;
         for(var i = 0; i < flds.length; i++)
        {
            var tmp = flds[i].match(/<img[^@]*quest_name=([^(?:&|")]*)[^>]*>([^@]*)<span[^>]*>([^<]*)<\/span>/i);
            if(!tmp) return false;
            if(CheckForQuestInInv(tmp[2]))
            {           
                questID = tmp[1];                                                         // 1 == идентификатор квеста
                questName = tmp[2];                                                     // 2 == текст квеста
                hasBeenDone = parseInt(tmp[3].match(/[^\d]*(\d*)[^\/]*/)[1].toString());// 3 == сделано
                needToDo = parseInt(tmp[3].match(/[^\/]*\/(\d*)/)[1].toString());         // 4 == надо сделать                   
                return true;   
            }
        }
        return false;
    }
    catch(err)
    {
        external.AddToChat("Error in GetQuestFromInfo function");
    }
}
 
function CheckForQuestInInv(inf)
{
    try
    {
        var indexArray = -1;
        if(external.SCity.Text == "suncity") indexArray = 4;
        else if(external.SCity.Text == "sandcity") indexArray = 2;
        else if(external.SCity.Text == "angelscity") indexArray = 0;
        else if(external.SCity.Text == "demonscity") indexArray = 3;
        else if(external.SCity.Text == "mooncity") indexArray = 1;
        if(indexArray == -1) return false;
 
        for(var i = 0; i < allQuests[indexArray].length; i++)
            if(inf.match(allQuests[indexArray][i]))
                return true;
        return false;
    }
    catch(err)
    {
        external.AddToChat("Error in CheckForQuestInInv function");
    }
}
 
function isPickingQuest()
{
    try
    {
        if(external.SCity.Text == "suncity" && questName.match(/[(?:&quot;|<b>|\")]*(?:Грибн[аяыеух]* (?:[Шш]ляп[као]*|[Нн]ож[каеи]*))|[(?:&quot;|<b>|\")]*Глазик|[(?:&quot;|<b>|\")]*(?:Грибн[аяыеух]* [Гг]усениц)|[(?:&quot;|<b>|\")]*(?:Потерявш[ихсяйме]* [Гг]усениц)|[(?:&quot;|<b>|\")]*Улит[окаи]*|[(?:&quot;|<b>|\")]*Слизняк|[(?:&quot;|<b>|\")]*Кореш[окив]*|[(?:&quot;|<b>|\")]*(?:Отрост[кови]* [Гг]рибницы)|[(?:&quot;|<b>|\")]*Сем[еная]*|[(?:&quot;|<b>|\")]*(?:Мелки[ехйм]* [Хх]люп)|[(?:&quot;|<b>|\")]*(?:Пуст[аяуюие]* бутыл)/))
                return true;
        else if(external.SCity.Text.match(/sandcity|angelscity/) && questName.match(/[(?:&quot;|<b>|\")]*Хрустал[яь]|[(?:&quot;|<b>|\")]*(?:Дракон[ьегоий]* [Кк]ам[еньяй]*)|[(?:&quot;|<b>|\")]*Гранит|[(?:&quot;|<b>|\")]*(?:Пещерн[ыйого]* [Мм][оха]*)|[(?:&quot;|<b>|\")]*(?:Подгорн[ыхйе]* [Ээ]дельвейс)/))
                return true;
        else if(external.SCity.Text == "mooncity" && questName.match(/[(?:&quot;|<b>|\")]*Хрустал[яь]|[(?:&quot;|<b>|\")]*(?:Дракон[ьегоий]* [Кк]ам[еньяй]*)|[(?:&quot;|<b>|\")]*Гранит|[(?:&quot;|<b>|\")]*(?:Пещерн[ыйого]* [Мм][оха]*)|[(?:&quot;|<b>|\")]*(?:Подгорн[ыхйе]* [Ээ]дельвейс)|[(?:&quot;|<b>|\")]*Инструмент|[(?:&quot;|<b>|\")]*(?:Череп[аов]* [пП]утешественн)/))
                return true;
        return false;
    }
    catch(err)
    {
        external.AddToChat("Error in isPickingQuest function");
    }
}
 
function MoveToDung()
{
    try
    {
        if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/drwfl\("(?:Геммайя|Мухатор|Юверриат|Фелико)",\d*/) && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/завершить разговор|уйти/))
        {   
            external.AddToChat("Завис у диалогового бота");
            external.ClickLink(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/завершить разговор|уйти/)[0],2);           
        }
        else if(currentRoom == "Магазин" && top.frames[external.mainFrameIndex].check_access())
        {
            if(external.SCity.Text == "sandcity") external.ClickLink("Лавка Бартоломея",2);
            else if(external.SCity.Text.match(/suncity|angelscity|mooncity/)) external.ClickLink("Прилавки с товарами",2);
            else if(external.SCity.Text == "demonscity") external.ClickLink("Торговый Разлом",2);
        }
        else if (currentRoom == "Прилавки с товарами")
        {
            if(external.SCity.Text == "suncity") external.ClickLink("Центральная грибница",1);
            if(external.SCity.Text == "angelscity") external.ClickLink("Торговые скалы",1);
            if(external.SCity.Text == "mooncity") external.ClickLink("Рыночная площадь",1);
        }
        else if(currentRoom == "Бойцовский Клуб")
        {
            if(external.SCity.Text == "sandcity") external.ClickLink("Центральный Оазис",1);
            else if(external.SCity.Text == "angelscity") external.ClickLink("Центральный утес",1);
            else if(external.SCity.Text == "suncity") external.ClickLink("Центральная грибница",1);
            else if(external.SCity.Text == "mooncity") external.ClickLink("Центр падения",1);
            else if(external.SCity.Text == "demoncity") external.ClickLink("Центральный Разлом",1);
        }
        else if(currentRoom.match(/Зал воинов/))
            external.ClickLink("Бойцовский Клуб",1);
        else if (currentRoom == "Центральная грибница") //sun
            external.ClickLink("Грибная лужайка",1);
        else if(currentRoom == "Грибная лужайка")
            external.ClickLink("Странное Место",1);
        else if(currentRoom == "Странное Место")
            external.ClickLink("Грибная поляна",1);
        else if(currentRoom == "Грибная поляна")
            external.ClickLink("Грибница",1);            //end sun
        else if (currentRoom == "Лавка Бартоломея")        //sand
            external.ClickLink("Базар",1);
        else if (currentRoom == "Базар")
            external.ClickLink("Центральный Оазис",1);
        else if(currentRoom == "Центральный Оазис")
            external.ClickLink("Цветочный Пустырь",1);
        else if(currentRoom == "Цветочный Пустырь")
            external.ClickLink("Последний Привал",1);
        else if(currentRoom == "Последний Привал")
            external.ClickLink("Внутренний двор",1);
        else if(currentRoom == "Внутренний двор")   
            external.ClickLink("Пещеры Мглы",1);        //end sand
        else if (currentRoom == "Торговые скалы")         //angels
            external.ClickLink("Центральный утес",1);
        else if(currentRoom == "Центральный утес")
            external.ClickLink("Каменно-цветочная гряда",1);
        else if(currentRoom == "Каменно-цветочная гряда")
            external.ClickLink("Утес безысходности",1);
        else if(currentRoom == "Утес безысходности")
            external.ClickLink("Вход в Заповедник",1);
        else if(currentRoom == "Вход в Заповедник")       
            external.ClickLink("Спуск в Бездну",1);        //end angels
        else if(currentRoom == "Торговый Разлом")        //demons
            external.ClickLink("Разлом Великолепия",1);
        else if(currentRoom == "Разлом Великолепия")
            external.ClickLink("Центральный Разлом",1);
        else if(currentRoom == "Центральный Разлом")
            external.ClickLink("Разлом Поклонения",1);
        else if(currentRoom == "Разлом Поклонения")
            external.ClickLink("Дорога Храбрости",1);
        else if(currentRoom == "Дорога Храбрости")
            external.ClickLink("Спуск в катакомбы",1);
        else if(currentRoom == "Спуск в катакомбы" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/))
            external.ClickLink("Спуск в Катакомбы",1); //end demons
        else if (currentRoom == "Рыночная площадь")        //moon
            external.ClickLink("Центр падения",1);
        else if (currentRoom == "Центр падения")
            external.ClickLink("Спящая площадь",1);
        else if (currentRoom == "Спящая площадь")
            external.ClickLink("Улица Камней",1);
        else if (currentRoom == "Улица Камней")
            external.ClickLink("Проклятые руины",1);
        else if (currentRoom == "Проклятые руины")
            external.ClickLink("Пещера тысячи проклятий",1);
        else if(currentRoom == "Пещера Тысячи проклятий" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/))
            external.ClickLink("Пещера Тысячи проклятий",1);  //end moon
    }
    catch(err)
    {
        external.AddToChat("Error in MoveToDung function");
    }
}
 
function MoveFromDung()
{   
    try
    {
        if(currentRoom == "Пещера Тысячи проклятий" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/))
            external.ClickLink("Проклятые Руины",1);
        else if(currentRoom.match(/Спуск в Катакомбы|Пещеры Мглы|Пещера Тысячи проклятий|Грибница|Спуск в Бездну/))
        {
            if(external.SCity.Text == "suncity") external.ClickLink("Грибная поляна",2);
            else if(external.SCity.Text == "sandcity") external.ClickLink("Внутренний двор",2);
            else if(external.SCity.Text == "angelscity") external.ClickLink("Вход в Заповедник",2);
            else if(external.SCity.Text == "demonscity") external.ClickLink("Спуск в катакомбы",2);
            else if(external.SCity.Text == "mooncity") external.ClickLink("Пещера Тысячи проклятий",2);
        }
        else if(currentRoom == "Бойцовский Клуб")
            external.ClickLink("Зал воинов",1);
        else if(currentRoom == "Грибная поляна")            //sun
            external.ClickLink("Странное Место",1);
        else if(currentRoom == "Странное Место")
            external.ClickLink("Грибная лужайка",1);
        else if(currentRoom == "Грибная лужайка")
            external.ClickLink("Центральная грибница",1);     //end sun
        else if(currentRoom == "Спуск в катакомбы" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/))
            external.ClickLink("Дорога Храбрости",1);
        else if(currentRoom == "Дорога Храбрости")
            external.ClickLink("Разлом Поклонения",1);
        else if(currentRoom == "Разлом Поклонения")
            external.ClickLink("Центральный Разлом",1);
        else if(currentRoom == "Разлом Великолепия")
            external.ClickLink("Торговый Разлом",1);
        else if(currentRoom == "Торговый Разлом")
            external.ClickLink("Магазин",1);                //end dem         
        else if(currentRoom == "Проклятые Руины")            //moon
            external.ClickLink("Улица Камней",1);
        else if(currentRoom == "Улица Камней")
            external.ClickLink("Спящая площадь",1);
        else if(currentRoom == "Спящая площадь")
            external.ClickLink("Центр падения",1);          //end moon   
        else if(currentRoom == "Вход в Заповедник")            //ang
            external.ClickLink("Утес безысходности",1);
        else if(currentRoom == "Утес безысходности")
            external.ClickLink("Каменно-цветочная гряда",1);
        else if(currentRoom == "Каменно-цветочная гряда")
            external.ClickLink("Центральный утес",1);         //end ang
        else if(currentRoom == "Внутренний двор")            //sand
            external.ClickLink("Последний Привал",1);
        else if(currentRoom == "Последний Привал")
            external.ClickLink("Цветочный Пустырь",1);
        else if(currentRoom == "Цветочный Пустырь")
            external.ClickLink("Центральный Оазис",1);        //end sand
        else if(currentRoom == "Магазин" && external.SCity.Text == "demonscity" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.indexOf("dem_newbot_magaz") > 0)
            external.ClickLink("dem_newbot_magaz",3);
        else if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/drwfl\("(?:Илена|Мафи|Бартоломей|Амарл)",\d*/) && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/подойти к прилавк[аму]*|пройти к прилавк[аум]*/))
            external.ClickLink(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/подойти к прилавк[аму]*|пройти к прилавк[аум]*/)[0],2);
        else if (currentRoom.match(/Центральная грибница|Торговые скалы/))
            external.ClickLink("Прилавки с товарами",1);
        else if (currentRoom == "Прилавки с товарами" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Илена|Мафи/))
            external.ClickLink(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Илена|Мафи/)[0],3);
        else if (currentRoom == "Базар")
            external.ClickLink("Лавка Бартоломея",1);
        else if (currentRoom == "Лавка Бартоломея")
            external.ClickLink("Бартоломей",3);
        else if (currentRoom.match(/Центральный Оазис|Центральный утес|Центральная грибница|Центр падения|Центральный Разлом/))
        {
            if(!enableSellInShop && !dungMode) external.ClickLink("Бойцовский Клуб",1);
            if(!beenInShop && enableSellInShop)
            {
                if(currentRoom == "Центральный Разлом")
                    external.ClickLink("Разлом Великолепия",1);
                else if (currentRoom == "Центральный утес")
                    external.ClickLink("Торговые скалы",1);
                else if (currentRoom == "Центральный Оазис")
                    external.ClickLink("Базар",1);
                else if (currentRoom == "Центральная грибница")
                    external.ClickLink("Прилавки с товарами",1);
                else if (currentRoom == "Центр падения")
                    external.ClickLink("Рыночная площадь",1);   
            }
        }
    }
    catch(err)
    {
        external.AddToChat("Error in MoveFromDung function");
    }
}
 
function doLoad(url)
{
    try
    {
        if (window.XMLHttpRequest) req = new XMLHttpRequest();
        else req = new ActiveXObject("Microsoft.XMLHTTP");     
        req.open("GET", url, false);
        req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
        req.send(null);
        return req.responseText;
    }
    catch(err)
    {
        external.AddToChat("Error in doLoad function");
    }
}
 
function GetPathFileName()
{
    try
    {
        if(external.SCity.Text == "suncity") return pathSun;
        else if(external.SCity.Text == "sandcity") return pathSand;
        else if(external.SCity.Text == "angelscity") return pathAngels;
        else if(external.SCity.Text == "demonscity") return pathDemons;   
        else if(external.SCity.Text == "mooncity") return pathMoon;   
        return "";
    }
    catch(err)
    {
        external.AddToChat("Error in GetPathFileName function");
    }
}