示例#1
0
        public static CharacterInfo NewCharacter(C.NewCharacter P, MirConnection Con)
        {
            DateTime CreationDate = Main.Now;

            DBCommand.Parameters.Clear();
            DBCommand.CommandText =
                "INSERT INTO [Character Info] ([Account Index], [Character Name], [Class], [Gender], [Creator IP], [Creation Date], [Last Access]) " +
                "OUTPUT INSERTED.[Character Index] " +
                "VALUES (@AccountIndex, @CharacterName, @Class, @Gender, @CreatorIP, @CreationDate, @LastAccess)";

            DBCommand.Parameters.AddWithValue("@AccountIndex", Con.Account.AccountIndex);
            DBCommand.Parameters.AddWithValue("@CharacterName", P.CharacterName);
            DBCommand.Parameters.AddWithValue("@Class", (byte)P.Class);
            DBCommand.Parameters.AddWithValue("@Gender", (byte)P.Gender);

            DBCommand.Parameters.AddWithValue("@CreatorIP", Con.IPAddress);
            DBCommand.Parameters.AddWithValue("@CreationDate", CreationDate.Ticks);
            DBCommand.Parameters.AddWithValue("@LastAccess", 0);

            int Index = (int)DBCommand.ExecuteScalar();

            return(new CharacterInfo(P)
            {
                CharacterIndex = Index, CreationDate = CreationDate, LastAccess = DateTime.MinValue
            });
        }
示例#2
0
        public void NewCharacter(C.NewCharacter P)
        {
            if (Stage != GameStage.Select)
            {
                return;
            }

            MirDB.CreateCharacter(P, this);
        }
示例#3
0
        public static void CreateCharacter(C.NewCharacter P, MirConnection Con)
        {
            if (!Settings.AllowNewCharacter)
            {
                Con.QueuePacket(new S.NewCharacter {
                    Result = 1
                });
                return;
            }

            if (!AccountIDReg.IsMatch(P.CharacterName))
            {
                Con.QueuePacket(new S.NewCharacter {
                    Result = 2
                });
                return;
            }

            if (P.Gender != MirGender.Male && P.Gender != MirGender.Female)
            {
                Con.QueuePacket(new S.NewCharacter {
                    Result = 3
                });
                return;
            }

            if (P.Class != MirClass.Warrior && P.Class != MirClass.Wizard && P.Class != MirClass.Taoist &&
                P.Class != MirClass.Assassin)
            {
                Con.QueuePacket(new S.NewCharacter {
                    Result = 4
                });
                return;
            }

            int CharCount = Con.Account.Characters.Count(C => !C.Deleted);

            if (CharCount >= Globals.MaxCharacterCount)
            {
                Con.QueuePacket(new S.NewCharacter {
                    Result = 5
                });
                return;
            }

            if (CharacterExists(P.CharacterName))
            {
                Con.QueuePacket(new S.NewCharacter {
                    Result = 6
                });
                return;
            }

            CharacterInfo CI = NewCharacter(P, Con);

            Con.Account.Characters.Add(CI);

            Con.QueuePacket(new S.NewCharacterSuccess {
                CharInfo = CI.ToSelectInfo()
            });
        }
示例#4
0
 public CharacterInfo(C.NewCharacter P)
 {
     CharacterName = P.CharacterName;
     Class         = P.Class;
     Gender        = P.Gender;
 }