diff --git a/src/DiIiS-NA/BGS-Server/Battle/PlayerManager.cs b/src/DiIiS-NA/BGS-Server/Battle/PlayerManager.cs index 1175cae..cab6cde 100644 --- a/src/DiIiS-NA/BGS-Server/Battle/PlayerManager.cs +++ b/src/DiIiS-NA/BGS-Server/Battle/PlayerManager.cs @@ -28,12 +28,29 @@ namespace DiIiS_NA.LoginServer.Battle OnlinePlayers.Add(client); } - public static BattleClient GetClientbyCID(ulong cid) + public static BattleClient GetClientByCID(ulong cid) { - foreach (var bc in OnlinePlayers) - if (bc.CID == cid) - return bc; - return null; + return OnlinePlayers.FirstOrDefault(bc => bc.CID == cid); + } + + public static void SendWhisper(string message) + { + Broadcast(client => + { + client.SendServerWhisper(message); + }); + } + + public static void Broadcast(Action action, Func predicate) + { + foreach (var client in OnlinePlayers.Where(predicate)) + action(client); + } + + public static void Broadcast(Action action) + { + foreach (var client in OnlinePlayers) + action(client); } public static void PlayerDisconnected(BattleClient client) diff --git a/src/DiIiS-NA/D3-GameServer/CommandManager/GameCommands.cs b/src/DiIiS-NA/D3-GameServer/CommandManager/GameCommands.cs index a2b943a..7e9a050 100644 --- a/src/DiIiS-NA/D3-GameServer/CommandManager/GameCommands.cs +++ b/src/DiIiS-NA/D3-GameServer/CommandManager/GameCommands.cs @@ -119,7 +119,6 @@ namespace DiIiS_NA.GameServer.CommandManager var monster = player.World.SpawnMonster((ActorSno)actorSNO, position); } - return $"Spawned {amount} mobs with ActorSNO: {actorSNO}"; } @@ -464,7 +463,6 @@ namespace DiIiS_NA.GameServer.CommandManager var msg = new InventoryDropItemMessage { ItemID = item.DynamicID(player) }; player.Inventory.Consume(invokerClient.InGameClient, msg); } - return $"Dropped {bpItems.Count} Items for you"; } } @@ -696,6 +694,10 @@ namespace DiIiS_NA.GameServer.CommandManager return String.Format("Message sended."); } + + return matches.Aggregate(matches.Count >= 1 ? "Actor Matches:\n" : "No match found.", + (current, match) => current + + $"[{match.SNOId.ToString("D6")}] {match.Name} ({(match.Data as DiIiS_NA.Core.MPQ.FileFormats.Actor).Type} {(((match.Data as DiIiS_NA.Core.MPQ.FileFormats.Actor).Type == ActorType.Gizmo) ? ((int)(match.Data as DiIiS_NA.Core.MPQ.FileFormats.Actor).TagMap[ActorKeys.GizmoGroup]).ToString() : "")})\n"); } [CommandGroup("lookup", @@ -817,9 +819,10 @@ namespace DiIiS_NA.GameServer.CommandManager } } - return matches.Aggregate(matches.Count >= 1 ? "Power Matches:\n" : "No match found.", - (current, match) => current + $"[{match.SNOId.ToString("D6")}] {match.Name}\n"); - } + return matches.Aggregate(matches.Count >= 1 ? "World Matches:\n" : "No match found.", + (current, match) => current + + $"[{match.SNOId.ToString("D6")}] {match.Name} - {(match.Data as World).DynamicWorld}\n"); + } [Command("world", "Allows you to search for a world.\nUsage: lookup world OR lookup world id ")] @@ -951,7 +954,7 @@ namespace DiIiS_NA.GameServer.CommandManager public string Scene(string[] @params, BattleClient invokerClient) { var matches = new List(); - + if (@params.Count() < 1) return "Invalid arguments. Type 'help lookup scene' to get help.";