public void OnCharCreateResult(uint charID, SM_CHAR_CREATE_RESULT.Results Result)
        {
            if (Result == SM_CHAR_CREATE_RESULT.Results.OK)
            {
                createdPC.CharID = charID;
                Common.Quests.Quest q = new Common.Quests.Quest()
                {
                    QuestID  = 250,
                    Step     = 1,
                    NextStep = 1
                };
                createdPC.Quests[q.QuestID] = q;
                CharacterSession.Instance.CharacterSave(createdPC);

                SM_CHAR_CREATE p = new SM_CHAR_CREATE()
                {
                    Character = createdPC
                };
                Network.SendPacket(p);
                chars[createdPC.SlotID] = createdPC;
            }
            else
            {
                SM_CHAR_CREATE_FAILED p1 = new SM_CHAR_CREATE_FAILED()
                {
                    SlotID = Utils.slot2GuidBytes(createdPC.SlotID),
                    Reason = SM_CHAR_CREATE_FAILED.Reasons.NameAlreadyExists
                };
                Network.SendPacket(p1);
            }
        }
Example #2
0
        private void LoadQuest(ActorPC pc)
        {
            string            sqlstr = string.Format("SELECT * FROM `quest` WHERE `char_id` = '{0}';", pc.CharID);
            DataRowCollection result;

            lock (pc.Quests)
            {
                pc.Quests.Clear();
                if (SQLExecuteQuery(sqlstr, out result))
                {
                    for (int i = 0; result.Count > i; i++)
                    {
                        Common.Quests.Quest q = new Common.Quests.Quest()
                        {
                            QuestID    = (ushort)result[i]["quest_id"],
                            Step       = (byte)result[i]["step"],
                            StepStatus = (byte)result[i]["step_status"],
                            NextStep   = (byte)result[i]["next_step"],
                            Flag1      = (short)result[i]["flag1"],
                            Flag2      = (short)result[i]["flag2"],
                            Flag3      = (short)result[i]["flag3"]
                        };
                        q.Count[0]           = (int)result[i]["count1"];
                        q.Count[1]           = (int)result[i]["count2"];
                        q.Count[2]           = (int)result[i]["count3"];
                        q.Count[3]           = (int)result[i]["count4"];
                        q.Count[4]           = (int)result[i]["count5"];
                        pc.Quests[q.QuestID] = q;
                    }
                }
            }

            sqlstr = string.Format("SELECT * FROM `quest_completed` WHERE `char_id` = '{0}';", pc.CharID);
            if (SQLExecuteQuery(sqlstr, out result))
            {
                for (int i = 0; result.Count > i; i++)
                {
                    pc.QuestsCompleted.Add((ushort)result[i]["quest_id"]);
                }
            }
        }
Example #3
0
        public void OnCharCreateResult(uint charID, SM_CHAR_CREATE_RESULT.Results Result)
        {
            if (Result == SM_CHAR_CREATE_RESULT.Results.OK)
            {
                createdPC.CharID = charID;
                Common.Quests.Quest q = new Common.Quests.Quest()
                {
                    QuestID  = 250,
                    Step     = 1,
                    NextStep = 1
                };
                createdPC.Quests[q.QuestID] = q;
                CharacterSession.Instance.CharacterSave(createdPC);
                BNSLoginPacket p = new BNSLoginPacket()
                {
                    Command = "STS/1.0 200 OK",
                    Serial  = characterSerial,
                    Content = string.Format("<bns>\n<protocol>Game.bns.{1}</protocol>\n<command>CreatePc</command>\n<result>OK</result>\n<slotid>{0}</slotid>\n</bns>\n",
                                            ((uint)createdPC.SlotID).ToGUID(), createdPC.WorldID)
                };
                p.WritePacket();
                Network.SendPacket(p);
                if (!chars.ContainsKey(createdPC.SlotID))
                {
                    chars[createdPC.SlotID] = createdPC;
                }
            }
            else
            {
                BNSLoginPacket p = new BNSLoginPacket()
                {
                    Command = "STS/1.0 200 OK",
                    Serial  = characterSerial,
                    Content = string.Format("<bns>\n<protocol>Game.bns.{1}</protocol>\n<command>CreatePc</command>\n<result>Fail</result>\n<slotid>{0}</slotid>\n<reason>202</reason>\n</bns>\n",
                                            ((uint)createdPC.SlotID).ToGUID(), createdPC.WorldID)
                };
                p.WritePacket();

                Network.SendPacket(p);
            }
        }