1

Тема: Каналка бот 7.1

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

2

Re: Каналка бот 7.1

Он у тебя ходит сам? Нападает?!
Странно. Ни у кого вообще не работает smile

(Please log in or register to see this URL)

3

Re: Каналка бот 7.1

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

4

Re: Каналка бот 7.1

у кого не нападает читаем внимательно эту тему (Please log in or register to see this URL)

5

Re: Каналка бот 7.1

У меня бот нападает ... ходит все нормально ...
Но походу после смерти на 2 етаже он появляеться на нем же но только мордой к леснице ...
Как попраить ? и поетому потом стопориться

6

Re: Каналка бот 7.1

вот исправлений код чтоб бот нападал, вставить вместо старого кода в kanal.txt

/////////////////////////////////////////////////////////////////////////////
    ///////////////////Система подземелья для Combots (c) ZergNM/////////////////
    /////////////////////////////////////////////////////////////////////////////
 
    ////////////////////              Настройки              ////////////////////
 
    var pickupobjects = true;    //Подбирать предметы
    var attackmobs = true;        //Нападать на мобов
 
    //Возможные значения: true - да, false - нет
 
    // номер шага с которого начинать движение при смерти. Если машрут для второго этажа то пишите шаг 10, если маршрут на Оба этажа то шаг 180.
    var startDirection = 180;   
 
    /////////////////////////////////////////////////////////////////////////////
 
 
 
    ////////////////////         Функции и переменные        ////////////////////
 
    var s = "";
    var DoAction = 0;
    var CurrentLocation = "";
    var City = "";
    var DungName = "";
 
    var startKanal2 = ",,d17,d13,,,,,,,,d57,d3,,,,,,,,,d7,d15,d15,d15,d135,,d135,d17,d135,d37,,,,,,,d37,,d7,d135,1.04,,,,,,d37,,d37,,,,,,d15,d,d15,d3,d17,d13,,,,,d37,,d37,d57,d3,,,,,d37,,d37,,d37,,,";
    var dontGo = 0;
 
    try {
        var checkDeath = (String(top.frames[3].window.arrMap) == startKanal2 &&
                            top.frames[3].document.getElementById("m1") == null) ? 1 : 0;
    } catch (e) {
        var checkDeath = 0;
    }
 
    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()
    {
        top.frames[3].document.all.mut_noblock.checked = false;
            top.frames[3].document.forms[top.frames[3].document.forms.length-1].pass.value = "123654";
            top.frames[3].document.all.open.click();
    }
 
    function StartKanalZayavka()
    {
        usedObjects = [];
        KanalMapCoords = "";
        KanalDirection = 0;
        KanalCurrentMapCoords = "";
        KanalCurrentMapDirection = 0;
        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(checkDeath)
        {
                KanalCurrentMapCoords = KanalMapCoords;
                KanalCurrentDirection = KanalDirection;
                top.frames[4].document.all.kanalst.value = startDirection;
 
                top.frames[3].navigate("http://"+City+".combats.com/"+DungName+"?rnd="+Math.random()+"&path="+"rr");
                dontGo = 1;
        }       
 
        //Если мы еще не делали ни шага, надо запомнить исходное положение
        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)
                            {
                                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 && !window.dontGo)
        {
            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 (window.dontGo){
            KanalCurrentMapCoords = "";
            KanalCurrentDirection = "";
        }
    }
    else //Если карты не видно
    {
        //Подаем заявку
        if(s.indexOf("Создать группу")>0)
                    PutKanalZayavka();
            //Начинаем поход
            else if(s.indexOf("Начать")>0)
                    StartKanalZayavka();
    }
 
    /////////////////////////////////////////////////////////////////////////////

7

Re: Каналка бот 7.1

Блин ребята, тема то совсем не об этом была!! Есть же темы про вашу проблему нафиг засорять мою, вопрос не решен, тема актуальна.

8

Re: Каналка бот 7.1

Одевать боевой при  "..."  (значение должно быть на 10-15 хп больше, чем в боекомплекте)  ! 
У Вас так же ? smile

9

Re: Каналка бот 7.1

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

10

Re: Каналка бот 7.1

Тут где то была подобная тема, было преддложено уменьшить время проверки на совершение действия.
Точно не помню где.
Проблемма может быть вызвана так же слишком маленьким временем обновления бота. на 1 500, к примеру, у меня не доходил и до 2 этажа... на 2 000 в 90% случаев проходил и 1 и 2й этажи.

Попробуй походить БЕЗ переодевания 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)