Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   НПС не хочет бежать к обидчику (https://forum.zone-game.info/showthread.php?t=34743)

energy 11.04.2014 20:14

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

        @Override
        public void onSpawn()
        {
                setIsNoRndWalk(false); //и true ставил, не помогает
                super.onSpawn();
                System.out.println(isNoRndWalk());
               
                // check the region where this mob is, do not activate the AI if region is inactive.
                L2WorldRegion region = L2World.getInstance().getRegion(getX(),getY());
                if ((region !=null) && (!region.isActive()))
                        ((L2AttackableAI) getAI()).stopAITask();
        }

l2jserver ct 2.5

WoWan-SM 11.04.2014 23:34

Re: НПС не хочет бежать к обидчику
 
Код:

setIsNoRndWalk(false); //и true ставил, не помогает
                super.onSpawn();

ВНАЧАЛЕ ДОЛЖЕН ВЫЗЫВАТЬСЯ РОДИТЕЛЬСКИЙ МЕТОД!, т.е.
Код:

super.onSpawn();
и только после него
Код:

setIsNoRndWalk(false);
-Это во-первых.

Во-вторых, пускай меня поправят лыжник если это не так, но если память не изменяет, то setIsNoRndWalk по умолчанию false, если только в дат файле или конструкторе классе не выставлено true. Если я прав, то эта часть кода лишняя.

В третьих, что это за проверка?
Код:

                if ((region !=null) && (!region.isActive()))
                        ((L2AttackableAI) getAI()).stopAITask();

Если регион в котором находятся NPC существует и он активен, то этот NPC прекращает любые действия.
Тут меня пускай тоже поправят лыжники, ибо опирался, только на интерпретацию текстовой части кода.

n3k0nation 12.04.2014 00:38

Re: НПС не хочет бежать к обидчику
 
Цитата:

Сообщение от WoWan-SM (Сообщение 359760)
В третьих, что это за проверка?
Код:

                if ((region !=null) && (!region.isActive()))
                        ((L2AttackableAI) getAI()).stopAITask();

Если регион в котором находятся NPC существует и он активен, то этот NPC прекращает любые действия.
Тут меня пускай тоже поправят лыжники, ибо опирался, только на интерпретацию текстовой части кода.

АИ и так отключается, если в соседних гридах нет игроков, поэтому данный код у ТС имеет бессмысленную направленность.
2ТС, покажите полный АИ, спаун тут вообще никаким боком.

energy 12.04.2014 01:18

Re: НПС не хочет бежать к обидчику
 
Оказывается в СТ 2,5 сборке часть АИ вынесли в базу. А я и не знал. Проблема решилась добавлением нпс в таблицу 'npcaidata' и выставления колонки 'can_move' в значение '1'.

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


Текущее время: 22:02. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot