Änderung Busfahrer/Pilot Bugs fix siehe Forenbeitrag
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
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 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,22 +65,39 @@ 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) {
|
||||||
|
|
||||||
if (!inCheckpoint) {
|
if (!inCheckpoint) {
|
||||||
if (delay != 0) {
|
if (delay != 0) {
|
||||||
massage = "Warte nun " + delay / 1000 +" Sekunden.";
|
massage = "Warte nun " + delay / 1000 + " Sekunden.";
|
||||||
render = true;
|
render = true;
|
||||||
textTime = setInterval(ClearText, delay)
|
textTime = setInterval(ClearText, delay)
|
||||||
}
|
}
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
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.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")]
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
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