From eaf7c658138018257af3674d3ed1b44e08fa6ee7 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sat, 3 Apr 2021 22:55:27 +0200 Subject: [PATCH 1/5] fix get set data nullreference --- ReallifeGamemode.Server/Extensions/ClientExtension.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 7dd2338e..6b04c579 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -93,6 +93,11 @@ namespace ReallifeGamemode.Server.Extensions internal static T GetData(this User user, string key, T nullValue) { + if(user == null) + { + return default; + } + key += "data_"; if (!user.Player.HasData(key)) return nullValue; return JsonConvert.DeserializeObject(user.Player.GetData(key)); @@ -102,6 +107,11 @@ namespace ReallifeGamemode.Server.Extensions internal static void SetData(this User user, string key, object value) { + if(user == null) + { + return; + } + key += "data_"; user.Player.SetData(key, JsonConvert.SerializeObject(value)); } From 27ef35750d688e5df309e2c83f8f92cbc4db394f Mon Sep 17 00:00:00 2001 From: hydrant Date: Sat, 3 Apr 2021 22:55:38 +0200 Subject: [PATCH 2/5] kein taxi rufen --- ReallifeGamemode.Server/Managers/InteractionManager.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index aeefe1a6..45cda73d 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -443,6 +443,12 @@ namespace ReallifeGamemode.Server.Managers { var taxiJob = JobManager.GetJob(); + if(taxiJob == null) + { + player.SendChatMessage("Aktuell kann kein Taxi gerufen werden."); + return; + } + if (taxiJob.TaxiContracts.Where(t => t.Name == player.Name).Count() != 0) { ChatService.ErrorMessage(player, "Du kannst nur einmal ein Taxi rufen"); From a360d5e06e6743114995c4d45673282880e6d0ff Mon Sep 17 00:00:00 2001 From: hydrant Date: Sat, 3 Apr 2021 22:55:53 +0200 Subject: [PATCH 3/5] onlineliste nach id sortieren --- ReallifeGamemode.Server/Events/Key.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 32ec4e1a..cc38b584 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -612,7 +612,7 @@ namespace ReallifeGamemode.Server.Events public void KeyPressO(Player player) { if (!player.IsLoggedIn()) return; - List players = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() == true).ToList(); + List players = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() == true).OrderBy(o => o.Handle.Value).ToList(); var listPlayers = players.Select(p => new { From 44aaea6021b37a7cce29ab1c7c878c4fa94c4aae Mon Sep 17 00:00:00 2001 From: hydrant Date: Sat, 3 Apr 2021 22:56:06 +0200 Subject: [PATCH 4/5] =?UTF-8?q?/lc=20und=20/ga=20f=C3=BCr=20admins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/FactionCommands.cs | 14 +++++++++----- ReallifeGamemode.Server/Services/ChatService.cs | 9 +++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 6a75bf9c..c0668be5 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -10,6 +10,7 @@ using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Types; using ReallifeGamemode.Services; /** @@ -43,20 +44,21 @@ namespace ReallifeGamemode.Server.Commands [Command("ga", "~m~Benutzung: ~s~/ga [Nachricht]", GreedyArg = true)] public void CmdFactionGA(Player player, string message) { - Faction f = player.GetUser()?.Faction; + User user = player.GetUser(); + Faction f = user?.Faction; if (f == null || f.StateOwned) { ChatService.NotAuthorized(player); return; } - if (player.GetUser().Faction.Name == "Ballas" || player.GetUser().Faction.Name == "Grove") + if (f.Name == "Ballas" || f.Name == "Grove" || user.IsAdmin(AdminLevel.ADMIN)) { message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); string broadcastMessage = "!{FF0000}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + " **"; using (var context = new DatabaseContext()) { - ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned)); + ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned), true); } } else @@ -177,7 +179,8 @@ namespace ReallifeGamemode.Server.Commands [Command("lc", "~m~Benutzung: ~s~/lc [Nachricht]", GreedyArg = true)] public void CmdFactionLc(Player player, string message) { - if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false) + User user = player.GetUser(); + if (user?.FactionId == null || user.FactionLeader == false || !user.IsAdmin(AdminLevel.ADMIN)) { ChatService.NotAuthorized(player); return; @@ -189,7 +192,8 @@ namespace ReallifeGamemode.Server.Commands NAPI.Pools.GetAllPlayers().ForEach(p => { - if (p.GetUser()?.FactionLeader ?? false) ChatService.SendMessage(p, broadcastMsg); + User pUser = p.GetUser(); + if (pUser?.FactionLeader ?? false || pUser.IsAdmin(AdminLevel.ADMIN)) ChatService.SendMessage(p, broadcastMsg); }); } diff --git a/ReallifeGamemode.Server/Services/ChatService.cs b/ReallifeGamemode.Server/Services/ChatService.cs index 196d123f..d63d16c2 100644 --- a/ReallifeGamemode.Server/Services/ChatService.cs +++ b/ReallifeGamemode.Server/Services/ChatService.cs @@ -52,11 +52,12 @@ namespace ReallifeGamemode.Server.Services /// /// Die Nachricht, die gesendet werden soll /// Die Liste an Fraktionen, die diese Nachricht bekommen sollen - public static void BroadcastFaction(string message, List factions) + public static void BroadcastFaction(string message, List factions, bool toAdmins = false) { foreach (Player c in NAPI.Pools.GetAllPlayers()) { - Faction f = c.GetUser()?.Faction; + User user = c.GetUser(); + Faction f = user.Faction; if (f != null) { if (factions.Find(fT => fT.Id == f.Id) != null) @@ -64,6 +65,10 @@ namespace ReallifeGamemode.Server.Services ChatService.SendMessage(c, message); } } + else if(user.IsAdmin(AdminLevel.ADMIN) && toAdmins) + { + ChatService.SendMessage(c, message); + } } } From b92b4e8b4874b627defc2707e497282e2bfaf1f4 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sat, 3 Apr 2021 22:58:23 +0200 Subject: [PATCH 5/5] fix onlineliste --- ReallifeGamemode.Server/Events/Key.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index cc38b584..474d6d44 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -619,7 +619,7 @@ namespace ReallifeGamemode.Server.Events Id = p.Handle.Value, p.Name, p.Ping, - FactionName = p.GetUser().Faction?.Name ?? "Zivilist", + FactionName = p.GetUser()?.Faction?.Name ?? "Zivilist", }); player.TriggerEvent("showPlayerlist", JsonConvert.SerializeObject(listPlayers)); }