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");
}
}