Упустил кое что из виду, вот финальный вариант кода, оказывается целью удалённой мною обработки были вовсе не статуи телепорта по городу, а статуи которые телепортируют в храм маркутана и в храм кайсинель, а так же те которые портают из храма обратно. А вот проблемная статуя телепорта в район Крайнделла оказалась в обрабатываемом диапазоне npc_id, теперь всё чётко
:
Свернуть ↑
PHP код:
@Override
public void onDialogRequest(Player player) {
getOwner().getAi().handleEvent(Event.TALK);
if (QuestEngine.getInstance().onDialog(new QuestCookie(getOwner(), player, 0, -1)))
return;
// Zephyr Deliveryman
if (getOwner().getObjectId() == player.getZephyrObjectId()) {
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 18));
return;
}
int npc_id = getOwner().getNpcId();
int titleId = getOwner().getObjectTemplate().getTitleId();
if
(
(
// title ids of npcs
titleId == 315018
|| titleId == 350474
|| titleId == 350473
|| titleId == 350212
|| titleId == 350304
|| titleId == 350305
|| titleId == 370000
|| titleId == 370003
|| (npc_id == 730265 || npc_id == 730266 || npc_id == 730268 || npc_id == 730269)
)
) {
NpcQuestData npcQD = QuestEngine.getInstance().getNpcQuestData(getOwner().getNpcId());
QuestStateList list = player.getQuestStateList();
List<Integer> events = npcQD.getOnTalkEvent();
boolean hasQuestFromNpc = false;
for (int e : events) {
QuestState qs = list.getQuestState(e);
if (qs != null && qs.getStatus() != QuestStatus.COMPLETE) {
hasQuestFromNpc = true;
break;
} else {
continue;
}
}
if (hasQuestFromNpc)
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 10));
else
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 1011));
}
else
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getOwner().getObjectId(), 10));
}
Свернуть ↑Развернуть ↓