Code:
public static bool CreateEntity(Network.GamePackets.EnitityCreate eC, Client.GameClient client, ref string message)
{
if (eC.Name.Length > 16)
eC.Name = eC.Name.Substring(0, 16);
if (eC.Name == "")
return false;
if (InvalidCharacters(eC.Name))
{
message = "Invalid characters inside the name.";
return false;
}
using (var rdr = new MySqlReader(new MySqlCommand(MySqlCommandType.SELECT).Select("entities").Where("name", eC.Name)))
{
if (rdr.Read())
{
message = "The chosen name is already in use.";
return false;
}
}
client.Entity = new Game.Entity(Game.EntityFlag.Player, false);
client.Entity.Name = eC.Name;
DataHolder.GetStats(eC.Class, 1, client);
client.CalculateStatBonus();
client.CalculateHPBonus();
client.Entity.Hitpoints = client.Entity.MaxHitpoints;
client.Entity.Mana = (ushort)(client.Entity.Spirit * 5);
client.Entity.Class = eC.Class;
client.Entity.Body = eC.Body;
if (eC.Body == 1003 || eC.Body == 1004)
client.Entity.Face = (ushort)Kernel.Random.Next(1, 50);
else
client.Entity.Face = (ushort)Kernel.Random.Next(201, 250);
byte Color = (byte)Kernel.Random.Next(4, 8);
client.Entity.HairStyle = (ushort)(Color * 100 + 10 + (byte)Kernel.Random.Next(4, 9));
client.Entity.UID = Program.EntityUID.Next;
client.Entity.JustCreated = true;
while (true)
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("entities").Where("uid", client.Entity.UID))
using (var reader = cmd.CreateReader())
{
if (reader.Read())
client.Entity.UID = Program.EntityUID.Next;
else
break;
}
}
while (true)
{
try
{
using (var cmd = new MySqlCommand(MySqlCommandType.INSERT))
cmd.Insert("entities").Insert("Name", eC.Name).Insert("Owner", client.Account.Username).Insert("Class", eC.Class).Insert("UID", client.Entity.UID)
.Insert("Hitpoints", client.Entity.Hitpoints).Insert("Mana", client.Entity.Mana).Insert("Body", client.Entity.Body)
.Insert("Face", client.Entity.Face).Insert("HairStyle", client.Entity.HairStyle).Insert("Strength", client.Entity.Strength)
.Insert("WarehousePW", "").Insert("Agility", client.Entity.Agility).Insert("Vitality", client.Entity.Vitality).Insert("Spirit", client.Entity.Spirit)
.Execute();
Database.MySqlCommand com = new Database.MySqlCommand(MySqlCommandType.INSERT);
com.Insert("achievement").Insert("UID", (long)client.Entity.UID).Insert("Owner", client.Account.Username).Insert("Name", client.Entity.Name);
message = "ANSWER_OK";
break;
}
catch
{
client.Entity.UID = Program.EntityUID.Next;
}
}
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("configuration").Set("EntityID", client.Entity.UID).Where("Server", Constants.ServerName))
cmd.Execute();
client.Account.EntityID = client.Entity.UID;
client.Account.Save();
return true;
}