From 630c4411a0b9e008e5d8dcf4d9e3643084898863 Mon Sep 17 00:00:00 2001 From: SilicaAndPina Date: Thu, 14 Jan 2021 01:51:18 +1300 Subject: [PATCH] allow you to change category --- DataCollection/gamedata.json | 1 + .../Game/Horse/HorseInstance.cs | 51 ++++++++++++++--- .../Horse Isle Server/Game/Messages.cs | 5 ++ .../Horse Isle Server/Server/Database.cs | 55 +++++++++++++++++-- .../Horse Isle Server/Server/GameDataJson.cs | 1 + .../Horse Isle Server/Server/GameServer.cs | 26 ++++++++- 6 files changed, 126 insertions(+), 13 deletions(-) diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index bf5e2b4..9a30fd7 100644 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -152,6 +152,7 @@ "stop_riding_message":"You are now not riding a horse!", "unequip_tack_message":"You removed the tack off %HORSENAME%.", "saved_profile":"Saved profile for horse %HORSENAME%.", + "horse_set_new_category":"Horse set as %CATEGORY%", "back_to_horse":"^R1^D5|BACK TO HORSE^R1", "pet_horse":"Your horse whinnies lightly. (+%MOOD% mood / -%TIREDNESS% tiredness)", "pet_horse_too_happy":"Your horse is as happy as it can be now. Your horse whinnies lightly. (+%MOOD% mood / -%TIREDNESS% tiredness)", diff --git a/Horse Isle Server/Horse Isle Server/Game/Horse/HorseInstance.cs b/Horse Isle Server/Horse Isle Server/Game/Horse/HorseInstance.cs index 654db1b..d5e4394 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Horse/HorseInstance.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Horse/HorseInstance.cs @@ -6,7 +6,7 @@ namespace HISP.Game.Horse { class HorseInstance { - public HorseInstance(HorseInfo.Breed breed, int randomId = -1, string loadName=null, string loadDescription = "", int loadSpoiled=0) + public HorseInstance(HorseInfo.Breed breed, int randomId = -1, string loadName=null, string loadDescription = "", int loadSpoiled=0, string loadCategory="KEEPER", int loadMagicUsed=0, int loadAutoSell=0) { RandomId = RandomID.NextRandomId(randomId); Owner = 0; @@ -79,10 +79,10 @@ namespace HISP.Game.Horse AdvancedStats = new HorseInfo.AdvancedStats(this, 0, 0, 0, 0, inteligence, 0, personality, height); Equipment = new HorseInfo.HorseEquips(); - AutoSell = 0; - Category = "KEEPER"; + autosell = loadAutoSell; + category = loadCategory; spoiled = loadSpoiled; - MagicUsed = 0; + magicUsed = loadMagicUsed; TrainTimer = 0; RanchId = 0; Leaser = 0; @@ -122,7 +122,18 @@ namespace HISP.Game.Horse public HorseInfo.BasicStats BasicStats; public HorseInfo.AdvancedStats AdvancedStats; public HorseInfo.HorseEquips Equipment; - public int AutoSell; + public int AutoSell + { + get + { + return autosell; + } + set + { + Database.SetHorseAutoSell(RandomId, value); + autosell = value; + } + } public int Spoiled { get @@ -135,13 +146,37 @@ namespace HISP.Game.Horse spoiled = value; } } - public int MagicUsed; - public string Category; + public int MagicUsed + { + get + { + return magicUsed; + } + set + { + Database.SetHorseMagicUsed(RandomId, value); + magicUsed = value; + } + } + public string Category + { + get + { + return category; + } + set + { + Database.SetHorseCategory(RandomId, value); + category = value; + } + } private string name; private string description; private int spoiled; - + private int magicUsed; + private int autosell; + private string category; } diff --git a/Horse Isle Server/Horse Isle Server/Game/Messages.cs b/Horse Isle Server/Horse Isle Server/Game/Messages.cs index 6de9093..8124ce2 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Messages.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Messages.cs @@ -220,6 +220,7 @@ namespace HISP.Game public static string HorsePetMessageFormat; public static string HorsePetTooHappyFormat; + public static string HorseSetNewCategoryMessageFormat; // Horse Feed Menu @@ -430,6 +431,10 @@ namespace HISP.Game // Click public static string NothingInterestingHere; + public static string FormatHorseSetToNewCategory(string category) + { + return HorseSetNewCategoryMessageFormat.Replace("%CATEGORY%", category); + } public static string FormatHorseSavedProfileMessage(string horsename) { return HorseSavedProfileMessageFormat.Replace("%HORSENAME%", horsename); diff --git a/Horse Isle Server/Horse Isle Server/Server/Database.cs b/Horse Isle Server/Horse Isle Server/Server/Database.cs index 097c9d6..f0376da 100644 --- a/Horse Isle Server/Horse Isle Server/Server/Database.cs +++ b/Horse Isle Server/Horse Isle Server/Server/Database.cs @@ -484,12 +484,17 @@ namespace HISP.Server { int randomId = reader.GetInt32(0); int breedId = reader.GetInt32(4); + HorseInfo.Breed horseBreed = HorseInfo.GetBreedById(breedId); string name = reader.GetString(5); string description = reader.GetString(6); int spoiled = reader.GetInt32(32); + string category = reader.GetString(31); + int magicUsed = reader.GetInt32(33); + int autosell = reader.GetInt32(29); - HorseInstance inst = new HorseInstance(horseBreed, randomId, name, description, spoiled); + + HorseInstance inst = new HorseInstance(horseBreed, randomId, name, description, spoiled, category, magicUsed, autosell); inst.Owner = reader.GetInt32(1); inst.RanchId = reader.GetInt32(2); inst.Leaser = reader.GetInt32(3); @@ -527,10 +532,7 @@ namespace HISP.Server if (!reader.IsDBNull(28)) inst.Equipment.Companion = Item.GetItemById(reader.GetInt32(28)); - inst.AutoSell = reader.GetInt32(29); inst.TrainTimer = reader.GetInt32(30); - inst.Category = reader.GetString(31); - inst.MagicUsed = reader.GetInt32(33); inv.AddHorse(inst, false); } @@ -888,6 +890,51 @@ namespace HISP.Server return Weather; } } + + public static void SetHorseCategory(int horseRandomId, string Category) + { + using (MySqlConnection db = new MySqlConnection(ConnectionString)) + { + db.Open(); + MySqlCommand sqlCommand = db.CreateCommand(); + sqlCommand.CommandText = "UPDATE Horses SET category=@category WHERE randomId=@randomId"; + sqlCommand.Parameters.AddWithValue("@category", Category); + sqlCommand.Parameters.AddWithValue("@randomId", horseRandomId); + sqlCommand.Prepare(); + sqlCommand.ExecuteNonQuery(); + sqlCommand.Dispose(); + } + } + + public static void SetHorseAutoSell(int horseRandomId, int AutoSell) + { + using (MySqlConnection db = new MySqlConnection(ConnectionString)) + { + db.Open(); + MySqlCommand sqlCommand = db.CreateCommand(); + sqlCommand.CommandText = "UPDATE Horses SET autosell=@autosell WHERE randomId=@randomId"; + sqlCommand.Parameters.AddWithValue("@autosell", AutoSell); + sqlCommand.Parameters.AddWithValue("@randomId", horseRandomId); + sqlCommand.Prepare(); + sqlCommand.ExecuteNonQuery(); + sqlCommand.Dispose(); + } + } + public static void SetHorseMagicUsed(int horseRandomId, int MagicUsed) + { + using (MySqlConnection db = new MySqlConnection(ConnectionString)) + { + db.Open(); + MySqlCommand sqlCommand = db.CreateCommand(); + sqlCommand.CommandText = "UPDATE Horses SET magicused=@magicused WHERE randomId=@randomId"; + sqlCommand.Parameters.AddWithValue("@magicused", MagicUsed); + sqlCommand.Parameters.AddWithValue("@randomId", horseRandomId); + sqlCommand.Prepare(); + sqlCommand.ExecuteNonQuery(); + sqlCommand.Dispose(); + } + } + public static void SetHorseName(int horseRandomId, string Name) { using (MySqlConnection db = new MySqlConnection(ConnectionString)) diff --git a/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs b/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs index 0ce4d1f..c882c49 100644 --- a/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs +++ b/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs @@ -658,6 +658,7 @@ namespace HISP.Server Messages.HorsePetMessageFormat = gameData.messages.meta.horse.pet_horse; Messages.HorsePetTooHappyFormat = gameData.messages.meta.horse.pet_horse_too_happy; + Messages.HorseSetNewCategoryMessageFormat = gameData.messages.meta.horse.horse_set_new_category; // Horse Feed Menu Messages.HorseCurrentStatusFormat = gameData.messages.meta.horse.feed_horse.current_status; diff --git a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs index 4a239ec..dcfb7d9 100644 --- a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs +++ b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs @@ -1018,11 +1018,35 @@ namespace HISP.Server break; case "38": // Read Books break; - case "28c1": + case "28c1": // Abuse Report sender.LoggedinUser.MetaPriority = true; metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildAbuseReportPage()); sender.SendPacket(metaPacket); break; + case "52c1": // Horse set to KEEPER + string category = "KEEPER"; + goto setCategory; + case "52c2": // Horse set to TRAINING + category = "TRAINING"; + goto setCategory; + case "52c3": // Horse set to TRADING + category = "TRADING"; + goto setCategory; + case "52c4": // Horse set to RETIRED + category = "RETIRED"; + goto setCategory; + setCategory:; + if (sender.LoggedinUser.LastViewedHorse != null) + { + sender.LoggedinUser.LastViewedHorse.Category = category; + byte[] categoryChangedPacket = PacketBuilder.CreateChat(Messages.FormatHorseSetToNewCategory(category), PacketBuilder.CHAT_BOTTOM_RIGHT); + sender.SendPacket(categoryChangedPacket); + + sender.LoggedinUser.MetaPriority = true; + UpdateHorseMenu(sender, sender.LoggedinUser.LastViewedHorse); + } + break; + default: if(buttonIdStr.StartsWith("4c")) {