Example #1
0
        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);
        }
Example #2
0
        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;
        }