176

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

А так же как сделать что бы он не создавал бои а только присоеденялся?

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

Как выставить что бы бот заходил и в обычные а не только в скрытые хаоты, а то почему то он в открытые не заходит и сам свою создает.

На данный момент можно только ИЛИ невидимые, ИЛИ видимые.

177

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

Вы должны зайти под своим именем, чтобы увидеть скрытый текст.

178

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

if(top.Battle.oBattle.oMySlot.nMagic < 50)
\\ если хп меньше 50 ед. не бить совсем

Тут слуачем не ошибка? В комменте говорится про ХП, а в условии стоит мана.

Что писать что бы совсем не бил?

т.е. чтобы ничего не юзал, или чтобы вообщен е ставил размен?

179

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

В простонародье: планировщик заданий
taskschd.msc в командной строке

180

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

Перезагрузка компа? Макрорекордер? Зачем, если есть виндовый шедулер?

drsn пишет:

скажите, если у меня уже больше нету заданий в даной пещере, то плагин продажи шмота в гос будет работать или нет? ( ну который встроеный в полной версии)

Теоретически, должен работать.

Режим dungMode задается вручную.
Убрал вывод мессаг о задании когда чар в подземке

zadanieLurker
()
zadanieLight
()
zadanie
()

нужен только тот что выше. тот что ниже был актуален, когда уменьшили время регена. Пройду домой - поток лишнее

дебажить времени не будет
переделаю, чтобы режим работы задавался вручную

()
все уже написано

LurkeR82 пишет:

Exile
Не удалось посмотреть?

поздно прихожу домой. м.б. сегодня-завтра

187

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

zud пишет:

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

Не можешь найти потому что никто плагина такого еще не написал.
Но ты можешь стать человеком дня, написав плагин и отпостив его на форуме)

188

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

koa пишет:

можно специально для тебя два окошка сделаьь [1] [234] так !!!!

Ога. И из-за того, что тебе впадлу нажать пару раз клавишу цифры, анахронику теперь добавлять текстбокс и писать десятка два строк кода?

возможно криво срабатывает включение режима
дома проверю

LurkeR82 пишет:

Скажите, у всех ли корректно работают плагины?
Почему-то у меня когда плагин включен и бот копает,  постоянно выскакивают надписи в чате "Ошибка" или "Задержка на поход в пещеру", если выйти из мещеры, то бот задание не берет и пытается начать хаотичные бои.

автостарт данжа запущен?

191

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

Эмм...я что-то совсем не представляю, как такой плагин будет взаимодействовать с работой самого клиента?
Если такое и делать, то делать это надо в самом боте...так что Анахроник если и сделает, то

ZhEkA_BK пишет:

Данное нововведение ждите в 16й версии  big_smile

zadanieLight, т.е. без режима продажи в гос
()
zadanieLurker, т.е. с походом в гос раз в сутки
()
Второй вариант с режимом похода в гос раз в сутки. ( срабатывает после завершения задания). Вроде правильно сделал.

LurkeR82 пишет:

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

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

LurkeR82 пишет:

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

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

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 zadanieTimer = {};
var sellTimer = {};
var currentQuestChecked = false; //показывает, выполнялась ли проверка на задание
var questIsActive = false; //показывает, имеется ли задание
var needToFinish = false; //показывает, нужно ли завершить задание
var pathAngels = ""; //имя файла маршрута бездны
var pathDemons = ""; //имя файла маршрута кат
var pathSun = ""; //имя файла маршрута грибов
var pathSand = ""; //имя файла маршрута мглы
var pathMoon = ""; //имя файла маршрута птп
var room ='';
var randomValue;
var min = 360000;
var max = 400000;
var dungMode = false;
var questName = "";
var questID = "";
var needToDo = -1;
var hasBeenDone = -1;
var needToFinish = false;
var dungStarted = false;
var enableSellInShop = false; // режим продажи пуршмота в гос
var beenInShop = true;
var itemsToSell = [];
itemsToSell.push("Обычные стрелы для арбалета");
 
function zadanie(enabled)
{
    if(enabled)
    {
        if(external.dungeonEnabled) dungMode = true;
        proverkaTimer[mylogin] = setInterval("proverkaHandler()",2000);
        sellTimer[mylogin] = setInterval("SellAction()", 1000);
    }
    else
    {
        if(zadanieTimer[mylogin]) clearInterval(zadanieTimer[mylogin]);
        external.SBattleAbovePercent.Text = 100;
        clearInterval(proverkaTimer[mylogin]);
        clearInterval(sellTimer[mylogin]);
    }
}
 
