Группы

 

Rjkzy

новичок
Превед. Есть пару вопросов по группам:

1) mg_setcheck ( seconds word player group_id — ) - выполняет слово через промежуток времени заданный в секундах, при уничтожении группы? только понять не могу зачем плеера еще передавать? Пробовал убить группу другой группой слово все равно выполнилось поэтому исключил возможность если определенный плеер убил группу.

2) Движение группы по маршруту? как бы странно что слово следовать есть а двигаться в точку нет. пока у меня только 1 вариант это реализовать - взять отдельно 1 нпс и направить по маршруту, а к нему уже группу привязать. может есть другие варианты?

3) AI - группа не реагирует когда на нее нападают. есть идеи как сделать реакцию?

P.S. сборка 3525. если что не так просьба по почкам не бить =)
 
+
-
edit
 

masterXL

разработчик OpenWorlds
привет. сабж давно травой порос. Бал обещал его выправить. решение гораздо проще - нужна команда для принудительной смены состояния АИ "walk" (coords_point). при таком раскладе назначить можно практически любому количеству мобов. небрежная попытка была в бодигварде, но реализована была коряво из-за корявой же реализации самого АИ
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  

Rjkzy

новичок
Вот накопилось еще куча вопросов:

1) Посмотрел в исходниках 1190 ревизии реализацию групп -
code text
  1. ...
  2. private Vector<L2ControllableMobInstance> _mobs;
  3. ...

как я понял в _mobs как раз и хранятся мобы группы. только нафига делать их приватными(надеюсь что private в джаве значит приблизительно то же что и в с++)? из за этого мы не можем к ним обратиться по отдельности из форта и получается что класс абсолютно бесполезен т.к. у них все равно нет реакции на атаку и поставить её нельзя т.к. обратиться по отдельности к мобам мы не можем.

2) При изменении состояния AI на AI_INTENTION_ATTACK моб подбегает к цели но не атакует. Группы же атакуют нормально, но они используют forceAttack(L2Character target). Как вызвать forceAttack для моба? пробовал вариации типа "AI" p@ "ForceAttack" { L2Character.class } jexec ; - пишет что не может найти метод.

3) Skill Engine - пример использования бы посмотреть. Например увеличение REGENERATE_HP_RATE
4) При использовании EVT_ATTACKED как получить атакующего?
 
+
-
edit
 

Balancer

администратор
★★★★★
>При изменении состояния AI на AI_INTENTION_ATTACK моб подбегает к цели но не атакует.

Я уже ругался недавно на этот счёт. r4232 by Diamond: "Мобы не должны нападать друг на друга :)"

>ак вызвать forceAttack для моба? пробовал вариации типа "AI" p@ "ForceAttack" { L2Character.class } jexec ; - пишет что не может найти метод.

Тогда не ForceAttack, а forceAttack. Java чувствительная к регистру.

> Skill Engine - пример использования бы посмотреть.

Смотри в Форте пример ускорения регена у эльфов под Mother Three. Это в data/jbforth/geodata/territories/
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

администратор
★★★★★
Rjkzy> 4) При использовании EVT_ATTACKED как получить атакующего?

Если в своём Форт-обработчике - см. пример в недоделанном до конца data/jbforth/ai/bodyguard.f

Там параметры события передаются слову - обработчику. Т.е. просто снимаешь со стека и используешь.
code forth
  1. : check-master-attacked  ( dummy enemy EVT_ATTACKED|AI_INTENTION_ATTACK master -- )


На первую атаку своего хозяина телохранитель-NPC реагировал как надо, кидался на обидчика. Недоработки были в процессе повторной атаки, я где-то что-то не сбрасывал. Доделать не успел, закрутили дела :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Rjkzy

новичок
Balancer:
Тогда не ForceAttack, а forceAttack. Java чувствительная к регистру.
 

Пробовал и так и эдак.. Сейчас на свежую голову еще посмотрел:
сервер выдает
code text
  1. java.lang.NoSuchMethodException: net.sf.l2j.gameserver.ai.L2AttackableAI.forceAt
  2. tack(net.sf.l2j.gameserver.model.L2Character)

но forceAttack это метод L2ControllableMobAI
объявлен как
code text
  1. public class L2ControllableMobAI extends L2AttackableAI (расширение класса как я понял?)

атака группой цели:
code text
  1. for (int i=0;i<_mobs.size();i++)
  2.                 {
  3.                         L2ControllableMobAI ai = (L2ControllableMobAI) _mobs.get(i).getAI();
  4. // получаем ai моба приводим к L2ControllableMobAI и присваиваем новому экземпляру класса L2ControllableMobAI?
  5.                         ai.forceAttack(target);
  6.                 }

Тогда получается что все правильно он ругаецо и нам нужно перед вызовом forceAttack привести полученный экземпляр L2AttackableAI моба к L2ControllableMobAI в форте.
Внимание вопрос ;) : Как?

P.S. Что то предварительный просмотре не работает.
 
+
-
edit
 

Diamond

втянувшийся

>>При изменении состояния AI на AI_INTENTION_ATTACK моб подбегает к цели но не атакует.
Balancer> Я уже ругался недавно на этот счёт. r4232 by Diamond: "Мобы не должны нападать друг на друга :)"

Нифига подобного, я тут не при чем. Он использовал более старую старую сборку.
 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Balancer

администратор
★★★★★
Как бы там ни было, у нас сейчас атака мобов мобами тоже невозможна.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru