Nachträgliche Migrationsänderung
This commit is contained in:
@@ -11,6 +11,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Timers;
|
||||
|
||||
namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
@@ -18,6 +19,8 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
private static List<JobBase> _jobs = new List<JobBase>();
|
||||
|
||||
private static Timer timerJobVehicleRespawn = new Timer(30000); //30 Sekunden Timer JobVehicleRespawn
|
||||
|
||||
public static void LoadJobs()
|
||||
{
|
||||
IEnumerable<Type> jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract);
|
||||
@@ -30,7 +33,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
throw new InvalidOperationException($"Double Job ID found: {instance.Id} | {instance.Name}");
|
||||
}
|
||||
_jobs.Add(instance);
|
||||
NAPI.Util.ConsoleOutput($"Loading job {instance.Name}");
|
||||
NAPI.Util.ConsoleOutput($"Loading job {instance.Name}");
|
||||
}
|
||||
NAPI.Util.ConsoleOutput($"Loaded {_jobs.Count} jobs");
|
||||
}
|
||||
@@ -145,12 +148,12 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
|
||||
}
|
||||
JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2);
|
||||
if (nearJobPoint == null && u.JobId == 2) return;
|
||||
|
||||
JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2);
|
||||
if (nearJobPoint == null && u.JobId == 2) return;
|
||||
|
||||
|
||||
var json = JsonConvert.SerializeObject(data);
|
||||
|
||||
var json = JsonConvert.SerializeObject(data);
|
||||
|
||||
player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name, json);
|
||||
}
|
||||
@@ -199,9 +202,61 @@ 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
|
||||
{
|
||||
player.Position = new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471);
|
||||
player.Heading = (-171.50303649902344f);
|
||||
}
|
||||
if (player.GetUser().JobId == 2)//Müllmann
|
||||
{
|
||||
player.Position = new Vector3(-428.9902038574219, -1726.5357666015625, 19.783836364746094);
|
||||
player.Heading = (-15.922085762023926f);
|
||||
}
|
||||
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);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 5");
|
||||
}
|
||||
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);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 6");
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 7");
|
||||
}
|
||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
|
||||
{
|
||||
player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
|
||||
player.Heading = (-8.147048950195312f);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 8");
|
||||
}
|
||||
}
|
||||
}
|
||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
|
||||
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
||||
}
|
||||
|
||||
Vehicle LastVehicle;
|
||||
[ServerEvent(Event.PlayerExitVehicle)]
|
||||
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
|
||||
{
|
||||
@@ -210,53 +265,154 @@ namespace ReallifeGamemode.Server.Managers
|
||||
if (u.JobId == null) return;
|
||||
|
||||
JobBase job = GetJob(u.JobId.Value);
|
||||
|
||||
if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart)
|
||||
if (veh.GetServerVehicle() is JobVehicle vehJ)
|
||||
{
|
||||
job.StopJob(player);
|
||||
return;
|
||||
if (vehJ.GetJob().GetUsersInJob().Contains(player) && job.NeedVehicleToStart)
|
||||
{
|
||||
if (u.JobId != 2)
|
||||
{
|
||||
timerJobVehicleRespawn.Start();
|
||||
veh.SetData("timerJobVehicleRespawn", true);
|
||||
LastVehicle = veh;
|
||||
timerJobVehicleRespawn.AutoReset = false;
|
||||
timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Timer30000_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
NAPI.Pools.GetAllPlayers().ForEach(p =>
|
||||
{
|
||||
NAPI.Pools.GetAllVehicles().ForEach(v =>
|
||||
{
|
||||
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") == true)
|
||||
{
|
||||
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 ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
|
||||
{
|
||||
p.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
||||
p.Heading = (-154.65234375f);
|
||||
}
|
||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2)
|
||||
{
|
||||
p.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
|
||||
p.Heading = (60.65372848510742f);
|
||||
}
|
||||
//VehicleManager.DeleteVehicle(v);
|
||||
}
|
||||
if (p.GetUser().JobId == 4) //Busfahrer
|
||||
{
|
||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach)
|
||||
{
|
||||
p.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373);
|
||||
p.Heading = (17.64179039001465f);
|
||||
}
|
||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
|
||||
{
|
||||
p.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
|
||||
p.Heading = (-8.147048950195312f);
|
||||
}
|
||||
//VehicleManager.DeleteVehicle(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
[ServerEvent(Event.PlayerEnterVehicle)]
|
||||
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
|
||||
{
|
||||
if (seat == 0) return;
|
||||
ServerVehicle sVeh = veh.GetServerVehicle();
|
||||
if (sVeh == null) return;
|
||||
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
|
||||
if (seat != 0)
|
||||
{
|
||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
||||
|
||||
Player driver = veh.GetDriver();
|
||||
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())
|
||||
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
|
||||
{
|
||||
User contractUser = player.GetUser(dbContext);
|
||||
contractUser.Handmoney -= (int)Math.Round(km * taxiPrice);
|
||||
dbContext.SaveChanges();
|
||||
contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney);
|
||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
||||
|
||||
Player driver = veh.GetDriver();
|
||||
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())
|
||||
{
|
||||
User contractUser = player.GetUser(dbContext);
|
||||
contractUser.Handmoney -= (int)Math.Round(km * taxiPrice);
|
||||
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.");
|
||||
}
|
||||
}
|
||||
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)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sVeh != null)
|
||||
{
|
||||
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.");
|
||||
}
|
||||
if (sVeh is JobVehicle JV)
|
||||
{
|
||||
JobVehicle c = new JobVehicle();
|
||||
if (JV.GetJob().GetUsersInJob().Contains(player))
|
||||
{
|
||||
timerJobVehicleRespawn.Stop();
|
||||
veh.SetData("timerJobVehicleRespawn", false);
|
||||
}
|
||||
else return;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user