Lineage 2 Mobius Superion Quest

ЕгорСПБ

Знаменитый
Местный
Старожил I степени
Сообщения
211
Розыгрыши
0
Решения
2
Репутация
10
Реакции
34
Баллы
1 298
Хроники
  1. Master Class
Исходники
Присутствуют
Сборка
L2J_Mobius_12.3_Superion
Здравствуйте .
Есть 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;
    }
}
изображение_2025-12-08_030550479.webp
 
Просто убири один из идентичных квестов, сделай переход прямо ХХХ36 на 10501
 

Похожие темы

Назад
Сверху Снизу