1

Тема: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Дорогие друзья! smile

Проблема, которую очень хочется решить, но отсутствуют знания программирования, состоит в следующем:
в наличии имеются 2 перса, 5 лвл, один одет - другой голый... тот который одет, служит в роли проводника для того, который голый и не имеет никакого шмота... решил их под ботом пустить в каналку... ручами исправим одному нападать на мобов но не поднимать дроп, другому наоборот - подбирать дроп но не нападать на мобов... все прекрасно работает, но вот только очень не удобно:
                     - создавать каждый раз группу и руками вторым ботом входить в группу
                     - после прохода одного круга по канализации, бот выходит....создает группу заного и идет один... второй так же создает группу и идет один... Т.е. получается так, что для того чтобы они пошли вдвоем - нужно руками опять создавать группу и т.д.

Так вот, надеюсь на Вас, дорогие BOTоюзеры smile

очень бы хотелось, что бы все выглядело так:
1. Бот-проводник создает группу с паролем (например за пароль можно принять слово Combots ну или другое слово\число.
2. После подачи заявки бот-проводник проверяет условие, вошел ли бот-прицеп с ником (например) "Убийца_Иннокентий", если да, то начинаем поход, если нет - то ждем...
3. Бот-прицеп (тот, который будет ходить за проводником и просто собирать дроп) должен найти заявку бота-проводника с ником (например) "Семен_Потрашитель", ввести пароль и вступить в группу.

Ребят, может кто сможет помочь?! Думаю, для многих будет полезным, если Вы это сможите реализовать или же подсказать, где что дописать\добавить...

Благодарю за внимание...

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

То, что Вы хотите - не миф)) увы, протестировать не могу, но делается это правкой файла Dungeon.js для обоих.
Для бота-проводника:

function PutKanalZayavka()
{
    top.frames[3].document.all.mut_noblock.checked = true;
    top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = "12345"; /* пароль!! */
    setTimeout('top.frames[3].document.all.open.click();', 500);
}

else if(s.indexOf("Начать") > 0 && s.indexOf("Убийца_Иннокентий") > 0)
        {
            external.SetStatusLabel("Начинаю поход");
               StartKanalZayavka();
           }

3

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Предсказатель

первая часть к проводнику а вторая к прицепу? либо как?

4

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

sancheese пишет:

Предсказатель

первая часть к проводнику а вторая к прицепу? либо как?

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

Ушел.

5

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Предсказатель пишет:

То, что Вы хотите - не миф)) увы, протестировать не могу, но делается это правкой файла Dungeon.js для обоих.
Для бота-проводника:

function PutKanalZayavka()
{
    top.frames[3].document.all.mut_noblock.checked = true;
    top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = "12345"; /* пароль!! */
    setTimeout('top.frames[3].document.all.open.click();', 500);
}

else if(s.indexOf("Начать") > 0 && s.indexOf("Убийца_Иннокентий") > 0)
        {
            external.SetStatusLabel("Начинаю поход");
               StartKanalZayavka();
           }

я так понимаю, Вы предлогаите это для 8 версии?! если так, то к сожалению у меня версия 7.1... Не могли бы Вы для 7.1 дать подсказочку?!

Отредактировано El_Paso (2009-06-14 12:12:55)

6

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Для 7-й для проводника менять строку
            else if(s.indexOf("Начать")>0)
на
                       else if(s.indexOf("Начать")>0 && s.indexOf("Имя прицепа")>0 )
Для прицепа не знаю как написать, я плохо в этом разбираюсь)

7

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

о даа, как тяжело когда все под носом=) вот вам наводка (готового кода не ждите)

function PutKanalZayavka()
{
    top.frames[3].document.all.mut_noblock.checked = true;
    top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = "12345";
    top.frames[3].document.all.open.click();
}

заходим в каналку, открываем html видим примерно такой код

Комментарий <INPUT TYPE=text NAME=cmt maxlength=40 size=40><BR>
Пароль <INPUT TYPE=password NAME=pass maxlength=25 size=25><BR>
<INPUT type=checkbox name="mut_noblock" value=1 checked>
...
<INPUT TYPE=submit name=open value="Создать группу">&nbsp;<BR>

