public Char LoadCharacter(Account acc, int charId)
{
MySqlCommand cmd = CreateQuery();
cmd.CommandText = "SELECT * FROM characters WHERE accId=@accId AND charId=@charId;";
cmd.Parameters.AddWithValue("@accId", acc.AccountId);
cmd.Parameters.AddWithValue("@charId", charId);
Char ret;
using (MySqlDataReader rdr = cmd.ExecuteReader())
{
if (!rdr.HasRows) return null;
rdr.Read();
int[] stats = Utils.FromCommaSepString32(rdr.GetString("stats"));
ret = new Char
{
ObjectType = (short)rdr.GetInt32("charType"),
CharacterId = rdr.GetInt32("charId"),
Level = rdr.GetInt32("level"),
Exp = rdr.GetInt32("exp"),
CurrentFame = rdr.GetInt32("fame"),
_Equipment = rdr.GetString("items"),
Backpack = 1,
MaxHitPoints = stats[0],
HitPoints = rdr.GetInt32("hp"),
MaxMagicPoints = stats[1],
MagicPoints = rdr.GetInt32("mp"),
Attack = stats[2],
Defense = stats[3],
Speed = stats[4],
HpRegen = stats[5],
MpRegen = stats[6],
Dexterity = stats[7],
Tex1 = rdr.GetInt32("tex1"),
Tex2 = rdr.GetInt32("tex2"),
Dead = rdr.GetBoolean("dead"),
Pet = rdr.GetInt32("pet"),
PCStats = rdr.GetString("fameStats"),
FameStats = new FameStats()
};
if (!string.IsNullOrEmpty(ret.PCStats) && ret.PCStats != "FameStats")
try
{
ret.FameStats.Read(
ZlibStream.UncompressBuffer(
Convert.FromBase64String(ret.PCStats.Replace('-', '+').Replace('_', '/'))));
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
ret.Backpacks = GetBackpacks(ret, acc);
ret._Equipment += ", " + Utils.GetCommaSepString(ret.Backpacks[1]);
return ret;
}