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

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

у всех персонажей в созданном txt файле должен быть проводник прописан.
даже у проводника. Если у проводника не прописать - он никогда не узнает, что проводником является.

1 904

(164 ответов, оставленных в Настройки / Плагины)

НЕ ПОДХОДИТ ДЛЯ 9-Й ВЕРСИИ, Т.К. КОД СТАЛ ЗАКРЫТЫМ. ПЛАНИРУЕТСЯ ИНТЕГРИРОВАНИЕ В БОТА(во всяком случае я планирую...Зерг может одобрит, а может и не одобрит - это его авторское дело:) )

В прошлой теме все скрипты расползлись по разным страницам и даже я сам уже не понимаю, какие рабочие, а какие нет.
Поэтому создана новая тема, где всё рабочее будет публиковаться в первом посте.

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

Для 8.4+ версии

1. Модификация файла Dungeon.js для автоматического создания и приёма в группы.

Последнии внесённые изменения:
1) добавлены списки отказа/подбора вещей(прописывается в файле контретного пользователя...читать ниже)
2) прицеп часто тупо вставал перед монстрами и ждал обновления экрана, хотя монстра проводник уже убил. Введено обновление с частотой, прописанной в настройках как Интервал действий бота(обновляет только если у прицепа достаточное ХП для условия нападения, а галочка нападения выключена)
3) теперь можно использовать в приёмах переменную death_count, которая хранит количество смертей в текущем походе.
Пример:
если вы умерли в данже менее 3-х раз - используем последний удар

if(death_count<3)
_name='hp_laststrike';

4) встроены "фразы Грибницы" от Петро.

Установка:
1) Открытый код файла в мессаг не влез....а жаль. Пришлось выложить на серваке:
()
Сделайте резервную копию своего Dungeon.js, а потом выставьте скаченный как основной файл.


2) после изменения обязательно в папке Modules создаете папку DungeonUsers.
В ней, для каждого используемого данным клиентом, создаёте файл ТочноеИмяПерсонажаВключаяПробелыИЗаглавныеБуквы.txt
Пример содержания файлов(список поднимаемых предметов и предметов для отказа вы формировать должны САМИ):

var groupkanal = true;            //Если идёте один - false
 
    var items_pass = [];            //Вещи, от которых будем ОТКАЗЫВАТЬСЯ )))
    items_pass.push('грибах');
    items_pass.push('заживляющ(?:ая|ий)');
 
    var items_get = [];             //Вещи, которые будем подбирать даже при выключенной галочке
    items_get.push('ключ');
    items_get.push('ман(?:а|ы)');
    items_get.push('жижи');
    items_get.push('Грибочки');
 
    var not_your = true;            //Пытаться подобрать чужие вещи. true - пытаться. false - не пытаться
 
    if(groupkanal==true){
    ////////////////////        Групповой поход           ////////////////////
    //Если вы идете один, просто выставьте groupkanal = false и параметры ниже можно
    //не изменять.
        var provodnik = "НЕ ЗАБЫТЬ УКАЗАТЬ";            //Кто является проводником/лидером. Это обязательно надо указать и для самого проводника, и для прицепа.
         if(provodnik==mylogin){var liderstvo = true;}else{var liderstvo = false;}
      var grouppass = "321456";            //Пароль группы
        var partija = "2";                //Количество людей в партии, включая вас.
    }

var provodnik = "НЕ ЗАБЫТЬ УКАЗАТЬ";   - Тут ник того, кто будет создавать заявку для похода.
provodnik==mylogin - ЭТО НЕ ТРОГАТЬ!!! И прекратите это спрашивать!!!! smile
Примечание:
items_get - массив, хранящий вещи, которые бот будет пытаться поднять даже при выключенной галочке.
items_get - массив, хранящий вещи, от которых бот будет отказываться....совсем отказываться. и даже не попытается поднять.
Оба массива не чувствительны к регистру и вы можете вписать 'ключ' и он будет срабатывать на предметах и "Ключ", и "ключ" и даже "КлЮч"