для бота-проводника: видим имя нужной нам кнопки - open
щелкаем по ней ботом open.click(); с "параметрами" mut_noblock=1 и pass=12345 (для понта можно дописать строчку с комментарием cmt="я мульт")
чем отличчается бот-клиент? щелкнуть надо на кнопку присоединиться, с параметрами пароль и ид группы, которая находится например банальным перебором форм на имя проводника
кстати насчет  s.индекса думаю лучше писать оба ника через пробел (или как там через запятую?) на случай если второй бот подаст свою заявку или войдет не туда..

8

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

кстати насчет  s.индекса думаю лучше писать оба ника через пробел (или как там через запятую?) на случай если второй бот подаст свою заявку или войдет не туда..

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

9

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

ну вам то может и ясен smile а человеку, который абсолютно от этого далек - вообще все на китайском выглядит smile Ребят, пожалуйста, по русски напишите, что где и на что менять smile очень благодарен tongue

10

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

germes126
Для версий 7,1 сделай всё тоже самое только в файле kanal.txt

Отредактировано SnaF (2009-06-18 11:02:47)

Интуиция - это способность головы чуять жопой.

11

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Ап...

Тема все еще актуальна...

Кто нить может не полениться и выложить "добавку" к тому файлу - куда это нужно добавить?!

12

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

MagBen, самый простой способ, пока кто-нибудь из рабирающихся не сделает строчки под прицепа.

1. Дописываешь уже указанные строки для проводника и он завершив поход ждет прицепа.
2. У прицепа в маршруте убираешь последнюю строку с выходом. То есть пробежав весь маршрут, он не пытается выйти из пещеры и зайти по новой, а стоит на последней клетке маршрута.
3. Время от времени живой наблюдатель вручную вытягивает прицепа из пещеры и цепляет к проводнику, после чего проводник видит нужного прицепа в тиме и автоматом стартует.

  ЗЫ: терзай знатоков яваскрипт для полной автоматизации))

13

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Tester пишет:

1. Дописываешь уже указанные строки для проводника и он завершив поход ждет прицепа.

Для проводника то я понял что писать smile

Tester пишет:

2. У прицепа в маршруте убираешь последнюю строку с выходом. То есть пробежав весь маршрут, он не пытается выйти из пещеры и зайти по новой, а стоит на последней клетке маршрута.
3. Время от времени живой наблюдатель вручную вытягивает прицепа из пещеры и цепляет к проводнику, после чего проводник видит нужного прицепа в тиме и автоматом стартует.

Не удобно и можно сделать проще... Добавить условие прицепу, что он ищет заявку конкретного перса и цепляется к нему в заявку, вбив заданный пасс... и проводник постоянно проверяет наличие прицепа с определенным ником, либо же просто ждем изменения, что в заявку кто-то вошел зная пароль и он стартует - это вариант например для кланового проводника, чтоб соклан зная пароль прицепил прицеп (своего перса) к клан-проводнику и они погнали там сами по себе. smile

Вот как бы так я себе представлял smile Словами то написать я могу, а вот яваскриптом - нет sad

Отредактировано El_Paso (2009-07-02 18:43:16)

14

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

ээ (Please log in or register to see this URL) конец поста 33 - пробывали?

15

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

zxcv пишет:

ээ (Please log in or register to see this URL) конец поста 33 - пробывали?

нет smile а не набросаешь куда прикрутить это?! smile и что к чему там?! ))) а с виду ( взгляд далекого от яваскрипта человека) все куульно должно быть)))

16

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Для 7-й версии.
в kanal.txt и у проводника, и у прицепа заменяем соответствующие функции на ниже изложенные.
(перед этим, естественно, сделайте копию исходного файла на случай если не заработает)

