Тема: Бот не подает заявку на бой (версия: 7.1)

Бот ссыт дратся в хаотах!  Говорит: Воть травму палучу, а лечить то йА не умею...   roll

Отредактировано Summerline (2009-06-12 11:17:37)

2

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();
    }
 
    /////////////////////////////////////////////////////////////////////////////"

3

Re: Бот не подает заявку на бой (версия: 7.1)

sheffff
Ты не понял. У него бот не дерётся в хаотах а не в подземке.

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

4

Re: Бот не подает заявку на бой (версия: 7.1)

та же проблема(