Не думал, что комната сумеет потеряться - я его гонял туда-сюда из разных комнат часа два....ниразу не было.
Но раз уж такая пъянка, то если вдруг потеряет - попрётся теперь в ЗВ2, ибо ЗВ1 мне надоел:)

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

3 раза заменил свой текущий файл выложенным здесь.
Дважды просто выходил из БК, один раз полностью бота перезапускал.
Ниодин раз не было неактивного старта.
И если включить ремонт - он сразу бежал в мастерскую...

Удобнее всего копировать код через цитирование моего сообщения...это для тех, кто не в курсе....мало ли...

я практически уверен, что должно работать.....и дко устал за сегодня smile
такчто не стоит smile

Update.
См. первый пост.

Update.
Все можно прочитать в первом сообщении.
Изменения коснулись всех пунктов.

1 532

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

Не надо писать "Не согласен".
Совершенствуйте существующую схему:
1)Танк
Щит длжен быть...

2)Силовик
Самый выский стат - сила и два оружия.

3)Крит
Самый выский стат - удача

4)Уворот
Самый выский стат - ловкость

5)Лучник
Оружие - лук

6)Арбалетчик
Оружие - арбалет

7)Маг
Оружие - посох

8)Остальные
Не вошедшие в остальные классы.

Я так 5 дней подряд буду сидеть и читать "Не согласен с этим.....не согласен с тем". Да я сам не согласен со многим. Но мне нужна чёткая схема, а не мысли вслух.
Итак мозг не варит - с маршрутами весь день мучился. То одно не работает, то второе...

1 533

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

Ну попадут эти персонажи в раздел "Остальные". Делов то))

1 534

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

Ну добро.
Как разберусь с маршрутами - так попробую этот алгоритм оформить smile

1 535

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

Вот я этих ньюансов не знаю hmm
посмотрите под мой аватар.... smile
поэтому и обратился к тебе, Гиппо. И спасибо тебе за оформление темы smile

1 536

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

Так.
Значит классами выбираем:
1)Танк
Щит длжен быть...

2)Силовик
Самый выский стат - сила и два оружия.

3)Крит
Самый выский стат - удача и два оружия.

4)Уворот
Самый выский стат - ловкость и два оружия.

5)Лучник
Оружие - лук

6)Арбалетчик
Оружие - арбалет

7)Маг
Оружие - посох

8)Остальные
Не вошедшие в остальные классы.

Или я чего-то упустил?

1 537

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

С определением оружия(или щита....или ещё какой шмотки) проблем быть не должно...
С параметрами мне нехватает конкретики.
Я прекрасно понимаю, что надо сравнивать статы. Но каким алгоритмом?
"Если ловкость>силы && ловкость>удачи && ловкость>выносливости && ловкость>интеллекта - то ловкач"?
но разве такое для 8го лвла прокатит? и для какого лвла вобще таое сравнение актуально?

Покачто, зачем мне это, знают Барабашка, Петро и Гиппо. Остальным скажу, что идея довольно интересная и оригинальная...но сам я нихрена с классификацией справиться не смогу smile

1 538

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

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

1 539

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

Их предлагаю делить по статам на:
Ловкость => уворот.
Интуиция => крит.
Сила => танк.

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

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

Update: Изменения сдвигаются до завтра...

после добавления в маршрут Кэпа, я случайно пропустил один else...
Короче, обновите пункт 4 себе...

UP.
ато народ забывать начал, что такое есть...

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

Это не плагин hmm
это модификация для версии 8.2

Я раскрою вам секрет...я получил травму и поставил себе в код строчку, чтоб он мне в чат писал есть травма или нет с интервалом из настроек бота.
Получил результат, что ровно каждую минуту(+-несколько секунд в редких случаях по лагам БК) у бота значение травмированности снимается.

От Лича он без травмы ходит.
А как травма появляется, то столкновение с условием "Если есть травма и не стоит галочка - статус травма. Иначе - всё остальное, включая ремонт, лича, драки".
Самое простое - поставить таки то дополнение, что я указал и поставить галочку...если бы я считал, что оно не нужно - я бы персонально для тебя переписал Лича.

