у меня всё ходило и всё считало. И ниодного сбоя.
Вывод: где-то что-то вы не то делаете.
Сделай две папки чтоли: одна для одного персонажа, вторая для второго.(прекрасно должно работать и без этого, правда.)
Клиенты запускайте через "Запуск от имени"
не забываем ставить галочку о том, что бот в данж должен идти и у проводника, и у прицепа.
1 901 2009-08-25 18:13:22
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
1 902 2009-08-25 17:52:02
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
ту строку вобще не трогать.
var provodnik = "Проводник"; //Кто является проводником/лидером.
1 903 2009-08-25 17:39:56
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
у всех персонажей в созданном txt файле должен быть проводник прописан.
даже у проводника. Если у проводника не прописать - он никогда не узнает, что проводником является.
1 904 2009-08-25 14:51:43
Тема: Бот-проводник и Бот-прицеп (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 - ЭТО НЕ ТРОГАТЬ!!! И прекратите это спрашивать!!!! ![]()
Примечание:
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 МОЖНО добавлять свои. И не просто можно, а НУЖНО ДАЖЕ! ![]()
а можно ещё и убирать лишние.
Не надо путать items_pass и items_get при формировании настроек!!! Буду злиться.
2. Плагин для прицепа.
Описание: если у прицепа достаточно ХП для нападения, проводник в бою и его ХП отвечает заданному условию(например если ХП проводника <50%), то прицеп вламывается в бой и помогает крошить врагов(на деле ему просто делается активной галочка Нападать на монстров, а когда условие перестает быть верным - снимается) ![]()
Установка: в папке 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 на "ТочныйНикАтакующегоПерсонажа".
1 905 2009-08-25 14:02:31
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
нет конечно, не будет.
и я ошибся, изменений там не одна переменная видимо.
Но я ведь не могу брать его изменения и пихать к себе - неправильно это : /
1 906 2009-08-25 13:47:43
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
Петро, для 7-й то я тоже выкладывал ![]()
По поводу ()
Там эта переменная в двух местах прописана - в начале при задании её значения, и в месте, где это значение используется.
Внести такое изменение может любой человек без моей помощи.
1 907 2009-08-25 00:17:05
Re: Прием Защитить (29 ответов, оставленных в Настройки / Плагины)
up
обновлено.
смотрите первый пост.
Теперь добавлено условие для мага, по которому он ждёт каста защиты на себя и только потом бьёт магией.
Условие хитрое - там обновлять нужно фрэйм боя)
иначе маг никогда и не узнает, что на нём защита оказывается висит))
1 908 2009-08-24 22:57:46
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
А если ненадо вписывать ник проводника, то как тогда, ведомый зайдёт в нужную группу?
Наоборот, проводник прописывается в переменную provodnik.
а ведомый не прописывается никуда.
1 909 2009-08-24 20:25:50
Re: Помощь прицепа бойцу (26 ответов, оставленных в Подземелье / Маршруты)
Нужна жертва - тестер ![]()
1 910 2009-08-24 20:12:38
Re: ААА!! Спамеры анаткуют! (6 ответов, оставленных в Флейм)
Ну пришли ему лицензию))
тебе жалко чтоли?:)
Я бы с удовольствием посмотрел, как он её юзал бы ![]()
1 911 2009-08-24 14:05:58
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
anahronik, за работу огромное спасибо, но пока не смогу потестить, уезжаю, вернусь - проверю = )
Успешной поездки ![]()
ЛедянойАнгел, я давно для 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 2009-08-23 22:34:52
Re: Помощь прицепа бойцу (26 ответов, оставленных в Подземелье / Маршруты)
Нет, не фантастика.
Сейчас у меня прицеп читает, в бою ли проводник и какой процент хп у него сейчас.
работы продолжаются))
всёравно главной проблемой покачто является обновление окна в именно нужные моменты ![]()
Нападать или не нападать решается через выставление галочки в настройках...ну через плагин, естественно, автоматически)))
1 913 2009-08-23 20:25:29
Re: Помощь прицепа бойцу (26 ответов, оставленных в Подземелье / Маршруты)
Ну допустим:
Если проводник в бою
Если Проводник и прицеп на одной клетке, и у проводника HP<X HP, а у прицепа HP>Y, то прицеп прыгает к проводнику и начинает биться.Если проводник не в бою
Проводник восстанавливается, прицеп ждет 1 условия.Как-то так?
Спасибо за начало ![]()
Только при таком раскладе проверка клеток лишняя выходит...дальше проводника не убежит прицеп всёравно - враги не пустят)
Это действительно получается как помощь, когда проводник может...
а есть мысли, как из этого сделать более-менее командный проход данжа?
1 914 2009-08-23 20:21:26
Re: Не пьет эли (5 ответов, оставленных в Проблемы / Баги / Неполадки)
Странно.
у меня в инвентаре 3 пакета Зелье Могущества и он всё стабильно пьёт
1 915 2009-08-23 13:20:13
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
8-ая версия, вроде как, вобще ходы не считает.... ![]()
там алгоритм хождения не по порядковому номеру шага.
1 916 2009-08-23 02:21:36
Re: Помощь прицепа бойцу (26 ответов, оставленных в Подземелье / Маршруты)
Ну что?
неужели нету мыслей о том, как должен действовать проводник и прицеп?
Что есть на руках:
1) в партию все залезают и ходят стабильно.
2) проводнику через дополнительно написанный плагин есть возможность передавать текущее значение ХП помошников
3) можно определять, на одной ячейке прицепы все с проводником или на разных
Практически это вобще всё, что нужно.
Вопрос остаётся только в том, какой алгоритм действий должен быть...
Кто-нить может сказать, как он хочет, чтоб это работало??
не может же быть так, чтоб ни у кого идей не было
1 917 2009-08-22 23:13:38
Re: Условие количества союзников / противников (1 ответов, оставленных в Настройки / Плагины)
()![]()
только у меня так, чтобы команды были как переменные выведены ![]()
EnemiesCount для противников
SoratnikiCount для соратников
хотя у меня надо файл редактировать...но там всё безопасно ![]()
ну и у меня лишняя проверка, в какой команде вы, т.к. оказалось, что вы всегда в левой....но ничего от этого не страдает всёравно ![]()
1 918 2009-08-22 15:29:19
Re: полная лажа (14 ответов, оставленных в Общий)
бОльшая часть взломов идёт через трояны и доверчивых пользователей, а не через предоставляющих почтовые ящики.
1 919 2009-08-22 03:08:12
Re: смена комплекта в пещере ) (18 ответов, оставленных в Подземелье / Маршруты)
Я же вопрос не так ставил...
я ставил "Работает ли функция автоматического переодевания комплектов хил-боевой в данжах"?
я знаю, для чего хилл-комплекты создаются...но в топике то человек с 1000хп в комплекте одежды хочет нырять - вот и копаемся, как же ему этот комплект нацепить, дохилиться до 1000 и нырнуть
1 920 2009-08-22 00:49:41
Re: смена комплекта в пещере ) (18 ответов, оставленных в Подземелье / Маршруты)
я не в курсе:
А в данже функция переодевания комплекта хил-боевой работает?
Если работает - в чем задача тогда?
"итак, надо сделать чтобы в бот одевал хил, хилился до 1010хп, а потом лез в котел..."
если хил сам надевается нормально, то условие if(tkHP >1010){UseObjects();Walk("m3");}; становится уже достаточным для решения задачи
я мелкий лвл и могу чего-то не понимать)
1 921 2009-08-22 00:23:55
Re: смена комплекта в пещере ) (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 2009-08-22 00:10:18
Re: смена комплекта в пещере ) (18 ответов, оставленных в Подземелье / Маршруты)
Забыл упомянуть, что все события в строке происходят подряд...т.е. допустим у нас есть запись:
1ae47a5fce875a25b30e2f50f20671b5 : if(tkHP >1000)UseObjects();Walk("m3");
Если у человека при переходе на эту клетку 1000ХП(я был в шоке, когда у меня было 230хп и я тестил >230...оно выполнялось...потом дошло глянуть значение tkHP...230,23 о.О) то он поюзает объекты и пойдет дальше.
Если у человека меньше 1000хп, он не будет ждать вылечивания до нужного ХП, а тупо пойдёт дальше.
1 923 2009-08-22 00:04:44
Re: смена комплекта в пещере ) (18 ответов, оставленных в Подземелье / Маршруты)
Я мессаг удлиннил прошлый...подрбно расписал, где ошибка...
а как решить - это надо думать.
1 924 2009-08-21 23:39:05
Re: смена комплекта в пещере ) (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 2009-08-21 19:53:50
Re: смена комплекта в пещере ) (18 ответов, оставленных в Подземелье / Маршруты)
а вот это ещё ничего не гарантировало ![]()
можно было просто строку проверять на наличие этих записей и если есть - действовать ![]()
ну да ладно
не заметил - ну мой косяк, согласен ![]()