using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Linq; using GTANetworkAPI; using Newtonsoft.Json; using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; using reallife_gamemode.Server.Events; using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Services; using reallife_gamemode.Server.Util; using reallife_gamemode.Server.Managers; /** * @overview Life of German Reallife - Admin Commands (Admin.cs) * @author VegaZ, hydrant, xSprite, 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, string 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; } hash = hash.ToUpper(); if (!uint.TryParse(hash, out uint vehHash)) { if (!Enum.TryParse(hash, true, out VehicleHash realHash)) { player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug existiert nicht."); return; } else { vehHash = (uint)realHash; } } Vehicle v = NAPI.Vehicle.CreateVehicle(vehHash, player.Position, player.Rotation.Z, color1, color2); player.SetIntoVehicle(v.Handle, -1); } [Command("fv")] public void CmdAdminFixveh(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (!player.IsInVehicle) { player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug."); return; } player.Vehicle.Repair(); } [Command("vdestroy")] 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("to", "~m~Benutzung: ~s~/to [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; } if (player.IsInVehicle && player.VehicleSeat == -1) player.Vehicle.Position = target.Position; else player.Position = target.Position; } [Command("position")] public void CmdAdminShowPos(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } player.SendChatMessage("Position: X Y Z: " + player.Position); } [Command("gotox", "~m~Benutzung: ~s~/gotox [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("gh", "~m~Benutzung: ~s~/gh [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; } if (target.IsInVehicle && target.VehicleSeat == -1) target.Vehicle.Position = player.Position; else target.Position = player.Position; target.SendChatMessage("Du wurdest von " + player.Name + " teleportiert."); } [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(player); 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); target.SendChatMessage("~b~Du hast von " + player.Name + " eine/n " + wHash + " mit einer Munition von " + ammo + " erhalten."); player.SendChatMessage("~b~Du hast " + target.Name + " eine/n " + wHash + " mit einer Munition von " + ammo + " gegeben."); } [Command("sethp", "~m~Benutzung: ~s~/sethp [Spieler] (Leben)")] public void CmdAdminSetHp(Client player, string name, int hp = 100) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } target.Health = hp; target.SendChatMessage("~b~Dein Leben wurde von " + player.Name + " auf " + hp + " gesetzt."); player.SendChatMessage("~b~Du hast das Leben von " + target.Name + " auf " + hp + " gesetzt."); } [Command("setarmor", "~m~Benutzung: ~s~/setarmor [Spieler] (Armor)")] public void CmdAdminSetArmor(Client player, string name, int armor = 100) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } target.Armor = armor; target.SendChatMessage("~b~Deine Rüstung wurde von " + player.Name + " auf " + armor + " gesetzt."); player.SendChatMessage("~b~Du hast die Rüstung von " + target.Name + " auf " + armor + " gesetzt."); } [Command("setskin", "~m~Benutzung: ~s~/setskin [Spieler] [Skin]")] public void CmdAdminSetSkin(Client player, string name, string Skin) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } var skin = NAPI.Util.PedNameToModel(Skin); target.SendChatMessage("~b~Dein Skin wurde von " + player.Name + " zu " + skin + " gesetzt."); player.SendChatMessage("~b~Du hast den Skin von " + target.Name + " zu " + skin + " gesetzt."); target.SetSkin(NAPI.Util.PedNameToModel(Skin)); } [Command("vcolor", "~m~Benutzung: ~s~/vcolor [Farb-ID1] [Farb-ID2]")] public void CmdAdminColor(Client player, int color1, int color2) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (!player.IsInVehicle) { player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan in keinem Fahrzeug!"); return; } player.Vehicle.PrimaryColor = color1; player.Vehicle.SecondaryColor = color2; player.SendChatMessage("Farb-ID1 " + color1 + ", Farb-ID2 " + color2 + ""); } [Command("aw", "~m~Benutzung: ~s~/aw [Spieler] [Nachricht]")] public void CmdAdminMsg(Client player, string name, string msg) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } if (target == player) { ChatService.ErrorMsg(player); return; } target.SendChatMessage("~y~PM von " + player.Name + ": " + msg + " "); player.SendChatMessage("~y~PM an " + target.Name + ": " + msg + " "); } [Command("takeweapon", "~m~Benutzung: ~s~/takeweapon [Spieler]")] public void CmdAdminTakeWeapon(Client player, string name) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } player.RemoveAllWeapons(); target.SendChatMessage("~b~Deine Waffen wurden dir von " + player.Name + "(Admin) abgenommen"); player.SendChatMessage("~b~Dem Spieler " + target.Name + " wurden erfolgreich alle Waffen abgenommen "); } [Command("rsethp", "~m~Benutzung: ~s~/rsethp [Radius] (Leben)")] public void CmdAdminRangeSetHP(Client player, float radius, int hp = 100) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player); foreach (var managedClient in peopleInRange) { managedClient.Health = hp; managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " die HP auf " + hp + " gesetzt."); } player.SendChatMessage("~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf " + hp + " gesetzt."); } [Command("rsetarmor", "~m~Benutzung: ~s~/rsetarmor [Radius] (Armor)")] public void CmdAdminRangeSetArmor(Client player, float radius, int Armor = 100) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player); foreach (var managedClient in peopleInRange) { managedClient.Armor = Armor; managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " die Rüstung auf " + Armor + " gesetzt."); } player.SendChatMessage("~b~Die Rüstung von " + peopleInRange.Count + " Spielern wurde auf " + Armor + " gesetzt."); } [Command("time", "~m~Benutzung: ~s~/time [Stunde] (Minuten) (Sekunden)")] public void CmdAdminSetTime(Client player, int hour, int min = 0, int sec = 0) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } string broadcastMsg = $"Serverzeit wurde auf {hour:D2}:{min:D2}:{sec:D2} gesetzt!"; NAPI.Chat.SendChatMessageToAll(broadcastMsg); NAPI.World.SetTime(hour, min, sec); return; } [Command("val")] public void Val(Client player) { // TODO: Remove on release NAPI.Chat.SendChatMessageToAll("Value of " + player.Name + ": " + player.Handle.Value); } [Command("rgiveweapon", "~m~Benutzung: ~s~/rgiveweapon [Radius] [Waffe] [Munition]")] public void CmdAdminRangeGiveWeapon(Client player, float radius, string weapon, int munition) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } WeaponHash wHash = NAPI.Util.WeaponNameToModel(weapon); if (wHash == default(WeaponHash)) { player.SendChatMessage("~r~[FEHLER]~s~ Diese Waffe existiert nicht."); return; } var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player); foreach (var managedClient in peopleInRange) { managedClient.GiveWeapon(wHash, munition); managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " eine/n " + weapon + " mit " + munition + " Munition vergeben."); } player.SendChatMessage("~b~Du hast " + peopleInRange.Count + " Spielern eine " + weapon + " mit " + munition + " Munition gegeben"); } [Command("factionlist", "~m~Benutzung: ~s~/factionlist")] public void CmdAdminFactionlist(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } using(var dbContext = new DatabaseContext()) { player.SendChatMessage("~m~__________ ~s~Fraktionen ~m~__________"); foreach(Entities.Faction f in dbContext.Factions) { player.SendChatMessage(f.Id.ToString().PadRight(3) + " | " + f.Name); } } } [Command("ainvite", "~m~Benutzung: ~s~/ainvite [Name] [Fraktion]")] public void CmdAdminAinvite(Client player, string name, int faction) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } using (var dbContext = new DatabaseContext()) { Entities.Faction f = dbContext.Factions.FirstOrDefault(x => x.Id == faction); if (f == null && faction != 0) { player.SendChatMessage("~r~[FEHLER]~s~ Diese Fraktion existiert nicht (Liste: ~m~/factionlist)."); return; } User u = target.GetUser(dbContext); if (faction != 0) { u.FactionId = f.Id; u.FactionRankId = dbContext.FactionRanks. OrderBy(x => x.Order) .FirstOrDefault(r => r.FactionId == f.Id)?.Id ?? null; player.SendChatMessage("~b~[ADMIN]~s~ Du hast hast den Spieler ~y~" + target.Name + "~s~ administrativ in die Fraktion ~o~" + f.Name + "~s~ eingeladen."); target.SendChatMessage("~b~[ADMIN]~s~ Du wurdest von ~y~" + player.Name + "~s~ administrativ in die Fraktion ~o~" + f.Name + "~s~ eingeladen."); } else { u.FactionId = null; u.FactionRankId = null; player.SendChatMessage("~b~[ADMIN]~s~ Du hast hast den Spieler ~y~" + target.Name + "~s~ administrativ aus seiner Fraktion geworfen."); target.SendChatMessage("~b~[ADMIN]~s~ Du wurdest von ~y~" + player.Name + "~s~ administrativ aus deiner Fraktion geworfen."); } u.FactionLeader = false; dbContext.SaveChanges(); } } [Command("makeleader", "~m~Benutzung: ~s~/makeleader [Name] [Fraktion]")] public void CmdAdminMakeleader(Client player, string name, int faction) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } using (var dbContext = new DatabaseContext()) { Entities.Faction f = dbContext.Factions.FirstOrDefault(x => x.Id == faction); if (f == null) { player.SendChatMessage("~r~[FEHLER]~s~ Diese Fraktion existiert nicht (Liste: ~m~/factionlist)."); return; } User u = target.GetUser(dbContext); u.FactionId = f.Id; u.FactionRankId = dbContext.FactionRanks. OrderByDescending(x => x.Order) .FirstOrDefault(r => r.FactionId == f.Id)?.Id ?? null; u.FactionLeader = true; player.SendChatMessage("~b~[ADMIN]~s~ Du hast hast den Spieler ~y~" + target.Name + "~s~ zum Leader der Fraktion Fraktion ~o~" + f.Name + "~s~ ernannt."); target.SendChatMessage("~b~[ADMIN]~s~ Du wurdest von ~y~" + player.Name + "~s~ zum Leader der Fraktion ~o~" + f.Name + "~s~ ernannt."); dbContext.SaveChanges(); } } [Command("ban", "~m~Benutzung: ~s~/ban [User] [Zeit in Minuten(0 für Permanent)] [Grund] ", GreedyArg = true)] public void CmdAdminBan(Client admin, string user, int mins, string reason) { if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(admin); return; } Client target = ClientService.GetClientByName(user); if(target == null) { ChatService.PlayerNotFound(admin); return; } target.GetUser().BanPlayer(admin, reason, mins); } [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle, FVehicle, SVehicle")] public void CmdAdminSave(Client player, string typ) { switch (typ) { case "Blip": player.TriggerEvent("saveBlip"); break; case "Vehicle": if (player.IsInVehicle) { Vehicle vehicle = player.Vehicle; <<<<<<< HEAD SaveManager.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension)); ======= SaveData.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, Convert.ToByte(vehicle.Dimension)); >>>>>>> feature/client-player-keys } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); break; case "FVehicle": if (player.IsInVehicle) { if(player.GetUser().FactionId == null) { player.SendChatMessage("~m~Du bist in keiner Fraktion! Invite dich erst mit ~y~/ainvite"); return; } else { Vehicle vehicle = player.Vehicle; SaveManager.SaveFactionVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId); vehicle.SetData("factionId", player.GetUser().FactionId); LoadManager.FactionVehicleList.Add(vehicle); } } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); break; case "SVehicle": if (player.IsInVehicle) { Vehicle vehicle = player.Vehicle; SaveManager.SaveShopVehicleData((VehicleHash)vehicle.Model, vehicle.DisplayName, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId); LoadManager.ShopVehicleList.Add(vehicle); } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); break; } } [Command("unban", "~m~Benutzung: ~s~/unban [Name] ", GreedyArg = true)] public void CmdAdminUnban(Client admin, string userName) { if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(admin); return; } User user; using (var dbContext = new DatabaseContext()) { user = dbContext.Users.FirstOrDefault(u => u.Name == userName); if(user == null) { admin.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler existiert nicht."); return; } if(user.BanId == null) { admin.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler ist nicht gebannt."); return; } Ban ban = dbContext.Bans.FirstOrDefault(b => b.Id == user.BanId); if(ban == null) { admin.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler ist nicht gebannt."); return; } if(ban.Applied == ban.UntilDateTime) { user.UnbanPlayer(admin); } else { int currentTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; if(ban.UntilDateTime < currentTimestamp) { admin.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler ist nicht gebannt."); return; } } user.UnbanPlayer(admin); } string message = "~y~INFO: ~s~Der Spieler ~y~" + user.Name + " ~s~wurde von ~y~" + admin.Name + " ~s~entbannt."; ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); } [Command("managefactionranks", "~m~Benutzung: ~s~/managefactionranks [Fraktions-ID]")] public void CmdFactionManageFactionRanks(Client player, int factionID) { if(!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } using (var context = new DatabaseContext()) { Entities.Faction f = context.Factions.FirstOrDefault(id => id.Id == factionID); if (f == null) { player.SendChatMessage("~r~[FEHLER]~s~ Diese Fraktion existiert nicht (Liste: ~m~/factionlist)."); return; } List factionRanks = context.FactionRanks.ToList().FindAll(r => r.FactionId == f.Id).OrderByDescending(o => o.Order).ToList(); List rankList = new List(); factionRanks.ForEach(r => { rankList.Add(new Rank { Id = r.Id, Name = r.RankName }); }); FactionRankHelper helper = new FactionRankHelper { FactionId = f.Id, Ranks = rankList }; string json = JsonConvert.SerializeObject(helper, Formatting.None); Console.WriteLine(json); player.TriggerEvent("manageFactionRanks", json); } } //TEST COMMAND [Command("own")] public void CmdAdminOwn(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (player.IsInVehicle) { Vehicle playerVehicle = player.Vehicle; LoadManager.UserVehicleList.Add(playerVehicle); using (var saveVehicle = new DatabaseContext()) { var dataSet = new UserVehicle { UserId = player.GetUser().Id, Model = (VehicleHash) playerVehicle.Model, PositionX = playerVehicle.Position.X, PositionY = playerVehicle.Position.Y, PositionZ = playerVehicle.Position.Z, Heading = playerVehicle.Heading, NumberPlate = playerVehicle.NumberPlate, PrimaryColor = Convert.ToByte(playerVehicle.PrimaryColor), SecondaryColor = Convert.ToByte(playerVehicle.SecondaryColor), Locked = playerVehicle.Locked, Engine = playerVehicle.EngineStatus, Dimension = Convert.ToByte(playerVehicle.Dimension), }; playerVehicle.SetData("ownerId",player.GetUser().Id); saveVehicle.UserVehicles.Add(dataSet); saveVehicle.SaveChanges(); } } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); } [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) ?? false) { 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) ?? false) { 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; } bool found = false; foreach(string w in Enum.GetNames(typeof(Weather))) { if (w.ToLower() == weather) { found = true; break; } } if(!found) { player.SendChatMessage("~r~[FEHLER]~s~ Dieses Wetter existiert nicht."); return; } Weather weatherBefore = NAPI.World.GetWeather(); NAPI.World.SetWeather(weather); Weather weatherAfter = NAPI.World.GetWeather(); if (!weatherBefore.Equals(weatherAfter)) { NAPI.Chat.SendChatMessageToPlayer(player, "~w~Wetter geändert: " + NAPI.World.GetWeather()); NAPI.Chat.SendChatMessageToAll("Das Wetter wurde auf " + weatherAfter + " gesetzt!"); } else { NAPI.Chat.SendChatMessageToPlayer(player, "~w~Das Wetter konnte nicht geändert werden"); } } [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(player); 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(player); 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(player); 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(""); } } [Command("up", "~m~Benutzung: ~s~/up [Wert]")] public void CmdAdminUp(Client player, int value = 5) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (player.IsInVehicle) { player.Vehicle.Position = new Vector3(player.Vehicle.Position.X, player.Vehicle.Position.Y, player.Vehicle.Position.Z + value); } else { player.Position = new Vector3(player.Position.X, player.Position.Y, player.Position.Z + value); } } [Command("dn", "~m~Benutzung: ~s~/dn [Wert]")] public void CmdAdminDn(Client player, int value = 5) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (player.IsInVehicle) { player.Vehicle.Position = new Vector3(player.Vehicle.Position.X, player.Vehicle.Position.Y, player.Vehicle.Position.Z - value); } else { player.Position = new Vector3(player.Position.X, player.Position.Y, player.Position.Z - value); } } [Command("rt", "~m~Benutzung: ~s~/rt [Wert]")] public void CmdAdminRt(Client player, int value = 5) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } float playerHeading = player.Heading; if (playerHeading < 45 || playerHeading >= 315) { Vector3 playerPosition = new Vector3(player.Position.X + value, player.Position.Y, player.Position.Z); player.Position = playerPosition; } else if (playerHeading < 315 && playerHeading >= 225) { Vector3 playerPosition = new Vector3(player.Position.X, player.Position.Y - value, player.Position.Z); player.Position = playerPosition; } else if (playerHeading >= 135 && playerHeading < 225) { Vector3 playerPosition = new Vector3(player.Position.X - value, player.Position.Y, player.Position.Z); player.Position = playerPosition; } else if (playerHeading >= 45 && playerHeading < 135) { Vector3 playerPosition = new Vector3(player.Position.X, player.Position.Y + value, player.Position.Z); player.Position = playerPosition; } } [Command("lt", "~m~Benutzung: ~s~/lt [Wert]")] public void CmdAdminLt(Client player, int value = 5) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } float playerHeading = player.Heading; if (playerHeading < 45 || playerHeading >= 315) { Vector3 playerPosition = new Vector3(player.Position.X - value, player.Position.Y, player.Position.Z); player.Position = playerPosition; } else if (playerHeading < 315 && playerHeading >= 225) { Vector3 playerPosition = new Vector3(player.Position.X, player.Position.Y + value, player.Position.Z); player.Position = playerPosition; } else if (playerHeading >= 135 && playerHeading < 225) { Vector3 playerPosition = new Vector3(player.Position.X + value, player.Position.Y, player.Position.Z); player.Position = playerPosition; } else if (playerHeading >= 45 && playerHeading < 135) { Vector3 playerPosition = new Vector3(player.Position.X, player.Position.Y - value, player.Position.Z); player.Position = playerPosition; } } [Command("spec", "~m~Benutzung: ~s~/spec [Player]")] public void CmdAdminSpectate(Client player, string name) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } Client target = ClientService.GetClientByName(name); if (target == null) { ChatService.PlayerNotFound(player); return; } if (target == player) { ChatService.ErrorMsg(player); return; } bool spec = player.GetData("spec"); if (spec == false) { NAPI.Player.SetPlayerToSpectatePlayer(player, target); player.SetData("spec", true); } else { NAPI.Player.UnspectatePlayer(player); player.SetData("spec", false); } } [Command("ip", "~m~Benutzung: ~s~/ip [Spieler]")] public void CmdAdminIp(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(player); return; } player.SendChatMessage("IP von " + NAPI.Player.GetPlayerName(target) + ": " + target.Address); } //TODO TEST COMMAND [Command("myvehicles")] public void CmdAdminMyVehicles(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } player.SendChatMessage("Deine Fahrzeuge: "); int userID = player.GetUser().Id; using (var loadData = new DatabaseContext()) { foreach (UserVehicle v in loadData.UserVehicles) { if (v.UserId == userID) { player.SendChatMessage("~b~" + v.Model); } } } } //TODO [Command("fpay")] public void FPay(Client player, string receiver, float amount) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } using (var getFaction = new DatabaseContext()) { Entities.Faction receiverUser = getFaction.Factions.FirstOrDefault(u => u.Name == receiver); BankManager.TransferUserMoneyToFaction(player.GetUser(), receiverUser, amount, "/FPAY"); } } //TODO Ausführen bei Tastendruck wenn in Fahrzeug. [Command("buyv")] public void BuyShopVehicle(Client player) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } if (player.IsInVehicle) { if (player.Vehicle.HasData("shopVehicleId")) { int shopVehicleId = player.Vehicle.GetData("shopVehicleId"); using (var getShopVehicle = new DatabaseContext()) { ShopVehicle sVehicle = getShopVehicle.ShopVehicles.FirstOrDefault(u => u.Id == shopVehicleId); Entities.Faction receiverUser = getShopVehicle.Factions.FirstOrDefault(u => u.Name == "LSPD"); BankManager.TransferUserMoneyToFaction(player.GetUser(), receiverUser, sVehicle.Price, "Fahrzeug gekauft: " + sVehicle.ModelName); //TODO Anpassen Vehicle boughtVehicle = NAPI.Vehicle.CreateVehicle(sVehicle.Model, new Vector3(sVehicle.PositionX, sVehicle.PositionY + 10, sVehicle.PositionZ + 0.5), sVehicle.Heading, sVehicle.PrimaryColor, sVehicle.SecondaryColor, "LoG", sVehicle.Alpha, false, true, 0); player.SetIntoVehicle(boughtVehicle, 0); //TODO fügt das Fahrzeug als Userfahrzeug hinzu CmdAdminOwn(player); } } } } [Command("saveall")] public void SaveAll(Client player) { SaveManager.SaveAllOnSave(); } /* [Command("restart")] public void CmdAdminRestart(Client player) { if (ClientExtension.IsLoggedIn(player) == false) { ChatService.PlayerNotLoggedIn(player); return; } if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } var users = NAPI.Pools.GetAllPlayers(); foreach(Client user in users) { user.SendChatMessage("~r~Server startet neu.~s~ Bitte verbinde dich über ~y~F1~s~ neu."); user.Kick(); } NAPI.Resource.StopResource("reallife-gamemode"); }*/ } }