Array.prototype.inArray = function(item)
{
    for (var i in this)
        if (item.indexOf(this[i]) > -1)
            return true;
    return false;
}
 
function SellAction()
{
    try
    {
        if(!external.Started()) return;
        if(top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i))
        {
            beenInShop = false;
            return;
        }
 
        var s = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
        if(room = temp_p.match(/<nobr>([^<]+)<\/nobr>/))
            room = String(room[1]);
        else if(top.frames[external.mainFrameIndex].document.getElementsByName("quest_name").length > 0)
            room = "inQuestWindow";
            else
                room = "inDialog";
        if(!enableSellInShop) return;
        if(!beenInShop)
        {           
            if(room != "Магазин")
                MoveToShop();
            else
            {               
                if(!s.match(/Отдел \"Скупка\"/i))
                    external.ClickLink("Продать вещи",4);
                else
                {
                    var items = s.match(/<a\shref="shop\.pl\?sl=[^"]*">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>[^&<]*/ig);
                    if(items != null)
                        for(var i = 0; i < items.length; i++)
                        {
                            items[i] = items[i].match(/<a\shref="(shop\.pl\?sl=[^"]*)">продать за .*? кр.<\/a><\/td>[\s\n\r]*<td[^>]*><a [^>]*>([^&<]*)/i);
                            items[i][1] = items[i][1].replace(/&amp;/g, '&');
                            if(itemsToSell.inArray(items[i][2]))
                            {
                                top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + items[i][1];
                                return;
                            }
                        }
                    beenInShop = true;
                }
            }
        }
        else
            MoveFromShopToDung();
    }
    catch(err)
    {
        external.AddToChat("error");
    }
}
 
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;
            dungStarted = false;
        }
 
        if(!dungMode)
            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]) clearInterval(zadanieTimer[mylogin]);
            zadanieTimer[mylogin] = setInterval("zadanieHandler()",2000);
 
        if(temp_inf.match(tempstr))
        {
            external.AddToChat("Задания не требуется");
            currentQuestChecked = true;
            questIsActive = false;
            return;
        }
        var patt = external.SCity.Text + " - \\d+ (мин|ч.|сек)";
 
        if(temp_inf.match(/Время до подземелья/))
        {
            currentQuestChecked = true;
            questIsActive = false;
            external.AddToChat("Задержка на поход в пещеру");
            return;
        }
        if(GetQuestFromInfo(temp_inf))
        {
            external.AddToChat("Задание:");
            top.Chat.Self.AddMessage(questName + " " + hasBeenDone + "/" + needToDo);
            currentQuestChecked = true;
            questIsActive = true;
            if(!isPickingQuest() && hasBeenDone >= needToDo) needToFinish = true;
        }
        else if(!temp_inf.toLowerCase().match(patt))
        {
            external.AddToChat("Требуется взять задание");
            currentQuestChecked = false;
            questIsActive = false;
        }
        else
        {
            external.AddToChat("Задержка на взятие задания");
            currentQuestChecked = true;
            questIsActive = false;
        }
    }
    catch(err)
    {
        external.AddToChat("error");
    }
}
 
