Files
reallife-gamemode/Server/Events/VehicleMenu.cs
2018-12-26 19:15:58 +01:00

130 lines
4.2 KiB
C#

using GTANetworkAPI;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Extensions;
using reallife_gamemode.Server.Util;
using System;
using System.Collections.Generic;
using System.Text;
namespace reallife_gamemode.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);
string msg = "Fahrzeug ";
msg += !state ? "~r~abgeschlossen" : "~g~abgeschlossen";
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);
}
}
}
}