diff --git a/ReallifeGamemode.Database/Entities/User.cs b/ReallifeGamemode.Database/Entities/User.cs index e62797a8..b64fa754 100644 --- a/ReallifeGamemode.Database/Entities/User.cs +++ b/ReallifeGamemode.Database/Entities/User.cs @@ -126,6 +126,8 @@ namespace ReallifeGamemode.Database.Entities public int otheramount { get; set; } = 0; public int failpoints { get; set; } = 0; + public int warn { get; set; } = 0; + [NotMapped] public Player Player { diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index b22dc6a9..042bbc5a 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -728,6 +728,42 @@ namespace ReallifeGamemode.Server.Commands ChatService.Broadcast("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason); } + [Command("warn", "~m~Benutzung: ~s~/warn [Player] [Grund]", GreedyArg = true)] + public void CmdAdminWarn(Player player, string targetname, string reason) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + Player target = PlayerService.GetPlayerByNameOrId(targetname); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + string targetPlayername = NAPI.Player.GetPlayerName(target); + string adminPlayername = NAPI.Player.GetPlayerName(player); + + using (var dbContext = new DatabaseContext()) + { + User userwarn = player.GetUser(dbContext); + + userwarn.warn ++; + dbContext.SaveChanges(); + if (userwarn.warn >= 3) + { + ChatService.Broadcast("~y~INFO: Das war der 3. Warn - bitte bannen!"); + } + } + + ChatService.SendMessage(target, "~r~WARNINFO: ~w~Du wurdest von " + adminPlayername + " verwarnt: " + reason); + + ChatService.Broadcast("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " verwarnt: " + reason); + } + [Command("ip", "~m~Benutzung: ~s~/ip [Spieler]")] public void CmdAdminIp(Player player, string targetname) { @@ -1604,6 +1640,41 @@ namespace ReallifeGamemode.Server.Commands #region ALevel1337 + [Command("removewarn", "~m~Benutzung: ~s~/removewarn [Player] [Grund]", GreedyArg = true)] + public void CmdAdminRemovewarn(Player player, string targetname, string reason) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + Player target = PlayerService.GetPlayerByNameOrId(targetname); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + string targetPlayername = NAPI.Player.GetPlayerName(target); + string adminPlayername = NAPI.Player.GetPlayerName(player); + + using (var dbContext = new DatabaseContext()) + { + User userwarn = player.GetUser(dbContext); + if (userwarn.warn == 0) + { + player.SendChatMessage("~r~WARNINFO: ~w~Der User hat bereits 0 Warns"); + return; + } + userwarn.warn--; + dbContext.SaveChanges(); + } + ChatService.SendMessage(target, "~r~WARNINFO: ~w~Dir wurde von " + adminPlayername + " ein Warn entfernt: " + reason); + + ChatService.Broadcast("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " ein Warn entfernt: " + reason); + } + [Command("setskill", "~m~Benutzung: ~s~/setskill [Playerid] [Bus/Pilot] [Menge]")] public void CmdAdminSetSkill(Player player, string name, string Skill, int SkillLevel) {