131 lines
4.3 KiB
C#
131 lines
4.3 KiB
C#
using GTANetworkAPI;
|
|
using ReallifeGamemode.Server.Entities;
|
|
using ReallifeGamemode.Server.Extensions;
|
|
using ReallifeGamemode.Server.Util;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace ReallifeGamemode.Server.Events
|
|
{
|
|
public class VehicleMenu : Script
|
|
{
|
|
[RemoteEvent("VehicleMenu_ToggleEngine")]
|
|
public void VehicleMenuToggleEngineEvent(Client player)
|
|
{
|
|
if (player.IsInVehicle && player.VehicleSeat == -1)
|
|
{
|
|
Vehicle v = player.Vehicle;
|
|
|
|
User u = player.GetUser();
|
|
if (u == null) return;
|
|
|
|
if (NAPI.Entity.GetEntityVelocity(v).Length() > 1)
|
|
{
|
|
player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true);
|
|
return;
|
|
}
|
|
|
|
bool state = VehicleStreaming.GetEngineState(v);
|
|
ServerVehicle sV = v.GetServerVehicle();
|
|
if (sV != null)
|
|
{
|
|
if (sV is ShopVehicle)
|
|
{
|
|
VehicleStreaming.SetEngineState(v, false);
|
|
return;
|
|
}
|
|
else if (sV is FactionVehicle fV)
|
|
{
|
|
if (fV.FactionId != u.FactionId && !state)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
VehicleStreaming.SetEngineState(v, !state);
|
|
}
|
|
}
|
|
|
|
[RemoteEvent("VehicleMenu_LockCar")]
|
|
public void VehicleMenuLockCarEvent(Client player)
|
|
{
|
|
if (player.IsInVehicle && player.VehicleSeat == -1)
|
|
{
|
|
Vehicle v = player.Vehicle;
|
|
|
|
User u = player.GetUser();
|
|
if (u == null) return;
|
|
|
|
bool state = VehicleStreaming.GetLockState(v);
|
|
ServerVehicle sV = v.GetServerVehicle();
|
|
|
|
if (sV != null)
|
|
{
|
|
if (sV is ShopVehicle)
|
|
{
|
|
VehicleStreaming.SetEngineState(v, false);
|
|
return;
|
|
}
|
|
else if (sV is FactionVehicle fV)
|
|
{
|
|
if (fV.FactionId != u.FactionId)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
else if(sV is UserVehicle uV)
|
|
{
|
|
if(uV.UserId != u.Id && !u.IsAdmin(AdminLevel.ADMIN3))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
VehicleStreaming.SetLockStatus(v, !state);
|
|
state = !state;
|
|
string msg = "Fahrzeug ";
|
|
msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen";
|
|
player.SendNotification(msg);
|
|
}
|
|
}
|
|
|
|
[RemoteEvent("VehicleMenu_ToggleSingleDoor")]
|
|
public void VehicleMenuToggleSingleDoorEvent(Client player, int door)
|
|
{
|
|
if (!player.IsInVehicle) return;
|
|
Vehicle veh = player.Vehicle;
|
|
|
|
DoorID doorId = (DoorID)door;
|
|
|
|
DoorState state = VehicleStreaming.GetDoorState(veh, doorId);
|
|
|
|
VehicleStreaming.SetDoorState(veh, doorId, state == DoorState.DoorOpen ? DoorState.DoorClosed : DoorState.DoorOpen);
|
|
}
|
|
|
|
[RemoteEvent("VehicleMenu_OpenAllDoors")]
|
|
public void VehicleMenuOpenAllDoorsEvent(Client player)
|
|
{
|
|
if (!player.IsInVehicle) return;
|
|
Vehicle veh = player.Vehicle;
|
|
|
|
foreach (DoorID doorId in Enum.GetValues(typeof(DoorID)))
|
|
{
|
|
VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorOpen);
|
|
}
|
|
}
|
|
|
|
[RemoteEvent("VehicleMenu_CloseAllDoors")]
|
|
public void VehicleMenuCloseAllDoorsEvent(Client player)
|
|
{
|
|
if (!player.IsInVehicle) return;
|
|
Vehicle veh = player.Vehicle;
|
|
|
|
foreach (DoorID doorId in Enum.GetValues(typeof(DoorID)))
|
|
{
|
|
VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorClosed);
|
|
}
|
|
}
|
|
}
|
|
}
|