diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 7dd4e5b7..5c3d8aff 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -237,7 +237,20 @@ namespace ReallifeGamemode.Server.Commands [Command("giverank", "~m~Benutzung: ~s~/giverank [Name] [Rang]", GreedyArg = true)] public void CmdFactionGiverank(Player player, string name, string rank) { - if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false) + if (!player.IsLoggedIn()) + { + return; + } + + using var dbContext = new DatabaseContext(); + User user = player.GetUser(dbContext); + + if (user == null) + { + return; + } + + if (user.FactionId == null || !user.FactionLeader) { ChatService.NotAuthorized(player); return; @@ -250,28 +263,32 @@ namespace ReallifeGamemode.Server.Commands return; } - if (target.GetUser()?.FactionId != player.GetUser()?.FactionId) + User targetUser = target.GetUser(dbContext); + if (targetUser == null) + { + ChatService.PlayerNotFound(player); + return; + } + + if (targetUser.FactionId != user.FactionId) { ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); return; } - using (var dbContext = new DatabaseContext()) + FactionRank fr = dbContext.FactionRanks.FirstOrDefault(r => r.Order == int.Parse(rank) && r.FactionId == user.FactionId); + if (fr == null) { - FactionRank fr = dbContext.FactionRanks.FirstOrDefault(r => r.Order == int.Parse(rank) && r.FactionId == player.GetUser(dbContext).FactionId); - if (fr == null) - { - ChatService.ErrorMessage(player, "Dieser Rang existiert nicht"); - return; - } - - target.GetUser(dbContext).FactionRankId = fr.Id; - - ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " den Rang '" + fr.RankName + "' (" + fr.Order + ") gegeben."); - ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " den Rang '" + fr.RankName + "' (" + fr.Order + ")' erhalten."); - - dbContext.SaveChanges(); + ChatService.ErrorMessage(player, "Dieser Rang existiert nicht"); + return; } + + targetUser.FactionRankId = fr.Id; + + ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " den Rang '" + fr.RankName + "' (" + fr.Order + ") gegeben."); + ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " den Rang '" + fr.RankName + "' (" + fr.Order + ")' erhalten."); + + dbContext.SaveChanges(); } [Command("lc", "~m~Benutzung: ~s~/lc [Nachricht]", GreedyArg = true)]