function zadanieHandler()
{
    try
    {
        if(dungStarted || top.Battle.bInBattle || top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i) || !external.Started()) return;
        if(enableSellInShop && !beenInShop) return;
        if(!room.match(/(Спуск в Катакомбы)|(Пещера Тысячи проклятий)|(Пещеры Мглы)|inQuestWindow|Грибница|(Спуск в Бездну)/))
            if(dungMode || (!(!questIsActive && currentQuestChecked) && !dungMode))
            {
                MoveToDung();
                return;
            }
 
        if(questIsActive && currentQuestChecked && !needToFinish)
        {
            if(room == "inQuestWindow" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Для вас нет заданий/))
            {
                questIsActive = false;
                external.ClickLink("Вернуться",4);
                return;
            }
 
            if(room == "inQuestWindow" && GetQuestFromInfo(top.frames[external.mainFrameIndex].document.all[0].innerHTML))
            {   
                external.AddToChat("Задание:");
                top.Chat.Self.AddMessage(questName + " " + hasBeenDone + "/" + needToDo);
            }
 
            if(room == "inQuestWindow" && top.frames[external.mainFrameIndex].document.getElementsByName("quest_name").length > 0)
                external.ClickLink("Вернуться",4);
            else if(room != "inQuestWindow" && room.match(/(Спуск в Катакомбы)|(Пещера Тысячи проклятий)|(Пещеры Мглы)|Грибница|(Спуск в Бездну)/) && top.frames[external.mainFrameIndex].document.getElementsByName("quest_name").length == 0)
            {
                var fp = GetPathFileName();
                if(fp == "")
                {
                    external.AddToChat("неверный файл");
                    return;
                }
 
                if(!dungMode)
                {
                    external.DungeonLoadPath(fp);
                    external.dungeonEnabled = true;
                    external.SBattleAbovePercent.Text = 100;
                }               
                dungStarted = true;
            }
        }
        else if(!currentQuestChecked || needToFinish)
        {
            if(room.match(/(Спуск в Катакомбы)|(Пещера Тысячи проклятий)|(Пещеры Мглы)|Грибница|(Спуск в Бездну)/) && (!currentQuestChecked || needToFinish))
                    external.ClickLink("Задания",4);
            else if(room.match(/inQuestWindow/) && top.frames[external.mainFrameIndex].document.getElementsByName("quest_name").length > 0 && (!currentQuestChecked || needToFinish))
                {
                    var btns = top.frames[external.mainFrameIndex].document.getElementsByName("finishquest");
                    if(questID != "" && needToFinish && btns)
                    {
                        if(dungMode && isPickingQuest() && (hasBeenDone < (Math.floor(needToDo/4) + needToDo)))
                        {
                            currentQuestChecked = true;
                            questIsActive = true;
                            return;
                        }
 
                        for(var i = 0; i < btns.length; i++)
                            if(btns[i].onclick && String(btns[i].onclick).match(questID) && btns[i].style.visibility != "hidden")
                            {
                                currentQuestChecked = false;
                                questIsActive = false;
                                needToFinish = false;
                                questName = "";
                                questID = "";
                                needToDo = -1;
                                hasBeenDone = -1;
                                external.AddToChat("Завершаем задание");
                                btns[i].click();
                                return;
                            }
                    }
 
                    var gotRep = top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Вы получили \d* награды за выполнение задания/);
                    if(gotRep) external.AddToChat(gotRep);
 
                    if(!top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Репутация в Suncity: 0/))
                    {
                        currentQuestChecked=true;
                        questIsActive = true;
                        if(external.ClickLink("Получить задание",4))
                            external.AddToChat("Работает взятие задания");
                        else
                            external.AddToChat("Задание уже есть");                       
                    }
                }               
        }
        else if(!questIsActive && currentQuestChecked)
        {
            if(dungMode)
            {   
                if(!room.match(/(Спуск в Катакомбы)|(Пещера Тысячи проклятий)|(Пещеры Мглы)|Грибница|(Спуск в Бездну)/))
                    MoveToDung();
                return;
            }
            external.dungeonEnabled = false;
 
            if(room != "Зал воинов")
                MoveFromDung(room);
            else
                external.SBattleAbovePercent.Text = 100;
        }
    }
    catch(err)
    {
        external.AddToChat("Ошибка!");
    }
}
 
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;
}
 
function CheckForQuestInInv(inf)
{
    var index = -1;
    switch (external.SCity.Text)
    {
        case "suncity":
            index = 4;
            break
        case "sandcity":
            index = 2;
            break
        case "angelscity":
            index = 0;
            break
        case "demonscity":
            index = 3;
            break
        case "mooncity":
            index = 1;
            break
        default:
            external.AddToChat("err");
    }
 
    var res = "";
    for(var i = 0; i < allQuests[index].length; i++)
        if(res = inf.match(allQuests[index][i]))
            return res;
    return "";
}
 
function GetPathFileName()
{
    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 "";
}
 
function MoveTo()
{
    switch (external.SCity.Text)
    {
        case "suncity":
            return "Грибная поляна"
        case "sandcity":
            return "Внутренний двор"
        case "angelscity":
            return "Вход в Заповедник"
        case "demonscity":
            return "Спуск в катакомбы"
        case "mooncity":
            return "Пещера Тысячи проклятий"
        default:
            return null
    }
}
 
