76

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

if (provodnik==проводник) {var liderstvo = true;}else{var liderstvo = false;}- прописывать вот тут?
блин у меня если 1 бот запщен  каналке то другой хады несчитает((

77

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

ту строку вобще не трогать.
var provodnik = "Проводник";        //Кто является проводником/лидером.

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

78

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

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


Вот ща вроде боты заходили, тока неуспел их вместе зделать через 2 часа попробую ещё)

Отредактировано IceAngel (2009-08-25 18:06:51)

79

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

у меня всё ходило и всё считало. И ниодного сбоя.
Вывод: где-то что-то вы не то делаете.
Сделай две папки чтоли: одна для одного персонажа, вторая для второго.(прекрасно должно работать и без этого, правда.)
Клиенты запускайте через "Запуск от имени"
не забываем ставить галочку о том, что бот в данж должен идти и у проводника, и у прицепа.

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

80

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

всё я разобрался просто в том что они неходили я просто писал там де указано идти боту одному или нет с большой буквы а надо было с маленькой)) . щас 2 часа пройдёт попробую чтобы создали сам игруппу. а так большое спасибо за помощь, редко кто так всё подробно расскажет smile

81

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

Можно ли сделать чтоб ведомый выходил из подземки после того как вышел проводник, а то я выставил обоим время выхода через 4 часа, проводник зашел, а ведомый зашел и сразу вышел -((
Версия бота 8.1

Отредактировано irfon (2009-08-25 18:39:55)

82

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

эта тема больше не используется.
переходите с вопросами в прикреплённую тему.

Отредактировано anahronik (2009-08-25 18:44:53)

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

83

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

anahronik пишет:

Петро, для 7-й то я тоже выкладывал smile

Чего-то я невнимательный становлюсь smile)  сказывается приближение нового семестра нааверное smile))

Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (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)

84

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

Ребят как сделать так, чтобы проходил мимо ингров которые прицепу падают?
Или чтобы прицеп поднимал ингры, но то что на розыгрыш отказывался?
Помогите пожалуйста
Вот системка
Это предмет для *****, но, впрочем, если за 5 минут его не подберут, он может стать вашим...

85

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

Тебе созданной тобой же (Please log in or register to see this URL) мало чтоли показалось?
Нафига ты эту древню тему вобще поднял опять?
Я вместо этой свалки создал и попросил прикрепить даже (Please log in or register to see this URL)

Кончайте сюда писать.

P.S.
А по поводу твоего вопроса - жди ответа в своей теме, а не кидай одно и тоже по всей ветке.

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

86

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

