Ä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

@@ -19,7 +19,7 @@
var sound = new Howl({ var sound = new Howl({
src: ['package://assets/sound/' + soundname + '.'+ typ], src: ['package://assets/sound/' + soundname + '.'+ typ],
loop: false, loop: false,
valume: volume volume: volume
}) })
sound.play() sound.play()
sound.volume(volume); sound.volume(volume);

View File

@@ -173,6 +173,9 @@ vehicleIndicators();
import vehicleDoor from './vehiclesync/door'; import vehicleDoor from './vehiclesync/door';
vehicleDoor(); vehicleDoor();
import freeze from './util/freeze';
freeze();
import reportList from './Player/reportmenu'; import reportList from './Player/reportmenu';
reportList(globalData); reportList(globalData);

View File

@@ -0,0 +1 @@
npm run-watch

View File

@@ -12,18 +12,21 @@ export default function checkpointHandle(globalData: IGlobalData) {
var delayCounter; var delayCounter;
var markerID; var markerID;
var markerSize; var markerSize;
var useVehicle;
var markerDist; var markerDist;
var event; var event;
var checkPointsDone = 0; var checkPointsDone = 0;
var activeBlip = null; var activeBlip = null;
var Leaving = false;
mp.events.add('setCheckPoint', (position, player, checkPointID, nDelay, nMarkerID, nMarkerSize, nMarkerDist, nEvent) => { mp.events.add('setCheckPoint', (position, player, checkPointID, nDelay, nMarkerID, nMarkerSize, nMarkerDist, nUseVehicle, nEvent) => {
inCheckpoint = false; inCheckpoint = false;
posCp = position; posCp = position;
Player = player; Player = player;
delay = nDelay; delay = nDelay;
markerID = nMarkerID; markerID = nMarkerID;
markerSize = nMarkerSize; markerSize = nMarkerSize;
useVehicle = nUseVehicle;
markerDist = nMarkerDist; markerDist = nMarkerDist;
delayCounter = 0; delayCounter = 0;
checkPointsDone = checkPointID; checkPointsDone = checkPointID;
@@ -62,10 +65,27 @@ export default function checkpointHandle(globalData: IGlobalData) {
var pos = posCp; var pos = posCp;
mp.events.callRemote("sendCP", posCp.x, posCp.y, posCp.z); mp.events.callRemote("sendCP", posCp.x, posCp.y, posCp.z);
}); });
mp.events.add("playerStartExitVehicle", (vehicle, seat) => {
Leaving = true;
});
mp.events.add("playerExitVehicle", (vehicle, seat) => {
Leaving = true;
});
mp.events.add("playerStartLeaveVehicle", (vehicle, seat) => {
Leaving = true;
});
mp.events.add("playerLeaveVehicle", (vehicle, seat) => {
Leaving = true;
});
mp.events.add("playerEnterVehicle", (vehicle, seat) => {
Leaving = false;
});
function myTimer() { function myTimer() {
let dist = mp.game.gameplay.getDistanceBetweenCoords(Player.position.x, Player.position.y, 0, posCp.x, posCp.y, 0, false); if (useVehicle == true) {
if (Player.isInVehicle && Leaving == false) {
let dist = mp.game.gameplay.getDistanceBetweenCoords(Player.vehicle.position.x, Player.vehicle.position.y, 0, posCp.x, posCp.y, 0, false);
//mp.gui.chat.push("delay: " + delay + " | delayCounter: " + delayCounter); //mp.gui.chat.push("delay: " + delay + " | delayCounter: " + delayCounter);
if (dist <= markerDist) { if (dist <= markerDist) {
@@ -77,7 +97,7 @@ export default function checkpointHandle(globalData: IGlobalData) {
} }
mp.game.audio.playSoundFrontend(1, "Beep_Red", "DLC_HEIST_HACKING_SNAKE_SOUNDS", true); mp.game.audio.playSoundFrontend(1, "Beep_Red", "DLC_HEIST_HACKING_SNAKE_SOUNDS", true);
mp.events.callRemote("playerWaitsInCheckpoint"); mp.events.callRemote("playerWaitsInCheckpoint");
mp.players.local.freezePosition(true); //mp.players.local.freezePosition(true);
} }
inCheckpoint = true; inCheckpoint = true;
@@ -88,7 +108,7 @@ export default function checkpointHandle(globalData: IGlobalData) {
activeCheckpoint = null; activeCheckpoint = null;
clearInterval(myVar); clearInterval(myVar);
mp.events.callRemote("playerInCheckpoint"); mp.events.callRemote("playerInCheckpoint");
mp.players.local.freezePosition(false); //mp.players.local.freezePosition(false);
if (event != "") { if (event != "") {
while (checkPointsDone > 10000) { while (checkPointsDone > 10000) {
@@ -101,6 +121,52 @@ export default function checkpointHandle(globalData: IGlobalData) {
} else if (dist > 2) { } else if (dist > 2) {
inCheckpoint = false; inCheckpoint = false;
delayCounter = 0; delayCounter = 0;
mp.gui.chat.push("Läuft.");
}
}
else {
}
}
if(useVehicle == false) {
let dist = mp.game.gameplay.getDistanceBetweenCoords(Player.position.x, Player.position.y, 0, posCp.x, posCp.y, 0, false);
//mp.gui.chat.push("delay: " + delay + " | delayCounter: " + delayCounter);
if (dist <= markerDist) {
if (!inCheckpoint) {
if (delay != 0) {
massage = "Warte nun " + delay / 1000 + " Sekunden.";
render = true;
textTime = setInterval(ClearText, delay)
}
mp.game.audio.playSoundFrontend(1, "Beep_Red", "DLC_HEIST_HACKING_SNAKE_SOUNDS", true);
mp.events.callRemote("playerWaitsInCheckpoint");
//mp.players.local.freezePosition(true);
}
inCheckpoint = true;
if (delayCounter >= delay) {
activeCheckpoint.destroy();
activeBlip.destroy();
activeBlip = null;
activeCheckpoint = null;
clearInterval(myVar);
mp.events.callRemote("playerInCheckpoint");
//mp.players.local.freezePosition(false);
if (event != "") {
while (checkPointsDone > 10000) {
}
mp.events.callRemote(event, checkPointsDone);
}
} else {
delayCounter += 50;
}
} else if (dist > 2) {
inCheckpoint = false;
delayCounter = 0;
}
} }
} }

View File

@@ -0,0 +1,32 @@
export default function freeze() {
mp.events.add("CLIENT:FreezePlayer", (player) =>
{
player.freezePosition(true);
});
mp.events.add("CLIENT:UnFreezePlayer", (player) => {
player.freezePosition(false);
});
mp.events.add("CLIENT:FreezeVehicle", (veh) => {
if (mp.players.local.isInVehicle) {
veh.freezePosition(true);
}
});
mp.events.add("CLIENT:UnFreezeVehicle", (veh) => {
if (mp.players.local.isInVehicle) {
veh.freezePosition(false);
}
});
mp.events.add("CLIENT:Freeze", (player) => {
if (player.isInVehicle) {
player.vehicle.freezePosition(true);
}
else {
player.freezePosition(true);
}
});
mp.events.add("CLIENT:Freeze", (player) => {
player.vehicle.freezePosition(false);
player.freezePosition(false);
});
}

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
@@ -1332,6 +1332,7 @@ namespace ReallifeGamemode.Server.Commands
VehicleStreaming.SetEngineState(v, true); VehicleStreaming.SetEngineState(v, true);
VehicleStreaming.SetLockStatus(v, false); VehicleStreaming.SetLockStatus(v, false);
player.SetIntoVehicle(v.Handle, 0); player.SetIntoVehicle(v.Handle, 0);
player.SetIntoVehicle(v.Handle, 0);
} }
[Command("fv", "~m~Benutzung: ~s~/fv", Alias = "vfix")] [Command("fv", "~m~Benutzung: ~s~/fv", Alias = "vfix")]

View File

@@ -1,4 +1,4 @@
using System; using System;
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Database; using ReallifeGamemode.Database;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
@@ -112,6 +112,35 @@ namespace ReallifeGamemode.Server.Events
userDeath.SaveChanges(); userDeath.SaveChanges();
} }
} }
Job.JobBase job = Managers.JobManager.GetJob(player.GetUser().JobId ?? -1);
if (job != null)
{
if (player.Vehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (player.Vehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
if (vehJ.GetJob().GetUsersInJob().Contains(player))
{
if (player.Vehicle != null)
{
player.Vehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = Managers.VehicleManager.GetServerVehicleFromVehicle(player.Vehicle);
ServerVehicleExtensions.Spawn(sVeh, player.Vehicle);
}
}
}
}
Managers.JobManager jm = new Managers.JobManager();
if (jm.playerTimersJobVehicleRespawn.ContainsKey(player))
{
jm.playerTimersJobVehicleRespawn[player].Stop();
}
player.ResetData("HatRoute");
player.ResetData("PilotenBase");
job.StopJob(player);
//ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
CheckPointHandle.DeleteCheckpoints(player);
}
//JailTime.cs //JailTime.cs
Jail.Check_PutBehindBars(player); Jail.Check_PutBehindBars(player);

