Bus and Pilot Overhaul

This commit is contained in:
2021-04-10 23:23:46 +02:00
parent 62b3f7ced9
commit 167859817e
5 changed files with 134 additions and 221 deletions

View File

@@ -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>();

View File

@@ -44,7 +44,7 @@ namespace ReallifeGamemode.Server.Job
_inJob.Add(player);
jobPlayer.Add(player);
ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job (~o~{this.Name}~s~) gestartet.");
ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet.");
JobStart?.Invoke(player);
}
@@ -57,7 +57,7 @@ namespace ReallifeGamemode.Server.Job
if (quit)
{
ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job (~o~{this.Name}~s~) beendet.");
ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet.");
player.Position = JobManager.playerJobStartPosition[player];
}

View File

@@ -152,6 +152,8 @@ namespace ReallifeGamemode.Server.Job
if (!playerVehiclePair.ContainsKey(player))
return;
CheckPointHandle.DeleteCheckpoints(player);
playerVehiclePair[player].Delete();
playerVehiclePair.Remove(player);
}
@@ -238,32 +240,6 @@ namespace ReallifeGamemode.Server.Job
CheckPointHandle.StartCheckPointRoute(player, selectedRoute, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "PILOT:InCheckpoint"); //6, 23, 25, 26, 27, 28
}
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: ~s~Du hast nun ~g~Skill-Level 2 ~w~erreicht!");
jobber.SendChatMessage($"~y~Job: ~s~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.");
}
}
}
public string getPlayerRouteType(Player player)
{
if (!playerRouteCurrent.ContainsKey(player.Name))
@@ -271,9 +247,9 @@ 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;
return "none";
@@ -314,8 +290,8 @@ namespace ReallifeGamemode.Server.Job
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!");
//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)
@@ -365,8 +341,8 @@ namespace ReallifeGamemode.Server.Job
user.PilotSkill++;
if (user.PilotSkill == 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 Velum fliegen!");
}
dbContext.SaveChanges();