From 74e3232c7d69f4460ad3403f24c18f087ce23d70 Mon Sep 17 00:00:00 2001 From: hydrant Date: Thu, 16 May 2019 15:46:29 +0200 Subject: [PATCH] add /save jvehicle [job id] --- .../Commands/AdminCommands.cs | 29 ++++++++++++++-- .../Entities/ServerVehicle.cs | 5 +++ .../Managers/SaveManager.cs | 34 +++++++++++++++++-- 3 files changed, 63 insertions(+), 5 deletions(-) diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index 67012bcb..6f11d844 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1570,7 +1570,7 @@ namespace ReallifeGamemode.Server.Commands } } - [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip~s~, ~g~Goto (X)~s~, ~r~Marker~s~, ~r~Ped~s~, ~r~Pickup~s~, ~r~TextLabel~s~, ~g~Vehicle~s~, ~g~FVehicle~s~, ~g~SVehicle (X)~s~] (Beschreibung) = (X)")] + [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip~s~, ~g~Goto (X)~s~, ~r~Marker~s~, ~r~Ped~s~, ~r~Pickup~s~, ~r~TextLabel~s~, ~g~Vehicle~s~, ~g~FVehicle~s~, ~g~SVehicle (X)~s~, ~g~JVehicle (X)~s~] (Weitere Angaben) = (X)")] public void CmdAdminSave(Client player, string typ, string option1 = null, string option2 = null) { if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) @@ -1633,13 +1633,38 @@ namespace ReallifeGamemode.Server.Commands Vehicle vehicle = player.Vehicle; int playerSeat = player.VehicleSeat; vehicle = SaveManager.SaveFactionVehicleData(vehicle, (VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, - vehicle.PrimaryColor, vehicle.SecondaryColor, vehicle.Locked, vehicle.EngineStatus, player.GetUser().FactionId); + vehicle.PrimaryColor, vehicle.SecondaryColor, vehicle.Locked, vehicle.EngineStatus, player.GetUser().FactionId.Value); player.SendNotification("Fraktionsfahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true); player.SetIntoVehicle(vehicle, playerSeat); } } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); break; + case "jvehicle": + if (player.IsInVehicle) + { + if (option1 == null) + { + ChatService.Error(player, "Du musst eine JobID als Parameter angeben"); + return; + } + else + { + if(!int.TryParse(option1, out int jobId)) + { + ChatService.Error(player, "Du musst eine gültige Zahl als JobID angeben"); + return; + } + + Vehicle vehicle = player.Vehicle; + vehicle = SaveManager.SaveJobVehicleData(vehicle, (VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, + vehicle.PrimaryColor, vehicle.SecondaryColor, vehicle.Locked, vehicle.EngineStatus, jobId); + player.SendNotification("Jobfahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true); + player.SetIntoVehicle(vehicle, -1); + } + } + else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); + break; case "svehicle": if (player.IsInVehicle) { diff --git a/ReallifeGamemode.Server/Entities/ServerVehicle.cs b/ReallifeGamemode.Server/Entities/ServerVehicle.cs index 2891f0eb..c17fdef3 100644 --- a/ReallifeGamemode.Server/Entities/ServerVehicle.cs +++ b/ReallifeGamemode.Server/Entities/ServerVehicle.cs @@ -73,6 +73,11 @@ namespace ReallifeGamemode.Server.Entities numberplate = $"G{gV.GroupId} " + numberplate; } + if(this is JobVehicle jV) + { + numberplate = $"J{jV.JobId} " + numberplate; + } + veh.NumberPlate = numberplate; return veh; diff --git a/ReallifeGamemode.Server/Managers/SaveManager.cs b/ReallifeGamemode.Server/Managers/SaveManager.cs index adb95aec..ba13364d 100644 --- a/ReallifeGamemode.Server/Managers/SaveManager.cs +++ b/ReallifeGamemode.Server/Managers/SaveManager.cs @@ -77,8 +77,35 @@ namespace ReallifeGamemode.Server.Managers return dataSet.Spawn(veh); } } + + public static Vehicle SaveJobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int jobId) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new JobVehicle + { + Model = vehicleModel, + JobId = jobId, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.JobVehicles.Add(dataSet); + saveData.SaveChanges(); + + return dataSet.Spawn(veh); + } + } + public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int? factionId) + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int factionId) { using (var saveData = new DatabaseContext()) { @@ -102,6 +129,7 @@ namespace ReallifeGamemode.Server.Managers return dataSet.Spawn(veh); } } + public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price) { @@ -132,7 +160,7 @@ namespace ReallifeGamemode.Server.Managers { using (var saveData = new DatabaseContext()) { - var dataSet = new Entities.GotoPoint + var dataSet = new GotoPoint { Description = description, X = player.Position.X, @@ -144,9 +172,9 @@ namespace ReallifeGamemode.Server.Managers saveData.SaveChanges(); } } + public static void SaveAllOnSave() { - // Alle Fahrzeuge using (var saveAll = new DatabaseContext()) { //Alle Spieler