Примеры:
    items_get.push('ключ'); - поднимать любой предмет, в названии которого есть "ключ"
    items_get.push('ман(?:а|ы)'); - поднимать любой предмет, в названии которого есть "мана" или "маны". т.е. эта страшная конструкция может быть записана двумя строками, если вы боитесь ошибиться:items_get.push('мана');items_get.push('маны');
items_get.push('ман(?:а|ы|у)'); - это для примера, как сделать три вида окончания, дл распознавания "маны", "мана" и "ману"

Тот же принцып работы у ОТКАЗА ОТ ПОДБОРА:
    items_pass.push('грибах'); - отказ от любого предмета, в названии которого есть "грибах"
    items_pass.push('заживляющ(?:ая|ий)');


Строки типа items_pass.push и items_get.push МОЖНО добавлять свои. И не просто можно, а НУЖНО ДАЖЕ! smile
а можно ещё и убирать лишние.

Не надо путать items_pass и items_get при формировании настроек!!! Буду злиться.




2. Плагин для прицепа.
Описание: если у прицепа достаточно ХП для нападения, проводник в бою и его ХП отвечает заданному условию(например если ХП проводника <50%), то прицеп вламывается в бой и помогает крошить врагов(на деле ему просто делается активной галочка Нападать на монстров, а когда условие перестает быть верным - снимается) smile

Установка: в папке Plugins создаем файл PricepHelp.js с содержанием

function PricepHelp(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["PricepHelp"] = "PricepHelpHandler";
 
    }
    else
    {
        PluginsOnLoad["PricepHelp"] = "";
    }
}
 
 
function PricepHelpHandler(){
         if(IsProvodFighting(provodnik) && getPersHPproc(provodnik)<=100){
        external.SDungeonAttackMobs.Checked=true;
                                           }
          else {
        external.SDungeonAttackMobs.Checked=false;
        }
}
 
function getPersHPproc(nick){
var personalInf="";
var re = new RegExp(/HP\=([0-9\.]{1,})\/([0-9]{1,})/);
personalInf = doLoad("http://" + external.SCity.Text + ".combats.com/inf.pl?short=1&login="+nick);
if(personalInf){
var matched = re.exec(personalInf);
var procentHP=matched[1]*100/matched[2];
return procentHP;
}
}
 
function IsProvodFighting(nick){
var personalInf="";
var re = new RegExp(/battle_id=/);
personalInf = doLoad("http://" + external.SCity.Text + ".combats.com/inf.pl?short=1&login="+nick);
if(personalInf){
var matched = re.exec(personalInf);
if(matched){ return true }else{return false}
}
}
 
function doLoad(url) {
       var req;
       if (window.XMLHttpRequest)
       req = new XMLHttpRequest();
       else
       req = new ActiveXObject("Microsoft.XMLHTTP");
       req.open("GET", url, false);
       req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); //чтоб не кэшировались GET запросы
       req.send(null); // отправить запрос     
    return req.responseText;
}

Проводником считается именно тот, кто создавал группу.
Если у вас создал группу тот персонаж, который должен быть прицепом - в плагине замените переменную provodnik на "ТочныйНикАтакующегоПерсонажа".

нет конечно, не будет.
и я ошибся, изменений там не одна переменная видимо.

Но я ведь не могу брать его изменения и пихать к себе - неправильно это : /

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

По поводу ()
Там эта переменная в двух местах прописана - в начале при задании её значения, и в месте, где это значение используется.
Внести такое изменение может любой  человек без моей помощи.

1 907

(29 ответов, оставленных в Настройки / Плагины)

up
обновлено.
смотрите первый пост.

Теперь добавлено условие для мага, по которому он ждёт каста защиты на себя и только потом бьёт магией.
Условие хитрое - там обновлять нужно фрэйм боя)
иначе маг никогда и не узнает, что на нём защита оказывается висит))

IceAngel пишет:

А если ненадо вписывать ник проводника, то как тогда, ведомый зайдёт в нужную группу?

