Files
reallife-gamemode/ReallifeGamemode.Server/Job/PilotJob.cs
2020-05-10 23:18:53 +02:00

329 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using GTANetworkAPI;
using Newtonsoft.Json;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Managers;
namespace ReallifeGamemode.Server.Job
{
internal class PilotJob : JobBase
{
public override int Id => 3;
public override string Name => "Pilot";
public override bool NeedVehicleToStart => false;
private readonly IReadOnlyCollection<Vector3> Skill1Route1 = new List<Vector3>//Pilot_Skill_1_Route_1
{
new Vector3(1645.9910888671875, 3236.744873046875, 40.98052978515625),
new Vector3(302.6805114746094, 2867.93896484375, 204.81182861328125),
new Vector3(-1093.6722412109375, 2737.1376953125, 257.575439453125),
new Vector3(-2286.014892578125, 3019.12841796875, 33.4510498046875),
new Vector3(-2471.854248046875, 3271.08935546875, 33.47834777832031),
new Vector3(-623.9515380859375, 5313.12158203125, 181.6047821044922),
new Vector3(1896.899658203125, 4824.203125, 208.77737426757812),
new Vector3(2281.790283203125, 3606.98681640625, 132.3915252685547),
new Vector3(1610.4461669921875, 3225.36376953125, 41.05073928833008),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Skill1Route2 = new List<Vector3>//Pilot_Skill_1_Route_2
{
new Vector3(1593.927490234375, 3193.30908203125, 41.170997619628906),
new Vector3(961.5843505859375, 2278.5966796875, 251.17218017578125),
new Vector3(924.3920288085938, 93.95357513427734, 282.3033142089844),
new Vector3(963.6002197265625, -3101.551513671875, 177.8121337890625),
new Vector3(-1265.1163330078125, -2990.142578125, 14.595105171203613),
new Vector3(-1260.78662109375, -2806.293212890625, 14.587812423706055),
new Vector3(-894.3707885742188, 82.7993392944336, 385.011962890625),
new Vector3(919.4126586914062, 2553.385986328125, 135.39154052734375),
new Vector3(1592.840087890625, 3192.8017578125, 41.169837951660156),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Skill1Route3 = new List<Vector3>//Pilot_Skill_1_Route_3
{
new Vector3(-850.61, 2181.98, 429.67),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Skill2Route1 = new List<Vector3>//Pilot_Skill_2_Route_1
{
new Vector3(-1563.0125732421875, -3019.960205078125, 14.879448890686035),
new Vector3(-606.9600830078125, -2660.677490234375, 136.10226440429688),
new Vector3(734.489990234375, -967.21533203125, 604.9561157226562),
new Vector3(107.65938568115234, 1202.3692626953125, 972.5994873046875),
new Vector3(67.48933410644531, 3056.564697265625, 865.25537109375),
new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406),
new Vector3(1731.6995849609375, 3308.203125, 41.223514556884766),
new Vector3(1106.1397705078125, 3090.18798828125, 74.03556823730469),
new Vector3(41.88761901855469, 1728.1295166015625, 446.2645568847656),
new Vector3(-1144.333984375, -943.0862426757812, 376.0502624511719),
new Vector3(-1406.51220703125, -2334.29052734375, 50.125667572021484),
new Vector3(-1590.4517822265625, -2996.38330078125, 13.94474983215332),
new Vector3(-1666.028076171875, -3082.910888671875, 13.944761276245117),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Skill2Route2 = new List<Vector3>//Pilot_Skill_2_Route_2
{
new Vector3(-1412.8221435546875, -3044.2587890625, 14.887921333312988),
new Vector3(-1627.982177734375, -2714.71875, 14.880501747131348),
new Vector3(-1309.5150146484375, -2030.012451171875, 120.04487609863281),
new Vector3(-1079.538330078125, -325.4757385253906, 435.19158935546875),
new Vector3(-495.6157531738281, 2248.668701171875, 800.2356567382812),
new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406),
new Vector3(1850.8380126953125, 4677.72412109375, 71.57810974121094),
new Vector3(2131.758544921875, 4782.18115234375, 40.970279693603516),
new Vector3(1963.30078125, 4726.73681640625, 52.904056549072266),
new Vector3(1168.9517822265625, 4205.9033203125, 172.29588317871094),
new Vector3(-1138.7547607421875, -1896.85498046875, 91.5819091796875),
new Vector3(-1551.466064453125, -2706.53125, 13.945389747619629),
new Vector3(-1571.1328125, -2856.3505859375, 13.944441795349121),
new Vector3(-1582.531005859375, -2999.940185546875, 13.936454772949219),
new Vector3(-1668.747802734375, -3081.548095703125, 13.9447660446167),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Skill2Route3 = new List<Vector3>//Pilot_Skill_2_Route_3
{
new Vector3(-710.89, -1836.81, 355.46),
}.AsReadOnly();
public PilotJob()
{
JobStart += PilotJob_JobStart;
}
private void PilotJob_JobStart(Player player)
{
/*List<String> listRouteTexts = new List<string>();
List<String> listRouteTexts2 = new List<string>();
Vehicle veh = player.Vehicle;
if ((VehicleHash)veh.Model == VehicleHash.Velum || (VehicleHash)veh.Model == VehicleHash.Velum2)
{
listRouteTexts2.Add("Route 4");
listRouteTexts2.Add("Route 5");
listRouteTexts2.Add("Route 6");
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts2));
}
else
{
listRouteTexts.Add("Route 1");
listRouteTexts.Add("Route 2");
listRouteTexts.Add("Route 3");
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
}*/
/*Random rnd = new Random();
int rroute = rnd.Next(1, 6);
switch (rroute)
{
case 1:
{
StartPilotRoute(player, "Route 1");
break;
}
case 2:
{
StartPilotRoute(player, "Route 2");
break;
}
case 3:
{
StartPilotRoute(player, "Route 3");
break;
}
case 4:
{
StartPilotRoute(player, "Route 4");
break;
}
case 5:
{
StartPilotRoute(player, "Route 5");
break;
}
}*/
[RemoteEvent("startPilotRoute")]
public void StartPilotRoute(Player player, string type)
{
Vehicle veh = player.Vehicle;
if (player.VehicleSeat == 0)
{
if (type == "RouteStart")
{
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 4);
switch (rroute)
{
case 1:
{
CheckPointHandle.StartCheckPointRoute(player, Skill1Route1, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1");
player.SetData("Route", "Skill1Route1");
break;
}
case 2:
{
CheckPointHandle.StartCheckPointRoute(player, Skill1Route2, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2");
player.SetData("Route", "Skill1Route2");
break;
}
case 3:
{
CheckPointHandle.StartCheckPointRoute(player, Skill1Route3, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3");
player.SetData("Route", "Skill1Route3");
break;
}
}
}
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 4);
switch (rroute)
{
case 1:
{
CheckPointHandle.StartCheckPointRoute(player, Skill2Route1, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1");
player.SetData("Route", "Skill2Route1");
break;
}
case 2:
{
CheckPointHandle.StartCheckPointRoute(player, Skill2Route2, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2");
player.SetData("Route", "Skill2Route2");
break;
}
case 3:
{
CheckPointHandle.StartCheckPointRoute(player, Skill2Route3, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3");
player.SetData("Route", "Skill2Route3");
break;
}
}
}
}
/*if (type == "Route 1")
{
CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
}
else if (type == "Route 2")
{
CheckPointHandle.StartCheckPointRoute(player, Route2, 0, 6, 40, 10, true, "pilotJob");
}
else if (type == "Route 3")
{
CheckPointHandle.StartCheckPointRoute(player, Route3, 0, 6, 40, 10, true, "pilotJob");
}
else if (type == "Route 4")
{
CheckPointHandle.StartCheckPointRoute(player, Route4, 0, 6, 40, 10, true, "pilotJob");
}
else if (type == "Route 5")
{
CheckPointHandle.StartCheckPointRoute(player, Route5, 0, 6, 40, 10, true, "pilotJob");
}
else if (type == "Route 6")
{
CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 10, true, "pilotJob");
}*/
}
}
public static void payWage(Player jobber, int wage)
{
using (var dbContext = new DatabaseContext())
{
if (jobber.VehicleSeat == 0)
{
jobber.GetUser(dbContext).Wage += wage;
//jobber.SendNotification($"~y~[JOB] ~g~+{wage}$");
jobber.GetUser(dbContext).PilotSkill++;
dbContext.SaveChanges();
if (jobber.GetUser(dbContext).PilotSkill == 300)
{
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast nun ~g~Skill-Level 2 ~w~erreicht!");
jobber.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt auch mit dem Velum Flugzeug (LS Airport) fliegen!");
}
}
else
{
JobBase job = JobManager.GetJob(jobber.GetUser().JobId??-1);
job.StopJob(jobber);
CheckPointHandle.DeleteCheckpoints(jobber);
ChatService.SendMessage(jobber, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
}
}
}
[RemoteEvent("PilotLetzterCheckpoint")]
public static void PilotLetzterCheckpoint(Player player)
{
PilotJob c = new PilotJob();
Vehicle v = player.Vehicle;
c.StartPilotRoute(player, "RouteStart");
/*if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 4);
switch (rroute)
{
case 1:
{
c.StartPilotRoute(player, "Route 1");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1");
break;
}
case 2:
{
c.StartPilotRoute(player, "Route 2");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2");
break;
}
case 3:
{
c.StartPilotRoute(player, "Route 3");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2");
break;
}
}
}
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 4);
switch (rroute)
{
case 1:
{
c.StartPilotRoute(player, "Route 4");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4");
break;
}
case 2:
{
c.StartPilotRoute(player, "Route 5");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 5");
break;
}
case 3:
{
c.StartPilotRoute(player, "Route 6");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 6");
break;
}
}
}*/
}
}
}