using System; using System.Collections.Generic; using System.Text; using GTANetworkAPI; using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Services; using reallife_gamemode.Server.Util; /** * @overview Life of German Reallife - Admin Commands (Admin.cs) * @author VegaZ, hydrant, balbo * @copyright (c) 2008 - 2018 Life of German */ namespace reallife_gamemode.Server.Commands { public class Admin : Script { [Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)] public void CmdAdminO(Client player, string message) { if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); return; } string publicMessage = "~b~(( " + player.Name + ": " + message + " ))"; NAPI.Chat.SendChatMessageToAll(publicMessage); } [Command("veh", "~m~Benutzung: ~s~/veh [Fahrzeug] (Farbe 1) (Farbe 2)")] public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) { player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan schon in einem Fahrzeug."); return; } Vehicle v = NAPI.Vehicle.CreateVehicle(hash, player.Position, player.Rotation.Z, color1, color2); player.SetIntoVehicle(v.Handle, -1); } [Command("fixveh")] public void CmdAdminFixveh(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) { player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug."); return; } player.Vehicle.Repair(); } [Command("delveh")] public void CmdAdminDelveh(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) { player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug."); return; } /* TODO: Checken, ob das Fahrzeug in einem System genutzt wird (Fraktions-Autos / Spieler-Auto) * Wenn Ja: Abbrechen und mitteilen, dass man den System-spezifischen Befehl zu nutzen hat */ player.Vehicle.Delete(); } [Command("goto", "~m~Benutzung: ~s~/goto [Name]")] public void CmdAdminGoto(Client player, string name) { if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } player.Position = target.Position; } [Command("gotoxyz", "~m~Benutzung: ~s~/gotoxyz [X] [Y] [Z]")] public void CmdAdminGotoxyz(Client player, float x, float y, float z) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } player.Position = new Vector3(x, y, z); } [Command("gethere", "~m~Benutzung: ~s~/goto [Name]")] public void CmdAdminGethere(Client player, string name) { if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } target.Position = player.Position; } [Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")] public void CmdAdminIpl(Client player, string option, string name) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } option = option.ToLower(); if (option == "load") { NAPI.World.RequestIpl(name); player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich geladen"); } else if (option == "remove") { NAPI.World.RemoveIpl(name); player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich entladen"); } else { player.SendChatMessage("~m~Benutzung: ~s~/ipl [Load / Remove] [Name]"); } } [Command("giveweapon", "~m~Benutzung: ~s~/giveweapon [Spieler] [Waffe] [Munition]")] public void CmdAdminGiveweapon(Client player, string name, string weapon, int ammo) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (ammo <= 0) { player.SendChatMessage("~r~[FEHLER]~s~ Es muss mindestens 1 Munition vergeben werden."); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(target); return; } WeaponHash wHash = NAPI.Util.WeaponNameToModel(weapon); if (wHash == default(WeaponHash)) { player.SendChatMessage("~r~[FEHLER]~s~ Diese Waffe existiert nicht."); return; } target.GiveWeapon(wHash, ammo); } [Command("a", "~m~Benutzung: ~s~/a [Nachricht]")] public void CmdAdminA(Client player, string message) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } List playerlist = NAPI.Pools.GetAllPlayers(); foreach (Client currentPlayer in playerlist) { if (currentPlayer.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { NAPI.Chat.SendChatMessageToPlayer(currentPlayer, "~r~Admin " + NAPI.Player.GetPlayerName(player) + "~w~: " + message); } } } [Command("team", "~m~Benutzung: ~s~/team")] public void CmdAdminTeam(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); return; } NAPI.Chat.SendChatMessageToPlayer(player, "Online Teammitglieder:"); List playerlist = NAPI.Pools.GetAllPlayers(); foreach (Client currentPlayer in playerlist) { if (currentPlayer.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { NAPI.Chat.SendChatMessageToPlayer(player, "~w~" + NAPI.Player.GetPlayerName(currentPlayer)); } } } [Command("setweather", "~m~Benutzung: ~s~/setweather [WEATHER]")] public void CmdAdminSetweather(Client player, string weather) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Weather weatherBefore = NAPI.World.GetWeather(); NAPI.World.SetWeather(weather); Weather weatherAfter = NAPI.World.GetWeather(); if (!weatherBefore.Equals(weatherAfter)) { NAPI.Chat.SendChatMessageToPlayer(player, "~w~Weather changed to " + NAPI.World.GetWeather())); } else { NAPI.Chat.SendChatMessageToPlayer(player, "~w~Unable to change weather"); } } [Command("freeze", "~m~Benutzung: ~s~/freeze [Player]")] public void CmdAdminFreeze(Client player, string targetname) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(targetname); if (target == null) { ChatService.PlayerNotFound(target); return; } target.Freeze(true); } [Command("unfreeze", "~m~Benutzung: ~s~/freeze [Player]")] public void CmdAdminUnfreeze(Client player, string targetname) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(targetname); if (target == null) { ChatService.PlayerNotFound(target); return; } target.Freeze(false); } [Command("kick", "~m~Benutzung: ~s~/kick [Player] [Grund]")] public void CmdAdminKick(Client player, string targetname, string reason) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(targetname); if (target == null) { ChatService.PlayerNotFound(target); return; } string targetPlayername = NAPI.Player.GetPlayerName(target); string adminPlayername = NAPI.Player.GetPlayerName(player); NAPI.Chat.SendChatMessageToPlayer(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason); target.Kick(); NAPI.Chat.SendChatMessageToAll("~y~INFO: ~w~" + targetPlayername + " wurde von " + adminPlayername + " gekickt: " + reason); } [Command("clearchat", "~m~Benutzung: ~s~/clearchat")] public void CmdAdminClearchat(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } for (int i=0; i<20; i++) { NAPI.Chat.SendChatMessageToAll(""); } } } }