function PutKanalZayavka()
    {
        if(liderstvo==false && groupkanal==true){
                    xlength=top.frames[3].document.forms.length;
                    for(i=0;i<xlength;i++)
                    {
                        var z = top.frames[3].document.forms[ i ].innerHTML;
                        if(z.indexOf("fl(\""+provodnik+"\"")>0){
                        top.frames[3].document.forms[ i ].pass.value=grouppass;
                        top.frames[3].document.forms[ i ].submit();
                        }
                    }
                   
                }else if(groupkanal==false || liderstvo==true){
        top.frames[3].document.all.mut_noblock.checked = false;
            top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = grouppass;
            top.frames[3].document.all.open.click();}
    }
   
    function StartKanalZayavka()
    {
        top.frames[3].location = "http://"+City+".combats.com/dungeon.pl";
        usedObjects = [];
        KanalMapCoords = "";
        KanalDirection = 0;
        KanalCurrentMapCoords = "";
        KanalCurrentMapDirection = 0;
            if(liderstvo==true){
                xlength=top.frames[3].document.forms.length;
                for(i=0;i<xlength;i++)
                {
                    var z = top.frames[3].document.forms[ i ].innerHTML;
                    if(z.indexOf("fl(\""+provodnik+"\"")>0){
                        var count=0;
                        var pos = z.indexOf("drwfl");
                        while (pos != -1){
                                count++;
                                pos = z.indexOf("drwfl",pos+1);
                                }
                    }
                }
                if(count==partija){
                        top.frames[4].location = top.frames[4].location;
       
                        top.frames[3].document.all.start.click();
                        }
            }
        if(groupkanal==false){
        top.frames[4].location = top.frames[4].location;
        top.frames[3].document.all.start.click();
        }
    }



Также в этом же файле kanal.txt вносим изменения в самом его начале:
    ////////////////////              Настройки              ////////////////////

    var pickupobjects = true;        //Подбирать предметы
    var attackmobs = true;            //Нападать на мобов
    var groupkanal = true;            //Если идёте один - false

   
    if(groupkanal==true){
    ////////////////////        Групповой поход           ////////////////////
    //Если вы идете один, просто выставьте groupkanal = false и параметры ниже можно
    //не изменять.
    var liderstvo = false;                //true - вы лидер группы. false - не вы лидер.           
    var provodnik = "Проводник007";            //Кто является проводником/лидером. Это обязательно надо указать и для самого проводника, и для прицепа.
    var grouppass = "321456";            //Пароль группы
    var partija = "2";                //Количество людей в партии, включая вас.


P.S.
Как себе написал - так сюда скопировал. Для поиска заявки был использовал написанный zxcv скрипт.
Алгоритм работы: если задана groupkanal true и выставленно лидерство, вы подаете заявку как обычно, но поход не начинаетсядо тех пор, пока количество людей в вашей заявке не станет равным значению переменной partija. Если лидерство не заданно - происходит поиск заявки по указанному имени проводника. Если хотите снова бегать соло без прицепа - выставьте groupkanal false.
Примечание: иногда нужно дождаться обновления верхнего фрейма с заявками(короче либо подключится к заявке нормально в течении минуты. либо где-то косяк.)

Отредактировано anahronik (2009-08-10 21:40:14)

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

17

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

ухты клёво smile
Кто переделает на 8-ю версию?))

Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (Please log in or register to see this URL)
(Please log in or register to see this URL) - проверил лично! Подробнее (Please log in or register to see this URL)

18

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Петро пишет:

ухты клёво smile
Кто переделает на 8-ю версию?))

Зачем восьмую, нет=) Сразу на комботс 10 бета))))

Ушел.

19

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

вот наконец то! хоть кто-то взял и конкретику выложил! Парни... сделайте плиз и на 8 версию тож самое

20

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

MagBen пишет:

вот наконец то! хоть кто-то взял и конкретику выложил! Парни... сделайте плиз и на 8 версию тож самое

оло-оло-пыщ-пыщ-пыщ!!!111;)))

21

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Для 8-й всё тоже самое практически должно быть....
(Опять перед проверкой настоятельно рекомендую сделать копию базового файла, чтоб было чем восстанавливать поломанное)

В файле Dungeon.js меняем функции на соответствующие:
function PutKanalZayavka()
    {
        if(liderstvo==false && groupkanal==true){
                    xlength=top.frames[3].document.forms.length;
                    for(i=0;i<xlength;i++)
                    {
                        var z = top.frames[3].document.forms[ i ].innerHTML;
                        if(z.indexOf("fl(\""+provodnik+"\"")>0){
                        top.frames[3].document.forms[ i ].pass.value=grouppass;
                        top.frames[3].document.forms[ i ].submit();
                        }
                    }
                   
                }else if(groupkanal==false || liderstvo==true){
            top.frames[3].document.all.mut_noblock.checked = false;
            top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = grouppass;
            top.frames[3].document.all.open.click();}
    }

