Ejemplo n.º 1
0
        public static void Handle(Packet packet)
        {
            var questStartPacket = new QuestStartPacket(packet);

            if (QuestModel.QuestStarted(GameServer.Instance.Database.Connection,
                                        packet.Sender.User.ActiveCharacterId, (uint)questStartPacket.TableIndex))
            {
                packet.Sender.SendDebugError("Quest already started!");
                packet.Sender.KillConnection("Quest was already started!");
                return;
            }

            QuestModel.Add(GameServer.Instance.Database.Connection, new Quest
            {
                CharacterId   = packet.Sender.User.ActiveCharacterId,
                CharacterName = packet.Sender.User.ActiveCharacter.Name,
                FailNum       = 0,
                PlaceIdx      = 0,
                QuestId       = questStartPacket.TableIndex,
                ServerId      = 0,
                State         = 0
            });

            var ack = new QuestStartAnswer
            {
                TableIndex = questStartPacket.TableIndex,
                FailNum    = 0
            };

            packet.Sender.Send(ack.CreatePacket());
        }
Ejemplo n.º 2
0
        public async Task HandleQuestStart(WorldClient client, QuestStartPacket packet)
        {
            var ok = await _questsManager.TryStartQuest(packet.NpcId, packet.QuestId);

            if (ok)
            {
                _packetFactory.SendQuestStarted(client, packet.NpcId, packet.QuestId);
            }
        }