diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index a32d7df9..e423885c 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -224,7 +224,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.Pools.GetAllPlayers().ForEach(p => { User pUser = p.GetUser(); - if ((pUser?.FactionLeader ?? false) || pUser.IsAdmin(AdminLevel.ADMIN)) + if ((pUser?.FactionLeader ?? false) || (pUser.IsAdmin(AdminLevel.ADMIN) && !p.HasData("toglc"))) { ChatService.SendMessage(p, broadcastMsg); } diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index ba6e0506..5dff77b5 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -70,7 +70,10 @@ namespace ReallifeGamemode.Server.Events { Autowanted.Check_AutoWanted(killer, player); string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + Managers.WeaponManager.GetCauseOfDeathByHash(reason) + ")"; - ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); + ChatService.BroadcastAdmin(message, AdminLevel.ADMIN, shouldSendMessage: admin => + { + return admin.HasData("togdeath"); + }); } } } diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index 344c2ed5..95690c6c 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -92,15 +92,30 @@ namespace ReallifeGamemode.Server.Events ChatService.BroadcastGroup(msg, user.Group); } + string message = string.Empty; + if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName)) { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING); + message = "!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")"); } else if (user.IsAdmin(AdminLevel.MAPPING)) { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING); + message = "!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!"; } + string addInfoStr = " (IP: " + player.Address + ")"; + + if(!string.IsNullOrEmpty(message)) + { + ChatService.BroadcastAdmin(message, AdminLevel.MAPPING, admin => + { + if(admin.HasData("togip")) + { + return addInfoStr; + } + return ""; + }); + } var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); player.SetData("items", userItems); diff --git a/ReallifeGamemode.Server/Services/ChatService.cs b/ReallifeGamemode.Server/Services/ChatService.cs index 255b30ad..e1b62f63 100644 --- a/ReallifeGamemode.Server/Services/ChatService.cs +++ b/ReallifeGamemode.Server/Services/ChatService.cs @@ -94,12 +94,25 @@ namespace ReallifeGamemode.Server.Services /// /// Die Nachricht, die gesendet werden soll /// Das mindest Admin Level, das für das Erhalten dieser Nachricht benötigt wird - public static void BroadcastAdmin(string message, AdminLevel minLevel) + public static void BroadcastAdmin(string message, AdminLevel minLevel, Func getAddInfoMessage = null, Predicate shouldSendMessage = null) { NAPI.Pools.GetAllPlayers().ForEach(p => { if (p.GetUser()?.IsAdmin(minLevel) ?? false) { + if(shouldSendMessage != null) + { + if(!shouldSendMessage(p)) + { + return; + } + } + + if(getAddInfoMessage != null) + { + message += getAddInfoMessage(p); + } + ChatService.SendMessage(p, message); } });