334 lines
13 KiB
C#
334 lines
13 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using GTANetworkAPI;
|
|
using ReallifeGamemode.Server.Util;
|
|
using Newtonsoft.Json;
|
|
using ReallifeGamemode.Server.Extensions;
|
|
using ReallifeGamemode.Database.Models;
|
|
using ReallifeGamemode.Server.Services;
|
|
using ReallifeGamemode.Server.Managers;
|
|
|
|
namespace ReallifeGamemode.Server.Job
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}*/
|
|
}
|
|
}
|
|
}
|