diff --git a/ReallifeGamemode.Client/util/checkpoint.ts b/ReallifeGamemode.Client/util/checkpoint.ts index f7903d47..3e11880f 100644 --- a/ReallifeGamemode.Client/util/checkpoint.ts +++ b/ReallifeGamemode.Client/util/checkpoint.ts @@ -13,6 +13,7 @@ export default function checkpointHandle(globalData: GlobalData) { var markerID; var event; var checkPointsDone = 0; + var activeBlip = null; mp.events.add('setCheckPoint', (position, player, checkPointID, nDelay, nMarkerID, nEvent) => { inCheckpoint = false; @@ -29,9 +30,16 @@ export default function checkpointHandle(globalData: GlobalData) { dimension: 0 }); + activeBlip = mp.blips.new(1, posCp, + { + color: 33, + alpha: 255, + shortRange: false, + }); + clearInterval(myVar); //mp.events.call("SERVER:Util_setWaypoint", posCp.X, posCp.Z); - mp.game.ui.setNewWaypoint(posCp.x, posCp.y); + //mp.game.ui.setNewWaypoint(posCp.x, posCp.y); myVar = setInterval(myTimer, 100); }); @@ -55,6 +63,7 @@ export default function checkpointHandle(globalData: GlobalData) { if (delayCounter >= delay) { activeCheckpoint.destroy(); + activeBlip.destroy(); clearInterval(myVar); mp.events.callRemote("playerInCheckpoint"); if (event != "") { diff --git a/ReallifeGamemode.Client/util/planeschool.ts b/ReallifeGamemode.Client/util/planeschool.ts index 706f57e8..9f8ad10b 100644 --- a/ReallifeGamemode.Client/util/planeschool.ts +++ b/ReallifeGamemode.Client/util/planeschool.ts @@ -52,7 +52,35 @@ export default function planeSchoolHandle(globalData: GlobalData) { timer = setInterval(timerPlayerInVehicle1, 3000); }); + var renderedText = null; + var textTime; + var render = false; + var massage; + function ClearText() { + render = false; + clearInterval(textTime); + } + + mp.events.add('render', () =>{ + if (render) { + renderedText = mp.game.graphics.drawText(massage, [0.5, 0.85], { + font: 4, + centre: true, + color: [255, 255, 145, 185], + scale: [0.5, 0.5], + outline: true + }); + } + + }); + + mp.events.add('renderTextOnScreen', (msg) => { + clearInterval(textTime); + massage = msg; + render = true; + textTime = setInterval(ClearText, 7000) + }); mp.events.add('stopTimer', () => { timerSet = false; clearInterval(timer); diff --git a/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs b/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs index 66341c83..c04d022e 100644 --- a/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs +++ b/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs @@ -8,6 +8,7 @@ using System.Linq; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.DrivingSchool { @@ -68,9 +69,7 @@ namespace ReallifeGamemode.Server.DrivingSchool if (user.FlyingLicensePlane) return; - ChatService.SendMessage(client, "Du hast die Flugscheinprüfung gestartet."); - ChatService.SendMessage(client, "Steige nun in eines der Flugzeuge ein."); - + user.TriggerEvent("renderTextOnScreen", "Du hast die Flugscheinprüfung gestartet. Steige nun in eines der Flugzeuge ein."); client.TriggerEvent("waitPlayerEntersVehicle1"); } @@ -85,7 +84,7 @@ namespace ReallifeGamemode.Server.DrivingSchool } else { - ChatService.SendMessage(user, "Gut nun kann die Prüfung losgehen."); + user.TriggerEvent("renderTextOnScreen", "Fahren Sie langsam und sicher zur Roten Markierung."); user.TriggerEvent("stopTimer"); CheckPointHandle.StartCheckPointRoute(user, planeRoute, 0, 6, "planeSchoolEvent"); } @@ -94,28 +93,58 @@ namespace ReallifeGamemode.Server.DrivingSchool [RemoteEvent("planeSchoolEvent")] public void planeSchoolEvent(Client user, int checkpoint) { - if(checkpoint == 6 || checkpoint ==13) + if(checkpoint == 0) { - ChatService.SendMessage(user, "Beschleunige um abzuheben."); + user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf dass Sie mittig durch jeder Markierung fahren/fliegen."); + } + else if(checkpoint == 1) + { + user.TriggerEvent("renderTextOnScreen", "Für die Flugprüfung haben Sie 15min Zeit."); + } + else if(checkpoint == 2) + { + user.TriggerEvent("renderTextOnScreen", "Wenn Sie aus dem Flugzeug aussteigen sind Sie aus der Prüfung durchgefallen."); + } + else if(checkpoint == 3) + { + user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf dass Sie nicht stark abbremsen in der Luft sonst geht der Motor aus."); + } + else if (checkpoint == 4) + { + user.TriggerEvent("renderTextOnScreen", "Falls Sie eine Landung durchführen fliegen Sie mit max. 150km/h."); + } + else if (checkpoint == 5) + { + user.TriggerEvent("renderTextOnScreen", "Folgen Sie den Gelben Punkte auf der Karte. Der Pfeil auf den Punkt zeigt ihnen ob Sie über oder unter dem Punkt seid."); + } + else if(checkpoint == 7) + { + user.TriggerEvent("renderTextOnScreen", "Sobald Sie sicher in der Luft sind drücken Sie 'G' um ihr Fahrwerk einzufahren."); + } + else if(checkpoint == 6 || checkpoint ==13) + { + user.TriggerEvent("renderTextOnScreen", "Beschleunige nun auf mind. 100km/h um abzuheben."); } else if(checkpoint == 10 || checkpoint == 14) { - ChatService.SendMessage(user, "Setze zum landeflug an."); - + user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren."); } else if (checkpoint == 15) { - ChatService.SendMessage(user, "Du hast deinen Flugschein bestanden."); + user.TriggerEvent("renderTextOnScreen", "Du hast deinen Flugschein bestanden!"); User spieler = user.GetUser(); using (var dbContext = new DatabaseContext()) { User drivingUser = dbContext.Users.Where(u => u.Id == spieler.Id).FirstOrDefault(); - drivingUser.FlyingLicensePlane = true; + drivingUser.FlyingLicensePlane = false; + ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(user.Vehicle); + ServerVehicleExtensions.Spawn(sVeh, user.Vehicle); dbContext.SaveChanges(); } user.Position = new Vector3(-1083.96, -2476.96, 13.07); - /*user.Vehicle.Position = new Vector3(); Hier die Funktion zum Fahrzeug respawnen */ } } + + } } diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 1acd4539..e737e9ac 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -418,7 +418,7 @@ namespace ReallifeGamemode.Server.Events User u = player.GetUser(); if (u == null) return; - if (NAPI.Entity.GetEntityVelocity(v).Length() > 1) + if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16) { player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); return; diff --git a/ReallifeGamemode.Server/Events/Vehicle.cs b/ReallifeGamemode.Server/Events/Vehicle.cs index ae1f7e48..fb28184b 100644 --- a/ReallifeGamemode.Server/Events/Vehicle.cs +++ b/ReallifeGamemode.Server/Events/Vehicle.cs @@ -20,7 +20,7 @@ namespace ReallifeGamemode.Server.Events User u = player.GetUser(); if (u == null) return; - if (NAPI.Entity.GetEntityVelocity(v).Length() > 1) + if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16) { player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); return;