diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index a1a9da1..a1d173c 100644 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -53,8 +53,9 @@ "for_others":"TAG!! %USERNAME% is now it! (tagged by %TAGGER%)" }, "commands":{ - "mute_help":"PLAYER COMMAND [%COMMAND%] COMPLETED Mute Channel Not Recognized. (ALL/ADS/GLOBAL/ISLAND/NEAR/HERE/BUDDY/PM/BR/SOCIALS/LOGINS)", - "command_completed":"PLAYER COMMAND [%COMMAND%] COMPLETED" + "mute_help":"Mute Channel Not Recognized. (ALL/ADS/GLOBAL/ISLAND/NEAR/HERE/BUDDY/PM/BR/SOCIALS/LOGINS)", + "player_command_completed":"PLAYER COMMAND [%COMMAND%] COMPLETED", + "admin_command_completed":"COMMAND [%COMMAND%]:" }, "disconnect":{ "banned":"Your account has been BANNED. You will no longer be able to login", diff --git a/Horse Isle Server/Horse Isle Server/Game/Chat/Chat.cs b/Horse Isle Server/Horse Isle Server/Game/Chat/Chat.cs index a482112..476a10a 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Chat/Chat.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Chat/Chat.cs @@ -53,13 +53,43 @@ namespace HISP.Game.Chat if (user.Administrator || user.Moderator) if (message[0] == '%') + { + if(message.StartsWith("%STICKBUG")) + { + return Command.Stickbug(message, args, user); + } return false; + } if (message[0] == '!') { - if (message.StartsWith("!MUTE")) - { + // Alias for !MUTE + if (message.StartsWith("!MUTEALL")) + return Command.Mute(message, new string[] { "ALL" }, user); + else if (message.StartsWith("!MUTEADS")) + return Command.Mute(message, new string[] { "ADS" }, user); + else if (message.StartsWith("!MUTEGLOBAL")) + return Command.Mute(message, new string[] { "GLOBAL" }, user); + else if (message.StartsWith("!MUTEISLAND")) + return Command.Mute(message, new string[] { "ISLAND" }, user); + else if (message.StartsWith("!MUTENEAR")) + return Command.Mute(message, new string[] { "NEAR" }, user); + else if (message.StartsWith("!MUTEHERE")) + return Command.Mute(message, new string[] { "HERE" }, user); + else if (message.StartsWith("!MUTEBUDDY")) + return Command.Mute(message, new string[] { "BUDDY" }, user); + else if (message.StartsWith("!MUTEPM")) + return Command.Mute(message, new string[] { "PM" }, user); + else if (message.StartsWith("!MUTEPM")) + return Command.Mute(message, new string[] { "PM" }, user); + else if (message.StartsWith("!MUTEBR")) + return Command.Mute(message, new string[] { "BR" }, user); + else if (message.StartsWith("!MUTESOCIALS")) + return Command.Mute(message, new string[] { "SOCIALS" }, user); + else if (message.StartsWith("!MUTELOGINS")) + return Command.Mute(message, new string[] { "LOGINS" }, user); + + else if (message.StartsWith("!MUTE")) return Command.Mute(message, args, user); - } } return false; } diff --git a/Horse Isle Server/Horse Isle Server/Game/Chat/Command.cs b/Horse Isle Server/Horse Isle Server/Game/Chat/Command.cs index 5ead701..a9dedc9 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Chat/Command.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Chat/Command.cs @@ -1,18 +1,60 @@ using HISP.Player; using HISP.Server; -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace HISP.Game.Chat { class Command { + public static bool Stickbug(string message, string[] args, User user) + { + if (args.Length <= 0) + return false; + if (!user.Administrator) + return false; + + if(args[0] == "ALL") + { + foreach(GameClient client in GameServer.ConnectedClients) + { + if(client.LoggedIn) + { + byte[] swfModulePacket = PacketBuilder.CreateSwfModulePacket("fun/stickbug.swf", PacketBuilder.PACKET_SWF_MODULE_GENTLE); + client.SendPacket(swfModulePacket); + } + } + } + else + { + try + { + User victimUser = GameServer.GetUserByName(args[0]); + byte[] swfModulePacket = PacketBuilder.CreateSwfModulePacket("fun/stickbug.swf", PacketBuilder.PACKET_SWF_MODULE_GENTLE); + victimUser.LoggedinClient.SendPacket(swfModulePacket); + } + catch(KeyNotFoundException) + { + return false; + } + } + + byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT); + user.LoggedinClient.SendPacket(chatPacket); + + + return true; + } public static bool Mute(string message, string[] args, User user) { + string mesasge = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1)); + + if (args.Length <= 0) + { + message += Messages.MuteHelp; + goto leave; + } + string muteType = args[0]; if (muteType == "GLOBAL") @@ -33,19 +75,33 @@ namespace HISP.Game.Chat } else if (muteType == "SOCIALS") { user.MuteSocials = true; - } else if (muteType == "ALL") + } + else if (muteType == "PM") + { + user.MutePrivateMessage = true; + } + else if (muteType == "BR") + { + user.MuteBuddyRequests = true; + } + else if (muteType == "LOGINS") + { + user.MuteLogins = true; + } + else if (muteType == "ALL") { user.MuteAll = true; } else { - return false; + message += Messages.MuteHelp; + goto leave; } - byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatCommandComplete(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT); - + leave:; + + byte[] chatPacket = PacketBuilder.CreateChat(message, PacketBuilder.CHAT_BOTTOM_LEFT); user.LoggedinClient.SendPacket(chatPacket); - return true; } } diff --git a/Horse Isle Server/Horse Isle Server/Game/Messages.cs b/Horse Isle Server/Horse Isle Server/Game/Messages.cs index a6f94f2..a4b2e2a 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Messages.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Messages.cs @@ -69,7 +69,9 @@ namespace HISP.Game public static string ModChatFormat; public static string AdminChatFormat; - public static string CommandFormat; + public static string AdminCommandFormat; + public static string PlayerCommandFormat; + public static string MuteHelp; public static string GlobalChatFormatForModerators; public static string DirectChatFormatForModerators; @@ -261,9 +263,14 @@ namespace HISP.Game { return StatsCompetitionGearFormat.Replace("%GEARFORMAT%", competitonGearFormat); } - public static string FormatCommandComplete(string command) + public static string FormatAdminCommandCompleteMessage(string command) { - return CommandFormat.Replace("%COMMAND%", command); + return AdminCommandFormat.Replace("%COMMAND%", command); + } + + public static string FormatPlayerCommandCompleteMessage(string command) + { + return PlayerCommandFormat.Replace("%COMMAND%", command); } public static string FormatEquipItemMessage(string name) diff --git a/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs b/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs index 4de13c0..0eaeb34 100644 --- a/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs +++ b/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs @@ -455,7 +455,10 @@ namespace HISP.Server Messages.ModChatFormatForSender = gameData.messages.chat.for_sender.mod_format; Messages.AdminChatFormatForSender = gameData.messages.chat.for_sender.admin_format; - Messages.CommandFormat = gameData.messages.commands.command_completed; + Messages.AdminCommandFormat = gameData.messages.commands.admin_command_completed; + Messages.PlayerCommandFormat = gameData.messages.commands.player_command_completed; + Messages.MuteHelp = gameData.messages.commands.mute_help; + Messages.PasswordNotice = gameData.messages.chat.password_included; Messages.CapsNotice = gameData.messages.chat.caps_notice; diff --git a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs index 5044d4b..5aca983 100644 --- a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs +++ b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs @@ -1437,6 +1437,20 @@ namespace HISP.Server } return usersHere.ToArray(); } + + public static User GetUserByName(string username) + { + foreach(GameClient client in ConnectedClients) + { + if(client.LoggedIn) + { + if (client.LoggedinUser.Username == username) + return client.LoggedinUser; + } + } + throw new KeyNotFoundException("User was not found."); + } + public static User[] GetNearbyUsers(int x, int y, bool includeStealth=false, bool includeMuted=false) { int startX = x - 15; diff --git a/WebInterface/game-site/mod/fun/stickbug.swf b/WebInterface/game-site/mod/fun/stickbug.swf index be380c2..423323e 100644 Binary files a/WebInterface/game-site/mod/fun/stickbug.swf and b/WebInterface/game-site/mod/fun/stickbug.swf differ