Наоборот, проводник прописывается в переменную provodnik.
а ведомый не прописывается никуда.

1 909

(26 ответов, оставленных в Подземелье / Маршруты)

Нужна жертва - тестер smile

1 910

(6 ответов, оставленных в Флейм)

Ну пришли ему лицензию))
тебе жалко чтоли?:)
Я бы с удовольствием посмотрел, как он её юзал бы smile

anahronik, за работу огромное спасибо, но пока не смогу потестить, уезжаю, вернусь - проверю = )

Успешной поездки smile

ЛедянойАнгел, я давно для 7-й версии не обновлял...там вроде даже обновление страницы не подключено.
Надо будет обновить, видимо с исправлениям всеми...

Для 7-й версии подача-прием заявок

/////////////////////////////////////////////////////////////////////////////
    ///////////////////Система подземелья для Combots (c) ZergNM/////////////////
    /////////////////////////////////////////////////////////////////////////////
 
 
 
    ////////////////////              Настройки              ////////////////////
    var pickupobjects = true;        //Подбирать предметы
    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 == "http://img.combats.com/i/move/p1/d1.gif")
                KanalDirection = 1;
            else if(Direction == "http://img.combats.com/i/move/p1/d3.gif")
                KanalDirection = 3;
            else if(Direction == "http://img.combats.com/i/move/p1/d5.gif")
                KanalDirection = 5;
            else if(Direction == "http://img.combats.com/i/move/p1/d7.gif")
                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 и там для каждого персонажа, используемого на этом клиенте, создаем файл ТочноеИмяПерсонажаВключаяПробелыИЗаглавныеБуквы.txt
С содержанием:

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

Всё подает, всё принимает, всё ходит и шаг пишет в обоих окнах.

1 912

(26 ответов, оставленных в Подземелье / Маршруты)

Нет, не фантастика.
Сейчас у меня прицеп читает, в бою ли проводник и какой процент хп у него сейчас.
работы продолжаются))

всёравно главной проблемой покачто является обновление окна в именно нужные моменты hmm

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

1 913

(26 ответов, оставленных в Подземелье / Маршруты)

Петро пишет:

Ну допустим:

Если проводник в бою
     Если Проводник и прицеп на одной клетке, и у проводника HP<X HP, а у прицепа HP>Y, то прицеп прыгает к проводнику и начинает биться.

Если проводник не в бою
     Проводник восстанавливается, прицеп ждет 1 условия.

Как-то так? roll

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

а есть мысли, как из этого сделать более-менее командный проход данжа?

1 914

(5 ответов, оставленных в Проблемы / Баги / Неполадки)

Странно.
у меня в инвентаре 3 пакета Зелье Могущества и он всё стабильно пьёт

8-ая версия, вроде как, вобще ходы не считает.... hmm
там алгоритм хождения не по порядковому номеру шага.

1 916

(26 ответов, оставленных в Подземелье / Маршруты)

Ну что?
неужели нету мыслей о том, как должен действовать проводник и прицеп?

Что есть на руках:
1) в партию все залезают и ходят стабильно.
2) проводнику через дополнительно написанный плагин есть возможность передавать текущее значение ХП помошников
3) можно определять, на одной ячейке прицепы все с проводником или на разных
Практически это вобще всё, что нужно.
Вопрос остаётся только в том, какой алгоритм действий должен быть...
Кто-нить может сказать, как он хочет, чтоб это работало??

не может же быть так, чтоб ни у кого идей не было

()
hmm


только у меня так, чтобы команды были как переменные выведены smile
EnemiesCount для противников
SoratnikiCount для соратников

хотя у меня надо файл редактировать...но там всё безопасно smile

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

1 918

(14 ответов, оставленных в Общий)

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

1 919

(18 ответов, оставленных в Подземелье / Маршруты)

Я же вопрос не так ставил...
я ставил "Работает ли функция автоматического переодевания комплектов хил-боевой в данжах"?

