public static void SaveCharacter(Character chr, bool newchr = false) { var commandreader = ExecuteDataQuery("UPDATE `character_data` SET `Name` = '{0}', `Gender`= {1}, `Skin` = {2}, `Hair` = {3}, `Face` = {4}, `Map` = {5}, `MapPosition` = {6}, `Meso` = {7} WHERE id = {8};", chr.mName, chr.mGender, chr.mSkin, chr.mHair, chr.mFace, chr.mMap, chr.mMapPosition, chr.mMeso, chr.mID); if (newchr) commandreader = ExecuteDataQuery("INSERT `character_data` (AccountId, Name, Gender, Skin, Hair, Face, Map, MapPosition, Meso) VALUES ({0}, '{1}', {2}, {3}, {4}, {5}, {6}, {7}, {8});", chr.mClient.AccountId, chr.mName, chr.mGender, chr.mSkin, chr.mHair, chr.mFace, chr.mMap, chr.mMapPosition, chr.mMeso); commandreader = ExecuteDataQuery("SELECT id FROM character_data WHERE AccountId = {0};", chr.mClient.AccountId); while (commandreader.Read()) { chr.mID = Convert.ToInt32(commandreader["id"]); } commandreader.Close(); string query = "UPDATE `character_primarystats` SET `Level` = @Level, `Job` = @Job, `Str` = @Str, `Dex` = @Dex, `Int` = @Int, `Luk` = @Luk, `Hp` = @Hp, `MaxHp` = @MaxHp, `Mp` = @Mp, `MaxMp` = @MaxMp, `Ap` = @Ap, `Sp` = @Sp, `Exp` = @Exp, `Fame` = @Fame, `DemonSlayerAccessory` = @DemonSlayerAccessory, `Fatigue` = @Fatigue, `BattlePoints` = @BattlePoints, `BattleExp` = @BattleExp WHERE CharacterId = @CharacterId;"; if (newchr) query = "INSERT `character_primarystats` (CharacterId, Level, Job, Str, Dex, `Int`, Luk, Hp, MaxHp, Mp, MaxMp, Ap, Sp, Exp, Fame, DemonSlayerAccessory, Fatigue, BattlePoints, BattleExp) VALUES (@CharacterId, @Level, @Job, @Str, @Dex, @Int, @Luk, @Hp, @MaxHp, @Mp, @MaxMp, @Ap, @Sp, @Exp, @Fame, @DemonSlayerAccessory, @Fatigue, @BattlePoints, @BattleExp);"; MySqlCommand command = new MySqlCommand(query, connection); command.Parameters.AddWithValue("@Level", chr.mPrimaryStats.Level); command.Parameters.AddWithValue("@Job", chr.mPrimaryStats.Job); command.Parameters.AddWithValue("@Str", chr.mPrimaryStats.Str); command.Parameters.AddWithValue("@Dex", chr.mPrimaryStats.Dex); command.Parameters.AddWithValue("@Int", chr.mPrimaryStats.Int); command.Parameters.AddWithValue("@Luk", chr.mPrimaryStats.Luk); command.Parameters.AddWithValue("@Hp", chr.mPrimaryStats.HP); command.Parameters.AddWithValue("@MaxHp", chr.mPrimaryStats.MaxHP); command.Parameters.AddWithValue("@Mp", chr.mPrimaryStats.MP); command.Parameters.AddWithValue("@MaxMp", chr.mPrimaryStats.MaxMP); command.Parameters.AddWithValue("@Ap", chr.mPrimaryStats.AP); ulong SPData = 0x0000000000000000; SPData = (SPData & 0x0000FFFFFFFFFFFF) | ((ulong)chr.mPrimaryStats.SP[0] << 48); SPData = (SPData & 0xFFFF0000FFFFFFFF) | ((ulong)chr.mPrimaryStats.SP[1] << 32); SPData = (SPData & 0xFFFFFFFF0000FFFF) | ((ulong)chr.mPrimaryStats.SP[2] << 16); SPData = (SPData & 0xFFFFFFFFFFFF0000) | (ulong)((ulong)chr.mPrimaryStats.SP[3]); command.Parameters.AddWithValue("@Sp", SPData); command.Parameters.AddWithValue("@Exp", chr.mPrimaryStats.EXP); command.Parameters.AddWithValue("@Fame", chr.mPrimaryStats.Fame); command.Parameters.AddWithValue("@DemonSlayerAccessory", chr.mPrimaryStats.DemonSlayerAccessory); command.Parameters.AddWithValue("@Fatigue", chr.mPrimaryStats.Fatigue); command.Parameters.AddWithValue("@BattlePoints", chr.mPrimaryStats.BattlePoints); command.Parameters.AddWithValue("@BattleExp", chr.mPrimaryStats.BattleEXP); command.Parameters.AddWithValue("@CharacterId", chr.mID); command.ExecuteNonQuery(); query = "UPDATE `character_traits` SET `Ambition` = @Ambition, `Insight` = @Insight, `Willpower` = @Willpower, `Diligence` = @Diligence, `Empathy` = @Empathy, `Charm` = @Charm, `AmbitionGained` = @AmbitionGained, `InsightGained` = @InsightGained, `WillpowerGained` = @WillpowerGained, `DiligenceGained` = @DiligenceGained, `EmpathyGained` = @EmpathyGained, `CharmGained` = @CharmGained WHERE CharacterId = @CharacterId;"; if (newchr) query = "INSERT `character_traits` (CharacterId, Ambition, Insight, Willpower, Diligence, Empathy, Charm, AmbitionGained, InsightGained, WillpowerGained, DiligenceGained, EmpathyGained, CharmGained) VALUES (@CharacterId, @Ambition, @Insight, @Willpower, @Diligence, @Empathy, @Charm, @AmbitionGained, @InsightGained, @WillpowerGained, @DiligenceGained, @EmpathyGained, @CharmGained);"; command = new MySqlCommand(query, connection); command.Parameters.AddWithValue("@Ambition", chr.mTraits.Ambition); command.Parameters.AddWithValue("@Insight", chr.mTraits.Insight); command.Parameters.AddWithValue("@Willpower", chr.mTraits.Willpower); command.Parameters.AddWithValue("@Diligence", chr.mTraits.Diligence); command.Parameters.AddWithValue("@Empathy", chr.mTraits.Empathy); command.Parameters.AddWithValue("@Charm", chr.mTraits.Charm); command.Parameters.AddWithValue("@AmbitionGained", chr.mTraits.AmbitionGained); command.Parameters.AddWithValue("@InsightGained", chr.mTraits.InsightGained); command.Parameters.AddWithValue("@WillpowerGained", chr.mTraits.WillpowerGained); command.Parameters.AddWithValue("@DiligenceGained", chr.mTraits.DiligenceGained); command.Parameters.AddWithValue("@EmpathyGained", chr.mTraits.EmpathyGained); command.Parameters.AddWithValue("@CharmGained", chr.mTraits.CharmGained); command.Parameters.AddWithValue("@CharacterId", chr.mID); command.ExecuteNonQuery(); SaveInventoryItems(chr.mID, chr.mInventory); }
public static List<Character> GetCharacters(int accountid) { List<Character> ret = new List<Character>(); var commandreader = ExecuteDataQuery("SELECT * FROM character_data WHERE AccountId = {0};", accountid); while (commandreader.Read()) { Character chr = new Character(); chr.mID = Convert.ToInt32(commandreader["id"]); chr.mName = commandreader["Name"].ToString(); chr.mGender = Convert.ToByte(commandreader["Gender"]); chr.mSkin = Convert.ToByte(commandreader["Skin"]); chr.mHair = Convert.ToInt32(commandreader["Hair"]); chr.mFace = Convert.ToInt32(commandreader["Face"]); chr.mMap = Convert.ToInt32(commandreader["Map"]); chr.mMapPosition = Convert.ToByte(commandreader["MapPosition"]); chr.mMeso = Convert.ToInt32(commandreader["Meso"]); ret.Add(chr); } commandreader.Close(); foreach (Character chr in ret) { commandreader = ExecuteDataQuery("SELECT * FROM character_primarystats WHERE CharacterId = {0};", chr.mID); while (commandreader.Read()) { chr.mPrimaryStats.Level = Convert.ToByte(commandreader["Level"]); chr.mPrimaryStats.Job = Convert.ToInt16(commandreader["Job"]); chr.mPrimaryStats.Str = Convert.ToInt16(commandreader["Str"]); chr.mPrimaryStats.Dex = Convert.ToInt16(commandreader["Dex"]); chr.mPrimaryStats.Int = Convert.ToInt16(commandreader["Int"]); chr.mPrimaryStats.Luk = Convert.ToInt16(commandreader["Luk"]); chr.mPrimaryStats.HP = Convert.ToInt32(commandreader["Hp"]); chr.mPrimaryStats.MaxHP = Convert.ToInt32(commandreader["MaxHp"]); chr.mPrimaryStats.MP = Convert.ToInt32(commandreader["Mp"]); chr.mPrimaryStats.MaxMP = Convert.ToInt32(commandreader["MaxMp"]); chr.mPrimaryStats.AP = Convert.ToInt16(commandreader["Ap"]); ulong SPData = Convert.ToUInt64(commandreader["Sp"]); chr.mPrimaryStats.SP[0] = (short)(SPData >> 48); chr.mPrimaryStats.SP[1] = (short)(SPData << 16 >> 48); chr.mPrimaryStats.SP[2] = (short)(SPData << 32 >> 48); chr.mPrimaryStats.SP[3] = (short)(SPData << 48 >> 48); chr.mPrimaryStats.EXP = Convert.ToInt32(commandreader["Exp"]); chr.mPrimaryStats.Fame = Convert.ToInt32(commandreader["Fame"]); chr.mPrimaryStats.DemonSlayerAccessory = Convert.ToInt32(commandreader["DemonSlayerAccessory"]); chr.mPrimaryStats.Fatigue = Convert.ToInt32(commandreader["Fatigue"]); chr.mPrimaryStats.BattlePoints = Convert.ToInt32(commandreader["BattlePoints"]); chr.mPrimaryStats.BattleEXP = Convert.ToInt32(commandreader["BattleExp"]); } commandreader.Close(); commandreader = ExecuteDataQuery("SELECT * FROM character_traits WHERE CharacterId = {0};", chr.mID); while (commandreader.Read()) { chr.mTraits.Ambition = Convert.ToInt32(commandreader["Ambition"]); chr.mTraits.Insight = Convert.ToInt32(commandreader["Insight"]); chr.mTraits.Willpower = Convert.ToInt32(commandreader["Willpower"]); chr.mTraits.Diligence = Convert.ToInt32(commandreader["Diligence"]); chr.mTraits.Empathy = Convert.ToInt32(commandreader["Empathy"]); chr.mTraits.Charm = Convert.ToInt32(commandreader["Charm"]); chr.mTraits.AmbitionGained = Convert.ToInt16(commandreader["AmbitionGained"]); chr.mTraits.InsightGained = Convert.ToInt16(commandreader["InsightGained"]); chr.mTraits.WillpowerGained = Convert.ToInt16(commandreader["WillpowerGained"]); chr.mTraits.DiligenceGained = Convert.ToInt16(commandreader["DiligenceGained"]); chr.mTraits.EmpathyGained = Convert.ToInt16(commandreader["EmpathyGained"]); chr.mTraits.CharmGained = Convert.ToInt16(commandreader["CharmGained"]); } commandreader.Close(); chr.mInventory = GetInventoryItems(chr.mID); } commandreader.Close(); return ret; }