- Хроники
- Master Class
- Исходники
- Присутствуют
- Сборка
- L2J_Mobius_12.3_Superion
Здравствуйте .
Есть 2 квеста - quests.Q10500_AdenAdventure и quests.Q10501_AdenAdventure .
Проблема у них состоит в том что по завершению квестов 10036 . 10136 . 10236 . 10366 (на разные классы) они отправляют к 10500 но вместе с ним сразу дается и 10501 и не завершается.
Да и в общем по своей структуре они идентичны , как сделать их последовательными?
Есть 2 квеста - quests.Q10500_AdenAdventure и quests.Q10501_AdenAdventure .
Проблема у них состоит в том что по завершению квестов 10036 . 10136 . 10236 . 10366 (на разные классы) они отправляют к 10500 но вместе с ним сразу дается и 10501 и не завершается.
Да и в общем по своей структуре они идентичны , как сделать их последовательными?
Код:
package quests.Q10500_AdenAdventure;
import org.l2jmobius.gameserver.data.xml.TeleportListData;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestDialogType;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.newquestdata.NewQuestLocation;
import org.l2jmobius.gameserver.model.quest.newquestdata.QuestCondType;
import org.l2jmobius.gameserver.network.serverpackets.quest.ExQuestDialog;
import quests.Q10501_AdenAdventure.Q10501_AdenAdventure;
/**
* @author Stayway
*/
public class Q10500_AdenAdventure extends Quest
{
private static final int QUEST_ID = 10500;
public Q10500_AdenAdventure()
{
super(QUEST_ID);
addItemTalkId(82959); // Teleportation Guide - Herphah
}
@Override
public String onEvent(String event, Npc npc, Player player)
{
switch (event)
{
case "ACCEPT":
{
if (!canStartQuest(player))
{
break;
}
final QuestState questState = getQuestState(player, true);
if (!questState.isStarted() && !questState.isCompleted())
{
questState.startQuest();
giveItems(player, 82959, 1); // Teleportation Guide - Herphah
giveStoryBuffReward(player);
}
break;
}
case "TELEPORT":
{
QuestState questState = getQuestState(player, false);
if (questState == null)
{
if (!canStartQuest(player))
{
break;
}
questState = getQuestState(player, true);
final NewQuestLocation questLocation = getQuestData().getLocation();
if (questLocation.getStartLocationId() > 0)
{
final Location location = TeleportListData.getInstance().getTeleport(questLocation.getStartLocationId()).getLocation();
if (teleportToQuestLocation(player, location))
{
questState.setCond(QuestCondType.ACT);
sendAcceptDialog(player);
}
}
break;
}
final NewQuestLocation questLocation = getQuestData().getLocation();
if (questState.isCond(QuestCondType.STARTED))
{
if (questLocation.getQuestLocationId() > 0)
{
final Location location = TeleportListData.getInstance().getTeleport(questLocation.getQuestLocationId()).getLocation();
if (teleportToQuestLocation(player, location) && (questLocation.getQuestLocationId() == questLocation.getEndLocationId()))
{
questState.setCond(QuestCondType.DONE);
sendEndDialog(player);
}
}
}
else if (questState.isCond(QuestCondType.DONE) && !questState.isCompleted())
{
if (questLocation.getEndLocationId() > 0)
{
final Location location = TeleportListData.getInstance().getTeleport(questLocation.getEndLocationId()).getLocation();
if (teleportToQuestLocation(player, location))
{
sendEndDialog(player);
}
}
}
break;
}
case "COMPLETE":
{
final QuestState questState = getQuestState(player, false);
if (questState == null)
{
break;
}
if (!hasQuestItems(player, 82959))
{
break;
}
if (questState.isCond(QuestCondType.DONE) && !questState.isCompleted())
{
questState.exitQuest(false, true);
rewardPlayer(player);
final QuestState nextQuestState = player.getQuestState(Q10501_AdenAdventure.class.getSimpleName());
if (nextQuestState == null)
{
player.sendPacket(new ExQuestDialog(10502, QuestDialogType.ACCEPT));
}
}
break;
}
}
return null;
}
@Override
public String onFirstTalk(Npc npc, Player player)
{
final QuestState questState = getQuestState(player, false);
if ((questState != null) && !questState.isCompleted())
{
if (questState.isCond(QuestCondType.STARTED))
{
if (questState.isStarted())
{
questState.setCount(getQuestData().getGoal().getCount());
questState.setCond(QuestCondType.DONE);
player.sendPacket(new ExQuestDialog(questState.getQuest().getId(), QuestDialogType.END));
}
}
else if (questState.isCond(QuestCondType.DONE))
{
player.sendPacket(new ExQuestDialog(questState.getQuest().getId(), QuestDialogType.END));
}
}
npc.showChatWindow(player);
return null;
}
}
Код:
package quests.Q10501_AdenAdventure;
import org.l2jmobius.gameserver.data.xml.TeleportListData;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestDialogType;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.newquestdata.NewQuestLocation;
import org.l2jmobius.gameserver.model.quest.newquestdata.QuestCondType;
import org.l2jmobius.gameserver.network.serverpackets.quest.ExQuestDialog;
import quests.Q10502_AStepToYourDestiny1.Q10502_AStepToYourDestiny1;
/**
* @author Stayway
*/
public class Q10501_AdenAdventure extends Quest
{
private static final int QUEST_ID = 10501;
public Q10501_AdenAdventure()
{
super(QUEST_ID);
addItemTalkId(82959); // Teleportation Guide - Herphah
}
@Override
public String onEvent(String event, Npc npc, Player player)
{
switch (event)
{
case "ACCEPT":
{
if (!canStartQuest(player))
{
break;
}
final QuestState questState = getQuestState(player, true);
if (!questState.isStarted() && !questState.isCompleted())
{
questState.startQuest();
giveItems(player, 82959, 1); // Teleportation Guide - Herphah
giveStoryBuffReward(player);
}
break;
}
case "TELEPORT":
{
QuestState questState = getQuestState(player, false);
if (questState == null)
{
if (!canStartQuest(player))
{
break;
}
questState = getQuestState(player, true);
final NewQuestLocation questLocation = getQuestData().getLocation();
if (questLocation.getStartLocationId() > 0)
{
final Location location = TeleportListData.getInstance().getTeleport(questLocation.getStartLocationId()).getLocation();
if (teleportToQuestLocation(player, location))
{
questState.setCond(QuestCondType.ACT);
sendAcceptDialog(player);
}
}
break;
}
final NewQuestLocation questLocation = getQuestData().getLocation();
if (questState.isCond(QuestCondType.STARTED))
{
if (questLocation.getQuestLocationId() > 0)
{
final Location location = TeleportListData.getInstance().getTeleport(questLocation.getQuestLocationId()).getLocation();
if (teleportToQuestLocation(player, location) && (questLocation.getQuestLocationId() == questLocation.getEndLocationId()))
{
questState.setCond(QuestCondType.DONE);
sendEndDialog(player);
}
}
}
else if (questState.isCond(QuestCondType.DONE) && !questState.isCompleted())
{
if (questLocation.getEndLocationId() > 0)
{
final Location location = TeleportListData.getInstance().getTeleport(questLocation.getEndLocationId()).getLocation();
if (teleportToQuestLocation(player, location))
{
sendEndDialog(player);
}
}
}
break;
}
case "COMPLETE":
{
final QuestState questState = getQuestState(player, false);
if (questState == null)
{
break;
}
if (!hasQuestItems(player, 82959))
{
break;
}
if (questState.isCond(QuestCondType.DONE) && !questState.isCompleted())
{
questState.exitQuest(false, true);
rewardPlayer(player);
final QuestState nextQuestState = player.getQuestState(Q10502_AStepToYourDestiny1.class.getSimpleName());
if (nextQuestState == null)
{
player.sendPacket(new ExQuestDialog(10502, QuestDialogType.ACCEPT));
}
}
break;
}
}
return null;
}
@Override
public String onFirstTalk(Npc npc, Player player)
{
final QuestState questState = getQuestState(player, false);
if ((questState != null) && !questState.isCompleted())
{
if (questState.isCond(QuestCondType.STARTED))
{
if (questState.isStarted())
{
questState.setCount(getQuestData().getGoal().getCount());
questState.setCond(QuestCondType.DONE);
player.sendPacket(new ExQuestDialog(questState.getQuest().getId(), QuestDialogType.END));
}
}
else if (questState.isCond(QuestCondType.DONE))
{
player.sendPacket(new ExQuestDialog(questState.getQuest().getId(), QuestDialogType.END));
}
}
npc.showChatWindow(player);
return null;
}
}