function GetQuestFromInfo(inf)
{
    try
    {
        var flds = inf.match(/<fieldset>\s+<legend>\sТекущие (?:квесты|задания)[^@]*<\/fieldset>/i);
        var res = flds[0].match(/<img[^>]*>[^(?:span)]*<span [^>]*>\d*\/\d*<\/span>/ig);
        if(!res) return false;
         for(var i = 0; i < res.length; i++)
        {
            var tmp = res[i].match(/<img[^}]*[^(?:quest_name)]*quest_name=([^&]*)[^>]*>([^(?:span]*)<span[^>]*>(\d*)\/(\d*)<\/span>/i);
            if(CheckForQuestInInv(tmp[2]))
            {
                // 0 == all
                // 1 == quest id
                // 2 == quest name
                // 3 == left to do
                // 4 == need to do
                questID = tmp[1];
                questName = tmp[2];
                needToDo = tmp[4];
                hasBeenDone = tmp[3];
                return true;
            }
        }
        return false;
    }
    catch(err)
    {
        external.AddToChat("wtf");
    }
}
 
function isPickingQuest()
{
    if(external.SCity.Text == "suncity")
    {
        if(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 == "sandcity" || external.SCity.Text == "angelscity")
    {
        if(questName.match(/[(?:&quot;|<b>|\")]*Хрустал[яь]|[(?:&quot;|<b>|\")]*(?:Дракон[ьегоий]* [Кк]ам[еньяй]*)|[(?:&quot;|<b>|\")]*Гранит|[(?:&quot;|<b>|\")]*(?:Пещерн[ыйого]* [Мм][оха]*)|[(?:&quot;|<b>|\")]*(?:Подгорн[ыхйе]* [Ээ]дельвейс)/))
            return true;
    }
    else if(external.SCity.Text == "mooncity")
    {
        if(questName.match(/[(?:&quot;|<b>|\")]*Хрустал[яь]|[(?:&quot;|<b>|\")]*(?:Дракон[ьегоий]* [Кк]ам[еньяй]*)|[(?:&quot;|<b>|\")]*Гранит|[(?:&quot;|<b>|\")]*(?:Пещерн[ыйого]* [Мм][оха]*)|[(?:&quot;|<b>|\")]*(?:Подгорн[ыхйе]* [Ээ]дельвейс)|[(?:&quot;|<b>|\")]*Инструмент|[(?:&quot;|<b>|\")]*(?:Череп[аов]* [пП]утешественн)/))
            return true;
    }
    return false;
}
 
function MoveToDung()
{
    if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная лужайка",3);
    else if(room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Странное Место",3);
    else if(room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная поляна",3);
    else if(room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибница",3);
    else if(room == "Бойцовский Клуб" && external.SCity.Text == "suncity" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральная грибница",3);
    else if(room == "Бойцовский Клуб" && external.SCity.Text == "angelscity" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный утес",3);
    else if(room == "Бойцовский Клуб" && external.SCity.Text == "mooncity" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центр падения",3);
    else if(room == "Бойцовский Клуб" && external.SCity.Text == "sandcity" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный Оазис",3);
    else if(room == "Бойцовский Клуб" && external.SCity.Text == "demoncity" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный Разлом",3);
    else if(room.match(/Зал воинов/i) && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("\'Бойцовский Клуб\'",3);
    else if(room == "Центральный утес" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Каменно-цветочная гряда",3);
    else if(room == "Каменно-цветочная гряда" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Утес безысходности",3);
    else if(room == "Утес безысходности" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Вход в Заповедник",3);
    else if(room == "Вход в Заповедник" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Спуск в Бездну",3);
    else if(room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Цветочный Пустырь",3);
    else if(room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Последний Привал",3);
    else if(room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Внутренний двор",3);
    else if(room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Пещеры Мглы",3);
    else if(room == "Центр падения" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Спящая площадь",3);
    else if(room == "Спящая площадь" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Улица Камней",3);
    else if(room == "Улица Камней" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Проклятые Руины",3);
    else if(room == "Центральный Разлом" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Разлом Поклонения",3);
    else if(room == "Разлом Поклонения" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Дорога Храбрости",3);
    else if(room == "Дорога Храбрости" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Спуск в катакомбы",3);
    else if(room == "Проклятые Руины" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Пещера Тысячи проклятий",3);
    else if(room == "Спуск в катакомбы" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Спуск в Катакомбы",3);
    else if(room == "Пещера Тысячи проклятий" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Пещера Тысячи проклятий",3);
}
 
function MoveFromDung()
{
    if(room.match(/(Спуск в Катакомбы)|(Пещера Тысячи проклятий)|(Пещеры Мглы)|Грибница|(Спуск в Бездну)/))
        external.ClickLink(MoveTo(),2);
    else if(room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Странное Место",3);
    else if(room == "Спуск в катакомбы" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Дорога Храбрости",3);   
    else if(room == "Пещера Тысячи проклятий" && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Никогда и никому не говорите пароль от своего персонажа/) && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Проклятые Руины",3);
    else if(room == "Дорога Храбрости" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Разлом Поклонения",3);
    else if(room == "Разлом Поклонения" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный Разлом",3);               
    else if(room == "Проклятые Руины" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Улица Камней",3);
    else if(room == "Улица Камней" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Спящая площадь",3);
    else if(room == "Спящая площадь" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центр падения",3);
    else if(room == "Центр падения" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Бойцовский Клуб",3);                 
    else if(room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная лужайка",3);
    else if(room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральная грибница",3);
    else if(room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Бойцовский Клуб",3);
    else if(room == "Бойцовский Клуб" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Зал воинов",3);
    else if(room == "Вход в Заповедник" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Утес безысходности",3);
    else if(room == "Утес безысходности" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Каменно-цветочная гряда",3);
    else if(room == "Каменно-цветочная гряда" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный утес",3);
    else if(room == "Центральный утес" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Бойцовский Клуб",3);
    else if(room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Последний Привал",3);
    else if(room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Цветочный Пустырь",3);
    else if(room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный Оазис",3);
    else if(room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Бойцовский Клуб",3);
}
 
function MoveToShop()
{
    if(room == "inDialog" && (s.match(/drwfl\("Илена",/i) || s.match(/drwfl\("Бартоломей",/i)))
        external.ClickLink("подойти к прилавку",2);
    else if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Прилавки с товарами",3);
    else if (room == "Грибница" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная поляна",2);
    else if (room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Странное Место",3);
    else if (room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная лужайка",3);
    else if (room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральная грибница",3);
    else if (room == "Прилавки с товарами")
        external.ClickLink("Илена",3);
    else if (room == "Пещеры Мглы" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Внутренний двор",2);
    else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Последний Привал",3);
    else if (room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Цветочный Пустырь",3);
    else if (room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный Оазис",3);
    else if (room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Базар",3);
    else if (room == "Базар" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Лавка Бартоломея",3);
    else if (room == "Лавка Бартоломея")
        external.ClickLink("Бартоломей",3);
}
 
function MoveFromShopToDung()
{
    if (room == "Магазин" && top.frames[external.mainFrameIndex].is_accessible)
    {
        if(s.match(/Лавка Бартоломея/)) external.ClickLink("Лавка Бартоломея",2);
        if(s.match(/Прилавки с товарами/)) external.ClickLink("Прилавки с товарами",2);
    }
    else if (room == "Лавка Бартоломея" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Базар",3);
    else if (room == "Базар" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральный Оазис",3);
    else if (room == "Центральный Оазис" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Цветочный Пустырь",3);
    else if (room == "Цветочный Пустырь" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Последний Привал",3);
    else if (room == "Последний Привал" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Внутренний двор",3);
    else if (room == "Внутренний двор" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Пещеры Мглы",3);
    else if (room == "Прилавки с товарами" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Центральная грибница",3);
    else if (room == "Центральная грибница" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная лужайка",3);
    else if (room == "Грибная лужайка" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Странное Место",3);
    else if (room == "Странное Место" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибная поляна",3);
    else if (room == "Грибная поляна" && top.frames[external.mainFrameIndex].is_accessible)
        external.ClickLink("Грибница",3);
}

Добавил режим продажи пуршмота в гос.
включается вот сдесь:

var enableSellInShop = false; // режим продажи пуршмота в гос

Тестируйте
Маршруты для режима прописаны только для сана и санда.
По аналогии для оставшихся городов делаются за пару минут

Блеааааа...
убейте меня
я запутался в строках своего говнокода(

197

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

hyppo пишет:

Маздик. Старый колхозник smile Зажигательный был игрок. Жаль что проект теряет таких игроков sad

Вы должны зайти под своим именем, чтобы увидеть скрытый текст.

Красава)))

198

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

external.AddToChat почему-то не хочет выводить текст с экранированными ковычками \"

А проверить "Подземелье" -> "Включено" true/false как-то можно? True - не загружать карту, она и так есть, False - загрузить и включить. Или плагин не предусматривает/предусматривал непосредственно выполнение задания и возврат в хаоты, как ты задумывал?

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

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

сдать ЭТО задание

Как я пойму, что кнопка Завершить именно для этого задания?
Повторяю, без исходника страницы с кнопкой Завершить задание я ничего сделать не могу. Пока что я лишь могу определить, есть ли задание в этом городе.