1

Тема: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Прежде чем вносить правки в файлы всегда делайте резервную копию!

Задача модификации: сделать доступными условия типа "Если у противника > 15 интеллекта, то..." по отношению к статам сила, ловкость, интуиция, выносливость, интеллект.
Также добавлена проверка, поставил ли размен ваш текущий противник.
Совместимость: версия 8.4+
Установка:
Открываем файл Main.js и находим функции "function DoWarriorBattle()" если вы играете за воина и "function DoWizardBattle()" если вы играете магом. Если вы играете с одной копии клиента и магом, и воином и вобще всеми своими персонажами - вносите изменения в обе функции.
Приводим их к виду:

function DoWarriorBattle()
{
 
var k = document.all[0].innerHTML;
var name = top.Battle.oBattle.sEnemyLogin;
if(name==top.Battle.oBattle.sMyLogin){
    top.Battle.oBattle.arrButtons.refresh.click();
    return;
}
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){
    top.Battle.oBattle.arrButtons.refresh.click();
    return;
}
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);
}

Учитывая, что у меня под рукой не оказалось оригинального файла Main.js, то тут приведён тот, в котором работают проверки колличества противников/соратников. По сути, вам от этого ни тепло, ни холодно.

Обозначения:
EnemiesCount - количество противников
SoratnikiCount - количество соратников
Sila - сила противника
Lovka - ловкость противника
Inta - интуиция противника
Vinos - выносливость противника
Intell - интеллект противника
IsUnderlined - подчеркнут ли ваш враг(выставил ли размен)

Да, я знаю, что хреново придумываю названия для переменных, но меня это не обламывает.

Пример использования в приёме:

if(Intell > 1)
_name = "wis_earth_flower";

Проверка работоспособности:
В новый приём вписать

external.AddToChat("Персонаж: "+top.Battle.oBattle.sEnemyLogin+";"+"Сила: "+Sila+";"+"Ловкость: "+Lovka+";"+"Интуиция: "+Inta+";"+"Выносливость: "+Vinos+";"+"Интеллект: "+Intell+";");

в чате будет прописано имя противника и перечислены его статы.


Отдельная благодарность DrsN'уsmile


По поводу проверки размена с противником:
напоминаю, что если вам требуется дождаться выставленного размена, то необходимо не просто прописать нечто подобное

if(IsUnderlined  || Intel <=10){
...
}

Необходимо обновлять фрейм до тех пор, пока размен не выставится:

if(IsUnderlined || Intel <=10){
...
}
else{
top.Battle.oBattle.arrButtons.refresh.click();
}

Отредактировано anahronik (2010-04-02 12:25:07)

Software is like sex: it's better when it's free! © LinusTorvalds

2

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

По поводу проверки размена с противником:
напоминаю, что если вам требуется дождаться выставленного размена, то необходимо не просто прописать нечто подобное

Я так понял бот проверяет на интелект=) Но не на всех магах в пещерах это нужно делать. В место проверки на интелект, можно проверять на имя бота?Например на Пленнике ждет размена(подчеркивание),а вот на Дашке сразу бьет.

3

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Интеллект я вписал только как пример, чтоб показать ветвление приёма.
Т.е. получается, что приём применяется либо если моб подчёркнут, либо если его интеллектслишком низок(т.е. он не маг).
Если ты хочешь по имени бота указывать, то там надо писать || Если имя противника НЕ равно Пленник.
Если несколько ботов хочешь учесть, то надо писать || (имя противника Не равно Пленник && имя противника Не равно ЕщёКто-Нить).

Вот, ещё хочу сказать, что имена у ботов бывают разные (цифры в скобках, например, если в бою два бота одинаковых).
Поэтому проверку лучше ставить так

!top.Battle.oBattle.sEnemyLogin.match(\Пленник\);

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

if(IsUnderlined || (top.Battle.oBattle.sEnemyLogin!="Пленник" && top.Battle.oBattle.sEnemyLogin!="Пленник (1)" && top.Battle.oBattle.sEnemyLogin!="Пленник (2)" && top.Battle.oBattle.sEnemyLogin!="Пленник (3)"))
{
...
}else{
top.Battle.oBattle.arrButtons.refresh.click();
}
Software is like sex: it's better when it's free! © LinusTorvalds

4

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

