db.Database.SaveCharacter C# (CSharp) Method

SaveCharacter() public method

public SaveCharacter ( Account acc, Char chr ) : void
acc Account
chr Char
return void
        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);
        }

Usage Example

 public void Save()
 {
     try
     {
         if (db != null)
         {
             if (character != null)
             {
                 entity.SaveToCharacter();
                 if (entity.Owner.Id != -6)
                     db.SaveCharacter(account, character);
             }
             db.Dispose();
             db = null;
         }
         else
         {
             db = new Database();
             if (character != null)
             {
                 entity.SaveToCharacter();
                 if (entity.Owner.Id != -6)
                     db.SaveCharacter(account, character);
             }
             db.Dispose();
             db = null;
         }
     }
     catch
     {
     }
 }
All Usage Examples Of db.Database::SaveCharacter