Änderung Busfahrer/Pilot Bugs fix siehe Forenbeitrag
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
var sound = new Howl({
|
||||
src: ['package://assets/sound/' + soundname + '.'+ typ],
|
||||
loop: false,
|
||||
valume: volume
|
||||
volume: volume
|
||||
})
|
||||
sound.play()
|
||||
sound.volume(volume);
|
||||
|
||||
@@ -173,6 +173,9 @@ vehicleIndicators();
|
||||
import vehicleDoor from './vehiclesync/door';
|
||||
vehicleDoor();
|
||||
|
||||
import freeze from './util/freeze';
|
||||
freeze();
|
||||
|
||||
import reportList from './Player/reportmenu';
|
||||
reportList(globalData);
|
||||
|
||||
|
||||
1
ReallifeGamemode.Client/npmrunwatch.bat
Normal file
1
ReallifeGamemode.Client/npmrunwatch.bat
Normal file
@@ -0,0 +1 @@
|
||||
npm run-watch
|
||||
@@ -12,18 +12,21 @@ export default function checkpointHandle(globalData: IGlobalData) {
|
||||
var delayCounter;
|
||||
var markerID;
|
||||
var markerSize;
|
||||
var useVehicle;
|
||||
var markerDist;
|
||||
var event;
|
||||
var checkPointsDone = 0;
|
||||
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;
|
||||
posCp = position;
|
||||
Player = player;
|
||||
delay = nDelay;
|
||||
markerID = nMarkerID;
|
||||
markerSize = nMarkerSize;
|
||||
useVehicle = nUseVehicle;
|
||||
markerDist = nMarkerDist;
|
||||
delayCounter = 0;
|
||||
checkPointsDone = checkPointID;
|
||||
@@ -62,10 +65,27 @@ export default function checkpointHandle(globalData: IGlobalData) {
|
||||
var pos = posCp;
|
||||
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() {
|
||||
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);
|
||||
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.events.callRemote("playerWaitsInCheckpoint");
|
||||
mp.players.local.freezePosition(true);
|
||||
//mp.players.local.freezePosition(true);
|
||||
}
|
||||
inCheckpoint = true;
|
||||
|
||||
@@ -88,7 +108,7 @@ export default function checkpointHandle(globalData: IGlobalData) {
|
||||
activeCheckpoint = null;
|
||||
clearInterval(myVar);
|
||||
mp.events.callRemote("playerInCheckpoint");
|
||||
mp.players.local.freezePosition(false);
|
||||
//mp.players.local.freezePosition(false);
|
||||
if (event != "") {
|
||||
while (checkPointsDone > 10000) {
|
||||
|
||||
@@ -101,6 +121,52 @@ export default function checkpointHandle(globalData: IGlobalData) {
|
||||
} else if (dist > 2) {
|
||||
inCheckpoint = false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
32
ReallifeGamemode.Client/util/freeze.ts
Normal file
32
ReallifeGamemode.Client/util/freeze.ts
Normal 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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
@@ -1332,6 +1332,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
VehicleStreaming.SetEngineState(v, true);
|
||||
VehicleStreaming.SetLockStatus(v, false);
|
||||
player.SetIntoVehicle(v.Handle, 0);
|
||||
player.SetIntoVehicle(v.Handle, 0);
|
||||
}
|
||||
|
||||
[Command("fv", "~m~Benutzung: ~s~/fv", Alias = "vfix")]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
@@ -112,6 +112,35 @@ namespace ReallifeGamemode.Server.Events
|
||||
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
|
||||
Jail.Check_PutBehindBars(player);
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Job;
|
||||
using ReallifeGamemode.Server.Managers;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using ReallifeGamemode.Services;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Database;
|
||||
using ReallifeGamemode.Server.Types;
|
||||
|
||||
|
||||
/**
|
||||
* @overview Life of German Reallife - Event Login (Login.cs)
|
||||
* @author VegaZ
|
||||
@@ -50,8 +55,37 @@ namespace ReallifeGamemode.Server.Events
|
||||
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);
|
||||
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())
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using Newtonsoft.Json;
|
||||
@@ -398,13 +398,14 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
if (job.GetUsersInJob().Contains(player))
|
||||
{
|
||||
user.SetData("PilotenBase", 1);
|
||||
player.SetData("PilotenBase", 1);
|
||||
jobb.StopJob(player);
|
||||
return;
|
||||
}
|
||||
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);
|
||||
return;
|
||||
}
|
||||
@@ -413,13 +414,14 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
if (job.GetUsersInJob().Contains(player))
|
||||
{
|
||||
user.SetData("PilotenBase", 2);
|
||||
player.SetData("PilotenBase", 2);
|
||||
jobb.StopJob(player);
|
||||
return;
|
||||
}
|
||||
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);
|
||||
return;
|
||||
}
|
||||
@@ -576,14 +578,21 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
if (jV.JobId == 3)
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 1");
|
||||
Job.PilotJob c = new Job.PilotJob();
|
||||
if ((VehicleHash)jV.Model == VehicleHash.Cuban800 && !state)
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 2");
|
||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 3");
|
||||
player.SetData("HatRoute", true);
|
||||
c.StartPilotRoute(player, "RouteStart");
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 4");
|
||||
}
|
||||
}
|
||||
if ((VehicleHash)jV.Model == VehicleHash.Velum && !state || (VehicleHash)jV.Model == VehicleHash.Velum2 && !state)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GTANetworkAPI;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using System.Linq;
|
||||
|
||||
/**
|
||||
@@ -15,6 +16,16 @@ namespace ReallifeGamemode.Server.Events
|
||||
[ServerEvent(Event.ResourceStop)]
|
||||
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();
|
||||
|
||||
foreach (Player user in users)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
@@ -171,13 +171,18 @@ namespace ReallifeGamemode.Server.Job
|
||||
[RemoteEvent("startPilotRoute")]
|
||||
public void StartPilotRoute(Player player, string type)
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 5");
|
||||
Vehicle veh = player.Vehicle;
|
||||
if (player.VehicleSeat == 0)
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 6");
|
||||
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)
|
||||
{
|
||||
player.SendChatMessage("Debug Pilot 8");
|
||||
Random rnd = new Random();
|
||||
int rroute = rnd.Next(1, 4);
|
||||
switch (rroute)
|
||||
@@ -253,6 +258,14 @@ namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
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);
|
||||
foreach (Door d in NearDoors)
|
||||
{
|
||||
if (d != 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));
|
||||
}
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,31 +198,56 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
if (u.JobId != 2)
|
||||
{
|
||||
//timerJobVehicleRespawn.Start();
|
||||
if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
|
||||
{
|
||||
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;*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void PlayerTimer_Elapsed(Player player, Vehicle veh)
|
||||
{
|
||||
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)
|
||||
{
|
||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
|
||||
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);
|
||||
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.HasData("isDead") || player.GetData<bool>("isDead") == false)
|
||||
{
|
||||
if (player.GetUser().JobId == 1)//Taxifahrer
|
||||
{
|
||||
@@ -233,12 +259,12 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
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.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.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")]
|
||||
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
|
||||
{
|
||||
if (sVeh != null)
|
||||
{
|
||||
JobBase job = GetJob(player.GetUser().JobId.Value);
|
||||
|
||||
if (job.GetUsersInJob().Contains(player))
|
||||
{
|
||||
ChatService.SendMessage(player, "Debug1");
|
||||
if (sVeh != null)
|
||||
{
|
||||
ChatService.SendMessage(player, "Debug2");
|
||||
if (sVeh is JobVehicle JV)
|
||||
{
|
||||
ChatService.SendMessage(player, "Debug3");
|
||||
if (player.GetUser().JobId == 3 || player.GetUser().JobId == 4)
|
||||
{
|
||||
ChatService.SendMessage(player, "Debug4");
|
||||
if (seat == 0)
|
||||
{
|
||||
ChatService.SendMessage(player, "Debug5");
|
||||
JobVehicle c = new JobVehicle();
|
||||
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);
|
||||
player.SetData("DelayTime", 0);
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
player.StopAnimation();
|
||||
return;
|
||||
if (player.GetData<bool>("HatRoute") == true)
|
||||
{
|
||||
StopJob(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
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.");
|
||||
veh.ResetData("timerJobVehicleRespawn");
|
||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
{
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
}
|
||||
CheckPointHandle.DeleteCheckpoints(player);
|
||||
ServerVehicleExtensions.Spawn(sVeh, player.GetData<Vehicle>("LastVehicle"));
|
||||
player.StopAnimation();
|
||||
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
|
||||
{
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using GTANetworkAPI;
|
||||
using System.Linq;
|
||||
@@ -87,7 +87,7 @@ namespace ReallifeGamemode.Server.Util
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
BusCheckpoint(user);
|
||||
}, delayTime: 3850);
|
||||
}, delayTime: 3250);
|
||||
}
|
||||
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
||||
data.Left = false;
|
||||
@@ -135,13 +135,13 @@ namespace ReallifeGamemode.Server.Util
|
||||
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
||||
{
|
||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25);
|
||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100);
|
||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2100);
|
||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100);
|
||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
|
||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2600);
|
||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||
}, delayTime: 2100);
|
||||
}, delayTime: 2600);
|
||||
}
|
||||
//user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||
}
|
||||
@@ -225,7 +225,7 @@ namespace ReallifeGamemode.Server.Util
|
||||
{
|
||||
LastCheckpoint = 0;
|
||||
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)
|
||||
{
|
||||
|
||||
38
ReallifeGamemode.Server/Util/PlayerTimer.cs
Normal file
38
ReallifeGamemode.Server/Util/PlayerTimer.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user