Ответ здесь
()
1 2009-09-12 16:42:20
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
2 2009-09-11 17:31:22
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
Пробуй перезагрузить клиент
Я попытался, но не работает
3 2009-09-11 16:58:50
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
Я попытался kanal.txt после изменения, которые Вы сделали здесь! все хорошо, но до ввода канал! проводник останавливается здесь, это даже не шаг. прицеп идти все нормально!
PS: Извините за русский, но так переводится Google Translate
4 2009-09-11 09:43:27
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
В общем, ничего не делает, и ник без ошибок! podaiot zaiavka нет, не начало, а не идти путем Подземка
5 2009-09-09 20:29:54
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
Извините меня вновь обратиться с просьбой, но я стараюсь писать 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 == "()")
KanalDirection = 1;
else if(Direction == "()")
KanalDirection = 3;
else if(Direction == "()")
KanalDirection = 5;
else if(Direction == "()")
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 - имя персонажа в игре