Сообщений: 144
Тем: 19
Зарегистрирован: Feb 2010
Репутация:
379
Мой вопрос заключается в следующем - прописал в инстансе необходимого мне нпц таск, на ходьбу нпц. Он, почему то, вызывается только при спауне нпц. Т.е, если я сервер перезагружу, то нпц не двигаются, как будто таск не запущен. А если я этого нпц удалю и поставлю заново, то начинает бежать. Есть какие либо соображения?
Заранее благодарю, сборка лючера. :dc:
Сообщений: 4,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
А листинг Вашего кода где?
Fortuna - non penis, in manus non recipe.
Сообщений: 144
Тем: 19
Зарегистрирован: Feb 2010
Репутация:
379
Это создание, собственно, таска.
Код: 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,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
В этих кусках кода всё нормально. Метод 'walking()' переопределён в классе?
Fortuna - non penis, in manus non recipe.
Сообщений: 144
Тем: 19
Зарегистрирован: Feb 2010
Репутация:
379
Оверрайдом? Хм, нет. По моему, функции нет такой, хотя.. Но ведь, если была бы проблема с этим, разве оно работало бы при респауне? В любом случае, сейчас попробую.
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
[src=java] public L2EvilInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
getKnownList(); // Init knownlist
EvilAiManager.getInstance().startTask(this);
}[/src]
Запуск таска при создании класса - это сильно ароматно. Стоит посмотреть на ивент onSpawn
Сообщений: 144
Тем: 19
Зарегистрирован: Feb 2010
Репутация:
379
07-11-2013, 01:35 PM
(Сообщение последний раз редактировалось: 07-11-2013, 01:43 PM HastemaNS.)
Увы, сделал оверрайд, перенес в onSpawn, но ничего не помогает - непись начинает действовать, только если его респаунить. А при старте сервера непись просто стоит в IDLE, атакует меня, если я на него нападу и переходит в ACTIVE, но дальше ничего не происходит. Т.е мой таймер не запускается. А вот если его удалить, а потом поставить, то все начинается.
Добавлено через 8 минут
И при перереспавне, в логе сервера как раз пишет - мол, EvilAiManager: Initialized.
Сообщений: 4,694
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
HastemaNS, попробуйте сделать по примеру L2NpcWalkerInstance.
Fortuna - non penis, in manus non recipe.
Сообщений: 3,968
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
Рекомендую запускать таск при первом смене состояния NPC, в методе changeItention(..). вашего AI.
Сообщений: 144
Тем: 19
Зарегистрирован: Feb 2010
Репутация:
379
Спасибо, Уважаемые! Что то сделал вчера, в полубреду, заработало.) Тему можно закрывать.
|