View File

@@ -1,17 +1,22 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text; using System.Text;
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Job;
using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Services;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Database; using ReallifeGamemode.Database;
using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Types;
/** /**
* @overview Life of German Reallife - Event Login (Login.cs) * @overview Life of German Reallife - Event Login (Login.cs)
* @author VegaZ * @author VegaZ
@@ -50,8 +55,37 @@ namespace ReallifeGamemode.Server.Events
ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING);
} }
//Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
if (job != null) job.StopJob(player, true); if (job != null)
{
if (player.Vehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (player.Vehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
if (vehJ.GetJob().GetUsersInJob().Contains(player))
{
if (player.Vehicle != null)
{
player.Vehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(player.Vehicle);
ServerVehicleExtensions.Spawn(sVeh, player.Vehicle);
}
}
}
}
JobManager jm = new JobManager();
if (jm.playerTimersJobVehicleRespawn.ContainsKey(player))
{
jm.playerTimersJobVehicleRespawn[player].Stop();
}
player.ResetData("HatRoute");
player.ResetData("PilotenBase");
player.ResetData("JobVehicleFrei");
job.StopJob(player);
//ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
CheckPointHandle.DeleteCheckpoints(player);
}
using (var saveUser = new DatabaseContext()) using (var saveUser = new DatabaseContext())
{ {

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Timers; using System.Timers;
@@ -55,17 +55,23 @@ namespace ReallifeGamemode.Server.Events
{ {
if ((VehicleHash)vehicle.Model == VehicleHash.Velum || (VehicleHash)vehicle.Model == VehicleHash.Velum2 && player.GetUser().PilotSkill < 300) if ((VehicleHash)vehicle.Model == VehicleHash.Velum || (VehicleHash)vehicle.Model == VehicleHash.Velum2 && player.GetUser().PilotSkill < 300)
{ {
player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!"); player.SetData("JobVehicleFrei", true);
player.StopAnimation();
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skill Level(2)!");
return; return;
} }
if ((VehicleHash)vehicle.Model == VehicleHash.Coach && player.GetUser().BusSkill < 300) if ((VehicleHash)vehicle.Model == VehicleHash.Coach && player.GetUser().BusSkill < 300)
{ {
player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!"); player.SetData("JobVehicleFrei", true);
player.StopAnimation();
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skill Level(2)!");
return; return;
} }
if ((VehicleHash)vehicle.Model == VehicleHash.Tourbus && player.GetUser().BusSkill < 800) if ((VehicleHash)vehicle.Model == VehicleHash.Tourbus && player.GetUser().BusSkill < 800)
{ {
player.SendNotification("~r~Dein Skilllevel(3) ist nicht hoch genug!"); player.SetData("JobVehicleFrei", true);
player.StopAnimation();
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skill Level(3)!");
return; return;
} }
} }

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using Newtonsoft.Json; using Newtonsoft.Json;
@@ -398,13 +398,14 @@ namespace ReallifeGamemode.Server.Events
{ {
if (job.GetUsersInJob().Contains(player)) if (job.GetUsersInJob().Contains(player))
{ {
user.SetData("PilotenBase", 1); player.SetData("PilotenBase", 1);
jobb.StopJob(player); jobb.StopJob(player);
return; return;
} }
if (!job.GetUsersInJob().Contains(player)) if (!job.GetUsersInJob().Contains(player))
{ {
user.SetData("PilotenBase", 1); player.SetData("PilotenBase", 1);
player.SendChatMessage($"Debug PilotenJob PilotenBase1: {player.GetData<int>("PilotenBase")}");
jobb.StartJobEvent(player); jobb.StartJobEvent(player);
return; return;
} }
@@ -413,13 +414,14 @@ namespace ReallifeGamemode.Server.Events
{ {
if (job.GetUsersInJob().Contains(player)) if (job.GetUsersInJob().Contains(player))
{ {
user.SetData("PilotenBase", 2); player.SetData("PilotenBase", 2);
jobb.StopJob(player); jobb.StopJob(player);
return; return;
} }
if (!job.GetUsersInJob().Contains(player)) if (!job.GetUsersInJob().Contains(player))
{ {
user.SetData("PilotenBase", 2); player.SetData("PilotenBase", 2);
player.SendChatMessage($"Debug PilotenJob PilotenBase2: {player.GetData<int>("PilotenBase")}");
jobb.StartJobEvent(player); jobb.StartJobEvent(player);
return; return;
} }
@@ -576,14 +578,21 @@ namespace ReallifeGamemode.Server.Events
{ {
if (jV.JobId == 3) if (jV.JobId == 3)
{ {
player.SendChatMessage("Debug Pilot 1");
Job.PilotJob c = new Job.PilotJob(); Job.PilotJob c = new Job.PilotJob();
if ((VehicleHash)jV.Model == VehicleHash.Cuban800 && !state) if ((VehicleHash)jV.Model == VehicleHash.Cuban800 && !state)
{ {
player.SendChatMessage("Debug Pilot 2");
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false) if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
{ {
player.SendChatMessage("Debug Pilot 3");
player.SetData("HatRoute", true); player.SetData("HatRoute", true);
c.StartPilotRoute(player, "RouteStart"); c.StartPilotRoute(player, "RouteStart");
} }
else
{
player.SendChatMessage("Debug Pilot 4");
}
} }
if ((VehicleHash)jV.Model == VehicleHash.Velum && !state || (VehicleHash)jV.Model == VehicleHash.Velum2 && !state) if ((VehicleHash)jV.Model == VehicleHash.Velum && !state || (VehicleHash)jV.Model == VehicleHash.Velum2 && !state)
{ {

View File

@@ -1,5 +1,6 @@
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using System.Linq; using System.Linq;
/** /**
@@ -15,6 +16,16 @@ namespace ReallifeGamemode.Server.Events
[ServerEvent(Event.ResourceStop)] [ServerEvent(Event.ResourceStop)]
public void OnResourceStop() public void OnResourceStop()
{ {
foreach (var player in NAPI.Pools.GetAllPlayers())
{
using (var dbContext = new DatabaseContext())
{
player.GetUser(dbContext).PositionX = player.Position.X;
player.GetUser(dbContext).PositionY = player.Position.Y;
player.GetUser(dbContext).PositionZ = player.Position.Z;
dbContext.SaveChanges();
}
}
var users = NAPI.Pools.GetAllPlayers(); var users = NAPI.Pools.GetAllPlayers();
foreach (Player user in users) foreach (Player user in users)

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Util;
@@ -171,13 +171,18 @@ namespace ReallifeGamemode.Server.Job
[RemoteEvent("startPilotRoute")] [RemoteEvent("startPilotRoute")]
public void StartPilotRoute(Player player, string type) public void StartPilotRoute(Player player, string type)
{ {
player.SendChatMessage("Debug Pilot 5");
Vehicle veh = player.Vehicle; Vehicle veh = player.Vehicle;
if (player.VehicleSeat == 0) if (player.VehicleSeat == 0)
{ {
player.SendChatMessage("Debug Pilot 6");
if (type == "RouteStart") if (type == "RouteStart")
{ {
player.SendChatMessage("Debug Pilot 7");
player.SendChatMessage($"Debug PilotenJob PilotenBaseAbfrage: {player.GetData<int>("PilotenBase")}");
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1) if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
{ {
player.SendChatMessage("Debug Pilot 8");
Random rnd = new Random(); Random rnd = new Random();
int rroute = rnd.Next(1, 4); int rroute = rnd.Next(1, 4);
switch (rroute) switch (rroute)
@@ -253,6 +258,14 @@ namespace ReallifeGamemode.Server.Job
{ {
CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 20, true, "pilotJob"); CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 20, true, "pilotJob");
} }
else
{
player.SendChatMessage("Debug Pilot 9");
}
}
else
{
player.SendChatMessage("Debug Pilot 10");
} }
} }
public static void payWage(Player jobber, int wage) public static void payWage(Player jobber, int wage)

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
@@ -48,6 +48,8 @@ namespace ReallifeGamemode.Server.Managers
{ {
IQueryable<Door> NearDoors = dbContext.Doors.Where(d => d.Position.DistanceTo(player.Position) <= d.Radius); IQueryable<Door> NearDoors = dbContext.Doors.Where(d => d.Position.DistanceTo(player.Position) <= d.Radius);
foreach (Door d in NearDoors) foreach (Door d in NearDoors)
{
if (d != null)
{ {
if (!user.IsAdmin(AdminLevel.ADMIN) && (d.FactionId != user.FactionId || d.FactionId == null)) if (!user.IsAdmin(AdminLevel.ADMIN) && (d.FactionId != user.FactionId || d.FactionId == null))
{ {
@@ -64,6 +66,7 @@ namespace ReallifeGamemode.Server.Managers
NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f)); NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f));
} }
}
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }

View File

@@ -1,4 +1,4 @@
using GTANetworkAPI; using GTANetworkAPI;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
@@ -20,8 +20,6 @@ namespace ReallifeGamemode.Server.Managers
{ {
private static List<JobBase> _jobs = new List<JobBase>(); 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() public static void LoadJobs()
{ {
IEnumerable<Type> jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract); 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 static List<JobBase> GetJobs() => _jobs.OrderBy(j => j.Id).ToList();
public Dictionary<Player, PlayerTimer> playerTimersJobVehicleRespawn = new Dictionary<Player, PlayerTimer>();
[RemoteEvent("CLIENT:JobCenter_CancelJob")] [RemoteEvent("CLIENT:JobCenter_CancelJob")]
public void CancelJobEvent(Player player) public void CancelJobEvent(Player player)
{ {
@@ -186,6 +186,7 @@ namespace ReallifeGamemode.Server.Managers
[ServerEvent(Event.PlayerExitVehicle)] [ServerEvent(Event.PlayerExitVehicle)]
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
{ {
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
User u = player.GetUser(); User u = player.GetUser();
if (u.JobId == null) return; if (u.JobId == null) return;
@@ -197,31 +198,56 @@ namespace ReallifeGamemode.Server.Managers
{ {
if (u.JobId != 2) if (u.JobId != 2)
{ {
//timerJobVehicleRespawn.Start(); if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
{
player.SetData("DelayTime", 30000); player.SetData("DelayTime", 30000);
veh.SetData("timerJobVehicleRespawn", true); veh.SetData("timerJobVehicleRespawn", true);
player.SetData("LastVehicle", veh); player.SetData("LastVehicle", veh);
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle"); player.SetData("LastSVehicle", sVeh);
/*timerJobVehicleRespawn.AutoReset = false; if (playerTimersJobVehicleRespawn.ContainsKey(player))
timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed;*/ {
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;
}
}
}
}
}
private void PlayerTimer_Elapsed(Player player, Vehicle veh)
{
NAPI.Task.Run(() => NAPI.Task.Run(() =>
{ {
try //Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
Vehicle LastVehicle = veh;
JobBase job = GetJob(player.GetUser().JobId.Value);
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
{ {
ChatService.SendMessage(player, "TimerAusgelöst");
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true) if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{ {
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
if (vehJ.GetJob().GetUsersInJob().Contains(player)) if (vehJ.GetJob().GetUsersInJob().Contains(player))
{ {
if (veh != null) if (LastVehicle != null)
{ {
LastVehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
job.StopJob(player); job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
veh.ResetData("timerJobVehicleRespawn");
CheckPointHandle.DeleteCheckpoints(player); CheckPointHandle.DeleteCheckpoints(player);
ServerVehicleExtensions.Spawn(sVeh, veh); if (!player.HasData("isDead") || player.GetData<bool>("isDead") == false)
if (player.GetData<bool>("isDead") == false)
{ {
if (player.GetUser().JobId == 1)//Taxifahrer if (player.GetUser().JobId == 1)//Taxifahrer
{ {
@@ -233,12 +259,12 @@ namespace ReallifeGamemode.Server.Managers
} }
if (player.GetUser().JobId == 3)//Pilot if (player.GetUser().JobId == 3)//Pilot
{ {
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.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
player.Heading = (-154.65234375f); player.Heading = (-154.65234375f);
} }
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.Position = new Vector3(-1622.48, -3151.58, 13);
player.Heading = (48.44f); player.Heading = (48.44f);
@@ -254,29 +280,7 @@ namespace ReallifeGamemode.Server.Managers
} }
} }
} }
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;
}
}
}
} }
[RemoteEvent("CLIENT:Job_StopJob")] [RemoteEvent("CLIENT:Job_StopJob")]
public void StopJob(Player player) public void StopJob(Player player)
@@ -298,8 +302,6 @@ namespace ReallifeGamemode.Server.Managers
VehicleStreaming.SetEngineState(player.Vehicle, false); VehicleStreaming.SetEngineState(player.Vehicle, false);
} }
//if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
//Vehicle v = player.Vehicle;
job.StopJob(player); job.StopJob(player);
/*if (player.GetUser().JobId == 1)//Taxifahrer /*if (player.GetUser().JobId == 1)//Taxifahrer
{ {
@@ -313,19 +315,6 @@ namespace ReallifeGamemode.Server.Managers
} }
if (player.GetUser().JobId == 3)//Pilot 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 if (player.HasData("PilotenBase") || player.GetData<int>("PilotenBase") == 1) //Sandyshores
{ {
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406); 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 (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.Position = new Vector3(-535.46, -2144.97, 5.95);
player.Heading = (57.03f); player.Heading = (57.03f);
} }
@@ -363,79 +339,20 @@ namespace ReallifeGamemode.Server.Managers
LastVehicle.ResetData("timerJobVehicleRespawn"); LastVehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle); ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
ServerVehicleExtensions.Spawn(sVeh, 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); CheckPointHandle.DeleteCheckpoints(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); 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)] [ServerEvent(Event.PlayerEnterVehicle)]
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat) public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
{ {
ServerVehicle sVeh = veh.GetServerVehicle(); ServerVehicle sVeh = veh.GetServerVehicle();
if (sVeh == null) return; //if (sVeh == null) return;
if (seat != 0) if (seat != 0)
{ {
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
@@ -473,47 +390,120 @@ namespace ReallifeGamemode.Server.Managers
} }
} }
} }
else
{
if (sVeh != null)
{
JobBase job = GetJob(player.GetUser().JobId.Value); JobBase job = GetJob(player.GetUser().JobId.Value);
if (job.GetUsersInJob().Contains(player)) if (job.GetUsersInJob().Contains(player))
{ {
ChatService.SendMessage(player, "Debug1");
if (sVeh != null)
{
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(); JobVehicle c = new JobVehicle();
if (JV.GetJob().GetUsersInJob().Contains(player)) if (JV.GetJob().GetUsersInJob().Contains(player))
{ {
//timerJobVehicleRespawn.Stop(); if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
if (player.HasData("LastVehicle") && veh == player.GetData<Vehicle>("LastVehicle"))
{
ChatService.SendMessage(player, "Debug6");
veh.SetData("timerJobVehicleRespawn", false); veh.SetData("timerJobVehicleRespawn", false);
player.SetData("DelayTime", 0); if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
playerTimersJobVehicleRespawn[player].Stop();
} }
} }
else else
{ {
player.StopAnimation(); if (player.GetData<bool>("HatRoute") == true)
return; {
StopJob(player);
} }
} }
} }
else ChatService.SendMessage(player, "Debug7");
}
else else
{ {
ChatService.SendMessage(player, "Debug8");
job.StopJob(player); job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
veh.ResetData("timerJobVehicleRespawn"); if (playerTimersJobVehicleRespawn.ContainsKey(player))
{
playerTimersJobVehicleRespawn[player].Stop();
}
CheckPointHandle.DeleteCheckpoints(player); CheckPointHandle.DeleteCheckpoints(player);
ServerVehicleExtensions.Spawn(sVeh, player.GetData<Vehicle>("LastVehicle")); if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
player.StopAnimation(); player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
return; return;
} }
} }
} }
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))
{
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");
} }
} }

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using GTANetworkAPI; using GTANetworkAPI;
using System.Linq; using System.Linq;
@@ -87,7 +87,7 @@ namespace ReallifeGamemode.Server.Util
NAPI.Task.Run(() => NAPI.Task.Run(() =>
{ {
BusCheckpoint(user); BusCheckpoint(user);
}, delayTime: 3850); }, delayTime: 3250);
} }
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData(); if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
data.Left = false; data.Left = false;
@@ -135,13 +135,13 @@ namespace ReallifeGamemode.Server.Util
if ((VehicleHash)veh.Model == VehicleHash.Tourbus) if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
{ {
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25); user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25);
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100); user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2100); user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2600);
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100); user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
NAPI.Task.Run(() => NAPI.Task.Run(() =>
{ {
user.TriggerEvent("CLIENT:UnFreezeVehicle", veh); user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
}, delayTime: 2100); }, delayTime: 2600);
} }
//user.TriggerEvent("CLIENT:UnFreezeVehicle", veh); //user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
} }
@@ -225,7 +225,7 @@ namespace ReallifeGamemode.Server.Util
{ {
LastCheckpoint = 0; LastCheckpoint = 0;
Vector3 nextCp = list.ElementAt(checkPointsDone); Vector3 nextCp = list.ElementAt(checkPointsDone);
this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.markerDist, this.eventInCheckpoint); this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.markerDist, this.useVehicle, this.eventInCheckpoint);
} }
if (checkPointsDone == this.list.Count()-1) if (checkPointsDone == this.list.Count()-1)
{ {

View File

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
using GTANetworkAPI;
namespace ReallifeGamemode.Server.Util
{
public class PlayerTimer
{
private readonly Player player;
private readonly Vehicle veh;
private readonly Timer timer;
public delegate void PlayerTimerElapsed(Player player, Vehicle veh);
public event PlayerTimerElapsed Elapsed;
public PlayerTimer(Player player, Vehicle veh = null, int milliseconds = 1000)
{
this.player = player;
this.veh = veh;
this.timer = new Timer(milliseconds);
this.timer.Elapsed += Timer_Elapsed;
this.timer.Start();
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Elapsed?.Invoke(player, veh);
}
public void Stop()
{
this.timer.Stop();
}
}
}