Änderung Busfahrer/Pilot Bugs fix siehe Forenbeitrag

This commit is contained in:
Mac_Slash
2020-05-04 03:04:44 +02:00
parent 4dd9afd355
commit 1937846fb2
16 changed files with 498 additions and 262 deletions

View File

@@ -1,4 +1,4 @@
using GTANetworkAPI;
using GTANetworkAPI;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
@@ -20,8 +20,6 @@ namespace ReallifeGamemode.Server.Managers
{
private static List<JobBase> _jobs = new List<JobBase>();
private static System.Timers.Timer timerJobVehicleRespawn = new System.Timers.Timer(30000); //30 Sekunden Timer JobVehicleRespawn
public static void LoadJobs()
{
IEnumerable<Type> jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract);
@@ -48,6 +46,8 @@ namespace ReallifeGamemode.Server.Managers
public static List<JobBase> GetJobs() => _jobs.OrderBy(j => j.Id).ToList();
public Dictionary<Player, PlayerTimer> playerTimersJobVehicleRespawn = new Dictionary<Player, PlayerTimer>();
[RemoteEvent("CLIENT:JobCenter_CancelJob")]
public void CancelJobEvent(Player player)
{
@@ -186,6 +186,7 @@ namespace ReallifeGamemode.Server.Managers
[ServerEvent(Event.PlayerExitVehicle)]
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
{
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
User u = player.GetUser();
if (u.JobId == null) return;
@@ -197,87 +198,90 @@ namespace ReallifeGamemode.Server.Managers
{
if (u.JobId != 2)
{
//timerJobVehicleRespawn.Start();
player.SetData("DelayTime", 30000);
veh.SetData("timerJobVehicleRespawn", true);
player.SetData("LastVehicle", veh);
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
/*timerJobVehicleRespawn.AutoReset = false;
timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed;*/
NAPI.Task.Run(() =>
if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
{
try
player.SetData("DelayTime", 30000);
veh.SetData("timerJobVehicleRespawn", true);
player.SetData("LastVehicle", veh);
player.SetData("LastSVehicle", sVeh);
if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
ChatService.SendMessage(player, "TimerAusgelöst");
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
if (vehJ.GetJob().GetUsersInJob().Contains(player))
{
if (veh != null)
{
job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
veh.ResetData("timerJobVehicleRespawn");
CheckPointHandle.DeleteCheckpoints(player);
ServerVehicleExtensions.Spawn(sVeh, veh);
if (player.GetData<bool>("isDead") == false)
{
if (player.GetUser().JobId == 1)//Taxifahrer
{
//VehicleManager.DeleteVehicle(v);
}
if (player.GetUser().JobId == 2)//Müllmann
{
//VehicleManager.DeleteVehicle(v);
}
if (player.GetUser().JobId == 3)//Pilot
{
if (!player.HasData("PilotenBase2") || player.GetData<bool>("PilotenBase2") == false) //Sandyshores
{
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
player.Heading = (-154.65234375f);
}
if (player.HasData("PilotenBase2") && player.GetData<bool>("PilotenBase2") == true) //LS Airport
{
player.Position = new Vector3(-1622.48, -3151.58, 13);
player.Heading = (48.44f);
}
}
if (player.GetUser().JobId == 4)//Busfahrer
{
player.Position = new Vector3(-535.46, -2144.97, 5.95);
player.Heading = (57.03f);
}
}
}
}
}
playerTimersJobVehicleRespawn[player].Stop();
}
catch (ArgumentNullException e)
{
player.SendChatMessage("Timer gekillt1.");
player.SendChatMessage($"{e} First exception caught.");
}
catch (Exception e)
{
player.SendChatMessage("Timer gekillt2.");
player.SendChatMessage($"{e} First exception caught.");
if (e.Data != null)
{
player.SendChatMessage("Timer gekillt3.");
player.SendChatMessage($"{e} First exception caught.");
}
}
}, delayTime: 30000);
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;
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;
}
}
}
}
}
private void PlayerTimer_Elapsed(Player player, Vehicle veh)
{
NAPI.Task.Run(() =>
{
//Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
Vehicle LastVehicle = veh;
JobBase job = GetJob(player.GetUser().JobId.Value);
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
if (vehJ.GetJob().GetUsersInJob().Contains(player))
{
if (LastVehicle != null)
{
LastVehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
CheckPointHandle.DeleteCheckpoints(player);
if (!player.HasData("isDead") || player.GetData<bool>("isDead") == false)
{
if (player.GetUser().JobId == 1)//Taxifahrer
{
//VehicleManager.DeleteVehicle(v);
}
if (player.GetUser().JobId == 2)//Müllmann
{
//VehicleManager.DeleteVehicle(v);
}
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);
}
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2) //LS Airport
{
player.Position = new Vector3(-1622.48, -3151.58, 13);
player.Heading = (48.44f);
}
}
if (player.GetUser().JobId == 4)//Busfahrer
{
player.Position = new Vector3(-535.46, -2144.97, 5.95);
player.Heading = (57.03f);
}
}
}
}
}
}
});
}
[RemoteEvent("CLIENT:Job_StopJob")]
public void StopJob(Player player)
{
@@ -298,8 +302,6 @@ namespace ReallifeGamemode.Server.Managers
VehicleStreaming.SetEngineState(player.Vehicle, false);
}
//if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
//Vehicle v = player.Vehicle;
job.StopJob(player);
/*if (player.GetUser().JobId == 1)//Taxifahrer
{
@@ -313,19 +315,6 @@ namespace ReallifeGamemode.Server.Managers
}
if (player.GetUser().JobId == 3)//Pilot
{
/*if (LastVehicle != null)
{
if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
{
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
player.Heading = (-154.65234375f);
}
if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2)
{
player.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
player.Heading = (60.65372848510742f);
}
}*/
if (player.HasData("PilotenBase") || player.GetData<int>("PilotenBase") == 1) //Sandyshores
{
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
@@ -341,19 +330,6 @@ namespace ReallifeGamemode.Server.Managers
}
if (player.GetUser().JobId == 4)//Busfahrer
{
/*if (LastVehicle != null)
{
if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach)
{
player.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373);
player.Heading = (17.64179039001465f);
}
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
{
player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
player.Heading = (-8.147048950195312f);
}
}*/
player.Position = new Vector3(-535.46, -2144.97, 5.95);
player.Heading = (57.03f);
}
@@ -363,79 +339,20 @@ namespace ReallifeGamemode.Server.Managers
LastVehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
ChatService.SendMessage(player, $"~y~[JOB]~s~ LastVehicle1: {LastVehicle}");
}
ChatService.SendMessage(player, $"~y~[JOB]~s~ LastVehicle2: {LastVehicle}");
if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
playerTimersJobVehicleRespawn[player].Stop();
}
CheckPointHandle.DeleteCheckpoints(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
}
public void Timer30000_Elapsed(object sender, ElapsedEventArgs e)
{
NAPI.Task.Run(() =>
{
NAPI.Pools.GetAllPlayers().ForEach(p =>
{
NAPI.Pools.GetAllVehicles().ForEach(v =>
{
Vehicle LastVehicle = p.GetData<Vehicle>("LastVehicle");
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
JobBase job = GetJob(p.GetUser().JobId.Value);
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
if (vehJ.GetJob().GetUsersInJob().Contains(p))
{
if (LastVehicle != null)
{
job.StopJob(p);
ChatService.SendMessage(p, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
LastVehicle.ResetData("timerJobVehicleRespawn");
CheckPointHandle.DeleteCheckpoints(p);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
if (p.GetData<bool>("isDead") == false)
{
if (p.GetUser().JobId == 1)//Taxifahrer
{
//VehicleManager.DeleteVehicle(v);
}
if (p.GetUser().JobId == 2)//Müllmann
{
//VehicleManager.DeleteVehicle(v);
}
if (p.GetUser().JobId == 3)//Pilot
{
if (!p.HasData("PilotenBase2") || p.GetData<bool>("PilotenBase2") == false) //Sandyshores
{
p.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
p.Heading = (-154.65234375f);
}
if (p.HasData("PilotenBase2") && p.GetData<bool>("PilotenBase2") == true) //LS Airport
{
p.Position = new Vector3(-1622.48, -3151.58, 13);
p.Heading = (48.44f);
}
}
if (p.GetUser().JobId == 4)//Busfahrer
{
p.Position = new Vector3(-535.46, -2144.97, 5.95);
p.Heading = (57.03f);
}
}
}
}
}
}
});
});
});
}
[ServerEvent(Event.PlayerEnterVehicle)]
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
{
ServerVehicle sVeh = veh.GetServerVehicle();
if (sVeh == null) return;
//if (sVeh == null) return;
if (seat != 0)
{
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
@@ -473,47 +390,120 @@ namespace ReallifeGamemode.Server.Managers
}
}
}
else
JobBase job = GetJob(player.GetUser().JobId.Value);
if (job.GetUsersInJob().Contains(player))
{
ChatService.SendMessage(player, "Debug1");
if (sVeh != null)
{
JobBase job = GetJob(player.GetUser().JobId.Value);
if (job.GetUsersInJob().Contains(player))
ChatService.SendMessage(player, "Debug2");
if (sVeh is JobVehicle JV)
{
if (sVeh is JobVehicle JV)
ChatService.SendMessage(player, "Debug3");
if (player.GetUser().JobId == 3 || player.GetUser().JobId == 4)
{
if (player.GetUser().JobId == 3 || player.GetUser().JobId == 4)
ChatService.SendMessage(player, "Debug4");
if (seat == 0)
{
if (seat == 0)
ChatService.SendMessage(player, "Debug5");
JobVehicle c = new JobVehicle();
if (JV.GetJob().GetUsersInJob().Contains(player))
{
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"))
{
//timerJobVehicleRespawn.Stop();
ChatService.SendMessage(player, "Debug6");
veh.SetData("timerJobVehicleRespawn", false);
player.SetData("DelayTime", 0);
if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
playerTimersJobVehicleRespawn[player].Stop();
}
}
else
{
if (player.GetData<bool>("HatRoute") == true)
{
StopJob(player);
}
}
}
else
else ChatService.SendMessage(player, "Debug7");
}
else
{
ChatService.SendMessage(player, "Debug8");
job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
player.StopAnimation();
return;
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;
}
}
else
}
else
{
ChatService.SendMessage(player, "Debug9");
job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
veh.ResetData("timerJobVehicleRespawn");
CheckPointHandle.DeleteCheckpoints(player);
ServerVehicleExtensions.Spawn(sVeh, player.GetData<Vehicle>("LastVehicle"));
player.StopAnimation();
return;
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 || veh != null)
{
ChatService.SendMessage(player, "Debug10");
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)
{
ChatService.SendMessage(player, "Debug11");
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
{
ChatService.SendMessage(player, "Debug12");
}
}
else
{
ChatService.SendMessage(player, "Debug13");
}
}