From d94188740bdda7fa629e47656546dc07d45fe1ac Mon Sep 17 00:00:00 2001 From: Luke Date: Sun, 9 Aug 2020 22:22:20 +0200 Subject: [PATCH] =?UTF-8?q?/rrveh=20hinzugef=C3=BCgert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/AdminCommands.cs | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index ff93ea99..a007099a 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; @@ -1230,6 +1230,49 @@ namespace ReallifeGamemode.Server.Commands newVeh.Rotation = new Vector3(0, 0, serverVehicle.Heading); } + [Command("rrespawnvehicle", "~m~Benutzung: ~s~/rrespawnvehicle [Radius]", Alias = "rrveh")] + public void CmdAdminRangeRespawnVehicle(Player player, float radius) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + if (radius > 500) + { + ChatService.ErrorMessage(player, $"Der angegebene Radius ist zu hoch (Maximum: 500)"); + return; + } + + List vehiclesInRange = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= radius).ToList(); + if (vehiclesInRange.Count == 0) + { + ChatService.ErrorMessage(player, $"Es befinden sich keine Fahrzeuge in deiner Nähe (Radius: {radius} SE)"); + return; + } + + int respawnedVehicleCount = 0; + foreach (Vehicle v in vehiclesInRange) + { + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(v); + if(serverVehicle == null) + { + VehicleManager.DeleteVehicle(v); + v.Trailer?.Delete(); + continue; + } + + Vehicle newVeh = serverVehicle.Spawn(v); + newVeh.Repair(); + newVeh.Rotation = new Vector3(0, 0, serverVehicle.Heading); + + respawnedVehicleCount++; + } + + ChatService.BroadcastAdmin($"~g~Fahrzeug(e) respawnt: ~s~{player.Name} hat {respawnedVehicleCount} Fahrzeuge respawnt (Radius: {radius} SE).", AdminLevel.ADMIN); + } + #endregion ALevel1 #region ALevel2