Merge pull request #855 from TheFantomas/main

ESX.OneSync.SpawnVehicle and Command rewrite
This commit is contained in:
P Gergő
2023-01-24 16:12:48 +01:00
committed by GitHub
3 changed files with 67 additions and 40 deletions
+1 -1
View File
@@ -60,7 +60,7 @@ Config.RemoveHudCommonents = {
[22] = false, --HUD_WEAPONS [22] = false, --HUD_WEAPONS
} }
Config.MaxAdminVehicles = false -- admin vehicles spawn with max vehcle settings Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehcle settings
Config.CustomAIPlates = 'ESX.A111' -- Custom plates for AI vehicles Config.CustomAIPlates = 'ESX.A111' -- Custom plates for AI vehicles
-- Pattern string format -- Pattern string format
--1 will lead to a random number from 0-9. --1 will lead to a random number from 0-9.
+45 -18
View File
@@ -23,29 +23,56 @@ end, true, {help = TranslateCap('command_setjob'), validate = true, arguments =
{name = 'grade', help = TranslateCap('command_setjob_grade'), type = 'number'} {name = 'grade', help = TranslateCap('command_setjob_grade'), type = 'number'}
}}) }})
local upgrades = Config.SpawnVehMaxUpgrades and
{
plate = "ADMINCAR",
modEngine = 3,
modBrakes = 2,
modTransmission = 2,
modSuspension = 3,
modArmor = true,
windowTint = 1
} or {}
ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError) ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError)
local GameBuild = tonumber(GetConvar("sv_enforceGameBuild", 1604)) if not xPlayer then
if not args.car then args.car = GameBuild >= 2699 and "draugur" or "prototipo" end return print('[^1ERROR^7] The xPlayer value is nil')
end
local playerPed = GetPlayerPed(xPlayer.source)
local playerCoords = GetEntityCoords(playerPed)
local playerHeading = GetEntityHeading(playerPed)
local playerVehicle = GetVehiclePedIsIn(playerPed)
if not args.car or type(args.car) ~= 'string' then
args.car = 'adder'
end
if playerVehicle then
DeleteEntity(playerVehicle)
end
ESX.DiscordLogFields("UserActions", "/car Triggered", "pink", { ESX.DiscordLogFields("UserActions", "/car Triggered", "pink", {
{name = "Player", value = xPlayer.name, inline = true}, {name = "Player", value = xPlayer.name, inline = true},
{name = "ID", value = xPlayer.source, inline = true}, {name = "ID", value = xPlayer.source, inline = true},
{name = "Vehicle", value = args.car, inline = true} {name = "Vehicle", value = args.car, inline = true}
}) })
local upgrades = Config.MaxAdminVehicles and {
plate = "ADMINCAR", ESX.OneSync.SpawnVehicle(args.car, playerCoords, playerHeading, upgrades, function(networkId)
modEngine = 3, if networkId then
modBrakes = 2, local vehicle = NetworkGetEntityFromNetworkId(networkId)
modTransmission = 2, for i = 1, 20 do
modSuspension = 3, Wait(0)
modArmor = true, SetPedIntoVehicle(playerPed, vehicle, -1)
windowTint = 1,
} or {} if GetVehiclePedIsIn(playerPed, false) == vehicle then
local coords = xPlayer.getCoords(true) break
local PlayerPed = GetPlayerPed(xPlayer.source) end
ESX.OneSync.SpawnVehicle(args.car, coords - vector3(0,0, 0.9), GetEntityHeading(PlayerPed), upgrades, function(networkId) end
local vehicle = NetworkGetEntityFromNetworkId(networkId) if GetVehiclePedIsIn(playerPed, false) ~= vehicle then
Wait(250) print('[^1ERROR^7] The player could not be seated in the vehicle')
TaskWarpPedIntoVehicle(PlayerPed, vehicle, -1) end
end
end) end)
end, false, {help = TranslateCap('command_car'), validate = false, arguments = { end, false, {help = TranslateCap('command_car'), validate = false, arguments = {
{name = 'car',validate = false, help = TranslateCap('command_car_car'), type = 'string'} {name = 'car',validate = false, help = TranslateCap('command_car_car'), type = 'string'}
+21 -21
View File
@@ -61,29 +61,29 @@ end
---@param heading number ---@param heading number
---@param Properties table ---@param Properties table
---@param cb function ---@param cb function
function ESX.OneSync.SpawnVehicle(model, coords, heading, Properties, cb) function ESX.OneSync.SpawnVehicle(model, coords, heading, properties, cb)
local veh_model = type(model) == 'string' and joaat(model) or model local vehicleModel = joaat(model)
Properties = Properties or {} local vehicleProperties = properties
local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z)
TriggerClientEvent("esx:requestModel", -1, model) CreateThread(function()
CreateThread(function() local xPlayer = ESX.OneSync.GetClosestPlayer(coords, 300)
local xPlayer = ESX.OneSync.GetClosestPlayer(vector, 300) ESX.GetVehicleType(vehicleModel, xPlayer.id, function(vehicleType)
ESX.GetVehicleType(veh_model, xPlayer.id, function(Type) if vehicleType then
if Type then local createdVehicle = CreateVehicleServerSetter(vehicleModel, vehicleType, coords, heading)
local SpawnedEntity = CreateVehicleServerSetter(veh_model, Type, vector, heading) if DoesEntityExist(createdVehicle) then
local NetworkId = NetworkGetNetworkIdFromEntity(SpawnedEntity) local networkId = NetworkGetNetworkIdFromEntity(createdVehicle)
while not DoesEntityExist(SpawnedEntity) do vehicleProperties.NetId = networkId
Wait(100) Entity(createdVehicle).state:set('VehicleProperties', vehicleProperties, true)
end cb(networkId)
Properties.NetId = NetworkId else
Entity(SpawnedEntity).state:set('VehicleProperties', Properties, true) print('[^1ERROR^7] Unfortunately, this vehicle has not spawned')
cb(NetworkId)
else
print(('[^1ERROR^7] Tried to spawn invalid vehicle - ^5%s^7!'):format(model))
end end
end) else
print(('[^1ERROR^7] Tried to spawn invalid vehicle - ^5%s^7!'):format(model))
end
end) end)
end end)
end
---@param model number|string ---@param model number|string