function StartKanalZayavka()
{
    top.frames[3].location = "http://"+City+".combats.com/dungeon.pl";
    usedObjects = [];
    dungeonMovementCount = [];
    dungeonCoords = "";
    dungeonDirection = 0;
     if(liderstvo==true){
                xlength=top.frames[3].document.forms.length;
                for(i=0;i<xlength;i++)
                {
                    var z = top.frames[3].document.forms[ i ].innerHTML;
                    if(z.indexOf("fl(\""+provodnik+"\"")>0){
                        var count=0;
                        var pos = z.indexOf("drwfl");
                        while (pos != -1){
                                count++;
                                pos = z.indexOf("drwfl",pos+1);
                                }
                    }
                }
                if(count==partija){
                        top.frames[4].location = top.frames[4].location;
                var date = new Date();
        dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
                        top.frames[3].document.all.start.click();
                        }
            }
        if(groupkanal==false){
                var date = new Date();
        dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
                           top.frames[3].document.all.start.click();
        }

}




Все параметры в самом начале скрипта(все просто для наглядности):
var s = "";
var dungName = "";
var dungeonCoords = "";
var dungeonDirection = 0;
var dungeonPosition = "";
var dungeonLastPosition = "";
var breakAction = false;
var _id = "";
var _object = null;
var groupkanal = true;            //Если идёте один - false
 
    if(groupkanal==true){
    ////////////////////        Групповой поход           ////////////////////
    //Если вы идете один, просто выставьте groupkanal = false и параметры ниже можно
    //не изменять.
    var liderstvo = false;                //true - вы лидер группы. false - не вы лидер.           
    var provodnik = "Проводник007";            //Кто является проводником/лидером. Это обязательно надо указать и для самого проводника, и для прицепа.
    var grouppass = "321456";            //Пароль группы
    var partija = "2";                //Количество людей в партии, включая вас.
    }


P.S.
Лицензии 8-й нету, такчто проверить не могу.

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

22

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

ох спасибо ))) попробую завтра )))

23

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

MagBen пишет:

ох спасибо ))) попробую завтра )))

Как попробуешь отпишись. А то мне лениво чет))

Ушел.

24

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

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

Ушел.

25

Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.

Не знаю, где косяк.
Вот что-то вроде отладочной версии, чтоб понять, где стопорится всё smile

function PutKanalZayavka()
    {
        if(liderstvo==false && groupkanal==true){
         alert("Вы собираетесь искать существующую заявку с лидером"+provodnik);
                    xlength=top.frames[3].document.forms.length;
          alert("Если в этом окошке выведен этот текст и число, близкое к числу заявок на странице - это хорошо. Число заявок: "+xlength);
                    for(i=0;i<xlength;i++)
                    {
                        var z = top.frames[3].document.forms[ i ].innerHTML;
              alert("Происходит проверка заявки номер: "+i+".");
                        if(z.indexOf("fl(\""+provodnik+"\"")>0){
              alert("Заявка найденна. Пытаюсь ввести пароль");
                        top.frames[3].document.forms[ i ].pass.value=grouppass;
              alert("Ввел пароль - пытаюсь подтвердить заявку");
                        top.frames[3].document.forms[ i ].submit();
                        }
                    }
                   
                }else if(groupkanal==false || liderstvo==true){
            top.frames[3].document.all.mut_noblock.checked = false;
            top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = grouppass;
            top.frames[3].document.all.open.click();}
    }

Соответственно alert выводит ошибку с заданным текстом и единственной кнокой. Какие сообщения будут выведены, значит до них все пракрасно работает.(т.е. несколько ошибок подряд будут выводиться).
Это можно прописать только для ведомого, т.к. ведущего никак не затрагивает.
Ошибки появляются быстро и всё время ) такчто потом отключить программу проще через ctrl+alt+del smile
вот такая недоработка с моей стороны))

Отредактировано anahronik (2009-08-14 18:00:07)

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