тогда еще такой вопрос: возможно ли сделать такое условие:
если у противника интуиция больше 100, то сменить его на того у кого интеллект больше 100

реально ли делать такие условия и функцию сменить противника?

5

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

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

Software is like sex: it's better when it's free! © LinusTorvalds

6

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Обнаружен очередной абсолютно глупый косяк sad

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;

Должно быть так....а было ("IMG")[0] в обоих строках...короче неверно он считал количество противников sad
Извиняюсь.

Отредактировано anahronik (2010-01-08 22:01:42)

Software is like sex: it's better when it's free! © LinusTorvalds

7

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

изменил файл и теперь бот на середине боя встает и не делает размен...

как вернуть старый файл

Отредактировано peiotel (2010-01-08 22:32:31)

8

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Если менял давно - может виснуть из-за отрицательного параметра у противника(в настоящий момент это исправлено).
Если практически только что, то мои правки не при делах. С ними оно либо сразу не работает, либо всё гладко. Не может посреди боя просто так застрять.

Отредактировано anahronik (2010-01-08 23:10:48)

Software is like sex: it's better when it's free! © LinusTorvalds

9

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

У меня тоже остановился когда противник был чей то зверь, но когда его слили бот продолжил выполнять свой действия...

Интуиция - это способность головы чуять жопой.

10

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Я наконец(после 1,5месячного перерыва) таки переодел двух своих 7ок и готов к переходу на 8-й...
Практически всё, что писал за это время, проверялось не мной hmm
Я не могу сказать покачто, в чём косяк hmm
Зверь - он же обычный боец и не должен был бы вызвать каких-либо затруднений...
раньше не вызывал ведь? или вызывал, но от меня это скрыли?
А ну ка колитесь все, кто использует эти правки smile

Software is like sex: it's better when it's free! © LinusTorvalds

11

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Вижу правку smile Поставил на тесты. Спасибо smile

(Please log in or register to see this URL)

12

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Нда smile
тебя не обманешь smile
действительно там косяк.... smile

