ArkaliaCore.Game.Game.Handlers.AccountHandler.HandleCharacterCreationRequest C# (CSharp) Method

HandleCharacterCreationRequest() public static method

public static HandleCharacterCreationRequest ( Network client, string packet ) : void
client Network
packet string
return void
        public static void HandleCharacterCreationRequest(Network.Game.GameClient client, string packet)
        {
            //Parse data received
            string[] data = packet.Substring(2).Split('|');
            string nickname = data[0];
            int breed = int.Parse(data[1]);
            int gender = int.Parse(data[2]);
            int color1 = int.Parse(data[3]);
            int color2 = int.Parse(data[4]);
            int color3 = int.Parse(data[5]);

            //Anti-Cheat checking
            if (breed < 0 || breed > 12)
            {
                client.Send("AAEx");
                return;
            }
            if (gender != 0 && gender != 1)
            {
                client.Send("AAEx");
                return;
            }

            if (Controllers.CharacterController.ValidNickname(nickname))
            {
                if (!Controllers.CharacterController.ExistCharacter(nickname))
                {
                    //Apply parsed data
                    var character = new Database.Models.CharacterModel()
                    {
                        ID = Controllers.CharacterController.AvailableID(),
                        Nickname = nickname,
                        Breed = breed,
                        Gender = gender,
                        Color1 = color1,
                        Color2 = color2,
                        Color3 = color3,
                        Scal = 100,

                        //Native configuration
                        Owner = client.Account.ID,
                        MapID = Utilities.Settings.GetSettings.GetIntElement("Start", "Map"),
                        CellID = Utilities.Settings.GetSettings.GetIntElement("Start", "Cell"),
                        SaveMap = Utilities.Settings.GetSettings.GetIntElement("Start", "Map"),
                        SaveCell = Utilities.Settings.GetSettings.GetIntElement("Start", "Cell"),
                        Direction = Utilities.Settings.GetSettings.GetIntElement("Start", "Direction"),
                        Level = Utilities.Settings.GetSettings.GetIntElement("Start", "Level"),
                    };

                    //Complement the character
                    character.CaractPoint = (character.Level * 5) - 5;
                    character.SpellPoint = character.Level - 1;
                    character.Experience = character.LevelFloor.Character;
                    character.Look = Controllers.CharacterController.BaseLook(character);
                    character.CurrentLife = character.MaxLife;

                    //Save the character in cache and bdd
                    Database.Tables.CharacterTable.Insert(character);
                    lock (Database.Tables.CharacterTable.Cache)
                        Database.Tables.CharacterTable.Cache.Add(character.ID, character);

                    client.Characters.Add(character);

                    //Send to realm the creation and show the character for the client
                    Network.Realm.SyncServer.SendToSecuredRealm(new Interop.Crystal.Packets.PlayerCreatedCharacterMessage(character));
                    SendCharactersList(client);
                }
                else
                {
                    client.Send("AAEa");
                }
            }
            else
            {
                client.Send("AAEa");
            }
        }