OverHaul Bus and Pilot TEST
This commit is contained in:
@@ -19,7 +19,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
private static List<JobBase> _jobs = new List<JobBase>();
|
||||
|
||||
private Dictionary<Player, Vector3> playerJobStartPosition = new Dictionary<Player, Vector3>();
|
||||
public static Dictionary<Player, Vector3> playerJobStartPosition = new Dictionary<Player, Vector3>();
|
||||
|
||||
public static void LoadJobs()
|
||||
{
|
||||
@@ -160,68 +160,15 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
if (u.JobId == null) return;
|
||||
|
||||
JobBase job = GetJob(u.JobId.Value);
|
||||
if (veh.GetServerVehicle() is JobVehicle vehJ && player.VehicleSeat == 0)
|
||||
{
|
||||
if (vehJ.GetJob().GetUsersInJob().Contains(player))
|
||||
{
|
||||
if (u.JobId != 2)
|
||||
{
|
||||
if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
|
||||
{
|
||||
player.SetData("DelayTime", 30000);
|
||||
veh.SetData("timerJobVehicleRespawn", true);
|
||||
player.SetData("LastVehicle", veh);
|
||||
player.SetData("LastSVehicle", sVeh);
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
PlayerTimer playerTimer = new PlayerTimer(player, veh, 30000);
|
||||
playerTimer.Elapsed += PlayerTimer_Elapsed;
|
||||
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!");
|
||||
//job.StopJob(player);
|
||||
return;
|
||||
}
|
||||
if (player.HasData("JobVehicleFrei") && player.GetData<bool>("JobVehicleFrei") == true)
|
||||
{
|
||||
player.SetData("JobVehicleFrei", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (u.JobId == 2)
|
||||
{
|
||||
if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
|
||||
{
|
||||
player.SetData("DelayTime", 60000 * 5);
|
||||
veh.SetData("timerJobVehicleRespawn", true);
|
||||
player.SetData("LastVehicle", veh);
|
||||
player.SetData("LastSVehicle", sVeh);
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
PlayerTimer playerTimer = new PlayerTimer(player, veh, 60000 * 5);
|
||||
playerTimer.Elapsed += PlayerTimer_Elapsed;
|
||||
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!");
|
||||
//job.StopJob(player);
|
||||
return;
|
||||
}
|
||||
if (player.HasData("JobVehicleFrei") && player.GetData<bool>("JobVehicleFrei") == true)
|
||||
{
|
||||
player.SetData("JobVehicleFrei", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JobBase job = GetJob(u.JobId ?? -1);
|
||||
|
||||
if (job == null)
|
||||
return;
|
||||
|
||||
job.StartJobEndTimer(player);
|
||||
}
|
||||
|
||||
private void PlayerTimer_Elapsed(Player player, Vehicle veh)
|
||||
public void PlayerTimer_Elapsed(Player player, Vehicle veh)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
@@ -311,44 +258,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
|
||||
job.StopJob(player);
|
||||
if (player.GetUser().JobId == 1)//Taxifahrer
|
||||
{
|
||||
//player.Position = new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471);
|
||||
//player.Heading = (-171.50303649902344f);
|
||||
player.Position = playerJobStartPosition[player];
|
||||
}
|
||||
if (player.GetUser().JobId == 2)//Müllmann
|
||||
{
|
||||
player.Position = new Vector3(485.4114685058594, -2173.25, 5.918273448944092);
|
||||
player.Heading = (-15.922085762023926f);
|
||||
}
|
||||
if (player.GetUser().JobId == 3)//Pilot
|
||||
{
|
||||
if (player.HasData("PilotenBase") || player.GetData<int>("PilotenBase") == 1) //Sandyshores
|
||||
{
|
||||
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
||||
player.Heading = (-154.65234375f);
|
||||
player.GetUser().SetData("PilotenBase", 0);
|
||||
}
|
||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2) //LS Airport
|
||||
{
|
||||
player.Position = new Vector3(-1622.48, -3151.58, 13);
|
||||
player.Heading = (48.44f);
|
||||
player.GetUser().SetData("PilotenBase", 0);
|
||||
}
|
||||
}
|
||||
if (player.GetUser().JobId == 4)//Busfahrer
|
||||
{
|
||||
player.Position = new Vector3(-535.46, -2144.97, 5.95);
|
||||
player.Heading = (57.03f);
|
||||
}
|
||||
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
|
||||
if (LastVehicle != null && job.Id != GetJob<RefuseCollectorJob>().Id)
|
||||
{
|
||||
LastVehicle.ResetData("timerJobVehicleRespawn");
|
||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
|
||||
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
||||
}
|
||||
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
@@ -360,181 +270,15 @@ namespace ReallifeGamemode.Server.Managers
|
||||
[ServerEvent(Event.PlayerEnterVehicle)]
|
||||
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
|
||||
{
|
||||
ServerVehicle sVeh = veh.GetServerVehicle();
|
||||
if (sVeh == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (seat != 0)
|
||||
{
|
||||
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
|
||||
{
|
||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
||||
|
||||
Player driver = veh.GetDriver();
|
||||
if (driver == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!driver.HasData("DriverPrice")) return;
|
||||
int taxiPrice = driver.GetData<int>("DriverPrice");
|
||||
float km = 0;
|
||||
if (!driver.HasData("FareKm")) { driver.SetData<float>("FareKm", km); }
|
||||
km = driver.GetData<float>("FareKm");
|
||||
if (driver.HasData("Passager")) return;
|
||||
driver.SetData<int>("Passager", player.GetUser().Id);
|
||||
driver.SetData<bool>("hasPassager", true);
|
||||
/* using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
int amount = (int)Math.Round(km * taxiPrice);
|
||||
User contractUser = player.GetUser(dbContext);
|
||||
contractUser.Handmoney -= amount;
|
||||
driver.GetUser(dbContext).Wage += amount;
|
||||
dbContext.SaveChanges();
|
||||
//contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney);
|
||||
} */
|
||||
player.TriggerEvent("CLIENT:startCustomerFare", taxiPrice, km);
|
||||
|
||||
var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name);
|
||||
if (taxiContracts.Count() == 0) return;
|
||||
|
||||
var contract = taxiContracts.First();
|
||||
taxiJob.TaxiContracts.Remove(contract);
|
||||
|
||||
if (driver != null && contract.Driver != null && contract.Driver.Handle != veh.GetDriver().Handle)
|
||||
{
|
||||
ChatService.SendMessage(contract.Driver, $"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet.");
|
||||
ChatService.SendMessage(player, $"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet.");
|
||||
}
|
||||
}
|
||||
}
|
||||
JobBase job = GetJob(player.GetUser().JobId ?? -1);
|
||||
if (job?.GetUsersInJob()?.Contains(player) ?? false)
|
||||
|
||||
if (job != null && job.GetUsersInJob().Contains(player) && job.CheckVehicle(player, veh) && seat == 0)
|
||||
{
|
||||
if (sVeh != null)
|
||||
{
|
||||
if (sVeh is JobVehicle JV)
|
||||
{
|
||||
if (player.GetUser().JobId == 3 || player.GetUser().JobId == 4)
|
||||
{
|
||||
if (seat == 0)
|
||||
{
|
||||
JobVehicle c = new JobVehicle();
|
||||
if (JV.GetJob().GetUsersInJob().Contains(player))
|
||||
{
|
||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
||||
if (player.HasData("LastVehicle") && veh == player.GetData<Vehicle>("LastVehicle"))
|
||||
{
|
||||
veh.SetData("timerJobVehicleRespawn", false);
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player.GetData<bool>("HatRoute") == true)
|
||||
{
|
||||
StopJob(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
job.StopJob(player);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (player.GetUser().JobId == 2)
|
||||
{
|
||||
JobVehicle c = new JobVehicle();
|
||||
if (JV.GetJob().GetUsersInJob().Contains(player))
|
||||
{
|
||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
||||
if (player.HasData("LastVehicle") && veh == player.GetData<Vehicle>("LastVehicle"))
|
||||
{
|
||||
veh.SetData("timerJobVehicleRespawn", false);
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player.GetData<bool>("HatRoute") == true)
|
||||
{
|
||||
StopJob(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
job.StopJob(player);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
if (!player.HasData("LastVehicle"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (player.GetData<Vehicle>("LastVehicle") == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
||||
}
|
||||
}
|
||||
else if (sVeh! is JobVehicle || veh != null)
|
||||
{
|
||||
job.StopJob(player);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
||||
}
|
||||
else if (sVeh is JobVehicle JV)
|
||||
{
|
||||
if (JV.JobId != player.GetUser().JobId)
|
||||
{
|
||||
job.StopJob(player);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
||||
}
|
||||
}
|
||||
if (!playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
return;
|
||||
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
playerTimersJobVehicleRespawn.Remove(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -559,29 +303,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
[ServerEvent(Event.PlayerExitVehicle)]
|
||||
public void JobManagerPlayerExitVehicle2(Player player, Vehicle veh)
|
||||
{
|
||||
ServerVehicle sVeh = veh.GetServerVehicle();
|
||||
if (sVeh == null) return;
|
||||
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt vom Taxi aus
|
||||
{
|
||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
||||
if (veh.Occupants.Count == 0) return;
|
||||
Player driver = veh.GetDriver();
|
||||
if (driver == null) return;
|
||||
if (player.GetUser().Id != driver.GetData<int>("Passager")) { player.TriggerEvent("CLIENT:cancelFare"); return; }
|
||||
player.TriggerEvent("CLIENT:cancelFareCustomer");
|
||||
driver.TriggerEvent("CLIENT:resetFareClock");
|
||||
driver.ResetData("Passager");
|
||||
driver.ResetData("hasPassager");
|
||||
driver.SetData<float>("FareKm", 0);
|
||||
driver.TriggerEvent("CLIENT:cancelFare");
|
||||
driver.TriggerEvent("CLIENT:startFare");
|
||||
|
||||
foreach (Player occupant in veh.Occupants)
|
||||
{
|
||||
if (occupant == driver) continue;
|
||||
occupant.WarpOutOfVehicle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")]
|
||||
|
||||
@@ -162,13 +162,17 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
Position = new Vector3(485.4114685058594, -2173.25, 5.918273448944092),
|
||||
jobId = 2,
|
||||
Skill = 0
|
||||
Skill = 0,
|
||||
eventOnStart = false,
|
||||
eventName = ""
|
||||
};
|
||||
JobPoint jobPointPilot = new JobPoint()
|
||||
{
|
||||
Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406),
|
||||
jobId = 3,
|
||||
Skill = 0
|
||||
Skill = 0,
|
||||
eventOnStart = false,
|
||||
eventName = ""
|
||||
};
|
||||
JobPoint jobPointPilot2 = new JobPoint()
|
||||
{
|
||||
@@ -392,6 +396,8 @@ public class JobPoint
|
||||
public Vector3 Position { get; set; }
|
||||
public int jobId { get; set; }
|
||||
public int Skill { get; set; }
|
||||
public bool eventOnStart { get; set; }
|
||||
public string eventName { get; set; }
|
||||
}
|
||||
|
||||
public class ElevatorPoint
|
||||
|
||||
Reference in New Issue
Block a user