Кхм...
вобще эти изменения ни на что, кроме ведения боя, влиять не могут, т.к. функции "function DoWarriorBattle()" и "function DoWizardBattle()" вызываются только во время боя.
Сегодня у меня тоже были проблемы с БК(дико тупило и три бота остановились фактически. после перезапуска клиентов всё шло по маслу). Вот только фишка в том, что файл был изменён только у двоих, на которых тестировал. А встали все три(у меня три отдельных клиента сделано, какрас для тестирования). Значит виноват сервак, а не мои изменения.
1 951 2009-08-17 14:51:50
Re: а помоему подохло условие if(EnemiesCount >*) (14 ответов, оставленных в Проблемы / Баги / Неполадки)
1 952 2009-08-17 14:09:16
Re: ошибка через 9-12 часов работы (14 ответов, оставленных в Проблемы / Баги / Неполадки)
Честно говоря, у меня, например, такой ошибки не возникало...боты сутками работают.
Есть мысль, что NET Framework виноват. Переустановите чтоли ![]()
хуже от этого явно не станет
()
1 953 2009-08-17 01:43:34
Re: Проблемка появилась (25 ответов, оставленных в Проблемы / Баги / Неполадки)
проксю в настройках не включал?
1 954 2009-08-17 00:41:51
Re: Винда не запускает второе окно "от имени" (6 ответов, оставленных в Проблемы / Баги / Неполадки)
Есть.
Учеткой хотябы раз надо зайти самой.
Переключи учетку и попробуй в ней запустить бота.
Получится - можешь обратно переходить и нормально запускать от имени.
1 955 2009-08-17 00:36:08
Re: Проблемка появилась (25 ответов, оставленных в Проблемы / Баги / Неполадки)
rodzar тоже долго бился с проблемой работы бота...а оказалось всё банально - неверно написанный в настройках город.
Если у тебя версия 7.1, так может у тебя тоже город прописан криво? ![]()
1 956 2009-08-17 00:06:59
Re: версия 8.1 приемы для мага земли 10 (36 ответов, оставленных в Настройки / Плагины)
()
вот эту параллельно с магом воздуха читай.
1 957 2009-08-16 21:10:20
Re: а помоему подохло условие if(EnemiesCount >*) (14 ответов, оставленных в Проблемы / Баги / Неполадки)
Чтож.
Продолжаю публиковать самописный бред ![]()
Замена двух функций файла Main.js( не устаю напоминать, что перед внесением любых изменений необходимо сделать копию исходного файла на случай корявости работы моего варианта. Клиент после внесения изменений обязательно перезапустить.)
это старая версия. новая чуть ниже
function DoWarriorBattle()
{
var team1 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[0].sList;
var team2 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[1].sList;
var count_team1=0;
var pos_team1 = team1.indexOf(", ");
while (pos_team1 != -1){
count_team1++;
pos_team1 = team1.indexOf(", ",pos_team1+1);
}
count_team1++;
var count_team2=0;
var pos_team2 = team2.indexOf(", ");
while (pos_team2 != -1){
count_team2++;
pos_team2 = team2.indexOf(", ",pos_team2+1);
}
count_team2++;
if(team1.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team2;
SoratnikiCount=count_team1;
}
if(team2.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team1;
SoratnikiCount=count_team2;
}
DoWarriorPriem(1);
DoHit();
}
function DoWizardBattle()
{
var team1 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[0].sList;
var team2 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[1].sList;
var count_team1=0;
var pos_team1 = team1.indexOf(", ");
while (pos_team1 != -1){
count_team1++;
pos_team1 = team1.indexOf(", ",pos_team1+1);
}
count_team1++;
var count_team2=0;
var pos_team2 = team2.indexOf(", ");
while (pos_team2 != -1){
count_team2++;
pos_team2 = team2.indexOf(", ",pos_team2+1);
}
count_team2++;
if(team1.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team2;
SoratnikiCount=count_team1;
}
if(team2.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team1;
SoratnikiCount=count_team2;
}
DoWizardPriem(1);
}
Результат: можно в условиях писать EnemiesCount для получение колличества противников и SoratnikiCount для получение колличества человек в вашей команде.
Проверял в основном в данже. 4 раза в невидимых хаотах. Всех руками пересчитывал - всё точно, как в аптеке ![]()
Проверял, конечно же, через alert'ы.
Самое весёлое в этом было: скрипт этот изначально заганял в поле для условий приёмов, чтоб по 15 раз за бой не перезапускать клиент.
P.S.
может не так красиво, как в оригинале бота было....зато просто, как кирпич. ![]()
P.P.S.
Администратор опубликовал решение это проблемы и строка определения количества людей в командах у него была короче и проще...Но вот в приёмы такой длинны строку вписывать не очень удобно...а если вставить это в файл - можно просто в приёмы вставлять EnemiesCount для получение колличества противников и SoratnikiCount для получения количества соратников. Сами выбирайте, как вам жить ![]()
на основе этого решения zergnm я сократил эту вставку для файла:
function DoWarriorBattle()
{
var team1 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[0].sList;
var team2 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[1].sList;
var count_team1=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length;
var count_team2=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length;
if(team1.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team2;
SoratnikiCount=count_team1;
}
if(team2.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team1;
SoratnikiCount=count_team2;
}
DoWarriorPriem(1);
DoHit();
}
function DoWizardBattle()
{
var team1 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[0].sList;
var team2 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[1].sList;
var count_team1=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length;
var count_team2=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length;
if(team1.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team2;
SoratnikiCount=count_team1;
}
if(team2.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team1;
SoratnikiCount=count_team2;
}
DoWizardPriem(1);
}
1 958 2009-08-16 15:10:49
Re: Provodnik (15 ответов, оставленных в Общий)
А я и говорю
Ладно бы ещё вопрос стоял: "Не мог бы ты по доброте душевной меня провести?".
Ито далеко не факт, что помогли бы. Ибо эта услуга екр обычно стоит
Но ожидать, что кто-то отдаст тебе персонажа просто так, даже на время...темболее нужного проводника - это ещё более невероятно, чем что кто-либо согласится бесплатно провести.
1 959 2009-08-16 14:57:27
Re: Provodnik (15 ответов, оставленных в Общий)
Мне - впадлу ![]()
И искренне сомниваюсь, что кто-либо добровольно даст тебе своего любого персонажа.
Ладно бы ещё вопрос стоял: "Не мог бы ты по доброте душевной меня провести?".
Ито далеко не факт, что помогли бы. Ибо эта услуга екр обычно стоит ![]()
А тут прям такой запрос с наездом, что даже смеяться больно ![]()
1 960 2009-08-16 14:51:06
Re: Provodnik (15 ответов, оставленных в Общий)
Mojesh dati na paru dnei adnavo?
![]()
что значит дать?! о.О
1 961 2009-08-16 14:28:04
Re: зря заплатил 10 евра (16 ответов, оставленных в Настройки / Плагины)
()
пункт Как узнать идентификатор для нужного приема?
Самое примечательное, что это прикрепленная тема в этом же разделе форума ![]()
1 962 2009-08-16 14:01:54
Re: версия 8.1 приемы для мага земли 10 (36 ответов, оставленных в Настройки / Плагины)
()
хороший топик по магии воздуха....
сперва автор пишет словами то, что он хочет от приема с условием, затем реализацию.
вроде даже не зная языка можно подогнать под себя.
главное названия приемов определить своих и подставить ![]()
1 963 2009-08-16 13:35:26
Re: зря заплатил 10 евра (16 ответов, оставленных в Настройки / Плагины)
нет.
Народ, мне кажется или у него названия неверно написаны в первом посте.
Например: Испепеление 10 - wis_fire_incenerate08
разве не wis_fire_incenerate10
?
По идее названия будут:
Маг.Барьер 10 - wis_gray_manabarrier10
Призрачный Топор - spirit_12_prot_100
Испепеление 10 - wis_fire_incenerate10
Знак Земли - wis_earth_sign
Вспышка 10 - wis_fire_burst10
1 964 2009-08-16 13:16:14
Re: зря заплатил 10 евра (16 ответов, оставленных в Настройки / Плагины)
()
Ну вот, например, для воды.
Умения там подобные твоим, такчто в некоторых случаях просто надо название приема поменять.
Не ленись - разбирайся ![]()
1 965 2009-08-16 13:04:39
Re: Даже на стартовую не заходит( (3 ответов, оставленных в Проблемы / Баги / Неполадки)
проксю не прописывал?
1 966 2009-08-16 02:13:31
Re: Поиск 8 версий (11 ответов, оставленных в Флейм)
Честно говоря в данже у меня в неустановленном месте застопорился только один раз за....эм....3 недели активного(практически безвылазного) пользования(в первой попытке пройти данж). На второй-третий-четвертый нигде не застревал.
А потом я свои маршруты стал сам составлять(имея карту и набор значений m1,m5,m7,rl,rr и т.п это заняло не больше 13минут)....ну там чтоб не дохнуть в каких-либо особо-неудобных точках скопления мобов ![]()
1 967 2009-08-16 01:52:44
Re: Поиск 8 версий (11 ответов, оставленных в Флейм)
по мне в ней интерфейс больше нравиться
Согласен, интерфейс в ней прекрасный был ![]()
По мне так правая панель с чекбоксами была удобнее, чем тупо выпадающее меню.
Ещё модули стало неудобно редактировать в 8-й версии.
В 7-й галочку снял, скрипт подкорректировал, галочку вернул - всё.
А в 8-й без полного перезапуска клиента не выйдет такое ![]()
Пока отлаживал модуль данжей для похода партией, устал перезапускать ![]()
7.1 жалкое подобие какое то наверно...и читая функционал понимаешь это...ну на нет и суда нет...
Функционал читая)))))))))
Расклад такой: есть руки и спинной мозг программера(а каким ещё мозгом программер на яваскрипте писать может?! ) - бери и добавляй в 7.1 всё, что тебе нужно бесплатно.
Не хочешь этим заниматься - плати 10евро и получай тот же 7.1 с измененным интерфейсом, улучшенным алгоритмом данжа, условиями на приёмы и возможностью принимать заявки, а не только подавать(остальные изменения ты всеравно не заметишь).
1 968 2009-08-15 19:16:17
Re: Поиск 8 версий (11 ответов, оставленных в Флейм)
И никогда.
это не шутка. тут хороший метод против взлома используется ![]()
Честно говоря мне 7-ая больше нравилась...8-ая, для меня, выигрывает только за счет условий на умения.
1 969 2009-08-15 15:30:47
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
Если не сработает это - сделаю по-другому.
Сейчас думаю над такой интересной вещью, чтобы была возможность создавать отдельно для каждого персонажа файл настроек. И этот файл сам подгружался в Dungeon.js при запуске клиента с данным персонажем...
Должно получиться красиво в общем ![]()
вот только далеко не факт, что получится ![]()
-------------------------------------------------------------------------------
Долго-долго искал, как эту идею реализовать ![]()
Таки нашел способ...а не было бы на компе 7-й версии установленной - так и не нашёл бы ![]()
Спасибо автору бота за файл Readme.txt в папке plugins в 7-й версии ![]()
Короче, что я имею на данный момент(Это не проверенная версия...ну т.е. для одного, конечно проверено всё....все параметры из дополнительного файла подгружаются...но двоих с одной копии бота я не пробовал запустить. По идее должно работать
буду благодарен тому, кто проверит
):
var s = "";
var dungName = "";
var dungeonCoords = "";
var dungeonDirection = 0;
var dungeonPosition = "";
var dungeonLastPosition = "";
var breakAction = false;
var _id = "";
var _object = null;
var texting=external.LoadFile("Modules\\DungeonUsers\\"+mylogin+".txt"); //Обязательно полный путь(пробовал относительный - не работало)
eval(texting); // эта функция выполняет строку texting как JavaScript.
//alert(texting);
// рекомендую в первый раз раскомментировать этот алерт. При запуске клиента и входе в игру выскочит ошибка с содержанием вышеподключаемого файла...т.е. можно проверить, правильно ли прописан путь
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((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()
{
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;
//alert("Происходит проверка заявки номер: "+i+".");
if(z.indexOf("fl(\""+provodnik+"\"")>0){
//alert("Заявка найденна. Пытаюсь ввести пароль");
top.frames[3].document.forms[ i ].pass.value=grouppass;
//alert("Ввел пароль - пытаюсь подтвердить заявку");
top.frames[3].document.forms[ i ].submit();
}
}
}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){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var date = new Date();
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
// alert("Ща запущусь");
top.frames[3].document.all.start.click();
}else{top.frames[3].window.location.reload();}
}
if(groupkanal==false){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var date = new Date();
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
//alert("Не включен групповой режим");
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*koeff))
{
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;
}
}
В папке Modules создать надо папку DungeonUsers. В ней создавать для всех персонажей файлы ТочныйНикПерсонажа.txt с содержанием
var koeff = 1.0; //проценты ХП, при которых вы будете нападать на мобов(1.0 = 100%, 0.75 = 75% и т.д.)
var groupkanal = true; //Если идёте один - false
if(groupkanal==true){
var provodnik = ""; //Кто является проводником/лидером. Это обязательно надо указать и для самого проводника, и для прицепа.
if(provodnik==mylogin){var liderstvo = true;}else{var liderstvo = false;}
var grouppass = "321456"; //Пароль группы
var partija = "2"; //Количество людей в партии, включая вас.
}
С одной стороны это менее удобно, чем версия выше...С другой стороны это даст дальше развивать возможности использования модуля подземелий за счет более гибкого разграничения параметров каждого своего персонажа(короче лишним не будет:) )
1 970 2009-08-15 11:46:37
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
Хм. Нет придела совершенству!!! ![]()
Для Гиппо персонально частично непроверенный вариант:)
if(groupkanal==true){
//////////////////// Групповой поход ////////////////////
//Если вы идете один, просто выставьте groupkanal = false и параметры ниже можно
//не изменять.
var provodnik = ""; //Кто является проводником/лидером.
if(provodnik==mylogin){var liderstvo = true;}else{var liderstvo = false;}
var grouppass = "321456"; //Пароль группы
var partija = "2"; //Количество людей в партии, включая вас.
}
1 971 2009-08-15 02:11:29
Re: нейтральный клан ! (23 ответов, оставленных в Общий)
Есть......но не у всех ![]()
1 972 2009-08-15 01:59:38
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
Всё.
С МунГ'ом разобрались.
Всё работает.
Конечный файл Dungeon.js выглядит вот так для версии 8.1.
var s = "";
var dungName = "";
var dungeonCoords = "";
var dungeonDirection = 0;
var dungeonPosition = "";
var dungeonLastPosition = "";
var breakAction = false;
var _id = "";
var _object = null;
var groupkanal = false; //Если идёте один - false
if(groupkanal==true){
//////////////////// Групповой поход ////////////////////
//Если вы идете один, просто выставьте groupkanal = false и параметры ниже можно
//не изменять.
var liderstvo = true; //true - вы лидер группы. false - не вы лидер.
var provodnik = ""; //Кто является проводником/лидером. Это обязательно надо указать и для самого проводника, и для прицепа.
var grouppass = "321456"; //Пароль группы
var partija = "2"; //Количество людей в партии, включая вас.
}
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((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()
{
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;
//alert("Происходит проверка заявки номер: "+i+".");
if(z.indexOf("fl(\""+provodnik+"\"")>0){
//alert("Заявка найденна. Пытаюсь ввести пароль");
top.frames[3].document.forms[ i ].pass.value=grouppass;
//alert("Ввел пароль - пытаюсь подтвердить заявку");
top.frames[3].document.forms[ i ].submit();
}
}
}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){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var date = new Date();
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
// alert("Ща запущусь");
top.frames[3].document.all.start.click();
}else{top.frames[3].window.location.reload();}
}
if(groupkanal==false){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var date = new Date();
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
//alert("Не включен групповой режим");
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;
}
}
Не забываем вписать имя проводника(тут всё регистрочувствительное. Т.е. "Проводник" и "проводниК" - это два разных персонажа), включить/выключить параметр groupkanal....короче в комментах всё написано.
1 973 2009-08-15 01:30:58
Re: нейтральный клан ! (23 ответов, оставленных в Общий)
Нда...доки на всех ботов.......на бабушек со своего подъезда регистрировать ![]()
1 974 2009-08-15 00:38:38
Re: Бот-проводник и бот-прицеп... Учим ботов ходить парой. (95 ответов, оставленных в Настройки / Плагины)
Хм.
Клиент перезапускал после внесения изменений о колличестве персонажей в партии?
Запусти и отпишиь, что на ошибке будет написано(А лучше отредактируй свое прошлое сообщение и вставь туда свою функцию function StartKanalZayavka()....персонального в ней нет ничего, такчто тупо копи-паст сюда)
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);
}
}
}
alert("В партии сейчас "+count+" .А должно быть: "+partija);
if(count==partija){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var date = new Date();
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
alert("Ща запущусь");
//top.frames[3].document.all.start.click();
}
}
if(groupkanal==false){
usedObjects = [];
dungeonMovementCount = [];
dungeonCoords = "";
dungeonDirection = 0;
var date = new Date();
dungeonStartTime = parseInt(String(date.getTime()).substring(0,10));
alert("Не включен групповой режим");
//top.frames[3].document.all.start.click();
}
}
1 975 2009-08-14 20:13:42
Re: нейтральный клан ! (23 ответов, оставленных в Общий)
Все хотят ![]()
такой вот клан ботоводов получится ![]()