From 0082a70c50f8ae79153a558469ce758d781e5643 Mon Sep 17 00:00:00 2001 From: Mycroft Date: Fri, 16 Sep 2022 04:14:49 +0100 Subject: [PATCH] !refactor(es_extended): Correct Onesync Spawning this will break any script currently using ESX.OneSync.SpawnVehicle but, its a needed change --- [esx]/es_extended/client/main.lua | 12 ++++++++++++ [esx]/es_extended/server/onesync.lua | 28 +++++++++++----------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/[esx]/es_extended/client/main.lua b/[esx]/es_extended/client/main.lua index 72ad617d..d9338792 100644 --- a/[esx]/es_extended/client/main.lua +++ b/[esx]/es_extended/client/main.lua @@ -193,6 +193,18 @@ AddEventHandler('esx:restoreLoadout', function() end end) +AddStateBagChangeHandler('VehicleProperties', nil, function(bagName, key, value) + if value then + Wait(0) + local NetId = tonumber(bagName:gsub('entity:', ''), 10) + local Vehicle = NetworkGetEntityFromNetworkId(NetId) + + if NetworkGetEntityOwner(Vehicle) == PlayerId() then + ESX.Game.SetVehicleProperties(Vehicle, value) + end + end +end) + RegisterNetEvent('esx:setAccountMoney') AddEventHandler('esx:setAccountMoney', function(account) for i=1, #(ESX.PlayerData.accounts) do diff --git a/[esx]/es_extended/server/onesync.lua b/[esx]/es_extended/server/onesync.lua index 0c1005db..039c721f 100644 --- a/[esx]/es_extended/server/onesync.lua +++ b/[esx]/es_extended/server/onesync.lua @@ -59,18 +59,22 @@ end ---@param model number|string ---@param coords vector3|table ---@param heading number +---@param autoMobile boolean +---@param Properties table ---@param cb function -function ESX.OneSync.SpawnVehicle(model, coords, heading, autoMobile, cb) - if type(model) == 'string' then model = joaat(model) end - local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z) - if type(autoMobile) ~= 'boolean' then - return - end - CreateThread(function() +function ESX.OneSync.SpawnVehicle(model, coords, heading, autoMobile, Properties, cb) + model = type(model) == 'string' and joaat(model) or model + Properties = Properties or {} + local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z) + if type(autoMobile) ~= 'boolean' then + return + end + CreateThread(function() local Entity = autoMobile and Citizen.InvokeNative(`CREATE_AUTOMOBILE`, model, coords.x, coords.y, coords.z, heading) or CreateVehicle(model, coords, heading, true, true) while not DoesEntityExist(Entity) do Wait(0) end + Entity(Entity).state:set('VehicleProperties', Properties, true) local netID = NetworkGetNetworkIdFromEntity(Entity) cb(netID) end) @@ -197,16 +201,6 @@ function ESX.OneSync.GetClosestVehicle(coords, modelFilter) return getClosestEntity(GetAllVehicles(), coords, modelFilter) end -ESX.RegisterServerCallback("esx:Onesync:SpawnVehicle", function(source, cb, model, coords, heading, autoMobile) - ESX.OneSync.SpawnVehicle(model, coords, heading, autoMobile, cb) -end) - ESX.RegisterServerCallback("esx:Onesync:SpawnObject", function(source, cb, model, coords, heading) ESX.OneSync.SpawnObject(model, coords, heading, cb) end) - --- for k,v in pairs(ESX.OneSync) do --- ESX.RegisterServerCallback("esx:Onesync:"..k, function(source, cb, ...) --- cb(v(...)) --- end) --- end \ No newline at end of file