• SiteAnalyzer, технический и SEO-анализ сайтов

Знак миссии

  • Автор темы Автор темы progx
  • Дата начала Дата начала

progx

Рядовой
Всем привет!

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

1. На первом случаи: Когда миссия заканчивается на предпоследнем Нпц остаётся жёлтый знак миссии, притом что я уже поговорил с ним и этот Нпц направил уже меня на финального Нпц.
А у финального Нпц нету жёлтого знака.
1.png
2.png

2. Во втором случай: Та же сама ситуация как на первом
(Когда миссия заканчивается на предпоследнем Нпц остаётся жёлтый знак миссии, притом что я уже поговорил с ним и этот Нпц направил уже меня на финального Нпц.)
Исключением того что у финального Нпц тоже есть жёлтый знак квеста.
3.png
4.png

При этом, это проблема только с Миссиями, в Заданиях знаки работают нормально.

Можете подсказать как можно это исправить? или где именно смотреть...
 
Можете подсказать как можно это исправить? или где именно смотреть...

Смотреть(самого нпц) там же, в скрипте миссии. Найдите рабочую(где нормально перемещается знак) и сделайте по аналогии.:)
 
private static void sendQuestSelectionPacket(QuestEnv env, int dialogId) {
Player player = env.getPlayer();
player.getController().updateNearbyQuests();

int objId = 0;
if (env.getVisibleObject() != null) {
objId = env.getVisibleObject().getObjectId();
}
env.getPlayer().sendPck(new SM_DIALOG_WINDOW(objId, dialogId));
}

Попробуй сделать так в
QuestHandler.java
 
private static void sendQuestSelectionPacket(QuestEnv env, int dialogId) {
Player player = env.getPlayer();
player.getController().updateNearbyQuests();

int objId = 0;
if (env.getVisibleObject() != null) {
objId = env.getVisibleObject().getObjectId();
}
env.getPlayer().sendPck(new SM_DIALOG_WINDOW(objId, dialogId));
}

Попробуй сделать так в
QuestHandler.java
не эстетично, там проблема в конкретном скрипте в кв.
 
private static void sendQuestSelectionPacket(QuestEnv env, int dialogId) {
Player player = env.getPlayer();
player.getController().updateNearbyQuests();

int objId = 0;
if (env.getVisibleObject() != null) {
objId = env.getVisibleObject().getObjectId();
}
env.getPlayer().sendPck(new SM_DIALOG_WINDOW(objId, dialogId));
}

Попробуй сделать так в
QuestHandler.java

После изменения, проблема со знаками квестов решена.
1.png

Но появилась другая проблема.

Например при выполнении миссии "Поручение древней" ID = 1002. Выходит диалоговое окно с ошибкой:

3.png

А в консоли ГС такая ошибка:
Код:
2019-06-17 20:28:33,253 QE: exception in onDialog
java.lang.NullPointerException: null
	at com.aionemu.gameserver.controllers.PlayerController.updateNearbyQuests(PlayerController.java:182) ~[free_game.jar:na]
	at com.aionemu.gameserver.questEngine.handlers.QuestHandler.sendQuestSelectionPacket(QuestHandler.java:977) ~[free_game.jar:na]
	at com.aionemu.gameserver.questEngine.handlers.QuestHandler.closeDialogWindow(QuestHandler.java:111) ~[free_game.jar:na]
	at quest.poeta._1002RequestoftheElim.onDialogEvent(_1002RequestoftheElim.java from JavaSourceFromFile:158) ~[na:na]
	at com.aionemu.gameserver.questEngine.QuestEngine.onDialog(QuestEngine.java:119) ~[free_game.jar:na]
	at com.aionemu.gameserver.services.DialogService.onDialogSelect(DialogService.java:89) [free_game.jar:na]
	at com.aionemu.gameserver.controllers.NpcController.onDialogSelect(NpcController.java:227) [free_game.jar:na]
	at com.aionemu.gameserver.network.aion.clientpackets.CM_DIALOG_SELECT.runImpl(CM_DIALOG_SELECT.java:92) [free_game.jar:na]
	at com.aionemu.gameserver.network.aion.AionClientPacket.run(AionClientPacket.java:67) [free_game.jar:na]
	at com.aionemu.commons.utils.concurrent.ExecuteWrapper.execute(ExecuteWrapper.java:46) [al-commons-1.3.jar:na]
	at com.aionemu.commons.utils.concurrent.ExecuteWrapper.execute(ExecuteWrapper.java:39) [al-commons-1.3.jar:na]
	at com.aionemu.commons.network.PacketProcessor$PacketProcessorTask.run(PacketProcessor.java:264) [al-commons-1.3.jar:na]
	at java.lang.Thread.run(Thread.java:662) [na:1.6.0_45]

