Всем привет! Проблема со знаком миссии почти у всех квестов. 1. На первом случаи: Когда миссия заканчивается на предпоследнем Нпц остаётся жёлтый знак миссии, притом что я уже поговорил с ним и этот Нпц направил уже меня на финального Нпц. А у финального Нпц нету жёлтого знака. Спойлер 2. Во втором случай: Та же сама ситуация как на первом (Когда миссия заканчивается на предпоследнем Нпц остаётся жёлтый знак миссии, притом что я уже поговорил с ним и этот Нпц направил уже меня на финального Нпц.) Исключением того что у финального Нпц тоже есть жёлтый знак квеста. Спойлер При этом, это проблема только с Миссиями, в Заданиях знаки работают нормально. Можете подсказать как можно это исправить? или где именно смотреть...
Смотреть(самого нпц) там же, в скрипте миссии. Найдите рабочую(где нормально перемещается знак) и сделайте по аналогии.
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
После изменения, проблема со знаками квестов решена. Спойлер Но появилась другая проблема. Например при выполнении миссии "Поручение древней" 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; }
по ошибке показывает, что метод уже используется(со скрина переписывать не буду). Сделать обновление в самом скрипте квеста будет правильнее и эстетичнее , так как ты сам пишешь скорее всего и в миссиях так не во всех