76

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

Вася Пупкин пишет:

...только вопрос, что означают цыфры после названии локации? external.ClickLink("Торговый Лес",3)

// type:
// 1 - переход по картинке(поиск именно функции перехода), не чувствителен к регистру;
// 2 - поиск по текстовой ссылке,чувствителен к регистру;
// 3 - по найденному в картинке тексту(outerHTML), не чувствителен к регистру;
// 4 - поиск по value среди input-элементов,чувствителен к регистру;
// не задано - поиск во всех.

77

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

вкатали травму, вылечился и пошел на ЦП, а после тупо обновляется и стоит на месте.

78

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

поставить один вид и будет лепить хоть до уника

79

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

Почистить кэш ИЕ не пробовали?

80

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

Сталкивался и это не только в ТН, но для ТН есть хорошая статейка на подземке
subway.in.ua/lib_articles.php?page=articles_tn&case=tactics

81

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

Висячка пишет:

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

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

82

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

else
        if(doc.indexOf("Выплавить серебро") > -1)
            external.ClickLink("Выплавить серебро",2)
            else
        if(doc.indexOf("Выплавить серебро") > -1)
            external.ClickLink("Выплавить серебро",2)
            else

Наверно подразумевался в одном случае свинец

83

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

А из 105 пробовали?

84

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

Удалил, дабы не вносить путаницу smile

85

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

Boriska69 пишет:
Вася Пупкин пишет:

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

Полностью солидарен!!!

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

86

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

re-shik пишет:

Добрый день. Не могу понять. Туманные низины. Заходит в кузницу, сливает, а вот выходить не хочет. Все время моргает. Что нужно сделать? Плагин не менял, сделал по примеру с самого сверху.

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

87

(15 ответов, оставленных в Флейм)

когда-то играя ручками засыпал за компом... и пастаянна пропускал ходы smile
ведь не факт что это бот, мож драйвер устал батоны жать::: wink

88

(10 ответов, оставленных в Флейм)

По трассировке и пингу ошибка идет "Заданный узел недоступен" и хост файл тут не поможет.

Заработало smile

89

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

спасибо за оперативность. респект!

90

(5 ответов, оставленных в Флейм)

Вася Пупкин пишет:

может кто писал плагин для ловли купидунов?

проще и быстрее вставить в приемы

_name="1411_kup_shredd_iskus";

91

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

anahronik пишет:

Нет, не слетит.
external'ы были сделаны, чтобы переменные ваши хранились не как глобальные переменные страницы, а в закрытой части бота.
Для безопасности.

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

Перечень экстерналов имеется, а вот где бы взять их описание и примеры использования?

92

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

По маршрутам ничего не могу подсказать... у самого много вопросов.
Как вариант:
в предыдушей клетке объявить переменную

var third = true;

а в нужной изменить значение

var third = false;

93

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

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

...location = listA[n*2];

Надеюсь что понятно объяснил.

94

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

Exile

(?:x) - Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp. Как и все скобки, объединяют находящееся в них в единый подпаттерн.


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

95

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

El_Paso пишет:

А как сделать, чтоб бот в кузницу заходил?! Или это уже в плагине есть?!

это уже в маршруте нужно делать.
плагин только соединяет ваши чарки.

96

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

ZhEkA_BK пишет:

Круто. Но не хватает приоритета по качеству чарок. Лучше потратить оковы на F чарку, если всего хватает, чем на P чарку. Хотя может тут и есть, но я не доглядел smile
P.S: как сделать я не знаю,  это пока выше моего уровня знаний.

Без списков приоритета чарки делаются с понижением качества, т.е. сначала L, а уж потом остальное.
Приоритет для того чтобы сделать именно нужную чарку или чарки, но уже с повышением качества.
Игнор пропускается и не обрабатывается.

97

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

SPOILER Show

//"Серьги", "Ожерелье", "Оружие", "Броню", "Пояс", "Кольцо", "Шлем", "Щит", "Перчатки", "Обувь", "Наручи", "Поножи"
var ignor_enhp = ["Оружие","Щит"];//список игнорируемых
var piora_enhp = ["Ожерелье","Броню","Перчатки","Поножи"];//список приоритета делается в том порядке как Вы укажете
 
function Stithy(enabled) {
    if ( enabled )
        PluginsOnLoad["Stithy"] = "StithyHandler";
    else
        PluginsOnLoad["Stithy"] = "";
}
 
Array.prototype.inArray = function (enhp) {
    for ( var k in this )
        if ( enhp.indexOf(this[k] ) > -1)
            return true;
    return false;
};
 