Добавь себе ещё вот это
() (самую нижнюю версию)
тогда можно о слетании комплекта не беспокоиться...

Я взял твой первый код, где функции повторялись, и сам заменил...попробуй

var cBattle = false;
var ZayavkaOut = 0;
var ZayavkaTimer = 0;
var BattleReady;
var user_text=external.LoadFile("Modules\\Users\\"+mylogin+".txt");
eval(user_text);
 
var LichProcess = false;
var script = external.LoadFile("Modules\\Leach.js");
 
eval(script);
 
function Main()
{
external.RequestInfoFromServer(mylogin, false);
external.SetHPStatusLabel("HP: " + external.hpCurrent + "/" + external.hpMaximum);
 
if (external.injury && !external.SBattleWithInjury.Checked)
{
external.SetTrayIcon(5);
external.SetStatusLabel("Травма");
 
if (external.SCureInjuries.Checked && !external.inBattle)
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?edit=2&" + Math.random();
}
else
{
if (!external.inBattle)
{
cBattle = false;
if (top.User.Framework.GetTab("battle").bSelected)
top.Battle.End("http://" + external.SCity.Text + ".combats.com/main.pl");
else
{
if(external.SRepairType.SelectedIndex > 0)
{
if(RepairMain())
return;
}
if((external.room_name.match(/Врата\sДуш/)) && (external.SCity.Text == "angelscity" || external.SCity.Text == "capitalcity"))
{
LichProcess = true;
}
//external.AddToChat(external.injury+" : "+LichProcess);
if(((LichHeal && external.level>=8 && external.injury) || LichProcess) && (external.SCity.Text == "angelscity" || external.SCity.Text == "capitalcity"))
{
external.SetStatusLabel("ЛичУемся");//чисто чтоб видеть 
if(!LichProcess){
external.AddToChat("кастыли : "+Kostili);
httpGetPageRequest(Kostili);
LichProcess=true;
return;
}
 
LichHealMain();
return;
 
}
 
if(external.SStatsAdder.Checked)
{
var s = top.frames[3].document.all[0].innerHTML;
if(s.indexOf("+ Способности") > 0)
{
var currentStat = external.GetCurrentStat(external.my_default_stats);
if(currentStat.length > 0)
{
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?upr=save&" + currentStat + "=1";
return;
}
}
}
if(external.hpMaximum<setMaxHP){
BattleReady=false;
if(external.injury==false){
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?skmp=" + external.SComplectBattle.Text;}
}
else{ BattleReady=true;}
var cHPPercent = external.hpCurrent * 100 / external.hpMaximum;
if (cHPPercent < external.SBattleAbovePercent.Text)
{
external.SetStatusLabel("Восстанавливаю HP");
 
if(cHPPercent <34)
external.SetTrayIcon(1);
else if(cHPPercent < 67)
external.SetTrayIcon(2);
else
external.SetTrayIcon(3);
 
if(external.SComplectEnabled.Checked)
{
if(external.hpCurrent < parseInt(external.SComplectChangeOn.Text))
{
if(!external.healWeared && external.SComplectHeal.Text.length > 0)
{
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?skmp=" + external.SComplectHeal.Text;
return;
}
}
else if(!external.battleWeared && external.SComplectBattle.Text.length > 0)
{
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?skmp=" + external.SComplectBattle.Text;
return;
}
}
}
else
{
external.SetTrayIcon(6);
 
if(external.SComplectEnabled.Checked)
{
if(!external.battleWeared && external.SComplectBattle.Text.length > 0 && (external.hpCurrent >= parseInt(external.SComplectChangeOn.Text) || external.hpCurrent >= external.hpMaximum))
{
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/main.pl?skmp=" + external.SComplectBattle.Text;
return;
}
}
 
if(!external.dungeonEnabled && BattleReady==true)
PutZayavka(external.SBattleType.SelectedIndex);
}
 
if(external.dungeonEnabled && !external.BrowserBusy)
DungeonMain();
}
}
else
{
external.SetTrayIcon(4);
external.SetStatusLabel("Идет бой!");
 
if(external.SCharType.SelectedIndex == 0)
DoWarriorBattle();
else
DoWizardBattle();
 
if (!cBattle)
{
cBattle = true;
external.healWeared = false;
external.battleWeared = false;
top.User.Framework.GetTab("battle").Select();
external.OnBattleStartEvent();
}
}
}
}
 
function CheckInfo()
{
if(xmlResponse.match(/травма/) != null)
external.injury = true;
 
DoAction = false;
 
for(i = 0; i < PluginsList.length; i++)
{
if(PluginsOnInfoLoad[PluginsList[i]] != undefined && PluginsOnInfoLoad[PluginsList[i]] != "")
eval(PluginsOnInfoLoad[PluginsList[i]] + "();");
}
 
if (!external.injury || (external.injury && external.SBattleWithInjury.Checked))
{
if (!external.inBattle)
UseElikSvitok();
else
setTimeout("UseElikSvitok();", 5000);
}
}
 
function UseElikSvitok()
{
if(!DoAction)
{
if (external.SEliksirEnabled.Checked)
EliksirMain(false);
 
if (external.SSvitokEnabled.Checked)
EliksirMain(true);
 
if (external.SAnimalEat.Checked)
AnimalMain();
}
else
setTimeout("UseElikSvitok();", 5000);
}
 
function CureInjuries()
{
for (i = 0; i < top.frames[3].document.links.length; i++)
{
if(top.frames[3].document.links[i].href.indexOf("Лечение") > 0)
{
external.injury = false;
top.frames[3].document.links[i].click();
setTimeout("top.frames[3].document.getElementById(\"slform\").submit()", 1000);
break;
}
}
}
 
function PutZayavka(type)
{
var step = GetZayavkaStep(type);
if(type == 0)
{
if(step == 0)
{
external.SetStatusLabel("Готов к бою");
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/zayavka.pl?level=fiz";
}
else if(step == 1)
{
external.SetStatusLabel("Подаю заявку");
top.frames[3].document.F1.open.click();
}
else if(step == 2)
{
external.SetStatusLabel("Жду игроков...");
}
}
else if(type == 1)
{
if(step == 0)
{
external.SetStatusLabel("Готов к бою");
ZayavkaOut = 0;
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/zayavka.pl?level=dgv";
}
else if(step == 1)
{
if(external.SBattleDogovorZayavkaType.SelectedIndex == 0)
{
external.SetStatusLabel("Подаю заявку");
PutFizZayavka();
}
else
{
external.SetStatusLabel("Принимаю заявки");
SelectFizZayavka();
}
}
else if(step == 2)
{
if( ! ZayavkaOut)
{
if(external.SBattleDogovorZayavkaType.SelectedIndex == 0)
external.SetStatusLabel("Жду игроков...");
 
else
external.SetStatusLabel("Жду ответа...");
RefreshFizZayavka();
}
else
{
external.SetStatusLabel("Отзываю заявку");
OutFizZayavka();
}
}
else if(step == 3)
{
if(TestFizZayavka())
{
AgreeFizZayavka();
}
else
{
external.SetStatusLabel("Бой отказан");
DisagreeFizZayavka();
}
}
}
else if(type == 2)
{
if(step == 0)
{
external.SetStatusLabel("Готов к бою");
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/zayavka.pl?level=group";
}
else if(step == 1)
{
external.SetStatusLabel("Подаю заявку");
PutGroupZayavka();
}
else if(step == 2)
{
external.SetStatusLabel("Подаю заявку");
PutGroupZayavka2();
}
else if(step == 3)
{
external.SetStatusLabel("Жду начала групового боя...");
RefreshGroupZayavka();
}
}
else if(type == 3)
{
if(step == 0)
{
external.SetStatusLabel("Готов к бою");
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/zayavka.pl?level=haos";
}
else if(step == 1)
{
if(external.SBattleHaotZayavkaType.SelectedIndex == 0)
{
external.SetStatusLabel("Подаю заявку");
PutHaotZayavka();
}
else
{
external.SetStatusLabel("Принимаю заявку");
SelectHaotZayavka();
}
}
else if(step == 2)
{
external.SetStatusLabel("Жду начала хаотичного боя...");
RefreshHaotZayavka();
}
}
}
 
function GetZayavkaStep(type)
{
var s = top.frames[3].document.all[0].innerHTML;
if(type == 0)
{
if(s.indexOf("После подачи заявки") > 0)
return 1;
else if(s.indexOf("Отозвать") > 0)
return 2;
else
return 0;
}
else if(type == 1)
{
if(s.indexOf("Подать заявку на бой") > 0)
return 1;
else if(s.indexOf("Отозвать") > 0)
return 2;
else if(s.indexOf("Ожидаем подтверждения вызова") > 0)
return 2;
else if(s.indexOf("Отказать") > 0)
return 3;
else
return 0;
}
else if(type == 2)
{
if(s.indexOf("Подать новую заявку") > 0)
return 1;
else if(s.indexOf("Подать заявку на групповой бой") > 0)
return 2;
else if(s.indexOf("Ожидаем начала группового боя") > 0)
return 3;
else
return 0;
}
else if(type == 3)
{
if(s.indexOf("Подать заявку на хаотичный бой") > 0)
return 1;
else if(s.indexOf("Ожидаем начала группового боя") > 0)
return 2;
else
return 0;
}
}
 
function PutFizZayavka()
{
top.frames[3].document.F1.timeout.selectedIndex = external.SBattleDogovorTimeout.SelectedIndex;
top.frames[3].document.F1.k.value = external.SBattleDogovorType.SelectedIndex;
top.frames[3].document.F1.open.click();
ZayavkaOut = 0;
}
 
function RefreshFizZayavka()
{
top.frames[3].document.F1.tmp.click();
}
 
function OutFizZayavka()
{
top.frames[3].document.F1.close.click();
ZayavkaOut = 0;
clearTimeout(ZayavkaTimer);
}
 
function TestFizZayavka()
{
var s = top.frames[3].document.all[0].innerHTML;
var _temp = s.substring(s.indexOf("Поединок с") + 34, s.indexOf("Поединок с") + 51);
var op_login = _temp.substring(0, _temp.indexOf(",") - 1);
 
external.RequestInfoFromServer(op_login, true);
 
var r = false;
 
if(external.level >= external.enemy_level)
r = true;
else
r = false;
 
if(r)
{
var atype = external.SBattleDogovorStatsAnalyze.SelectedIndex;
if(atype > 0)
{
switch(atype)
{
case 1 :
r = external.enemy_stats < external.my_stats;
break;
case 2 :
r = external.enemy_stats <= external.my_stats;
break;
case 3 :
r = external.enemy_stats == external.my_stats;
break;
case 4 :
r = external.enemy_stats >= external.my_stats;
break;
case 5 :
r = external.enemy_stats > external.my_stats;
break;
}
}
 
external.SetStatusLabel(op_login + " принял вызов. Сумма статов: " + external.enemy_stats);
}
 
return r;
}
 
function TestFizZayavka2(op_login)
{
external.RequestInfoFromServer(op_login, true);
 
var r = false;
 
if(external.level >= external.enemy_level)
r = true;
else
r = false;
 
if(r)
{
var atype = external.SBattleDogovorStatsAnalyze.SelectedIndex;
if(atype > 0)
{
switch(atype)
{
case 1 :
r = external.enemy_stats < external.my_stats;
break;
case 2 :
r = external.enemy_stats <= external.my_stats;
break;
case 3 :
r = external.enemy_stats == external.my_stats;
break;
case 4 :
r = external.enemy_stats >= external.my_stats;
break;
case 5 :
r = external.enemy_stats > external.my_stats;
break;
}
}
 
external.SetStatusLabel("Принимаю заявку " + op_login + ". Сумма статов: " + external.enemy_stats);
}
 
return r;
}
 
function AgreeFizZayavka()
{
top.frames[3].document.F1.confirm.click();
ZayavkaOut = 0;
clearTimeout(ZayavkaTimer);
}
 
function DisagreeFizZayavka()
{
top.frames[3].document.F1.close.click();
}
 
function SelectFizZayavka()
{
var elements = top.frames[3].document.F1.getElementsByTagName("input");
for(i = 0; i < elements.length; i++)
{
var element = elements[i];
if(element.type == "radio")
{
var _name = element.nextSibling.nextSibling.nextSibling.outerHTML.match(/drwfl\(\"(.+)\",[0-9]+,\"[0-9]\",.+\)/)[1];
var cLevel = element.nextSibling.nextSibling.nextSibling.outerHTML.match(/drwfl\(\"[^"]+\",[0-9]+,\"(.+)\",.+\)/)[1];
if(cLevel == external.level)
{
var battleType = (element.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.alt == "Кулачный бой") ? 1 : 0;
if(battleType == external.SBattleDogovorType.SelectedIndex)
{
if(TestFizZayavka2(_name))
{
element.checked = true;
top.frames[3].document.F1.confirm2[0].click();
return;
}
}
}
}
}
 
PutFizZayavka();
}
 
function PutGroupZayavka()
{
top.frames[3].document.F1.open.click();
}
 
function PutGroupZayavka2()
{
top.frames[3].document.F1.startime.selectedIndex = external.SBattleGroupTime.SelectedIndex;
top.frames[3].document.F1.timeout.selectedIndex = external.SBattleGroupTimeout.SelectedIndex;
top.frames[3].document.F1.nlogin1.value = external.SBattleGroupAllies.Text;
top.frames[3].document.F1.nlogin2.value = external.SBattleGroupEnemies.Text;
top.frames[3].document.F1.levellogin1.selectedIndex = 3;
top.frames[3].document.F1.levellogin2.selectedIndex = 3;
top.frames[3].document.F1.k.checked = external.SBattleGroupKulak.Checked;
top.frames[3].document.F1.travma.checked = external.SBattleGroupBlood.Checked;
top.frames[3].document.F1.mut_clever.checked = external.SBattleGroupDeath.Checked;
if(top.frames[3].document.F1.mut_snowman != undefined)
top.frames[3].document.F1.mut_snowman.checked = external.SBattleGroupOtmoroz.Checked;
top.frames[3].document.F1.open.click();
}
 
function RefreshGroupZayavka()
{
top.frames[3].document.F1.submit();
}
 
function PutHaotZayavka()
{
top.frames[3].document.F1.startime2.selectedIndex = external.SBattleHaotTime.SelectedIndex;
top.frames[3].document.F1.timeout.selectedIndex = external.SBattleHaotTimeout.SelectedIndex;
top.frames[3].document.F1.levellogin1.selectedIndex = 1;
top.frames[3].document.F1.k.selectedIndex = external.SBattleHaotType.SelectedIndex;
top.frames[3].document.F1.travma.checked = external.SBattleHaotBlood.Checked;
top.frames[3].document.F1.mut_clever.checked = external.SBattleHaotDeath.Checked;
top.frames[3].document.F1.mut_hidden.checked = external.SBattleHaotInvisible.Checked;
if(top.frames[3].document.F1.mut_snowman != undefined)
top.frames[3].document.F1.mut_snowman.checked = external.SBattleHaotOtmoroz.Checked;
top.frames[3].document.F1.open.click();
}
 
function RefreshHaotZayavka()
{
top.frames[3].document.F1.submit();
}
 
function SelectHaotZayavka()
{
var elements = top.frames[3].document.F1.getElementsByTagName("input");
for(i = elements.length - 1; i >= 0; i--)
{
var element = elements[i];
if(element.type == "radio" && element.name == "gocombat")
{
var battleInvisible = (element.nextSibling.nextSibling.nextSibling.nextSibling.innerHTML == "неизвестно") ? true : false;
if(battleInvisible)
{
var battleType = (element.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.alt.match(/кулачный/)) ? 1 : (element.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.alt.match(/без/)) ? 3 : 0;
if(battleType == external.SBattleHaotType.SelectedIndex)
{
var battleLevels = element.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue.match("\\((" + external.level + ")-(" + external.level + ")\\)");
if(battleLevels != null)
{
if(battleLevels[1] == external.level && battleLevels[2] == external.level);
{
var _element = element;
var _count = 0;
for (m = 0; m < 20; m++)
{
_element = _element.nextSibling;
_count = (_element.tagName == "FONT") ? ++_count : _count;
if (_count == 2)
{
var time = parseInt(_element.innerHTML.match(/<B>(.+)<\/B>/)[1]);
if(time < 10)
{
element.checked = true;
top.frames[3].document.F1.confirm1[0].click();
return;
}
break;
}
}
}
}
}
}
}
}
 
PutHaotZayavka();
}
 
function DoWarriorBattle()
{
var k = document.all[0].innerHTML;
var name = top.Battle.oBattle.sEnemyLogin;
if(name==top.Battle.oBattle.sMyLogin)name="1";
name = name.replace(/\(/g,"\\(");
name = name.replace(/\-/g,"\\-");
name = name.replace(/\)/g,"\\)");
stati = k.match(name+"\<\/B\>\<BR\>Сила\: ([\-]{0,1}[0-9]+)\<BR\>Ловкость\: ([\-]{0,1}[0-9]+)\<BR\>Интуиция: ([\-]{0,1}[0-9]+)\<BR\>Выносливость: ([\-]{0,1}[0-9]+)\<BR\>(?:.){0,11}([\-]{0,1}[0-9]{0,3})");
Sila = stati[1];
Lovka = stati[2];
Inta = stati[3];
Vinos = stati[4];
if(stati[5]!="")Intell = stati[5];
else Intell = 0;
var checked = 0;
for(x=0;x<top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ").length;x++)
{
var currEnemyLayer = top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ")[x];
if(currEnemyLayer.match("/underline\".{1,2} \?\>"+name+"\</")){
IsUnderlined = true;
checked = 1;
}
if(checked == 0)
IsUnderlined = false;
}
 
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")[1].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 k = document.all[0].innerHTML;
var name = top.Battle.oBattle.sEnemyLogin;
if(name==top.Battle.oBattle.sMyLogin)name="1";
name = name.replace(/\(/g,"\\(");
name = name.replace(/\-/g,"\\-");
name = name.replace(/\)/g,"\\)");
stati = k.match(name+"\<\/B\>\<BR\>Сила\: ([\-]{0,1}[0-9]+)\<BR\>Ловкость\: ([\-]{0,1}[0-9]+)\<BR\>Интуиция: ([\-]{0,1}[0-9]+)\<BR\>Выносливость: ([\-]{0,1}[0-9]+)\<BR\>(?:.){0,11}([\-]{0,1}[0-9]{0,3})");
Sila = stati[1];
Lovka = stati[2];
Inta = stati[3];
Vinos = stati[4];
if(stati[5]!="")Intell = stati[5];
else Intell = 0;
 
var checked = 0;
for(x=0;x<top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ").length;x++)
{
var currEnemyLayer = top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ")[x];
if(currEnemyLayer.match("/underline\".{1,2} \?\>"+name+"\</")){
IsUnderlined = true;
checked = 1;
}
if(checked == 0)
IsUnderlined = false;
}
 
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")[1].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);
}
 
 
function DoHit()
{
if (!top.Battle.oBattle.arrButtons.commit.disabled)
{
var arrParams = { enemy: top.Battle.oBattle.sEnemy, attack0: GetRandomPoint(0), attack1: GetRandomPoint(1), defend0: GetRandomPoint(2) };
top.Battle.oBattle.Send(arrParams);
}
else
setTimeout("DoHit()", 1000);
}
 
function GetRandomPoint(type)
{
for(i = 1; i <= 5; i++)
eval("target" + i + " = external.SBattlePercent" + (i + type * 5) + ".Value;");
 
var r = Math.ceil(Math.random() * 100);
 
if(r <= target1)
return 1;
else if(r <= target1 + target2)
return 2;
else if(r <= target1 + target2 + target3)
return 3;
else if(r <= target1 + target2 + target3 + target4)
return 4;
else
return 5;
}

Вроде да...

function DoWarriorBattle() и function DoWizzardBattle() надо было не вставлять, а заменять существующие...
у тебя в файле по два раза функции повторяются - две старые нужно удалить