From f61811d1b7302a07376e9c16554fe4c756ec7b39 Mon Sep 17 00:00:00 2001 From: Bluzume <39113159+KuromeSan@users.noreply.github.com> Date: Tue, 9 Nov 2021 20:24:57 -0500 Subject: [PATCH] Fix sort order in shop inventories --- .../Game/Events/ModsRevenge.cs | 4 ++-- .../Game/Inventory/ShopInventory.cs | 10 +++++++++- .../HorseIsleServer/Server/Database.cs | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/HorseIsleServer/HorseIsleServer/Game/Events/ModsRevenge.cs b/HorseIsleServer/HorseIsleServer/Game/Events/ModsRevenge.cs index f73901a..d541eaa 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Events/ModsRevenge.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Events/ModsRevenge.cs @@ -53,10 +53,10 @@ namespace HISP.Game.Events { revengeTimeout = new Timer(new TimerCallback(revengeTimedOut), null, REVENGE_TIMEOUT * 60 * 1000, REVENGE_TIMEOUT * 60 * 1000); - int TOTAL_SPLATTERBALLS = 8; // I dont know the actural amount t-t + int TOTAL_SPLATTERBALLS = 50; // Thanks MayDay! // Give Splatterballs - int[] allUsers = Database.GetUsers(); + int[] allUsers = Database.GetModeratorUsers(); foreach (int userid in allUsers) { for (int i = 0; i < TOTAL_SPLATTERBALLS; i++) diff --git a/HorseIsleServer/HorseIsleServer/Game/Inventory/ShopInventory.cs b/HorseIsleServer/HorseIsleServer/Game/Inventory/ShopInventory.cs index 4f40b34..5d6a136 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Inventory/ShopInventory.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Inventory/ShopInventory.cs @@ -110,9 +110,17 @@ namespace HISP.Game.Inventory } throw new KeyNotFoundException("random id: " + randomId + " not found in shop inventory"); } + public int GetSortPos(InventoryItem item) + { + int bias = 1000; + int sortBy = Item.GetItemById(item.ItemId).SortBy; + if (item.Infinite) + sortBy += bias; + return sortBy; + } public InventoryItem[] GetItemList() { - return inventoryItems.OrderBy(o => o.ItemInstances[0].GetItemInfo().SortBy).OrderBy(o => o.Infinite).ToArray(); + return inventoryItems.OrderBy(o => GetSortPos(o)).ToArray(); } public bool HasItem(int randomId) diff --git a/HorseIsleServer/HorseIsleServer/Server/Database.cs b/HorseIsleServer/HorseIsleServer/Server/Database.cs index 851339a..3f6c3e1 100644 --- a/HorseIsleServer/HorseIsleServer/Server/Database.cs +++ b/HorseIsleServer/HorseIsleServer/Server/Database.cs @@ -4171,6 +4171,25 @@ namespace HISP.Server } return userList.ToArray(); } + public static int[] GetModeratorUsers() + { + List userList = new List(); + using (MySqlConnection db = new MySqlConnection(ConnectionString)) + { + db.Open(); + MySqlCommand sqlCommand = db.CreateCommand(); + + sqlCommand.CommandText = "SELECT id FROM Users WHERE Moderator=\"YES\" OR Admin=\"YES\""; + MySqlDataReader reader = sqlCommand.ExecuteReader(); + while (reader.Read()) + { + userList.Add(reader.GetInt32(0)); + } + + } + return userList.ToArray(); + } + public static void AddItemToInventory(int playerId, ItemInstance instance) { using (MySqlConnection db = new MySqlConnection(ConnectionString))