function StithyHandler() {
    try {
        if ( !external.dungeonEnabled || !external.Started() ) return;
 
        var tmpStithy = get_mainframe().document.all[0].innerHTML;
//поиск, определение чарки для покупки
        if ( tmpStithy.match(/Отдел \"Повышение качества\"/i) ) {
            var linkColor = [];
            var numColor = [];
            var linkColorL = [];
            var numColorL = [];
            var listA = get_mainframe().document.links;
            var lineColor = tmpStithy.match(/Требуется предмет\: <B>(|<FONT color=red>)\[Зачаровать (.*?) \[(\d+)\] (\w+)\]x(\d+),/ig);
            if ( lineColor.length != null ) {
                for ( var n=0;n<lineColor.length;n++ ) {
                    lineColor[n] = lineColor[n].match(/Требуется предмет\: <B>(|<FONT color=red>)\[Зачаровать (.*?) \[(\d+)\] (\w+)\]x(\d+),/i);
                    if ( lineColor[n][1] != "<FONT color=red>" ) {
                        if ( piora_enhp.inArray(lineColor[n][2]) ) {
                            linkColorL.unshift(listA[n*2]);
                            numColorL.unshift(n);
                        }
                        if ( ignor_enhp.inArray(lineColor[n][2]) != true ) {
                            linkColor.unshift(listA[n*2]);
                            numColor.unshift(n);
                        }
                    }
                }
                var allLink = linkColorL.concat(linkColor);
                var allNum = numColorL.concat(numColor);
                if ( allLink.length>0 ) {
                    external.AddToChat(allNum[0]+" Соединили "+lineColor[allNum[0]][2]+" ["+lineColor[allNum[0]][3]+"] "+lineColor[allNum[0]][4]);
                    get_mainframe().location = allLink[0];
                }
            }
//выход
            var path;
            if ( tmpStithy.match(/Вы купили/i) || allLink.length==0 ) {
                path = tmpStithy.match(/path=(m1|m3|m5|m7)/i);
                get_mainframe().location = "http://"+external.SCity.Text+".combats.com/shop.pl?rnd="+Math.random()+"&path="+path[1];
            }
        }
    }
    catch(err) {
        external.AddToChat(err.description);
    }
}


Файл обозвать Stithy.js
Предложения приветствуются.

98

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

Висячка пишет:

БатоВед

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

Так Ваш вариант собственно и реализован. Разница только в том, что я написал "Болезнь" и добавил юз противоядия.

99

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

В конструкторе маршрутов предлагаю при нажатии "Получить текущую позицию" в итоговом поле указывать и действия на этой клетке.
И по поводу "Т.е. на улице он один раз нажмет и ждет." позвольте не согласится.
Здесь все зависит от настройки тайма действий бота вне боя.
Хорошо бы проверить и подправить этот момент.
ЗЫ. Добавить возможность работы с XML файлами, по аналогии с небезызвестными клиентами.
Вариант external.storage.getPersistentVariable('имя переменной')

100

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

var temp_inf = "";
var temp_inf_razdel = 0;
 
function Morkovka(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["Morkovka"] = "MorkovkaHandler";
 
    }
    else
    {
        PluginsOnLoad["Morkovka"] = "";
    }
}
 
 
function MorkovkaHandler(url)
{
    if (top.Battle.bInBattle)return;
 
    var hpRemain = parseInt(maxHP - tkHP);
    var manaRemain = 0;
    if(window.tkMana)
        manaRemain = parseInt(maxMana - tkMana);
    var morkovkaName = [];
 
    if(external.room_name=='Грибница' && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/(?:Слабость к (?:Воде|Огню|Воздуху))|(?:Дрожь в коленях)/i))
    {
        temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?edit=3&rnd=" + Math.random());
        temp_inf_razdel = 3;
    }
    if(external.room_name=='Катакомбы' && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/(?:Болезнь)|(?:Грязная кровь)/i))
    {
        temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?edit=3&rnd=" + Math.random());
        temp_inf_razdel = 3;
    }
 
    if(temp_inf && (temp_inf.match(/Слабость к (?:Воде|Огню|Воздуху)/i) || temp_inf.match(/Дрожь в коленях/i)))
    {   
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Печень Гусеница");
        morkovkaName[morkovkaName.length-1].push(3);
    }
    if(temp_inf && temp_inf.match(/Болезнь/i))
    {   
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Сыворотка");
        morkovkaName[morkovkaName.length-1].push(3);
    }
    if(temp_inf && temp_inf.match(/Грязная кровь/i))
    {   
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Противоядие");
        morkovkaName[morkovkaName.length-1].push(3);
    }
    if(temp_inf && temp_inf.match(/Болезнь/i))
    {   
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Печень Гусеница");
        morkovkaName[morkovkaName.length-1].push(3);
    }
 
    if(tkHP < 100) {
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Сосуд жизненных сил");
        morkovkaName[morkovkaName.length-1].push(4);//Раздел инвентаря, где лежит эликсир. 2- раздел "Эликсиры", 3 - "Прочее"
    }
    if(hpRemain > 500) {
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Глоток Легкой Жизни");
        morkovkaName[morkovkaName.length-1].push(3);
    }
    //else
    if(hpRemain > 150) {
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Заживляющий Эликсир");
        morkovkaName[morkovkaName.length-1].push(3);
    }
    //else
    if(hpRemain > 50) {
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Заживляющая Настойка");
        morkovkaName[morkovkaName.length-1].push(3);
    }
 
    if(morkovkaName.length > 0)
    for(x=0;x<=(morkovkaName.length-1);x++){
        if(Morkovka2Handler(morkovkaName[x][0],morkovkaName[x][1]))
            break;
    }
}
 
function Morkovka2Handler(elikName,razdel)
{
    if(temp_inf_razdel != razdel)
        temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?edit="+razdel+"&rnd=" + Math.random());
 
    temp_inf_razdel = razdel;
    var m = elikName + "(\\s\\(x\\d+\\))?','main.pl',\\s'(.+?)',\\s'.*?',\\s(\\d+)";
 
    var found = temp_inf.match(m);
    if(found != null)
    {
        external.AddToChat("Выпиваю <b>\\\"" + elikName + "\\\"</b>");
        top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?use=" + found[2] + "&n=" + found[3];
    if(elikName == "Печень Гусеница" || elikName == "Почки Палочника")
        temp_inf = "";
        temp_inf_razdel = 0;
        return true;
    }
    return false;
}
 
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;
}

реализовал вот так, работает