поправил
и строку if(currEnemyLayer.match("/underline\".{1,2} \?\>"+name+"\</")){ тоже поправил

Software is like sex: it's better when it's free! © LinusTorvalds

13

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Есть контакт!
15:хх:хх Персонаж: ***** (зверь Боец (1));Сила: 3;Ловкость: 180;Интуиция: 3;Выносливость: 48;Интеллект: 0;

Работает smile
Правда статы странные у светляка[7]...

Update: я видимо что-то пропустил в БК. Реально светляки стали уворотами.

Персонаж: ***** (зверь Боец (2));Сила: 25;Ловкость: 30;Интуиция: 80;Выносливость: 60;Интеллект: 0;

Это была сова. Всё ок.

Отредактировано hyppo (2010-01-09 15:57:22)

(Please log in or register to see this URL)

14

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

вроде все работает, теперь скажите как сделать что бы он только отвечал тем у кого больше 30 ловкости

15

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

hyppopotam пишет:

Есть контакт!
15:хх:хх Персонаж: ***** (зверь Боец (1));Сила: 3;Ловкость: 180;Интуиция: 3;Выносливость: 48;Интеллект: 0;

Работает smile
Правда статы странные у светляка[7]...

Update: я видимо что-то пропустил в БК. Реально светляки стали уворотами.

Персонаж: ***** (зверь Боец (2));Сила: 25;Ловкость: 30;Интуиция: 80;Выносливость: 60;Интеллект: 0;

Это была сова. Всё ок.

У меня светляк7 ,статы точно такие,как ты написал smile

16

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

peiotel пишет:

вроде все работает, теперь скажите как сделать что бы он только отвечал тем у кого больше 30 ловкости

Никак... как минимум, зависнешь на том, у кого меньше...

Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (Please log in or register to see this URL)
(Please log in or register to see this URL) - проверил лично! Подробнее (Please log in or register to see this URL)

17

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Так теперь будет делать размен со зверями?

Интуиция - это способность головы чуять жопой.

18

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Да.
Теперь будет.

Software is like sex: it's better when it's free! © LinusTorvalds

19

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

SnaF пишет:

Так теперь будет делать размен со зверями?

Делает.

(Please log in or register to see this URL)

20

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

подскажите, как сделать , чтоб бот юзал призрачку при размене с уворотом к примеру

if((parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 11) && (Lovka > 100))
_name = "spirit_11_prot_100";

стоит вот такое условие , невжно кто на размене  ,  все равно юзает , что прописать или добавить ?   sad

Искать в реале smile

21

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

lLOrDl пишет:

стоит вот такое условие , невжно кто на размене  ,  все равно юзает , что прописать или добавить ?   sad

Когда ты правил файл main.js в соответствии с правками описанными в начале это темы?
Последняя версия кода обновлялась на прошлой неделе.

Напиши себе ещё один приём, который вверху даётся, тестовый. Там где Проверка работоспособности написано. Поставь этот приём, запусти бота в хаот и последи видит ли он статы врагов? И как он их видит. Они должны будут в чате отображаться.

Или ещё лучше вот такой проверочный приём поставь вместо своего:

if((parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 11) && (Lovka > 100))
external.AddToChat("Персонаж: "+top.Battle.oBattle.sEnemyLogin+";"+"Сила: "+Sila+";"+"Ловкость: "+Lovka+";"+"Интуиция: "+Inta+";"+"Выносливость: "+Vinos+";"+"Интеллект: "+Intell+";");
_name = "spirit_11_prot_100";

В чат будет писаться сообщение когда бот видит ловку 100+. Заодно он "скажет" у кого он её увидел.

P.S. Даже если всё будет работать приём твой непродуман. Он против светляков будет срабатывать wink Они ведь тоже увороты, старшие светляки 100+ ловки имеют. Надо будет потом ещё проверку на ник использовать, на слово "зверь" или "(зверь".

(Please log in or register to see this URL)

22

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Мэйн правил вчера ...
ща попробую со сноской в чат
UPD: сноска работает , сразу определил в хаоте у кого ловки больше 100 , а вот с приемом все тот же косяк
И еще когда я умер начался флуд системками - т.к. у меня тоже ловки больше 100
В приемах стоят 2 призрачки: от колки и режущ. Первее стоит колка - если на размене любой противник кроме крита - юзает колку , когда крит - лезвие .
Дописал

else
_name = " ";

один фиг  neutral

Отредактировано lLOrDl (2010-01-14 16:40:06)

Искать в реале smile

23

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

Давай сюда все свои приёмы. Фрагмент файла аккаунта.
Что-то у меня смутное сомнение закралось...

(Please log in or register to see this URL)

24

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

<Priem1>_name = "krit_bloodlust";</Priem1>
  <Priem2>if(parseInt(top.Battle.oBattle.arrRes["block"].innerHTML) &gt; 7)
_name = "block_fullshield";</Priem2>
  <Priem3>_name = "hp_enrage";</Priem3>
  <Priem4>_name = "hp_defence";</Priem4>
  <Priem5>_name = "hp_regen";</Priem5>
  <Priem6>_name = "parry_supreme";</Priem6>
  <Priem7>_name = "krit_blooddrink";</Priem7>
  <Priem8>_name = "counter_deathwalk";</Priem8>
  <Priem9>if(typeof(top.Battle.oBattle.oMySlot.arrEffects["counter_deathwalk"]) == "object")
_name = "counter_ward";
 
</Priem9>
  <Priem10>_name = "hit_empower";</Priem10>
  <Priem11>if((parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) &gt; 11) &amp;&amp; (Lovka &gt; 100))
_name = "spirit_11_prot_100";
else
_name = " ";</Priem11>
  <Priem12>if(parseInt(top.Battle.oBattle.arrRes["krit"].innerHTML) &gt; 7)
_name = "krit_wildluck";</Priem12>
  <Priem13>if(top.Battle.oBattle.oMySlot.nHP &lt; 100)
_name = "spirit_survive";</Priem13>
  <Priem14>_name = "hp_cleance";</Priem14>
  <Priem15>if((parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) &gt; 11) &amp;&amp; (Inta &gt; 120))
_name = "spirit_14_prot_100";
else
_name = "";</Priem15>

сноску в чат убрал из приема

Отредактировано lLOrDl (2010-01-14 17:10:56)

Искать в реале smile

25

Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов

lLOrDl Всё правильно.
Вот ты задачку задал... sad Ну точно всё у тебя должно работать.

(Please log in or register to see this URL)