Bus and Pilot Overhaul
This commit is contained in:
@@ -269,9 +269,7 @@ namespace ReallifeGamemode.Server.Job
|
||||
if (!playerVehiclePair.ContainsKey(player))
|
||||
return;
|
||||
|
||||
if (playerRouteCurrent.ContainsKey(player.Name))
|
||||
playerRouteCurrent.Remove(player.Name);
|
||||
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
playerVehiclePair[player].Delete();
|
||||
playerVehiclePair.Remove(player);
|
||||
}
|
||||
@@ -283,16 +281,48 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||
|
||||
if (ROUTE_BEGINNER.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||
if (ROUTE_BEGINNER.Values.Where(v => v.VectorEquals(selectedRoute)).Count() != 0)
|
||||
return BEGINNER;
|
||||
else if (ROUTE_INTERMEDIATE.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||
else if (ROUTE_INTERMEDIATE.Values.Where(v => v.VectorEquals(selectedRoute)).Count() != 0)
|
||||
return INTERMEDIATE;
|
||||
else if (ROUTE_PROFESSIONAL.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||
else if (ROUTE_PROFESSIONAL.Values.Where(v => v.VectorEquals(selectedRoute)).Count() != 0)
|
||||
return PROFESSIONAL;
|
||||
|
||||
return "none";
|
||||
}
|
||||
|
||||
public int getPlayerRouteInex(Player player)
|
||||
{
|
||||
if (!playerRouteCurrent.ContainsKey(player.Name))
|
||||
return -1;
|
||||
|
||||
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||
|
||||
for (int i = 1; i < 100; i++)
|
||||
{
|
||||
if (!ROUTE_BEGINNER.ContainsKey(i) && !ROUTE_INTERMEDIATE.ContainsKey(i) && !ROUTE_PROFESSIONAL.ContainsKey(i))
|
||||
break;
|
||||
|
||||
if (ROUTE_BEGINNER.ContainsKey(i))
|
||||
{
|
||||
if (ROUTE_BEGINNER[i].VectorEquals(selectedRoute))
|
||||
return i;
|
||||
}
|
||||
if (ROUTE_INTERMEDIATE.ContainsKey(i))
|
||||
{
|
||||
if (ROUTE_INTERMEDIATE[i].VectorEquals(selectedRoute))
|
||||
return i;
|
||||
}
|
||||
if (ROUTE_PROFESSIONAL.ContainsKey(i))
|
||||
{
|
||||
if (ROUTE_PROFESSIONAL[i].VectorEquals(selectedRoute))
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private uint getPlayerJobVehicle(Player player)
|
||||
{
|
||||
string type = getPlayerRouteType(player);
|
||||
@@ -315,39 +345,64 @@ namespace ReallifeGamemode.Server.Job
|
||||
if (type == PROFESSIONAL && user.BusSkill < SKILL_PROFESSIONAL) { player.TriggerEvent("MenuSelect:Error"); return; }
|
||||
|
||||
List<Vector3> selectedRoute = new List<Vector3>();
|
||||
int index = -1;
|
||||
|
||||
if (playerRouteCurrent.ContainsKey(player.Name))
|
||||
{
|
||||
selectedRoute = playerRouteCurrent[player.Name];
|
||||
index = getPlayerRouteInex(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
Random random = new Random();
|
||||
if (type == BEGINNER)
|
||||
{
|
||||
if (playerRoutePair1.ContainsKey(player.Name))
|
||||
selectedRoute = playerRoutePair1[player.Name];
|
||||
else
|
||||
selectedRoute = ROUTE_BEGINNER.GetValueOrDefault(random.Next(1, ROUTE_BEGINNER.Count));
|
||||
}
|
||||
else if (type == INTERMEDIATE)
|
||||
{
|
||||
if (playerRoutePair2.ContainsKey(player.Name))
|
||||
selectedRoute = playerRoutePair2[player.Name];
|
||||
else
|
||||
selectedRoute = ROUTE_INTERMEDIATE.GetValueOrDefault(random.Next(1, ROUTE_INTERMEDIATE.Count));
|
||||
}
|
||||
else if (type == PROFESSIONAL)
|
||||
{
|
||||
if (playerRoutePair3.ContainsKey(player.Name))
|
||||
selectedRoute = playerRoutePair3[player.Name];
|
||||
else
|
||||
selectedRoute = ROUTE_PROFESSIONAL.GetValueOrDefault(random.Next(1, ROUTE_PROFESSIONAL.Count));
|
||||
}
|
||||
|
||||
playerRouteCurrent.Add(player.Name, selectedRoute);
|
||||
index = random.Next(1, 8);
|
||||
}
|
||||
|
||||
if (type == BEGINNER)
|
||||
{
|
||||
index %= ROUTE_BEGINNER.Count;
|
||||
if (playerRoutePair1.ContainsKey(player.Name))
|
||||
{
|
||||
selectedRoute = playerRoutePair1[player.Name];
|
||||
}
|
||||
else
|
||||
{
|
||||
selectedRoute = ROUTE_BEGINNER.GetValueOrDefault(index);
|
||||
playerRoutePair1.Add(player.Name, selectedRoute);
|
||||
}
|
||||
}
|
||||
else if (type == INTERMEDIATE)
|
||||
{
|
||||
index %= ROUTE_INTERMEDIATE.Count;
|
||||
|
||||
if (playerRoutePair2.ContainsKey(player.Name))
|
||||
{
|
||||
selectedRoute = playerRoutePair2[player.Name];
|
||||
}
|
||||
else
|
||||
{
|
||||
selectedRoute = ROUTE_INTERMEDIATE.GetValueOrDefault(index);
|
||||
playerRoutePair2.Add(player.Name, selectedRoute);
|
||||
}
|
||||
}
|
||||
else if (type == PROFESSIONAL)
|
||||
{
|
||||
index %= ROUTE_PROFESSIONAL.Count;
|
||||
|
||||
if (playerRoutePair3.ContainsKey(player.Name))
|
||||
{
|
||||
selectedRoute = playerRoutePair3[player.Name];
|
||||
}
|
||||
else
|
||||
{
|
||||
selectedRoute = ROUTE_PROFESSIONAL.GetValueOrDefault(index);
|
||||
playerRoutePair3.Add(player.Name, selectedRoute);
|
||||
}
|
||||
}
|
||||
|
||||
if (playerRouteCurrent.ContainsKey(player.Name))
|
||||
playerRouteCurrent.Remove(player.Name);
|
||||
playerRouteCurrent.Add(player.Name, selectedRoute);
|
||||
|
||||
if (selectedRoute.Count is 0)
|
||||
{
|
||||
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} has empty route Vector3 List.");
|
||||
@@ -375,154 +430,18 @@ namespace ReallifeGamemode.Server.Job
|
||||
player.SetIntoVehicle(vehicle.Handle, 0);
|
||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||
player.StartCheckPointRoute(selectedRoute, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
|
||||
#region delete
|
||||
|
||||
/*
|
||||
Vehicle veh = player.Vehicle;
|
||||
if (player.VehicleSeat == 0)
|
||||
{
|
||||
if (type == "RouteStart")
|
||||
{
|
||||
if ((VehicleHash)veh.Model == VehicleHash.Bus)
|
||||
{
|
||||
Random rnd = new Random();
|
||||
int rroute = rnd.Next(1, 5);
|
||||
switch (rroute)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route1, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 1");
|
||||
player.SetData("Route", "Skill1Route1");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route2, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 2");
|
||||
player.SetData("Route", "Skill1Route2");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route3, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 3");
|
||||
player.SetData("Route", "Skill1Route3");
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route4, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 4");
|
||||
player.SetData("Route", "Skill1Route4");
|
||||
break;
|
||||
}
|
||||
}
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 1, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 0, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 1, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 2, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 3, false);
|
||||
}
|
||||
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
||||
{
|
||||
Random rnd = new Random();
|
||||
int rroute = rnd.Next(1, 5);
|
||||
switch (rroute)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route1, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 1");
|
||||
player.SetData("Route", "Skill2Route1");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route2, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 2");
|
||||
player.SetData("Route", "Skill2Route2");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route3, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 3");
|
||||
player.SetData("Route", "Skill2Route3");
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route4, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 4");
|
||||
player.SetData("Route", "Skill2Route3");
|
||||
break;
|
||||
}
|
||||
}
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 0, false);
|
||||
}
|
||||
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
||||
{
|
||||
Random rnd = new Random();
|
||||
int rroute = rnd.Next(1, 4);
|
||||
switch (rroute)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill3Route1, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 1");
|
||||
player.SetData("Route", "Skill3Route1");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill3Route2, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 2");
|
||||
player.SetData("Route", "Skill3Route2");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill3Route3, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 3");
|
||||
player.SetData("Route", "Skill3Route3");
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, Skill3Route4, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||
player.SendChatMessage("~y~Job: ~w~Route wurde gesetzt: ~g~Route 4");
|
||||
player.SetData("Route", "Skill3Route4");
|
||||
break;
|
||||
}
|
||||
}
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 2, false);
|
||||
player.TriggerEvent("CLIENT:SetDoorShut", 3, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#endregion delete
|
||||
if (index != -1)
|
||||
player.SendChatMessage($"~y~[JOB]: ~w~Dir wurde ~g~ Route {index}~w~ zugeteilt.");
|
||||
}
|
||||
|
||||
public override void LastCheckpoint(Player player)
|
||||
{
|
||||
Vehicle v = player.Vehicle;
|
||||
player.SendChatMessage("~y~[Job]: ~w~Die neue Route lädt. Bitte warten...");
|
||||
player.SendChatMessage("~y~[JOB]: ~w~Die neue Route lädt. Bitte warten...");
|
||||
string type = getPlayerRouteType(player);
|
||||
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
string type = getPlayerRouteType(player);
|
||||
|
||||
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||
|
||||
if (type == BEGINNER)
|
||||
playerRoutePair1.Remove(player.Name);
|
||||
else if (type == INTERMEDIATE)
|
||||
@@ -530,7 +449,6 @@ namespace ReallifeGamemode.Server.Job
|
||||
else if (type == PROFESSIONAL)
|
||||
playerRoutePair3.Remove(player.Name);
|
||||
|
||||
playerRouteCurrent.Remove(player.Name);
|
||||
BusDriverJob job = JobManager.GetJob<BusDriverJob>();
|
||||
StartBusRoute(player, type);
|
||||
}, delayTime: 10000);
|
||||
@@ -699,13 +617,13 @@ namespace ReallifeGamemode.Server.Job
|
||||
user.BusSkill++;
|
||||
if (user.BusSkill == BusDriverJob.SKILL_INTERMEDIATE)
|
||||
{
|
||||
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!");
|
||||
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!");
|
||||
}
|
||||
if (user.BusSkill == BusDriverJob.SKILL_PROFESSIONAL)
|
||||
{
|
||||
player.SendChatMessage($"~y~[Job]: ~w~Du hast nun die Route ~g~{BusDriverJob.PROFESSIONAL} ~w~freigeschaltet!");
|
||||
player.SendChatMessage($"~y~[Job]: ~w~Du kannst jetzt auch mit dem Tourbus fahren!");
|
||||
player.SendChatMessage($"~y~[JOB]: ~w~Du hast nun die Route ~g~{BusDriverJob.PROFESSIONAL} ~w~freigeschaltet!");
|
||||
player.SendChatMessage($"~y~[JOB]: ~w~Du kannst jetzt auch mit dem Tourbus fahren!");
|
||||
}
|
||||
|
||||
BusDriverJob job = JobManager.GetJob<BusDriverJob>();
|
||||
|
||||
Reference in New Issue
Block a user