Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой.
обалдеть вот это да
спасибо нашему форумному "самописцу"
Anahronik - большое тебе, человеческое спасибо!!!
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
обалдеть вот это да
спасибо нашему форумному "самописцу"
Anahronik - большое тебе, человеческое спасибо!!!
что-то не получается. у тебя написано менять в main.js, но там таких блоков нет, может всё-таки dungeon.js?
меняю
if(IsMapVisible())
{
dungName = top.frames[3].location.href.match(/combats.com\/(.+?)\?/)[1];
var date = new Date();
var currentTime = parseInt(String(date.getTime()).substring(0,10));
if((external.SDungeonExitTime.Text != "0") && ((currentTime - dungeonStartTime)/60 >= parseInt(external.SDungeonExitTime.Text)))
{
top.frames[3].location = top.frames[3].document.links[0].href;
return;
}
на
if(IsMapVisible())
{
dungName = top.frames[3].location.href.match(/combats.com\/(.+?)\?/)[1];
var date = new Date();
if(zag==0){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
zag++;
}
var currentTime = parseInt(String(date.getTime()).substring(0,10));
if((external.SDungeonExitTime.Text != "0") && ((currentTime - dungeonStartTime)/60 >= parseInt(external.SDungeonExitTime.Text)))
{
top.frames[3].location = top.frames[3].document.links[0].href;
return;
}
Ну и функцию PutKanalzayavka(), там всё ясно.
Статус висит "вхожу".
Ну так что, есть идеи как исправить?
Буду премного благодарен
Да, ты прав...не Main.js, а Dungeon....
Мозг загибается в последнее время....кто вёрсткой сайтов занимается, должен понять меня.
А скрипты я пишу отдыхая от вёрстки...мозг опухший - вот и ошибаюсь иногда
Ещё это падение форума сегодняшнее...из-за него отметки новых сообщений отсутствовали и я не знал, что тут отписались уже
Ты попробовал прописать всё это в Dungeon.js ? не заработало?
Кстати, в боте вроде изначально есть недостаток на подобии мной допущенного:
если выставить время выхода даже в свежем и пальцем нетронутом клиенте бота, то если программу перезапустить, бот тоже ходить не должен.(не проверял...просто логично было бы)
Отредактировано anahronik (2009-08-21 03:31:15)
Прописывал в Dungeon,js, не получается.. что куда вставлял описал сверху.
Как и обещал, проверил ночью
При выставленном времени выхода у меня нормально бегает прицеп...извини, но выходит или нет после времени я проверять не стал
Мой Dungeon.js
var s = "";
var dungName = "";
var dungeonCoords = "";
var dungeonDirection = 0;
var dungeonPosition = "";
var dungeonLastPosition = "";
var breakAction = false;
var _id = "";
var _object = null;
var groupkanal;
var zag=0;
var texting=external.LoadFile("Modules\\DungeonUsers\\"+mylogin+".txt");
//alert(texting);
eval(texting);
//alert(texting);
//alert("groupkanal: "+groupkanal+"\n provodnik:"+provodnik+"\n liderstvo: "+liderstvo+"\n grouppass: "+grouppass+"\n partija: "+partija);
function DungeonMain()
{
s = top.frames[3].document.all[0].innerHTML;
if(IsMapVisible())
{
dungName = top.frames[3].location.href.match(/combats.com\/(.+?)\?/)[1];
var date = new Date();
var currentTime = parseInt(String(date.getTime()).substring(0,10));
if(zag==0){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
zag++;
}
if((external.SDungeonExitTime.Text != "0") && ((currentTime - dungeonStartTime)/60 >= parseInt(external.SDungeonExitTime.Text)))
{
top.frames[3].location = top.frames[3].document.links[0].href;
return;
}
external.SetStatusLabel("Поздемелье");
dungeonCoords = s.match(/arrMap = (\[\[.+?\]\])/)[1];
dungeonDirection = top.frames[3].nMyDirection;
dungeonPosition = external.MD5Hash(dungeonCoords + "," + dungeonDirection);
if(dungeonMovementCount[dungeonPosition] == undefined)
dungeonMovementCount[dungeonPosition] = 0;
if(dungeonPosition != dungeonLastPosition)
{
if(dungeonMovementCount[dungeonLastPosition] != undefined)
dungeonMovementCount[dungeonLastPosition]++;
else
dungeonMovementCount[dungeonLastPosition] = 1;
dungeonLastPosition = dungeonPosition;
}
if(external.SDungeonPickUpObjects.Checked)
{
var drop = s.match(/\?get=(\d+)/g);
if(drop != null)
{
if(s.indexOf("слишком много") > 0 || s.indexOf("У вас уже есть один такой предмет") > 0)
usedObjects[_id] = true;
for(i = 0; i < drop.length; i++)
{
_id = drop[i].match(/\d+/);
if(!usedObjects[_id])
{
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + drop[i];
return;
}
}
}
}
if(s.indexOf("'rollconfirm")>0)
{
var drop = s.match(/'rollconfirm\(.+?,.+?,\"\d+\"\)/g);
if(drop != null)
{
if(s.indexOf("слишком много") > 0 || s.indexOf("У вас уже есть один такой предмет") > 0 || (s.indexOf("Вы уже сделали свой бросок") > 0 && !external.SDungeonPickUpObjects.Checked))
usedObjects[_id] = true;
for(i = 0; i < drop.length; i++)
{
_id = drop[i].match(/\"(\d+)\"/)[1];
if(!usedObjects[_id])
{
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?get=" + _id + (external.SDungeonPickUpObjects.Checked ? "&tmpname423=Да": "&pass=Нет");
return;
}
}
}
}
breakAction = false;
eval(external.DungeonGetCodeForLocation(dungeonPosition));
}
else
{
if(s.indexOf("Создать группу") > 0)
{
external.SetStatusLabel("Создаю заявку");
PutKanalZayavka();
}
else if(s.indexOf("Начать") > 0)
{
external.SetStatusLabel("Начинаю поход");
StartKanalZayavka();
}
else
{
external.SetStatusLabel("Не видно карты, не в подземелье, или еще не истекла задержка");
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl";
}
}
}
function randomString()
{
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 8;
var randomstring = '';
for (var i=0; i<string_length; i++)
{
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum,rnum+1);
}
return randomstring;
}
function PutKanalZayavka()
{
zag=0;
var searched=false;
if(liderstvo==false && groupkanal==true){
//alert("Вы собираетесь искать существующую заявку с лидером"+provodnik);
xlength=top.frames[3].document.forms.length;
//alert("Если в этом окошке выведен этот текст и число, близкое к числу заявок на странице - это хорошо. Число заявок: "+xlength);
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()
{
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[3].document.all.start.click();
}else{setTimeout(top.frames[3].window.location.reload(),3000);}
}
if(groupkanal==false){
top.frames[3].document.all.start.click();
}
}
function IsMapVisible()
{
if(s.match(/arrMap =/) != null)
return true;
else
return false;
}
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 UseObjects()
{
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 || s.indexOf("нет необходимых ингредиентов")>0)
usedObjects["\"" + _object.id + "\""] = true;
for(var i=0; i<top.frames[3].arrLayers[1][0]["l"].arrObjects.length; i++)
{
_object = top.frames[3].arrLayers[1][0]["l"].arrObjects[i];
if(!usedObjects["\"" + _object.id + "\""])
{
external.SetStatusLabel("Копаюсь в хламе...");
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?useobj=" + _object.id;
breakAction = true;
return;
}
}
}
}
catch(err)
{
}
}
}
function AttackMobs()
{
if(!IsWallPresent())
{
try
{
if(top.frames[3].arrLayers[1][0]["l"].arrUnits[0])
{
if(top.frames[3].arrLayers[1][0]["l"].arrUnits[0].action != "")
{
if(tkHP >= maxHP)
{
external.SetStatusLabel("Нападаю на мобов");
if(external.SDungeonAttackMobs.Checked)
top.frames[3].location = "http://" + external.SCity.Text +".combats.com/" + dungName + "?attack=1&use=" + top.frames[3].arrLayers[1][0]["l"].arrUnits[0].id;
}
breakAction = true;
return;
}
}
}
catch(err)
{
}
}
}
function Exit()
{
if(breakAction)
return;
top.frames[3].location = top.frames[3].document.links[0].href;
}
function Walk(step)
{
if(breakAction)
return;
if(step == "rl" || step == "rr")
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() + "&path=" + step;
else
{
if(top.frames[3].is_accessible)
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() + "&path=" + step;
}
}
у меня тут может каких-то модификаций нехватать, т.к. это с одного из 3-х клиентов взято и не на всех одинаковые файлы(для похода тут всё рабочее. по этому файлу ходят два бота в связке)...
рекомендую только сравнивать со своим.
Отредактировано anahronik (2009-08-22 01:42:49)
подскажите почему бот во втором окне несчитает ходы?
8-ая версия, вроде как, вобще ходы не считает....
там алгоритм хождения не по порядковому номеру шага.
у меня версия 7..
Подзабыл про эту тему)
anahronik, за работу огромное спасибо, но пока не смогу потестить, уезжаю, вернусь - проверю = )
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"; //Количество людей в партии, включая вас.
/////////////////////////////////////////////////////////////////////////////
}
Всё подает, всё принимает, всё ходит и шаг пишет в обоих окнах.
Отредактировано anahronik (2009-08-24 18:03:18)
Оффтоп! Ухты! Подсветка кода начала работать!) Спасибо Админ! ))
Отредактировано Петро (2009-08-24 15:22:42)
В строке кто var provodnik = ""; //Кто является проводником/лидером. -писать ник роводника? , если так то где и писать ник проводимого?и надо ли делать отдельно бот дял проводника и проводимого или проводник и так небудет подбирать нечё?и будут ли они ходить в отдельных ботах?
Отредактировано IceAngel (2009-08-24 20:12:50)
В строке кто var provodnik = ""; //Кто является проводником/лидером. -писать ник роводника? , если так то где и писать ник проводимого?и надо ли делать отдельно бот дял проводника и проводимого или проводник и так небудет подбирать нечё?и будут ли они ходить в отдельных ботах?
Писать ник ведомого ненадо, проводник стартует поход, когда в группе указанное количество участников.
Что значит:
надо ли делать отдельно бот дял проводника и проводимого или проводник и так небудет подбирать нечё?
?
Попробуй сфорумулировать свой вопрос человеческим языком.
Если я правильно понимаю, тогда:
Для каждого бота лучше скопировать отдельную копию папки с программой.
Что бы проводник ничего не собирал, а ведомый ни на кого не нападал, зайди в "настройки" - "дополнительно", и сними соответствующие галочки.
будут ли они ходить в отдельных ботах?
Опять же, пиши по-русски.
А если ненадо вписывать ник проводника, то как тогда, ведомый зайдёт в нужную группу?
А если ненадо вписывать ник проводника, то как тогда, ведомый зайдёт в нужную группу?
Наоборот, проводник прописывается в переменную provodnik.
а ведомый не прописывается никуда.
ок спасибо , вроде всё понел:) тока бот когда умер на втром этаже нестал идти дальше (
Отредактировано IceAngel (2009-08-24 23:32:17)
Петро, для 7-й то я тоже выкладывал
По поводу (Please log in or register to see this URL)
Там эта переменная в двух местах прописана - в начале при задании её значения, и в месте, где это значение используется.
Внести такое изменение может любой человек без моей помощи.
нет конечно, не будет.
и я ошибся, изменений там не одна переменная видимо.
Но я ведь не могу брать его изменения и пихать к себе - неправильно это : /
и чё значит некак незделать чтобы он незастревал?:(
бот проводник несоздаёт группу, а если создаш руками то прцеп всё робит. мб я что-то не то делаю?
у всех персонажей в созданном txt файле должен быть проводник прописан.
даже у проводника. Если у проводника не прописать - он никогда не узнает, что проводником является.