コード例 #1
0
        static public void F_QUEST(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            UInt16 QuestID     = packet.GetUint16();
            UInt16 State       = packet.GetUint16();
            UInt16 Unk1        = packet.GetUint16();
            byte   Unk2        = packet.GetUint8();
            byte   Unk3        = packet.GetUint8();
            UInt16 Unk4        = packet.GetUint16();
            UInt16 CreatureOID = packet.GetUint16();

            Creature Crea = cclient.Plr.Region.GetObject(CreatureOID) as Creature;

            if (Crea == null)
            {
                return;
            }

            switch (State)
            {
            case 1:     // Show Quest
            {
                if (Crea.QtsInterface.HasQuestStarter(QuestID))
                {
                    Crea.QtsInterface.BuildQuest(QuestID, cclient.Plr);
                }
            } break;

            case 2:     // Accept Quest
            {
                if (Crea.QtsInterface.HasQuestStarter(QuestID))
                {
                    if (cclient.Plr.QtsInterface.AcceptQuest(QuestID))
                    {
                        if (!Crea.QtsInterface.CreatureHasStartQuest(cclient.Plr))
                        {
                            Crea.SendRemove(cclient.Plr);
                            Crea.SendMeTo(cclient.Plr);
                        }
                    }
                }
            } break;

            case 3:     // Quest Done
            {
                if (Crea.QtsInterface.hasQuestFinisher(QuestID))
                {
                    if (cclient.Plr.QtsInterface.DoneQuest(QuestID))
                    {
                        Crea.SendRemove(cclient.Plr);
                        Crea.SendMeTo(cclient.Plr);
                    }
                }
            } break;

            case 4:     // Quest Done Info
            {
                if (Crea.QtsInterface.hasQuestFinisher(QuestID))
                {
                    Crea.QtsInterface.SendQuestDoneInfo(cclient.Plr, QuestID);
                }
                else if (Crea.QtsInterface.HasQuestStarter(QuestID))
                {
                    Crea.QtsInterface.SendQuestInProgressInfo(cclient.Plr, QuestID);
                }
            } break;

            case 5:     // Select Quest Reward
            {
                if (Crea.QtsInterface.hasQuestFinisher(QuestID))
                {
                    cclient.Plr.QtsInterface.SelectRewards(QuestID, Unk3);
                }
            } break;
            }
            ;
        }