public void SaveCharacter(Account acc, Char chr)
{
MySqlCommand cmd = CreateQuery();
cmd.CommandText = @"UPDATE characters SET
level=@level,
exp=@exp,
fame=@fame,
items=@items,
stats=@stats,
hp=@hp,
mp=@mp,
tex1=@tex1,
tex2=@tex2,
pet=@pet,
fameStats=@fameStats
WHERE accId=@accId AND charId=@charId;";
cmd.Parameters.AddWithValue("@accId", acc.AccountId);
cmd.Parameters.AddWithValue("@charId", chr.CharacterId);
cmd.Parameters.AddWithValue("@level", chr.Level);
cmd.Parameters.AddWithValue("@exp", chr.Exp);
cmd.Parameters.AddWithValue("@fame", chr.CurrentFame);
cmd.Parameters.AddWithValue("@items", Utils.GetCommaSepString(chr.EquipSlots()));
cmd.Parameters.AddWithValue("@stats", Utils.GetCommaSepString(new[]
{
chr.MaxHitPoints,
chr.MaxMagicPoints,
chr.Attack,
chr.Defense,
chr.Speed,
chr.HpRegen,
chr.MpRegen,
chr.Dexterity
}));
cmd.Parameters.AddWithValue("@hp", chr.HitPoints);
cmd.Parameters.AddWithValue("@mp", chr.MagicPoints);
cmd.Parameters.AddWithValue("@tex1", chr.Tex1);
cmd.Parameters.AddWithValue("@tex2", chr.Tex2);
cmd.Parameters.AddWithValue("@pet", chr.Pet);
chr.PCStats =
Convert.ToBase64String(ZlibStream.CompressBuffer(chr.FameStats.Write()))
.Replace('+', '-')
.Replace('/', '_');
cmd.Parameters.AddWithValue("@fameStats", chr.PCStats);
cmd.ExecuteNonQuery();
cmd = CreateQuery();
cmd.CommandText = @"INSERT INTO classstats(accId, objType, bestLv, bestFame)
VALUES(@accId, @objType, @bestLv, @bestFame)
ON DUPLICATE KEY UPDATE
bestLv = GREATEST(bestLv, @bestLv),
bestFame = GREATEST(bestFame, @bestFame);";
cmd.Parameters.AddWithValue("@accId", acc.AccountId);
cmd.Parameters.AddWithValue("@objType", chr.ObjectType);
cmd.Parameters.AddWithValue("@bestLv", chr.Level);
cmd.Parameters.AddWithValue("@bestFame", chr.CurrentFame);
cmd.ExecuteNonQuery();
SaveBackpacks(chr, acc);
}