я знаю, для чего хилл-комплекты создаются...но в топике то человек с 1000хп в комплекте одежды хочет нырять - вот и копаемся, как же ему этот комплект нацепить, дохилиться до 1000 и нырнуть

1 920

(18 ответов, оставленных в Подземелье / Маршруты)

я не в курсе:
А в данже функция переодевания комплекта хил-боевой работает?
Если работает - в чем задача тогда?

"итак, надо сделать чтобы в бот одевал хил, хилился до 1010хп, а потом лез в котел..."
если хил сам надевается нормально, то условие  if(tkHP >1010){UseObjects();Walk("m3");}; становится уже достаточным для решения задачи

я мелкий лвл и могу чего-то не понимать)

1 921

(18 ответов, оставленных в Подземелье / Маршруты)

а смысл?
1ae47a5fce875a25b30e2f50f20671b5 : if(tkHP >1000){UseObjects();Walk("m3");};
в таком виде то пока не долечится до 1000ХП и не поюзает предметы, никуда не пойдет.

else, обновление фрэйма, переодевание комплектов способами:
httpGetPageRequest()
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?skmp=" + external.SComplectBattle.Text;

из всего этого я, покачто не сумел собрать рабочий вариант "Одеть комплект - обновить фрэйм - проверка условий" по причине:
Одевает комплект - обновляет фрэйм - условие покачто не выполнено и бот запускает второй круг:
одевает комплект - обновляет фрэйм - опять условие не выполняется...
если комплекты переодевать постоянно - не происходит восстановление хп.

Т.е. надо внести ещё какое-то условие типа Если maxHP< фикс. значение - Одеть комплект и обновить фрэйм(вместе в фигурных скобках и комплект и обновление) - Проверить условия остальные
Тогда второй круг будет состоять только из Проверить остальные условия.

1 922

(18 ответов, оставленных в Подземелье / Маршруты)

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

1ae47a5fce875a25b30e2f50f20671b5 : if(tkHP >1000)UseObjects();Walk("m3");

Если у человека при переходе на эту клетку 1000ХП(я был в шоке, когда у меня было 230хп и я тестил >230...оно выполнялось...потом дошло глянуть значение tkHP...230,23 о.О) то он поюзает объекты и пойдет дальше.
Если у человека меньше 1000хп, он не будет ждать вылечивания до нужного ХП, а тупо пойдёт дальше.

1 923

(18 ответов, оставленных в Подземелье / Маршруты)

Я мессаг удлиннил прошлый...подрбно расписал, где ошибка...
а как решить - это надо думать.

1 924

(18 ответов, оставленных в Подземелье / Маршруты)

народ, кто-нибудь решил проблему?
надо лезть в определенные места с хп больше 1000 (сундуки-ловушки и пр.)
как сделать то, чтобы бот лез в них с условием что хп>1000???

Ну это просто совсем
1ae47a5fce875a25b30e2f50f20671b5 : if(tkHP >1000){UseObjects();Walk("m3");};

А вот с переодеванием комплекта - тупик покачто.
"но бот сначала лезет в котел, а потом одевает комплект )" - не верно...комплект сперва одевается, а вот информация о ХП не обновляется - вот условние (tkHP>=maxHP) и выполняется.

httpGetPageRequest("http://angelscity.combats.com/main.pl?skmp=хххххххх");  - эту запись вобще нельзя пихать в маршрут...только если с условиями, при которых она будет выполняться. Почему:
cff55059e38c2869d04f003aebfb2c8b : httpGetPageRequest("http://angelscity.combats.com/main.pl?skmp=хххххххх");
- такая строка будет постоянно перевыполняться, пока не произойдет переход на другую клетку(т.е. он каждый раз будет переодевать комплект и при этом хилиться вы никак не сможете - хп вечно сбрасываться будут).

1 925

(18 ответов, оставленных в Подземелье / Маршруты)

а вот это ещё ничего не гарантировало smile
можно было просто строку проверять на наличие этих записей и если есть - действовать smile

ну да ладно smile не заметил - ну мой косяк, согласен smile