Erweiterung für Busfahrer, CheckpointSystem, PilotJob, Skillsystem, AdminBefehle

This commit is contained in:
Mac_Slash
2020-05-03 15:42:56 +02:00
parent 2c3a1e2c90
commit cefee33e3e
44 changed files with 613 additions and 263 deletions

View File

@@ -1,4 +1,4 @@
using GTANetworkAPI;
using GTANetworkAPI;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
@@ -12,6 +12,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Timers;
using System.Threading;
namespace ReallifeGamemode.Server.Managers
{
@@ -19,7 +20,7 @@ namespace ReallifeGamemode.Server.Managers
{
private static List<JobBase> _jobs = new List<JobBase>();
private static Timer timerJobVehicleRespawn = new Timer(30000); //30 Sekunden Timer JobVehicleRespawn
private static System.Timers.Timer timerJobVehicleRespawn = new System.Timers.Timer(30000); //30 Sekunden Timer JobVehicleRespawn
public static void LoadJobs()
{
@@ -182,7 +183,6 @@ namespace ReallifeGamemode.Server.Managers
job.StartJob(player);
}
Vehicle LastVehicle;
[ServerEvent(Event.PlayerExitVehicle)]
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
{
@@ -197,11 +197,79 @@ namespace ReallifeGamemode.Server.Managers
{
if (u.JobId != 2)
{
timerJobVehicleRespawn.Start();
//timerJobVehicleRespawn.Start();
player.SetData("DelayTime", 30000);
veh.SetData("timerJobVehicleRespawn", true);
LastVehicle = veh;
timerJobVehicleRespawn.AutoReset = false;
timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed;
player.SetData("LastVehicle", veh);
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
/*timerJobVehicleRespawn.AutoReset = false;
timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed;*/
NAPI.Task.Run(() =>
{
try
{
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);
}
}
}
}
}
}
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);
@@ -258,15 +326,17 @@ namespace ReallifeGamemode.Server.Managers
player.Heading = (60.65372848510742f);
}
}*/
if (!player.HasData("PilotenBase2") || player.GetData<bool>("PilotenBase2") == false) //Sandyshores
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("PilotenBase2") && player.GetData<bool>("PilotenBase2") == true) //LS Airport
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
@@ -287,6 +357,7 @@ namespace ReallifeGamemode.Server.Managers
player.Position = new Vector3(-535.46, -2144.97, 5.95);
player.Heading = (57.03f);
}
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
if (LastVehicle != null)
{
LastVehicle.ResetData("timerJobVehicleRespawn");
@@ -306,6 +377,7 @@ namespace ReallifeGamemode.Server.Managers
{
NAPI.Pools.GetAllVehicles().ForEach(v =>
{
Vehicle LastVehicle = p.GetData<Vehicle>("LastVehicle");
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
@@ -405,22 +477,43 @@ namespace ReallifeGamemode.Server.Managers
{
if (sVeh != null)
{
if (sVeh is JobVehicle JV)
JobBase job = GetJob(player.GetUser().JobId.Value);
if (job.GetUsersInJob().Contains(player))
{
if (seat == 0)
if (sVeh is JobVehicle JV)
{
JobVehicle c = new JobVehicle();
if (JV.GetJob().GetUsersInJob().Contains(player))
if (player.GetUser().JobId == 3 || player.GetUser().JobId == 4)
{
timerJobVehicleRespawn.Stop();
veh.SetData("timerJobVehicleRespawn", false);
if (seat == 0)
{
JobVehicle c = new JobVehicle();
if (JV.GetJob().GetUsersInJob().Contains(player))
{
//timerJobVehicleRespawn.Stop();
veh.SetData("timerJobVehicleRespawn", false);
player.SetData("DelayTime", 0);
}
}
else
{
player.StopAnimation();
return;
}
}
}
else return;
else
{
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;
}
}
else return;
}
return;
}
}
}