PlayerController.java
12.png

QuestHandler.java
13.png

14.png

_1002RequestoftheElim.java
15.png

Честно сказать я не смог разобраться с проблемой. Помогите пожалуйста..
 
После изменения, проблема со знаками квестов решена.

Но появилась другая проблема.

Например при выполнении миссии "Поручение древней" ID = 1002. Выходит диалоговое окно с ошибкой:


А в консоли ГС такая ошибка:
Код:
2019-06-17 20:28:33,253 QE: exception in onDialog
java.lang.NullPointerException: null
	at com.aionemu.gameserver.controllers.PlayerController.updateNearbyQuests(PlayerController.java:182) ~[free_game.jar:na]
	at com.aionemu.gameserver.questEngine.handlers.QuestHandler.sendQuestSelectionPacket(QuestHandler.java:977) ~[free_game.jar:na]
	at com.aionemu.gameserver.questEngine.handlers.QuestHandler.closeDialogWindow(QuestHandler.java:111) ~[free_game.jar:na]
	at quest.poeta._1002RequestoftheElim.onDialogEvent(_1002RequestoftheElim.java from JavaSourceFromFile:158) ~[na:na]
	at com.aionemu.gameserver.questEngine.QuestEngine.onDialog(QuestEngine.java:119) ~[free_game.jar:na]
	at com.aionemu.gameserver.services.DialogService.onDialogSelect(DialogService.java:89) [free_game.jar:na]
	at com.aionemu.gameserver.controllers.NpcController.onDialogSelect(NpcController.java:227) [free_game.jar:na]
	at com.aionemu.gameserver.network.aion.clientpackets.CM_DIALOG_SELECT.runImpl(CM_DIALOG_SELECT.java:92) [free_game.jar:na]
	at com.aionemu.gameserver.network.aion.AionClientPacket.run(AionClientPacket.java:67) [free_game.jar:na]
	at com.aionemu.commons.utils.concurrent.ExecuteWrapper.execute(ExecuteWrapper.java:46) [al-commons-1.3.jar:na]
	at com.aionemu.commons.utils.concurrent.ExecuteWrapper.execute(ExecuteWrapper.java:39) [al-commons-1.3.jar:na]
	at com.aionemu.commons.network.PacketProcessor$PacketProcessorTask.run(PacketProcessor.java:264) [al-commons-1.3.jar:na]
	at java.lang.Thread.run(Thread.java:662) [na:1.6.0_45]

PlayerController.java

QuestHandler.java

_1002RequestoftheElim.java

Честно сказать я не смог разобраться с проблемой. Помогите пожалуйста..
Сделай тогда через диалог а не через пакет.
public static boolean sendQuestSelectionDialog(QuestEnv env) {
Player player = env.getPlayer();
player.getController().updateNearbyQuests();
sendQuestSelectionPacket(env, 10);
return true;
}
 
по ошибке показывает, что метод уже используется(со скрина переписывать не буду).

Сделать обновление в самом скрипте квеста будет правильнее и эстетичнее :), так как ты сам пишешь
При этом, это проблема только с Миссиями, в Заданиях знаки работают нормально.
скорее всего и в миссиях так не во всех
 
по ошибке показывает, что метод уже используется(со скрина переписывать не буду).

Сделать обновление в самом скрипте квеста будет правильнее и эстетичнее :), так как ты сам пишешь

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