Извините меня вновь обратиться с просьбой, но я стараюсь писать kanal.txt для проводника и прицеп, но она заставляет меня! Я скопировал все, что написано в пункте 61, но не получили ничего: (
помогите мне, пожалуйста!
Вот что я писал до сих пор в kanal.txt

/////////////////////////////////////////////////////////////////////////////
    ///////////////////Система подземелья для Combots (c) ZergNM/////////////////
    /////////////////////////////////////////////////////////////////////////////
 
 
 
    ////////////////////              Настройки              ////////////////////
 
    var pickupobjects = false;        //Подбирать предметы
    var attackmobs = true;           //Нападать на мобов
    var groupkanal;
 
    var texting=external.LoadFile("..\\DungeonUsers\\"+mylogin+".txt");   
    eval(texting);
 
 
    ////////////////////         Функции и переменные        ////////////////////
 
    var s = "";
    var DoAction = 0;
    var CurrentLocation = "";
    var City = "";
    var DungName = "";
 
    function InitializeKanalSystem()
    {
        try { clearTimeout(walktimer); }
        catch(err) { walktimer = 0; }
 
        try { usedObjects; }
        catch(err) { usedObjects = new Array(); }
 
        try { KanalMapCoords; }
        catch(err) { KanalMapCoords = ""; }
 
        try { KanalDirection; }
        catch(err) { KanalDirection = 0; }
 
        try { KanalCurrentMapCoords; }
        catch(err) { KanalCurrentMapCoords = ""; }
 
        try { KanalCurrentDirection; }
        catch(err) { KanalCurrentMapDirection = 0; }
 
        try { top.frames[4].document.all.kanalst.value; }
        catch(err) { top.frames[4].document.body.insertAdjacentHTML("afterBegin","<center><b>Подземелье</b><br>Номер шага: <input name=kanalst size=5 value=0></b></center><br>"); }   
 
        s = top.frames[3].document.all[0].innerHTML;
        DoAction = 0;
        CurrentLocation = top.location.href;
        City = CurrentLocation.substring(7,CurrentLocation.indexOf(".combats.com"));
 
        if(s.indexOf("dungeon.pl")>0)
            DungName = "dungeon.pl";
        else
            DungName = s.substring(s.indexOf("dungeon"),s.indexOf("dungeon")+11);
 
        KanalMapCoords = "";
    }
 
    function CheckForError()
    {
        if(s.indexOf("нет при себе необходимого")>0)
            return true;
        return false;
    }
 
    function Exit()
    {
        top.frames[4].location = top.frames[4].location;
        top.frames[3].location = "http://"+City+".combats.com/"+DungName+"?out="+Math.random();
    }
 
    function Walk(step)
    {
        if(top.frames[3].is_accessible)
                top.frames[3].navigate("http://"+City+".combats.com/"+DungName+"?rnd="+Math.random()+"&path="+step);
        else
            walktimer = setTimeout("Walk("+step+")",1000);
    }
 
    function IsMapVisible()
    {
        var retn;
        if(s.indexOf("arrMap =") > 0)
            retn = true;
        else
            retn = false;
        return retn;
    }
 
    function GetCurrentLocation()
    {
        KanalMapCoords = s.substring(s.indexOf("arrMap =")+9,s.indexOf("arrMap =")+549);
        KanalMapCoords = KanalMapCoords.substring(2,KanalMapCoords.indexOf("']];")+1);
        KanalMapCoords = KanalMapCoords.replace(/\[/g, "");
        KanalMapCoords = KanalMapCoords.replace(/\]/g, "");   
    }
 
    function GetCurrentDirection()
    {
        var Direction = top.frames[3].document.getElementById("DungMap").all[top.frames[3].document.getElementById("DungMap").all.length-1].href;
 
        if(Direction.indexOf("d0") > 0)
            KanalDirection = top.frames[3].nMyDirection;
        else
        {
            if(Direction == "(Please log in or register to see this URL)")
                KanalDirection = 1;
            else if(Direction == "(Please log in or register to see this URL)")
                KanalDirection = 3;
            else if(Direction == "(Please log in or register to see this URL)")
                KanalDirection = 5;
            else if(Direction == "(Please log in or register to see this URL)")
                KanalDirection = 7;
        }
    }
 
    function IsDropPresent()
    {
        var result = 0;
        if(s.indexOf("?get")>0 && s.indexOf("слишком много")<1 && s.indexOf("mater247")<1)
            result = 1;
        if(s.indexOf("'rollconfirm")>0)
            result = 2;
        return result;
    }
 
    function IsWallPresent()
    {
        var elements = top.frames[3].document.getElementsByTagName("*");   
        for(var i = 0;i < elements.length;i++)       
             if(elements[i].className == "LeftFront0_0")         
                return true;   
        return false;
    }
 
    function PutKanalZayavka()
    {
        var searched;
        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;
                        searched = true;
                        top.frames[3].document.forms[i].submit();
                        }
                    }
                    if(searched!=true){setTimeout("top.frames[3].window.location.reload()",3000);}
                }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();
                        }
                else{setTimeout("top.frames[3].window.location.reload()",3000);}
            }
        if(groupkanal==false){
        top.frames[4].location = top.frames[4].location;
        top.frames[3].document.all.start.click();
        }
    }
 
    function getElementsByClassName(clsName)
    {   
        var retVal = new Array();   
        var elements = top.frames[3].document.getElementsByTagName("*");   
        for(var i = 0;i < elements.length;i++)
        {       
            if(elements[i].className.indexOf(" ") >= 0)
            {           
                var classes = elements[i].className.split(" ");           
                for(var j = 0;j < classes.length;j++)
                {               
                    if(classes[j] == clsName)                   
                        retVal.push(elements[i]);           
                }       
            }       
            else if(elements[i].className == clsName)           
                retVal.push(elements[i]);   
        }   
        return retVal;
    }
 
    /////////////////////////////////////////////////////////////////////////////
 
 
 
    ////////////////////              Выполенние             ////////////////////
 
    //Проверяем или инициализируем глобальные переменные
    InitializeKanalSystem();
 
    //Если какая-то ошибка случалась - выходим из подземелья
    if(CheckForError() == true)
        Exit();
 
    //Если видна карта передвижения
    if(IsMapVisible())
    {
        //Загружаем текущее местонахождение
        GetCurrentLocation();
        GetCurrentDirection();
 
        //Если находимся у входа (возможно умерли), обнуляем счетчик
        if(s.indexOf("right>Этаж 1 - Вход")>0)
        {
            KanalCurrentMapCoords = KanalMapCoords;
            KanalCurrentDirection = KanalDirection;
            top.frames[4].document.all.kanalst.value = 0;
        }
 
        //Если мы еще не делали ни шага, надо запомнить исходное положение
        if(KanalCurrentMapCoords == "")
        {
            KanalCurrentMapCoords = KanalMapCoords;
            KanalCurrentDirection = KanalDirection;
        }
 
        //Проверяем если мы успешно переместились и увеличиваем номер шага
        if(KanalMapCoords != KanalCurrentMapCoords || KanalDirection != KanalCurrentDirection)
            top.frames[4].document.all.kanalst.value++;
 
        //Запоминаем текущее положение
        KanalCurrentMapCoords = KanalMapCoords;
        KanalCurrentDirection = KanalDirection;
 
        //Может что-то валяется на полу, если это так то подбираем
        var CurrentDrop = IsDropPresent();
        if(CurrentDrop > 0)
        {
            if(CurrentDrop == 1 && pickupobjects == true)
            {
                    var KanalStatLink = s.substring(s.indexOf("?get")+5,s.indexOf("?get")+25);
                    KanalStatLink = "?get="+KanalStatLink.substring(0,KanalStatLink.indexOf("IMG")-3);
                       top.frames[3].navigate("http://"+City+".combats.com/"+DungName+KanalStatLink);
                DoAction = 1;
            }
            else if(CurrentDrop == 2)
            {
                var KanalStatLink = s.substring(s.indexOf("'rollconfirm")+14,s.indexOf("'rollconfirm")+74);
                KanalStatLink = KanalStatLink.substring(KanalStatLink.indexOf(")'"),KanalStatLink.indexOf(")'")-10);
                KanalStatLink = KanalStatLink.substring(KanalStatLink.indexOf(","),10-KanalStatLink.indexOf(",")+1);
                KanalStatLink = KanalStatLink.replace(/\,/g, "");
                KanalStatLink = KanalStatLink.replace(/\"/g, "");
                if(pickupobjects)
                    KanalStatLink = "?get="+KanalStatLink+"&tmpname423=Да";
                else
                    KanalStatLink = "?get="+KanalStatLink+"&pass=Нет";
                top.frames[3].navigate("http://"+City+".combats.com/"+DungName+KanalStatLink);
                DoAction = 1;
            }
        }
 
        if(!DoAction)
        {
            //Если перед нами нет стены, а ты бывает что мобы видны из за стены а напасть нельзя
            if(!IsWallPresent())
            {
                try
                {
                    //Если перед нами есть какой либо объект, например сундук
                    if(top.frames[3].arrLayers[1][0]["l"].arrObjects[0])
                    {
 
                        //Если мы успешно использовали объект, например открыли сундук
                        //Нужно этот объект добавить в список использованных
                        if(s.indexOf("получили")>0 || s.indexOf("Попахивает")>0 || s.indexOf("не произошло")>0 || s.indexOf("нет необходимых ингредиентов")>0)
                        {
                            usedObjects[object.id] = true;
                        }
 
                        //Перебираем все объекты на клетке
                        for(var i=0; i<top.frames[3].arrLayers[1][0]["l"].arrObjects.length; i++)
                        {
                            //Текущий объект
                            var object = top.frames[3].arrLayers[1][0]["l"].arrObjects[i];
 
                            //Если объект еще не использованный, открываем его
                            if(!usedObjects[object.id])
                            {
                                top.frames[3].navigate("http://"+City+".combats.com/"+DungName+"?useobj="+object.id);
                                DoAction = 1;
                                break;
                            }
                        }
                    }
 
                    //Если перед нами сидит моб, давай его завалим
                    if(top.frames[3].arrLayers[1][0]["l"].arrUnits[0])
                    {
                        if(top.frames[3].arrLayers[1][0]["l"].arrUnits[0].action != "")
                        {
                            if(tkHP >= (maxHP*koeff))
                            {
 
                                if(attackmobs) top.frames[3].navigate("http://"+City+".combats.com/"+DungName+"?attack=1&use="+top.frames[3].arrLayers[1][0]["l"].arrUnits[0].id);
 
                            }
                            DoAction = 1;
                        }
                    }
                }
                catch(err)
                {
 
                }
            }
        }
        //Если мы не предприняли ничего, надо идти дальше
        if(!DoAction)
        {
            CurrentStep = KanalSteps[top.frames[4].document.all.kanalst.value];
            //Если конец маршрута, выходим
            if(CurrentStep == "ex")
                Exit();
            //Если текущий шаг - поворот, делаем его не дожидаясь окончания задержки передвижения
            else if(CurrentStep == "rl" || CurrentStep == "rr")
                top.frames[3].navigate("http://"+City+".combats.com/"+DungName+"?rnd="+Math.random()+"&path="+CurrentStep);
            //В противном случае ждем окончания задержки и идем вперед
            else
                Walk(CurrentStep);
        }
    }
    else //Если карты не видно
    {
        //Подаем заявку
        if(s.indexOf("Создать группу")>0)
                    PutKanalZayavka();
            //Начинаем поход
            else if(s.indexOf("Начать")>0)
                    StartKanalZayavka();
    }
 
    /////////////////////////////////////////////////////////////////////////////

Я создал карту DungeonUsers в той же папке с kanal.txt, и я положил его внутрь provodnik.txt и я написал следующее:

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

Пожалуйста, помогите мне! Почему я должен изменить, чтобы нормально работать?

PS: provodnik - имя персонажа в игре

Отредактировано alioncik (2009-09-09 20:38:07)

87

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

Я не вижу ошибки в вашем kanal.txt.
Может вы неверно написали provodnik. Например поставили маленькую букву вместо большой.
Что именно не работает?
Проводник создаёт заявку?
Прицеп принимает?
Заявку начинает?
Совсем ничего не делает?

Если ничего не делает, то, скорее всего, неверно написан provodnik.

В (Please log in or register to see this URL) в первом сообщении точно проверенный лично мной вариант.

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

88

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

В общем, ничего не делает, и ник без ошибок! podaiot zaiavka нет, не начало, а не идти путем Подземка

89

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

какой твой родной язык?

добавь между строчками alert:

var texting=external.LoadFile("..\\DungeonUsers\\"+mylogin+".txt");
    alert(texting);
    eval(texting);

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

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

90

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

Ответ здесь
(Please log in or register to see this URL)

91

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

Вопрос как такое сделать в 9-й версии там нет dungeon.js

(Please log in or register to see this URL)

92

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

Никак.
Как только всё подготовлю - попрошу Зерга вшить в бота.
Вещь хорошая - думаю он не будет против smile

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

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

Очень хорошая вещь, бот в 33% всего рабочего времени, работает именно с этим плагином. Вот сейчас у меня стоят в сане и в абе проводники и прицепы без действий. smile

Корабли в бутылках делают гинекологи на пенсии!

94

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

anahronik пишет:

Никак.
Как только всё подготовлю - попрошу Зерга вшить в бота.
Вещь хорошая - думаю он не будет против smile

Гигантское Вам спасибо, пока не сделали сижу на версии 8,7))))

(Please log in or register to see this URL)

95

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

anahronik пишет:

Никак.
Как только всё подготовлю - попрошу Зерга вшить в бота.
Вещь хорошая - думаю он не будет против smile

anahronik, а получиться сделать так, чтобы создавалась группа из 3-4 человек, 1 был проводником, остальные прицепы ? Я могу ошибаться, на сколько понял суть прошлого плагина был проводник+ прицеп ( 2 человека ) верно ?

96

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

Я не понимаю, откуда вы вобще эту ветку достали??? smile
я давным-давно создал собственную тему, где в первом сообщении мод обновлял smile
(Please log in or register to see this URL)
вот она smile

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

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