OverHaul Bus and Pilot TEST
This commit is contained in:
@@ -7,6 +7,8 @@ using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Server.Managers;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using System.Linq;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
|
||||
namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
@@ -18,239 +20,224 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
private const int CHECKPOINT_MARKER_ID = 6;
|
||||
|
||||
public const string BEGINNER = "Anfänger";
|
||||
public const string INTERMEDIATE = "Fortgeschrittener";
|
||||
public const string PROFESSIONAL = "Profi";
|
||||
|
||||
public const int WAGE_BEGINNER = 350;
|
||||
public const int WAGE_INTERMEDIATE = 500;
|
||||
|
||||
public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Cuban800;
|
||||
public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Velum2;
|
||||
public const uint VEHICLE_PROFESSIONAL = (uint)VehicleHash.Submersible;
|
||||
|
||||
public static Dictionary<string, List<Vector3>> playerRouteCurrent = new Dictionary<string, List<Vector3>>();
|
||||
|
||||
public static int spawnIndex = 0;
|
||||
|
||||
public const int SKILL_BEGINNER = 0;
|
||||
public const int SKILL_INTERMEDIATE = 300;
|
||||
|
||||
public override bool NeedVehicleToStart => false;
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> Skill1Route1 = new List<Vector3>//Pilot_Skill_1_Route_1
|
||||
private readonly Dictionary<Vector3, float> BEGINNER_SPAWNS = new Dictionary<Vector3, float>
|
||||
{
|
||||
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();
|
||||
{ new Vector3(1698.0226, 3261.829, 41.625206), -170},
|
||||
{ new Vector3(1673.5715, 3255.3167, 41.385006), -170},
|
||||
{ new Vector3(1652.0725, 3249.6987, 41.194054), -170},
|
||||
{ new Vector3(1705.3207, 3236.8796, 41.563965), 15},
|
||||
{ new Vector3(1680.5709, 3230.2217, 41.563965), 52},
|
||||
};
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> Skill1Route2 = new List<Vector3>//Pilot_Skill_1_Route_2
|
||||
private readonly Dictionary<Vector3, float> INTERMEDIATE_SPAWNS = new Dictionary<Vector3, float>()
|
||||
{
|
||||
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();
|
||||
{ new Vector3(-1593.1952, -3081.4019, 15), 153},
|
||||
{ new Vector3(-1573.7805, -3092.615, 15), 153},
|
||||
{ new Vector3(-1555-9386, -3102-4492, 15), 150},
|
||||
{ new Vector3(-1536-6404, -3113-7183, 15), 150},
|
||||
{ new Vector3(-1517-0101, -3125-2798, 15), 150},
|
||||
};
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> Skill1Route3 = new List<Vector3>//Pilot_Skill_1_Route_3
|
||||
{
|
||||
new Vector3(-850.61, 2181.98, 429.67),
|
||||
}.AsReadOnly();
|
||||
//124 0 Velum
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> Skill2Route1 = new List<Vector3>//Pilot_Skill_2_Route_1
|
||||
private readonly Dictionary<int, List<Vector3>> ROUTE_BEGINNER = new Dictionary<int, List<Vector3>>//Bus_Skill_1_Route_1
|
||||
{
|
||||
new Vector3(-1534.98828125, -3028.916748046875, 14.451109886169434),
|
||||
new Vector3(-1182.960205078125, -3236.542724609375, 67.93492126464844),
|
||||
new Vector3(942.8041381835938, -2997.95751953125, 323.1705322265625),
|
||||
new Vector3(2459.114501953125, -525.8928833007812, 409.09002685546875),
|
||||
new Vector3(2764.611572265625, 1482.853271484375, 457.73944091796875),
|
||||
new Vector3(3485.380615234375, 3652.9619140625, 343.3283996582031),
|
||||
new Vector3(2652.611572265625, 4737.7958984375, 206.23399353027344),
|
||||
new Vector3(2043.8521728515625, 4769.595703125, 42.007118225097656),
|
||||
new Vector3(2134.332763671875, 4781.857421875, 41.900352478027344),
|
||||
new Vector3(1943.1544189453125, 4721.03125, 57.76427459716797),
|
||||
new Vector3(1749.4105224609375, 3790.8955078125, 194.40440368652344),
|
||||
new Vector3(1203.5526123046875, 2707.182373046875, 342.80145263671875),
|
||||
new Vector3(-377.686279296875, 1256.92578125, 532.7467651367188),
|
||||
new Vector3(-820.6907958984375, -412.96466064453125, 311.0726013183594),
|
||||
new Vector3(-1073.534912109375, -1704.798583984375, 94.05522155761719),
|
||||
new Vector3(-1686.30126953125, -2815.478759765625, 14.87234115600586),
|
||||
new Vector3(-1617.498291015625, -2982.41259765625, 14.883989334106445),
|
||||
}.AsReadOnly();
|
||||
{ 1,
|
||||
new List<Vector3>()
|
||||
{
|
||||
//new Vector3(-601.733, -2049.285, 6.090),
|
||||
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),
|
||||
}
|
||||
},
|
||||
{ 2,
|
||||
new List<Vector3>()
|
||||
{
|
||||
//new Vector3(-601.733, -2049.285, 6.090),
|
||||
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),
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> Skill2Route2 = new List<Vector3>//Pilot_Skill_2_Route_2
|
||||
private readonly Dictionary<int, List<Vector3>> ROUTE_INTERMEDIATE = new Dictionary<int, List<Vector3>>
|
||||
{
|
||||
new Vector3(-1463.965576171875, -2875.571533203125, 14.882678031921387),
|
||||
new Vector3(-981.0889282226562, -3122.533203125, 56.10537338256836),
|
||||
new Vector3(-341.6023254394531, -2016.779541015625, 262.1709899902344),
|
||||
new Vector3(-1446.6815185546875, -894.4887084960938, 321.3404846191406),
|
||||
new Vector3(-3151.909912109375, 979.1404418945312, 335.3139953613281),
|
||||
new Vector3(-1309.160888671875, 4903.9140625, 388.6031494140625),
|
||||
new Vector3(31.35175895690918, 3690.413330078125, 333.4454345703125),
|
||||
new Vector3(-948.346923828125, 2766.284912109375, 239.0842742919922),
|
||||
new Vector3(-2312.5068359375, 3033.903076171875, 33.7471923828125),
|
||||
new Vector3(-2132.787109375, 3265.840087890625, 33.74031448364258),
|
||||
new Vector3(-2331.76611328125, 3148.581298828125, 33.7597541809082),
|
||||
new Vector3(-2564.848876953125, 2369.27783203125, 182.68736267089844),
|
||||
new Vector3(-1833.041259765625, 832.1589965820312, 398.28863525390625),
|
||||
new Vector3(-878.19384765625, -904.84521484375, 284.2839050292969),
|
||||
new Vector3(-1124.624755859375, -1821.9208984375, 74.77794647216797),
|
||||
new Vector3(-1631.8602294921875, -2720.09814453125, 14.873514175415039),
|
||||
new Vector3(-1543.793701171875, -2829.399169921875, 14.899491310119629),
|
||||
}.AsReadOnly();
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> Skill2Route3 = new List<Vector3>//Pilot_Skill_2_Route_3
|
||||
{
|
||||
new Vector3(-710.89, -1836.81, 355.46),
|
||||
}.AsReadOnly();
|
||||
{ 1,
|
||||
new List<Vector3>()
|
||||
{
|
||||
new Vector3(-1534.98828125, -3028.916748046875, 14.451109886169434),
|
||||
new Vector3(-1182.960205078125, -3236.542724609375, 67.93492126464844),
|
||||
new Vector3(942.8041381835938, -2997.95751953125, 323.1705322265625),
|
||||
new Vector3(2459.114501953125, -525.8928833007812, 409.09002685546875),
|
||||
new Vector3(2764.611572265625, 1482.853271484375, 457.73944091796875),
|
||||
new Vector3(3485.380615234375, 3652.9619140625, 343.3283996582031),
|
||||
new Vector3(2652.611572265625, 4737.7958984375, 206.23399353027344),
|
||||
new Vector3(2043.8521728515625, 4769.595703125, 42.007118225097656),
|
||||
new Vector3(2134.332763671875, 4781.857421875, 41.900352478027344),
|
||||
new Vector3(1943.1544189453125, 4721.03125, 57.76427459716797),
|
||||
new Vector3(1749.4105224609375, 3790.8955078125, 194.40440368652344),
|
||||
new Vector3(1203.5526123046875, 2707.182373046875, 342.80145263671875),
|
||||
new Vector3(-377.686279296875, 1256.92578125, 532.7467651367188),
|
||||
new Vector3(-820.6907958984375, -412.96466064453125, 311.0726013183594),
|
||||
new Vector3(-1073.534912109375, -1704.798583984375, 94.05522155761719),
|
||||
new Vector3(-1686.30126953125, -2815.478759765625, 14.87234115600586),
|
||||
new Vector3(-1617.498291015625, -2982.41259765625, 14.883989334106445),
|
||||
}
|
||||
},
|
||||
{ 2,
|
||||
new List<Vector3>()
|
||||
{
|
||||
new Vector3(-1463.965576171875, -2875.571533203125, 14.882678031921387),
|
||||
new Vector3(-981.0889282226562, -3122.533203125, 56.10537338256836),
|
||||
new Vector3(-341.6023254394531, -2016.779541015625, 262.1709899902344),
|
||||
new Vector3(-1446.6815185546875, -894.4887084960938, 321.3404846191406),
|
||||
new Vector3(-3151.909912109375, 979.1404418945312, 335.3139953613281),
|
||||
new Vector3(-1309.160888671875, 4903.9140625, 388.6031494140625),
|
||||
new Vector3(31.35175895690918, 3690.413330078125, 333.4454345703125),
|
||||
new Vector3(-948.346923828125, 2766.284912109375, 239.0842742919922),
|
||||
new Vector3(-2312.5068359375, 3033.903076171875, 33.7471923828125),
|
||||
new Vector3(-2132.787109375, 3265.840087890625, 33.74031448364258),
|
||||
new Vector3(-2331.76611328125, 3148.581298828125, 33.7597541809082),
|
||||
new Vector3(-2564.848876953125, 2369.27783203125, 182.68736267089844),
|
||||
new Vector3(-1833.041259765625, 832.1589965820312, 398.28863525390625),
|
||||
new Vector3(-878.19384765625, -904.84521484375, 284.2839050292969),
|
||||
new Vector3(-1124.624755859375, -1821.9208984375, 74.77794647216797),
|
||||
new Vector3(-1631.8602294921875, -2720.09814453125, 14.873514175415039),
|
||||
new Vector3(-1543.793701171875, -2829.399169921875, 14.899491310119629),
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
public PilotJob()
|
||||
{
|
||||
JobStart += PilotJob_JobStart;
|
||||
JobStop += _JobStop;
|
||||
}
|
||||
|
||||
private void PilotJob_JobStart(Player player)
|
||||
private void _JobStop(Player player)
|
||||
{
|
||||
/*List<String> listRouteTexts = new List<string>();
|
||||
List<String> listRouteTexts2 = new List<string>();
|
||||
if (!playerVehiclePair.ContainsKey(player))
|
||||
return;
|
||||
|
||||
Vehicle veh = player.Vehicle;
|
||||
playerVehiclePair[player].Delete();
|
||||
playerVehiclePair.Remove(player);
|
||||
}
|
||||
|
||||
if ((VehicleHash)veh.Model == VehicleHash.Velum || (VehicleHash)veh.Model == VehicleHash.Velum2)
|
||||
{
|
||||
listRouteTexts2.Add("Route 4");
|
||||
listRouteTexts2.Add("Route 5");
|
||||
listRouteTexts2.Add("Route 6");
|
||||
public string getSkill(int skillPoints)
|
||||
{
|
||||
if (skillPoints == SKILL_BEGINNER)
|
||||
return BEGINNER;
|
||||
else if (skillPoints == SKILL_INTERMEDIATE)
|
||||
return INTERMEDIATE;
|
||||
|
||||
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts2));
|
||||
}
|
||||
else
|
||||
{
|
||||
listRouteTexts.Add("Route 1");
|
||||
listRouteTexts.Add("Route 2");
|
||||
listRouteTexts.Add("Route 3");
|
||||
return "none";
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}*/
|
||||
private uint getPlayerJobVehicle(string type)
|
||||
{
|
||||
if (type == BEGINNER)
|
||||
return VEHICLE_BEGINNER;
|
||||
else if (type == INTERMEDIATE)
|
||||
return VEHICLE_INTERMEDIATE;
|
||||
else if (type == PROFESSIONAL)
|
||||
return VEHICLE_PROFESSIONAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
[RemoteEvent("startPilotRoute")]
|
||||
public void StartPilotRoute(Player player, string type)
|
||||
public void StartPilotRoute(Player player, int skillPoints)
|
||||
{
|
||||
Vehicle veh = player.Vehicle;
|
||||
if (player.VehicleSeat == 0)
|
||||
string type = getSkill(skillPoints);
|
||||
|
||||
List<Vector3> selectedRoute = new List<Vector3>();
|
||||
Random random = new Random();
|
||||
Vector3 spawnPoint = null;
|
||||
float heading = 0;
|
||||
|
||||
if (type == BEGINNER)
|
||||
{
|
||||
if (type == "RouteStart")
|
||||
{
|
||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
|
||||
{
|
||||
Random rnd = new Random();
|
||||
int rroute = rnd.Next(1, 3);
|
||||
switch (rroute)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route1, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 1");
|
||||
player.SetData("Route", "Skill1Route1");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route2, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 2");
|
||||
player.SetData("Route", "Skill1Route2");
|
||||
break;
|
||||
}
|
||||
/*case 3:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route3, 0, 26, 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, 3);
|
||||
switch (rroute)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route1, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 1");
|
||||
player.SetData("Route", "Skill2Route1");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route2, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 2");
|
||||
player.SetData("Route", "Skill2Route2");
|
||||
break;
|
||||
}
|
||||
/*case 3:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route3, 0, 26, 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");
|
||||
}*/
|
||||
spawnPoint = BEGINNER_SPAWNS.Keys.ToList()[spawnIndex++ % BEGINNER_SPAWNS.Count];
|
||||
heading = BEGINNER_SPAWNS[spawnPoint];
|
||||
selectedRoute = ROUTE_BEGINNER.GetValueOrDefault(random.Next(1, ROUTE_BEGINNER.Count));
|
||||
}
|
||||
else if (type == INTERMEDIATE)
|
||||
{
|
||||
spawnPoint = INTERMEDIATE_SPAWNS.Keys.ToList()[spawnIndex++ % INTERMEDIATE_SPAWNS.Count];
|
||||
heading = INTERMEDIATE_SPAWNS[spawnPoint];
|
||||
selectedRoute = ROUTE_INTERMEDIATE.GetValueOrDefault(random.Next(1, ROUTE_INTERMEDIATE.Count));
|
||||
}
|
||||
|
||||
if (selectedRoute.Count is 0)
|
||||
{
|
||||
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} has empty route Vector3 List.");
|
||||
return;
|
||||
}
|
||||
if (spawnPoint is null)
|
||||
{
|
||||
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} has empty spawn point.");
|
||||
return;
|
||||
}
|
||||
|
||||
Vehicle vehicle = NAPI.Vehicle.CreateVehicle(getPlayerJobVehicle(type), spawnPoint, heading, 124, 0, "JOB");
|
||||
vehicle.NumberPlate = "JOB-" + vehicle.Id;
|
||||
|
||||
if (vehicle is null)
|
||||
{
|
||||
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} got no Vehicle set.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!playerRouteCurrent.ContainsKey(player.Name))
|
||||
playerRouteCurrent.Add(player.Name, new List<Vector3>());
|
||||
|
||||
playerRouteCurrent[player.Name] = selectedRoute;
|
||||
|
||||
if (playerVehiclePair.ContainsKey(player))
|
||||
{
|
||||
if (playerVehiclePair[player] != null)
|
||||
playerVehiclePair[player].Delete();
|
||||
playerVehiclePair.Remove(player);
|
||||
}
|
||||
|
||||
playerVehiclePair.Add(player, vehicle);
|
||||
player.SetIntoVehicle(vehicle.Handle, 0);
|
||||
CheckPointHandle.StartCheckPointRoute(player, selectedRoute, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||
}
|
||||
|
||||
public static void payWage(Player jobber, int wage)
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
@@ -277,64 +264,113 @@ namespace ReallifeGamemode.Server.Job
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("PilotLetzterCheckpoint")]
|
||||
public static void PilotLetzterCheckpoint(Player player)
|
||||
public string getPlayerRouteType(Player player)
|
||||
{
|
||||
PilotJob c = new PilotJob();
|
||||
Vehicle v = player.Vehicle;
|
||||
c.StartPilotRoute(player, "RouteStart");
|
||||
/*if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
|
||||
if (!playerRouteCurrent.ContainsKey(player.Name))
|
||||
return "none";
|
||||
|
||||
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||
|
||||
if (ROUTE_BEGINNER.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||
return BEGINNER;
|
||||
else if (ROUTE_INTERMEDIATE.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||
return INTERMEDIATE;
|
||||
|
||||
return "none";
|
||||
}
|
||||
|
||||
public int getSkillFromType(string type)
|
||||
{
|
||||
if (type == BEGINNER)
|
||||
return SKILL_BEGINNER;
|
||||
else if (type == INTERMEDIATE)
|
||||
return SKILL_INTERMEDIATE;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public override void LastCheckpoint(Player player)
|
||||
{
|
||||
string type = getPlayerRouteType(player);
|
||||
int skill = getSkillFromType(type);
|
||||
if (skill == -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;
|
||||
}
|
||||
}
|
||||
StopJob(player, true);
|
||||
return;
|
||||
}
|
||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2)
|
||||
|
||||
StartPilotRoute(player, skill);
|
||||
}
|
||||
|
||||
public override void StartJobEndTimer(Player player)
|
||||
{
|
||||
if (!playerVehiclePair.ContainsKey(player))
|
||||
return;
|
||||
|
||||
if (JobManager.playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
Random rnd = new Random();
|
||||
int rroute = rnd.Next(1, 4);
|
||||
switch (rroute)
|
||||
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
PlayerTimer playerTimer = new PlayerTimer(player, playerVehiclePair[player], 30000);
|
||||
playerTimer.Elapsed += JobTimerElapsed;
|
||||
JobManager.playerTimersJobVehicleRespawn[player] = playerTimer;
|
||||
player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,");
|
||||
player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!");
|
||||
}
|
||||
|
||||
private void JobTimerElapsed(Player player, Vehicle vehicle)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
StopJob(player, !player.GetData<bool>("isDead"));
|
||||
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||
JobManager.playerTimersJobVehicleRespawn.Remove(player);
|
||||
});
|
||||
}
|
||||
|
||||
public override bool CheckVehicle(Player player, Vehicle vehicle)
|
||||
{
|
||||
if (!playerVehiclePair.ContainsKey(player))
|
||||
return false;
|
||||
|
||||
if (playerVehiclePair[player] == vehicle)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public class PilotJobEvents : Script
|
||||
{
|
||||
[RemoteEvent("PILOT:InCheckpoint")]
|
||||
public void PilotInCheckpoint(Player player)
|
||||
{
|
||||
if (!PilotJob.playerVehiclePair.ContainsKey(player) || !PilotJob.playerRouteCurrent.ContainsKey(player.Name))
|
||||
return;
|
||||
|
||||
if (PilotJob.playerVehiclePair[player].Model is PilotJob.VEHICLE_BEGINNER)
|
||||
payWage(player, PilotJob.WAGE_BEGINNER / PilotJob.playerRouteCurrent[player.Name].Count);
|
||||
else if (PilotJob.playerVehiclePair[player].Model is PilotJob.VEHICLE_INTERMEDIATE)
|
||||
payWage(player, PilotJob.WAGE_INTERMEDIATE / PilotJob.playerRouteCurrent[player.Name].Count);
|
||||
}
|
||||
|
||||
private void payWage(Player player, int wage)
|
||||
{
|
||||
using var dbContext = new DatabaseContext();
|
||||
User user = player.GetUser(dbContext);
|
||||
|
||||
if (player.VehicleSeat == 0)
|
||||
{
|
||||
user.Wage += wage;
|
||||
user.PilotSkill++;
|
||||
if (user.PilotSkill == BusDriverJob.SKILL_INTERMEDIATE)
|
||||
{
|
||||
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;
|
||||
}
|
||||
player.SendChatMessage($"~y~[Job]: ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!");
|
||||
player.SendChatMessage($"~y~[Job]: ~w~Du kannst jetzt auch mit dem Coach fahren!");
|
||||
}
|
||||
}*/
|
||||
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user