75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using GTANetworkAPI;
|
|
using ReallifeGamemode.Database.Entities;
|
|
using ReallifeGamemode.Server.Job;
|
|
using ReallifeGamemode.Server.Managers;
|
|
using ReallifeGamemode.Server.Util;
|
|
|
|
namespace ReallifeGamemode.Server.Extensions
|
|
{
|
|
public static class ServerVehicleExtensions
|
|
{
|
|
public static JobBase GetJob(this JobVehicle vehicle)
|
|
{
|
|
return JobManager.GetJob(vehicle.JobId);
|
|
}
|
|
|
|
public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh);
|
|
|
|
public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh = null)
|
|
{
|
|
if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh);
|
|
Vector3 position = veh.Position;
|
|
uint model = (uint)veh.Model;
|
|
float heading = veh.Heading;
|
|
int c1 = veh.PrimaryColor;
|
|
int c2 = veh.SecondaryColor;
|
|
Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false);
|
|
veh.Livery = veh.Livery;
|
|
VehicleStreaming.SetEngineState(newVeh, false);
|
|
VehicleStreaming.SetLockStatus(newVeh, veh.Locked);
|
|
VehicleManager.AddVehicle(veh, newVeh);
|
|
|
|
newVeh.SetSharedData("drivenDistance", veh.DistanceDriven);
|
|
|
|
string numberplate = $"{veh.Id}";
|
|
|
|
if (veh is FactionVehicle fV)
|
|
{
|
|
numberplate = $"F{fV.FactionId} " + numberplate;
|
|
}
|
|
|
|
if (veh is UserVehicle uV)
|
|
{
|
|
numberplate = $"U{uV.UserId} " + numberplate;
|
|
}
|
|
|
|
if (veh is ShopVehicle sV)
|
|
{
|
|
numberplate = "Shop";
|
|
VehicleStreaming.SetLockStatus(newVeh, false);
|
|
TextLabel label = NAPI.TextLabel.CreateTextLabel("SHOPVEHICLE\n" + "~g~" + sV.Price.ToMoneyString(),
|
|
veh.Position.Add(new Vector3(0, 0, 1.3)), 20.0f, 1f, 1, new Color(255, 255, 255));
|
|
|
|
newVeh.SetSharedData("shopVehicleTextLabel", label.Handle.Value);
|
|
}
|
|
|
|
if (veh is GroupVehicle gV)
|
|
{
|
|
numberplate = $"G{gV.GroupId} " + numberplate;
|
|
}
|
|
|
|
if (veh is JobVehicle jV)
|
|
{
|
|
numberplate = $"J{jV.JobId} " + numberplate;
|
|
}
|
|
NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate);
|
|
veh.NumberPlate = numberplate;
|
|
|
|
return newVeh;
|
|
}
|
|
}
|
|
}
|