Тема: Кузница

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
Предложения приветствуются.

Отредактировано БатоВед (2014-03-30 00:25:01)

2

Re: Кузница

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

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

Re: Кузница

ZhEkA_BK пишет:

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

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

4

Re: Кузница

Спасибо за плаг! тестю вовсю!   cool

5

Re: Кузница

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

Re: Кузница

El_Paso пишет:

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

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

7

Re: Кузница

Так вот и вопрос - как это прописать в маршруте? smile Помогите smile
P.S. Да и еще момент... ведь к кузнице нужно 5 раз подходить и молот брать... как бы вот это еще реализовать?

Отредактировано El_Paso (2013-02-06 00:05:02)

8

Re: Кузница

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

SPOILER Show
bd9b9b8041e7d666abc8bf62899ea3b8 : UseObjects(); AttackMobs(); Walk("rl");
acaf119b46ea8fe2410a30ab26ce94f6 : AttackMobs(); UseObjects();
d603c41ebb4ad7ac53b2210b0fa04c61 : Walk("rl");
9674e2eeb08c16d2c00eb2347ceffb06 : AttackMobs(); Walk("m1");
5b935948150a014bc2c09629aed5b0b2 : UseObjects(); AttackMobs(); if(dungeonMovementCount["5b935948150a014bc2c09629aed5b0b2"] == 2) Walk("m1"); else Walk("rl");

Отредактировано нолик (2013-02-06 09:05:27)

9

Re: Кузница

(|<FONT color=red>)

что-то я не могу догнать что делает эта конструкция
Если юзать так, 

(?:<FONT color=red>)

то можно избавиться от одной проверки
да и локейшн фрейма изменяется не очень красиво

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

10

Re: Кузница

Exile,дорогой,ты не освободился?)

Вранье.Вранье.Вранье.Правда.(с)Rand

11

Re: Кузница

Exile

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


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

12

Re: Кузница

БатоВед пишет:

(?:x)

Ой, пардон.
Не то предложил.

(/Требуется предмет\: <B>(?!<FONT color=red>)\[Зачаровать (.*?) \[(\d+)\] (\w+)\]x(\d+),/ig);
Оставь надежду всяк сюда входящий ©

13

Re: Кузница

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

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

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

14

Re: Кузница

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

cf047870cbe361472645fbb3760ce855 : external.SetVal("third",false); Walk("rl");

так бот не хочет шагать налево в этой строчке.
И, если не сложно, не могу вспомнить синтаксис вывода сообщения в чат:
top.Chat.Self.AddMessage("Выполнено"); так он выведет текст, а как вывести переменную?
top.Chat.Self.AddMessage(XXX);- вот так не работает почему то. И как можно вывести external.GetVal в чат?

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

15

Re: Кузница

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

var third = true;

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

var third = false;

16

Re: Кузница

я вот тоже так думал, и работает даже, но при переходе с этажа на этаж, или при зависании БК переменная не слетит?

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

17

Re: Кузница

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

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

Software is like sex: it's better when it's free! © LinusTorvalds

18

Re: Кузница

Ну значит что-то с экстерналом случилось, т.к. код из 14 поста не работает. Бот шагать дальше не хочет. И проверить я не могу, записалась в память новая переменная или нет, т.к. забыл как работает вывод сообщений в чат  big_smile
Ну, на всякий случай, сегодня вечером еще раз проверю экстернал.

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

19

Re: Кузница

anahronik пишет:

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

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

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

20

Re: Кузница

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

acaf119b46ea8fe2410a30ab26ce94f6 : UseObjects(); AttackMobs(); 
if(dungeonMovementCount["acaf119b46ea8fe2410a30ab26ce94f6"] == 2) Walk("rl"); else Walk("m1");

Вроде все работает, но после 3 раз использования кузницы чар все равно пытается туда зайти. Кто поможет сделать так чтобы он только заходил 3 раза в кузницу а на 4й раз шел налево? Буду очень благодарен  smile

21

Re: Кузница

acaf119b46ea8fe2410a30ab26ce94f6 : if(dungeonMovementCount["acaf119b46ea8fe2410a30ab26ce94f6"] == 3) UseObjects(); AttackMobs();Walk("rl"); else UseObjects(); AttackMobs(); Walk("m1");

Отредактировано volok (2013-02-25 21:59:04)

22

Re: Кузница

Благодарю, когда испытаю - отпишусь  smile

23

Re: Кузница

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

24

Re: Кузница

re-shik пишет:

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

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

25

Re: Кузница

БатоВед пишет:

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

Да, действительно нашел эту фишку, поменял и все работает smile Спасибо.