From 50f1a90f58e636082458fbadcbbef519c81a06fa Mon Sep 17 00:00:00 2001 From: Lukas Moungos Date: Fri, 1 Nov 2019 20:43:46 +0100 Subject: [PATCH] Improvements based on suggestions --- ReallifeGamemode.Client/util/checkpoint.ts | 12 ++++++-- .../DrivingSchool/DrivingSchool.cs | 29 ++++++++++++------- .../DrivingSchool/PlaneSchool.cs | 18 +++++++----- ReallifeGamemode.Server/Events/ExitVehicle.cs | 7 ++--- .../Util/CheckPointHandle.cs | 14 +++++++++ 5 files changed, 55 insertions(+), 25 deletions(-) diff --git a/ReallifeGamemode.Client/util/checkpoint.ts b/ReallifeGamemode.Client/util/checkpoint.ts index 011c99bc..6e44d3af 100644 --- a/ReallifeGamemode.Client/util/checkpoint.ts +++ b/ReallifeGamemode.Client/util/checkpoint.ts @@ -47,9 +47,13 @@ export default function checkpointHandle(globalData: GlobalData) { }); mp.events.add('destroyCP', () => { - activeCheckpoint.destroy(); - activeBlip.destroy(); - clearInterval(myVar); + if (activeCheckpoint != null) { + activeCheckpoint.destroy(); + activeBlip.destroy(); + clearInterval(myVar); + activeBlip = null; + activeCheckpoint = null; + } }); function myTimer() { @@ -70,6 +74,8 @@ export default function checkpointHandle(globalData: GlobalData) { if (delayCounter >= delay) { activeCheckpoint.destroy(); activeBlip.destroy(); + activeBlip = null; + activeCheckpoint = null; clearInterval(myVar); mp.events.callRemote("playerInCheckpoint"); if (event != "") { diff --git a/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs b/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs index 7a2bf2f6..b05c90d7 100644 --- a/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs +++ b/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs @@ -47,7 +47,8 @@ namespace ReallifeGamemode.Server.DrivingSchool new Vector3(44.69115, -1805.247, 24.07369), new Vector3(111.6519, -1822.466, 25.03703), //AUTOBAHN-ENDE - new Vector3(-270.89, -1461.01, 29.81), + new Vector3(-46.37, -1808.27, 26.25), + new Vector3(-255.55, -1419.48, 30.75), new Vector3(-369.08, -1415.37, 27.68), new Vector3(-114.48, -1251.43, 35.59), new Vector3(59.22, -1261.71, 27.84), @@ -56,10 +57,11 @@ namespace ReallifeGamemode.Server.DrivingSchool new Vector3(-441.79, -1251.67, 44.37), new Vector3(-463.77, -1405.07, 27.71), new Vector3(-617.66, -1259.34, 9.82), + new Vector3(-758.35, -1285.03, 3.48), }.AsReadOnly(); private readonly IReadOnlyCollection Stop = new List { - new Vector3(-758.35, -1285.03, 3.48), + new Vector3(-788.66, -1278.75, 5), }.AsReadOnly(); @@ -90,21 +92,23 @@ namespace ReallifeGamemode.Server.DrivingSchool public void StartDrivingSchool(Client client) { User user = client.GetUser(); + if (user.DriverLicenseVehicle || client.HasData("ActiveSchool")) + return; - if(user.Handmoney < 2500) + if (user.Handmoney < 2500) { client.SendNotification("~r~Du brauchst ~g~$2500~r~ auf der Hand um die Prüfung zu starten.", true); return; } + using (var dbContext = new DatabaseContext()) { User payer = client.GetUser(dbContext); payer.Handmoney -= 2500; + client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney); dbContext.SaveChanges(); } - if (user.DriverLicenseVehicle || client.HasData("ActiveSchool")) - return; client.SetData("ActiveSchool", 0); client.TriggerEvent("renderTextOnScreen", "Sie haben die Führerscheinprüfung gestartet. Steigen Sie in eines der Fahrschulautos ein."); client.TriggerEvent("waitPlayerEntersVehicle"); @@ -117,10 +121,12 @@ namespace ReallifeGamemode.Server.DrivingSchool if (veh.GetServerVehicle() is SchoolVehicle schoolVehicle) { - user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen."); - user.TriggerEvent("stopTimer"); - - CheckPointHandle.StartCheckPointRoute(user, DrivingRoute, 0, 1, 7, "drivingSchoolEvent"); + if (schoolVehicle.SchoolId == 0) + { + user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen."); + user.TriggerEvent("stopTimer"); + CheckPointHandle.StartCheckPointRoute(user, DrivingRoute, 0, 1, 7, "drivingSchoolEvent"); + } } } @@ -144,6 +150,8 @@ namespace ReallifeGamemode.Server.DrivingSchool NAPI.Entity.SetEntityVelocity(veh.Handle, new Vector3(0, 0, 0)); veh.Position = sVeh.Position; veh.Rotation = new Vector3(0, 0, sVeh.Heading); + + user.Position = new Vector3(-813.17, -1354.5, 4.14); } @@ -164,8 +172,9 @@ namespace ReallifeGamemode.Server.DrivingSchool { user.TriggerEvent("renderTextOnScreen", "Verlasse nun den Parkplatz."); } - else if (checkpoint == 31) + else if (checkpoint == 32) { + user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle."); CheckPointHandle.StartCheckPointRoute(user, Stop, 5000, 1, 7, "drivingSchoolEventEnd"); } } diff --git a/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs b/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs index 4f373489..a1b903ba 100644 --- a/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs +++ b/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs @@ -72,6 +72,9 @@ namespace ReallifeGamemode.Server.DrivingSchool public void StartplaneSchool(Client client) { User user = client.GetUser(); + + if (user.FlyingLicensePlane || client.HasData("ActiveSchool")) + return; if (user.Handmoney < 5000) { @@ -81,13 +84,11 @@ namespace ReallifeGamemode.Server.DrivingSchool using (var dbContext = new DatabaseContext()) { User payer = client.GetUser(dbContext); - payer.Handmoney -= 2500; + payer.Handmoney -= 5000; + client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney); dbContext.SaveChanges(); } - - if (user.FlyingLicensePlane || client.HasData("ActiveSchool")) - return; client.SetData("ActiveSchool", 1); client.TriggerEvent("renderTextOnScreen", "Du hast die Flugscheinprüfung gestartet. Steige nun in eines der Flugzeuge ein."); client.TriggerEvent("waitPlayerEntersVehicle1"); @@ -100,9 +101,12 @@ namespace ReallifeGamemode.Server.DrivingSchool if (veh.GetServerVehicle() is SchoolVehicle schoolVehicle) { - user.TriggerEvent("renderTextOnScreen", "Fahren Sie langsam und sicher zur Roten Markierung."); - user.TriggerEvent("stopTimer"); - CheckPointHandle.StartCheckPointRoute(user, planeRoute, 0, 6, 12, "planeSchoolEvent"); + if(schoolVehicle.SchoolId == 1) + { + user.TriggerEvent("renderTextOnScreen", "Fahren Sie langsam und sicher zur Roten Markierung."); + user.TriggerEvent("stopTimer"); + CheckPointHandle.StartCheckPointRoute(user, planeRoute, 0, 6, 12, "planeSchoolEvent"); + } } } diff --git a/ReallifeGamemode.Server/Events/ExitVehicle.cs b/ReallifeGamemode.Server/Events/ExitVehicle.cs index 53827ee7..8eb617be 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -33,11 +33,8 @@ namespace ReallifeGamemode.Server.Events client.WarpOutOfVehicle(); ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(vehicle); - VehicleStreaming.SetEngineState(vehicle, false); - VehicleStreaming.SetLockStatus(vehicle, false); - NAPI.Entity.SetEntityVelocity(vehicle.Handle, new Vector3(0, 0, 0)); - vehicle.Position = sVeh.Position; - vehicle.Rotation = new Vector3(0, 0, sVeh.Heading); + ServerVehicleExtensions.Spawn(sVeh, vehicle); + client.Position = sVeh.Position; } } } diff --git a/ReallifeGamemode.Server/Util/CheckPointHandle.cs b/ReallifeGamemode.Server/Util/CheckPointHandle.cs index d01e2a2a..bed4fce4 100644 --- a/ReallifeGamemode.Server/Util/CheckPointHandle.cs +++ b/ReallifeGamemode.Server/Util/CheckPointHandle.cs @@ -7,10 +7,19 @@ namespace ReallifeGamemode.Server.Util public class CheckPointHandle : Script { public static List listHandle = new List(); + + public static void DeleteCheckpoints(Client player) + { + RemovePlayerHandlerFromList(player); + player.TriggerEvent("destroyCP"); + } + public static void StartCheckPointRoute(Client player, IEnumerable nListCps, int delay, int markerID, int markerSize, string nEvent) { RemovePlayerHandlerFromList(player); CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, nEvent); + playerHandle.DeleteCheckpoints(); + listHandle.Add(playerHandle); playerHandle.StartRoute(); @@ -83,5 +92,10 @@ namespace ReallifeGamemode.Server.Util CheckPointHandle.RemovePlayerHandlerFromList(this.player); } } + + public void DeleteCheckpoints() + { + this.player.TriggerEvent("destroyCP"); + } } }