add option to stop job, enable engine of job vehicle only when player is in job
This commit is contained in:
@@ -7,12 +7,15 @@ export default function (globalData: GlobalData) {
|
|||||||
|
|
||||||
var menu = new NativeUI.Menu("Job", jobName, new NativeUI.Point(50, 50), null, null);
|
var menu = new NativeUI.Menu("Job", jobName, new NativeUI.Point(50, 50), null, null);
|
||||||
menu.AddItem(new NativeUI.UIMenuItem("Job starten"));
|
menu.AddItem(new NativeUI.UIMenuItem("Job starten"));
|
||||||
|
menu.AddItem(new NativeUI.UIMenuItem("Job beenden"));
|
||||||
|
|
||||||
globalData.InMenu = true;
|
globalData.InMenu = true;
|
||||||
|
|
||||||
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
||||||
if (index === 0) { // Job starten
|
if (index === 0) { // Job starten
|
||||||
mp.events.callRemote("CLIENT:Job_StartJob");
|
mp.events.callRemote("CLIENT:Job_StartJob");
|
||||||
|
} else if (index === 1) { // Job stoppen
|
||||||
|
mp.events.callRemote("CLIENT:Job_StopJob");
|
||||||
}
|
}
|
||||||
menu.Close();
|
menu.Close();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ namespace ReallifeGamemode.Server.Entities
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public Vector3 Position => new Vector3(PositionX, PositionY, PositionZ);
|
public Vector3 Position => new Vector3(PositionX, PositionY, PositionZ);
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public Vehicle Vehicle => VehicleManager.GetVehicleFromServerVehicle(this);
|
||||||
|
|
||||||
public Vehicle Spawn(Vehicle currentVeh = null)
|
public Vehicle Spawn(Vehicle currentVeh = null)
|
||||||
{
|
{
|
||||||
if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh);
|
if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
using ReallifeGamemode.Server.Extensions;
|
using ReallifeGamemode.Server.Extensions;
|
||||||
|
using ReallifeGamemode.Server.Job;
|
||||||
using ReallifeGamemode.Server.Managers;
|
using ReallifeGamemode.Server.Managers;
|
||||||
using ReallifeGamemode.Server.Models;
|
using ReallifeGamemode.Server.Models;
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,14 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(sV is JobVehicle jV)
|
||||||
|
{
|
||||||
|
if(!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3))
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Du hast keinen Schlüssel.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
VehicleStreaming.SetEngineState(v, !state);
|
VehicleStreaming.SetEngineState(v, !state);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using ReallifeGamemode.Server.Entities;
|
|||||||
using ReallifeGamemode.Server.Managers;
|
using ReallifeGamemode.Server.Managers;
|
||||||
using ReallifeGamemode.Server.Models;
|
using ReallifeGamemode.Server.Models;
|
||||||
using ReallifeGamemode.Server.Services;
|
using ReallifeGamemode.Server.Services;
|
||||||
|
using ReallifeGamemode.Server.Util;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -12,11 +13,11 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
public abstract class JobBase
|
public abstract class JobBase
|
||||||
{
|
{
|
||||||
protected delegate void JobStartHandler();
|
public delegate void JobStartHandler();
|
||||||
protected delegate void JobStopHandler();
|
public delegate void JobStopHandler();
|
||||||
|
|
||||||
protected event JobStartHandler JobStart;
|
public event JobStartHandler JobStart;
|
||||||
protected event JobStopHandler JobStop;
|
public event JobStopHandler JobStop;
|
||||||
|
|
||||||
private readonly List<Client> _inJob = new List<Client>();
|
private readonly List<Client> _inJob = new List<Client>();
|
||||||
|
|
||||||
@@ -30,11 +31,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
_inJob.Add(player);
|
_inJob.Add(player);
|
||||||
|
|
||||||
if (NeedVehicleToStart && !GetJobVehicles().Any(v => VehicleManager.GetVehicleFromServerVehicle(v).Handle.Value == player.Vehicle?.Handle.Value))
|
player.SendChatMessage($"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet.");
|
||||||
{
|
|
||||||
ChatService.Error(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
JobStart?.Invoke();
|
JobStart?.Invoke();
|
||||||
}
|
}
|
||||||
@@ -43,6 +40,8 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
_inJob.Remove(player);
|
_inJob.Remove(player);
|
||||||
|
|
||||||
|
player.SendChatMessage($"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet.");
|
||||||
|
|
||||||
JobStop?.Invoke();
|
JobStop?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using ReallifeGamemode.Server.Extensions;
|
|||||||
using ReallifeGamemode.Server.Job;
|
using ReallifeGamemode.Server.Job;
|
||||||
using ReallifeGamemode.Server.Models;
|
using ReallifeGamemode.Server.Models;
|
||||||
using ReallifeGamemode.Server.Services;
|
using ReallifeGamemode.Server.Services;
|
||||||
|
using ReallifeGamemode.Server.Util;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -124,7 +125,54 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (job.NeedVehicleToStart && !job.GetJobVehicles().Any(v => v.Vehicle.Handle.Value == player.Vehicle?.Handle.Value))
|
||||||
|
{
|
||||||
|
ChatService.Error(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
job.StartJob(player);
|
job.StartJob(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:Job_StopJob")]
|
||||||
|
public void StopJob(Client player)
|
||||||
|
{
|
||||||
|
User u = player.GetUser();
|
||||||
|
|
||||||
|
if (u.JobId == null) return;
|
||||||
|
|
||||||
|
JobBase job = GetJob(u.JobId.Value);
|
||||||
|
|
||||||
|
if (!job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
ChatService.Error(player, "Du führst deinen Job momentan nicht aus");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (job.NeedVehicleToStart && player.Vehicle != null)
|
||||||
|
{
|
||||||
|
VehicleStreaming.SetEngineState(player.Vehicle, false);
|
||||||
|
VehicleStreaming.SetLockStatus(player.Vehicle, false);
|
||||||
|
player.WarpOutOfVehicle();
|
||||||
|
}
|
||||||
|
|
||||||
|
job.StopJob(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
[ServerEvent(Event.PlayerExitVehicle)]
|
||||||
|
public void JobPlayerExitVehicle(Client player, Vehicle veh)
|
||||||
|
{
|
||||||
|
User u = player.GetUser();
|
||||||
|
|
||||||
|
if (u.JobId == null) return;
|
||||||
|
|
||||||
|
JobBase job = GetJob(u.JobId.Value);
|
||||||
|
|
||||||
|
if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart)
|
||||||
|
{
|
||||||
|
job.StopJob(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user