using System; using System.Collections.Generic; using System.Text; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Services; using System.Linq; using GTANetworkAPI; namespace ReallifeGamemode.Server.DrivingSchool { class DrivingSchool : Script { private static TextLabel informationLabel; private static Marker marker; private static ColShape _colShape; public static Vector3 Position { get; } private readonly IReadOnlyCollection DrivingRoute = new List { //BEGIN new Vector3(-745.6191, -1285.735, 4.947221), new Vector3(-704.5242, -1246.765, 9.885977), new Vector3(-673.0675, -1266.652, 10.29717), new Vector3(-646.1747, -1293.238, 10.28384), new Vector3(-510.7098, -916.9164, 25.10735), new Vector3(-492.6284, -860.5167, 29.89526), new Vector3(-450.3232, -841.7007, 30.3698), new Vector3(17.09636, -973.2763, 29.01929), new Vector3(76.66012, -999.568, 28.97918), //SLALOM new Vector3(-12.64976, -1751.287, 28.91913), new Vector3(6.008641, -1767.067, 28.91265), new Vector3(12.80635, -1752.094, 28.91877), new Vector3(26.71735, -1747.96, 28.92006), new Vector3(28.67053, -1733.492, 28.91953), new Vector3(42.68731, -1728.767, 28.92002), new Vector3(44.33229, -1714.426, 28.9193), new Vector3(37.25899, -1723.924, 28.92041), new Vector3(34.591, -1738.211, 28.92125), new Vector3(21.28996, -1742.563, 28.91987), new Vector3(18.46534, -1756.87, 28.92011), new Vector3(4.841759, -1761.316, 28.91519), new Vector3(44.69115, -1805.247, 25.07369), new Vector3(111.6519, -1822.466, 26.03703), //SCHROTTPLATZ new Vector3(-394.8713, -1734.21, 19.23653), new Vector3(-459.7604, -1696.029, 18.62012), new Vector3(-475.5448, -1670.373, 18.34653), new Vector3(-453.5338, -1665.695, 18.64714), new Vector3(-449.6863, -1680.451, 18.66275), new Vector3(-467.9489, -1728.37, 18.27419), new Vector3(-520.4453, -1703.146, 18.80065), new Vector3(-522.3558, -1680.122, 18.88261), new Vector3(-509.998, -1691.828, 18.91303), new Vector3(-526.3292, -1685.291, 18.83323), new Vector3(-551.9138, -1651.865, 18.81676), new Vector3(-529.8453, -1626.317, 17.41884), new Vector3(-491.7721, -1648.275, 17.43219), new Vector3(-550.9622, -1662.636, 18.82121), new Vector3(-496.3094, -1736.833, 18.33857), new Vector3(-417.4822, -1712.987, 19.10845), //ENDE new Vector3(-498.1252, -1879.154, 17.22348), new Vector3(-754.5391, -1300.816, 4.617907) }.AsReadOnly(); public static void Setup() { informationLabel = NAPI.TextLabel.CreateTextLabel("Fahrschule", new Vector3(-815.8334, -1346.405, 5.150263), 20.0f, 1.3f, 0, new Color(255, 255, 255)); marker = NAPI.Marker.CreateMarker(434, new Vector3(-815.8334, -1346.405, 5.150263), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255)); _colShape = NAPI.ColShape.CreateSphereColShape(new Vector3(-815.8334, -1346.405, 5.150263), 3f); _colShape.OnEntityEnterColShape += EntityEnterBusinessColShape; _colShape.OnEntityExitColShape += EntityExitBusinessColShape; } private static void EntityEnterBusinessColShape(ColShape colShape, Client client) { if (client.IsInVehicle || !client.IsLoggedIn()) return; client.TriggerEvent("drivingSchoolMenu"); } private static void EntityExitBusinessColShape(ColShape colShape, Client client) { client.TriggerEvent("removeDrivingSchoolMenu"); } [RemoteEvent("startDrivingSchool")] public void StartDrivingSchool(Client user) { ChatService.SendMessage(user, "Du hast die Führerscheinprüfung gestartet."); ChatService.SendMessage(user, "Steige nun in eines der Fahrschulautos"); user.TriggerEvent("waitPlayerEntersVehicle"); } [RemoteEvent("timerCheckVehicle")] public void TimerCheckVehicle(Client user) { Vehicle veh = user.Vehicle; if (veh == null || veh.DisplayName != "Buffalo") { return; } else { ChatService.SendMessage(user, "Gut nun kann die Prüfung losgehen"); user.TriggerEvent("stopTimer"); CheckPointHandle.StartCheckPointRoute(user, DrivingRoute, 0, 1, "drivingSchoolEvent"); } } [RemoteEvent("drivingSchoolEvent")] public void DrivingSchoolEvent(Client user, int checkpoint) { ChatService.Broadcast("CP " + checkpoint); if (checkpoint == 0 || checkpoint == 4) { ChatService.SendMessage(user, "Halte an der Kreuzung kurz an"); } else if (checkpoint == 1 || checkpoint == 5) { user.TriggerEvent("waitHere", user, DrivingRoute.ElementAt(checkpoint), 2000); } else if (checkpoint == 2) { user.TriggerEvent("checkWait"); ChatService.SendMessage(user, "Schaue an der nächsten Kreuzung nach rechts"); } else if (checkpoint == 3) { //0.74850505590443884 -0.04975615441799164 Single angle1 = (float)0.7485050; Single angle2 = (float)-0.0497561; user.TriggerEvent("lookDirection", "rechts", angle1, angle2); } else if (checkpoint == 6) { user.TriggerEvent("checkWait"); } else if (checkpoint == 7) { user.TriggerEvent("checkWait"); ChatService.SendMessage(user, "Schaue an der nächsten Kreuzung nach links"); } else if (checkpoint == 8) { Single angle1 = (float)0.9669561; Single angle2 = (float)0.3818159; user.TriggerEvent("lookDirection", "links", angle1, angle2); } else if (checkpoint == 9) { ChatService.SendMessage(user, "Fahre nun Slalom an den Laternen"); } else if (checkpoint == 20) { ChatService.SendMessage(user, "Verlasse nun den Parkplatz"); } else if (checkpoint == 24) { ChatService.SendMessage(user, "Parke gleich seitlich ein"); } else if (checkpoint == 25) { bool parked = false; float rotation; while (!parked) { rotation = user.Vehicle.Rotation.Z; if (rotation >= 333.913 && rotation <= 354.6108) { ChatService.SendMessage(user, "Perfekt!"); parked = true; } System.Threading.Thread.Sleep(100); } } } [Command("ld", "~m~Benutzung: ~s~/lt")] public void CmdAdminLt(Client player) { Vehicle veh = player.Vehicle; ChatService.Broadcast("x: " + veh.Rotation.X + " | y: " + veh.Rotation.Y + " | z: " + veh.Rotation.Z); //player.TriggerEvent("lookDirectionTesting", veh); } } }