From 0fc3582ae15b040dcd4a2a6d290e43d89202ad5d Mon Sep 17 00:00:00 2001 From: Bluzume <39113159+KuromeSan@users.noreply.github.com> Date: Sun, 7 Nov 2021 23:03:52 -0500 Subject: [PATCH] Add %SHUTDOWN command --- HorseIsleData | 2 +- .../HorseIsleServer/Game/Chat/Chat.cs | 2 ++ .../HorseIsleServer/Game/Chat/Command.cs | 34 ++++++++++++++++++- .../HorseIsleServer/Game/Items/Item.cs | 1 + HorseIsleServer/HorseIsleServer/Program.cs | 3 +- .../HorseIsleServer/Server/GameDataJson.cs | 1 + 6 files changed, 40 insertions(+), 3 deletions(-) diff --git a/HorseIsleData b/HorseIsleData index d44f610..9540f98 160000 --- a/HorseIsleData +++ b/HorseIsleData @@ -1 +1 @@ -Subproject commit d44f6107e607e3e23c137f4678235c12965af533 +Subproject commit 9540f98ef9180dca80bcb27599e939a767ba92eb diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs index d027129..9c3cba1 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs @@ -116,6 +116,8 @@ namespace HISP.Game.Chat return Command.ModHorse(message, args, user); if (message.ToUpper().StartsWith("%DELITEM")) return Command.DelItem(message, args, user); + if (message.ToUpper().StartsWith("%SHUTDOWN")) + return Command.Shutdown(message, args, user); if (message.ToUpper().StartsWith("%CALL HORSE")) return Command.CallHorse(message, args, user); return false; diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs index fff1882..ef5c844 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs @@ -30,6 +30,38 @@ namespace HISP.Game.Chat throw new KeyNotFoundException("name not found"); } + public static bool Shutdown(string message, string[] args, User user) + { + if (!user.Administrator) + return false; + + try + { + foreach(GameClient client in GameClient.ConnectedClients) + { + + if (client.LoggedIn) + { + for(int i = 0; i < 2; i++) + { + ItemInstance rubyItem = new ItemInstance(Item.Ruby); + client.LoggedinUser.Inventory.AddIgnoringFull(rubyItem); + } + + client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++; + } + + client.Kick("Server was closed by an Administrator."); + + } + } + catch (Exception) { }; + + byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT); + user.LoggedinClient.SendPacket(chatPacket); + Program.ShuttingDown = true; + return true; + } public static bool Give(string message, string[] args, User user) { if (args.Length <= 0) @@ -390,7 +422,7 @@ namespace HISP.Game.Chat foreach (ItemInstance instance in itm.ItemInstances) { - itm.RemoveItem(instance); + target.Inventory.Remove(instance); } } } diff --git a/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs b/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs index 735dac5..477be45 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs @@ -101,6 +101,7 @@ namespace HISP.Game.Items public static int BirthdayToken; public static int MagicBean; public static int MagicDroplet; + public static int Ruby; public static int StallionTradingCard; public static int MareTradingCard; diff --git a/HorseIsleServer/HorseIsleServer/Program.cs b/HorseIsleServer/HorseIsleServer/Program.cs index b7bf3a4..e580faf 100644 --- a/HorseIsleServer/HorseIsleServer/Program.cs +++ b/HorseIsleServer/HorseIsleServer/Program.cs @@ -12,6 +12,7 @@ namespace HISP { public class Program { + public static bool ShuttingDown = false; static void Main(string[] args) { #if (!DEBUG) @@ -54,7 +55,7 @@ namespace HISP Logger.ErrorPrint(""); Logger.ErrorPrint(execpt.StackTrace); - while (true) { }; + while (!ShuttingDown) { /*Allow asyncronous operations to happen.*/ }; } } } diff --git a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs index 310d846..1a2c395 100644 --- a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs +++ b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs @@ -903,6 +903,7 @@ namespace HISP.Server Item.ModSplatterball = gameData.item.special.mod_splatterball; Item.MagicBean = gameData.item.special.magic_bean; Item.MagicDroplet = gameData.item.special.magic_droplet; + Item.Ruby = gameData.item.special.ruby; Item.StallionTradingCard = gameData.item.special.stallion_trading_card; Item.MareTradingCard = gameData.item.special.mare_trading_card;