Files
hydrant 7411fa02f3 GELD LOGS
(cherry picked from commit a2db770316)
2021-05-15 01:20:12 +00:00

187 lines
7.0 KiB
C#

using System.Collections.Generic;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Util;
namespace ReallifeGamemode.Server.DrivingSchool
{
internal class PlaneSchool : Script
{
private static TextLabel informationLabel1;
private static Marker marker1;
private static ColShape _colShape1;
public static Vector3 Position { get; }
private static readonly ILogger logger = LogManager.GetLogger<PlaneSchool>();
private const int CHECKPOINT_MARKER_ID = 6;
private const int PLANE_LICENSE_PRICE = 5000;
private readonly IReadOnlyCollection<Vector3> planeRoute = new List<Vector3>
{
new Vector3(-1114.39, -2333.09, 14.87),
new Vector3(-1133.06, -2287.62, 14.89),
new Vector3(-1185.63, -2303.45, 14.86),
new Vector3(-1168.78, -2349.79, 14.88),
new Vector3(-1118.74, -2340.85, 14.87),
new Vector3(-1219.9, -2239.5, 14.87),
new Vector3(-1355.84, -2245.06, 14.87),
new Vector3(-1427.14, -2368.96, 14.87),
new Vector3(-872.5, -1820.64, 172.57),
new Vector3(786.55, 2309.85, 426.1),
new Vector3(1261.85, 3950.07, 301.3),
new Vector3(2133.83, 4803.55, 41.99),
new Vector3(2134.13, 4782.7, 41.9),
new Vector3(2098.9, 4792.94, 41.98),
new Vector3(-869.77, -1424.05, 133),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> planeRouteEnd = new List<Vector3>
{
new Vector3(-1164.29, -2351.52, 14.88),
}.AsReadOnly();
public static void Setup()
{
informationLabel1 = NAPI.TextLabel.CreateTextLabel("Flugschule\n~y~Flugschein ~s~- $~g~5000", new Vector3(-1083.96, -2476.96, 14.07), 20.0f, 1.3f, 0, new Color(255, 255, 255));
marker1 = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, new Vector3(-1083.96, -2476.96, 13.07), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255));
_colShape1 = NAPI.ColShape.CreateSphereColShape(new Vector3(-1083.96, -2476.96, 14.07), 3f);
_colShape1.OnEntityEnterColShape += EntityEnterBusinessColShape;
_colShape1.OnEntityExitColShape += EntityExitBusinessColShape;
NAPI.Blip.CreateBlip(90, new Vector3(-1083.96, -2476.96, 14.07), 1.0f, 4, "Flugschule", shortRange: true);
}
private static void EntityEnterBusinessColShape(ColShape colShape, Player client)
{
if (client.IsInVehicle || !client.IsLoggedIn()) return;
client.TriggerEvent("planeSchoolMenu");
}
private static void EntityExitBusinessColShape(ColShape colShape, Player client)
{
client.TriggerEvent("removeplaneSchoolMenu");
}
[RemoteEvent("startplaneSchool")]
public void StartplaneSchool(Player client)
{
User user = client.GetUser();
if (user.FlyingLicensePlane || client.HasData("ActiveSchool"))
{
client.SendChatMessage("~b~[INFO]~s~ Du besitzt schon einen Flugschein.");
return;
}
if (user.Handmoney < PLANE_LICENSE_PRICE)
{
client.SendNotification("~r~Du brauchst ~g~$5.000~r~ auf der Hand, um die Prüfung starten zu können.", true);
return;
}
using (var dbContext = new DatabaseContext())
{
User payer = client.GetUser(dbContext);
payer.Handmoney -= PLANE_LICENSE_PRICE;
logger.LogInformation("Player {0} bought the plane school for {1} dollars", client.Name, PLANE_LICENSE_PRICE);
//client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
dbContext.SaveChanges();
}
client.SetData("ActiveSchool", 1);
client.TriggerEvent("renderTextOnScreen", "Du hast die Flugscheinprüfung gestartet.\nSteige nun in eines der Flugzeuge ein.");
client.TriggerEvent("waitPlayerEntersVehicle1");
}
[RemoteEvent("timerCheckVehicle1")]
public void TimerCheckVehicle1(Player user)
{
Vehicle veh = user.Vehicle;
if (veh.GetServerVehicle() is SchoolVehicle schoolVehicle)
{
if (schoolVehicle.SchoolId == 1)
{
user.TriggerEvent("renderTextOnScreen", "Fahren Sie langsam und sicher zur roten Markierung.");
user.TriggerEvent("stopTimer");
CheckPointHandle.StartCheckPointRoute(user, planeRoute, 0, CHECKPOINT_MARKER_ID, 12, 5, true, "planeSchoolEvent");
}
}
}
[RemoteEvent("planeSchoolEventEnd")]
public void planeSchoolEventEnd(Player user, int checkpoint)
{
Vehicle veh = user.Vehicle;
user.WarpOutOfVehicle();
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
VehicleStreaming.SetEngineState(veh, false);
VehicleStreaming.SetLockStatus(veh, false);
NAPI.Entity.SetEntityVelocity(veh.Handle, new Vector3(0, 0, 0));
veh.Position = sVeh.Position;
veh.Rotation = new Vector3(0, 0, sVeh.Heading);
user.TriggerEvent("renderTextOnScreen", "Glückwunsch! Du hast den Flugschein bestanden!");
using (var dbContext = new DatabaseContext())
{
User drivingUser = user.GetUser(dbContext);
drivingUser.FlyingLicensePlane = true;
dbContext.SaveChanges();
}
user.ResetData("ActiveSchool");
user.SafeTeleport(new Vector3(-1083.96, -2476.96, 13.07));
}
[RemoteEvent("planeSchoolEvent")]
public void planeSchoolEvent(Player user, int checkpoint)
{
switch (checkpoint)
{
case 0:
user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf, dass Sie die Markierungen mittig durchqueren.");
break;
case 2:
user.TriggerEvent("renderTextOnScreen", "Sie fallen durch die Prüfung, sobald Sie aus dem Flugzeug aussteigen.");
break;
case 3:
user.TriggerEvent("renderTextOnScreen", "Achtung: Bremsen Sie zu stark in der Luft, so schaltet sich der Motor aus.");
break;
case 4:
user.TriggerEvent("renderTextOnScreen", "Bei Landungen sollten Sie maximal 150 km/h fliegen.");
break;
case 5:
user.TriggerEvent("renderTextOnScreen", "Der Pfeil auf dem gelben Punkt (Minimap) zeigt Ihnen an,\nob Sie über oder unter dem Punkt sind.");
break;
case 6:
case 13:
user.TriggerEvent("renderTextOnScreen", "Abflug: Beschleunigen Sie auf mindestens 80 km/h.");
break;
case 7:
user.TriggerEvent("renderTextOnScreen", "Fahren Sie mit 'G' das Fahrwerk ein, sobald Sie sicher in der Luft sind.");
break;
case 10:
user.TriggerEvent("renderTextOnScreen", "Setzen Sie zum Landeanflug an. Drücken Sie 'G', um das Fahrwerk auszufahren.");
break;
case 14:
user.TriggerEvent("renderTextOnScreen", "Setzen Sie zum Landeanflug an. Drücken Sie 'G', um das Fahrwerk auszufahren.");
CheckPointHandle.StartCheckPointRoute(user, planeRouteEnd, PLANE_LICENSE_PRICE, CHECKPOINT_MARKER_ID, 12, 5, true, "planeSchoolEventEnd");
break;
}
}
}
}