Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
И опять АИ.
#1
Мой вопрос заключается в следующем - прописал в инстансе необходимого мне нпц таск, на ходьбу нпц. Он, почему то, вызывается только при спауне нпц. Т.е, если я сервер перезагружу, то нпц не двигаются, как будто таск не запущен. А если я этого нпц удалю и поставлю заново, то начинает бежать. Есть какие либо соображения?

Заранее благодарю, сборка лючера. :dc:
Ответ
#2
А листинг Вашего кода где?
Fortuna - non penis, in manus non recipe.
Ответ
#3
Это создание, собственно, таска.

Код:
    private static final class EvilAiManager extends AbstractIterativePeriodicTaskManager<L2EvilInstance>
    {
        private static final EvilAiManager _instance = new EvilAiManager();
        
        private static EvilAiManager getInstance()
        {
            return _instance;
        }
        
        private EvilAiManager()
        {
            super(1000);
        }
        
        @Override
        protected void callTask(L2EvilInstance task)
        {
                task.walking();
        }
        
        @Override
        protected String getCalledMethodName()
        {
            return "walking()";
        }
    }

А это вызов его, в конструкторе инстанса, соответственно, он ведь должен запускаться сразу? А не только при респауне нпц.

Код:
public L2EvilInstance(int objectId, L2NpcTemplate template)
    {
        super(objectId, template);
        getKnownList(); // Init knownlist
    EvilAiManager.getInstance().startTask(this);
    }

Метод wakling() делает неписей ходячими, но он на 100% работоспособен, т.к, как говорил я выше, неписи работают по заложенному аи при спауне. Соответственно, мне нужна информация, как запустить данный таск сразу при инициализации этого нпц, т.е при старте сервера. А не при респауне этого же нпц.
Ответ
#4
В этих кусках кода всё нормально. Метод 'walking()' переопределён в классе?
Fortuna - non penis, in manus non recipe.
Ответ
#5
Оверрайдом? Хм, нет. По моему, функции нет такой, хотя.. Но ведь, если была бы проблема с этим, разве оно работало бы при респауне? В любом случае, сейчас попробую.
Ответ
#6
[src=java] public L2EvilInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
getKnownList(); // Init knownlist
EvilAiManager.getInstance().startTask(this);
}[/src]

Запуск таска при создании класса - это сильно ароматно. Стоит посмотреть на ивент onSpawn
Ответ
#7
Увы, сделал оверрайд, перенес в onSpawn, но ничего не помогает - непись начинает действовать, только если его респаунить. А при старте сервера непись просто стоит в IDLE, атакует меня, если я на него нападу и переходит в ACTIVE, но дальше ничего не происходит. Т.е мой таймер не запускается. А вот если его удалить, а потом поставить, то все начинается.

Добавлено через 8 минут
И при перереспавне, в логе сервера как раз пишет - мол, EvilAiManager: Initialized.
Ответ
#8
HastemaNS, попробуйте сделать по примеру L2NpcWalkerInstance.
Fortuna - non penis, in manus non recipe.
Ответ
#9
Рекомендую запускать таск при первом смене состояния NPC, в методе changeItention(..). вашего AI.
Ответ
#10
Спасибо, Уважаемые! Что то сделал вчера, в полубреду, заработало.) Тему можно закрывать.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  JAVA JDK ... опять проблема... L2Flayter 2 1,775 09-21-2012, 03:38 PM
Последний пост: Zubastic
  Опять пакеты :) AlkBy 2 1,589 09-03-2012, 12:19 PM
Последний пост: Earwood
  Опять PWSOFT AMBASSADRO 2 2,126 03-04-2012, 10:32 AM
Последний пост: AMBASSADRO
  опять прошу помощи Darvin 8 1,922 11-02-2011, 07:56 PM
Последний пост: TieLay
  И опять L2phonix ingremy 10 3,565 09-23-2010, 07:16 PM
Последний пост: Ozzy
  и опять проклетые мечи [Red Dragon] 6 2,451 09-03-2010, 11:13 AM
Последний пост: Ozzy

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)