From df21f8a4cc5efc545711ca820d77719e2a42eb68 Mon Sep 17 00:00:00 2001 From: TheFantomas <117121911+TheFantomas@users.noreply.github.com> Date: Tue, 21 Feb 2023 18:50:52 +0100 Subject: [PATCH] refactor(es_extended/client/main.lua): VehicleProperties better way --- [core]/es_extended/client/main.lua | 38 +++++++++++++++++------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index e197e46b..fc2addcd 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -163,23 +163,29 @@ AddEventHandler('esx:restoreLoadout', function() end) AddStateBagChangeHandler('VehicleProperties', nil, function(bagName, key, value) - if value then - Wait(0) - local NetId = value.NetId - local Vehicle = NetworkGetEntityFromNetworkId(NetId) - local Tries = 0 - while Vehicle == 0 do - Vehicle = NetworkGetEntityFromNetworkId(NetId) - Wait(100) - Tries = Tries + 1 - if Tries > 300 then - break - end - end - if NetworkGetEntityOwner(Vehicle) == PlayerId() then - ESX.Game.SetVehicleProperties(Vehicle, value) - end + if not value then + return end + + local netId = bagName:gsub('entity:', '') + local timer = GetGameTimer() + while not NetworkDoesEntityExistWithNetworkId(tonumber(netId)) do + Wait(0) + if GetGameTimer() - timer > 10000 then + return + end + end + + local vehicle = NetToVeh(tonumber(netId)) + local timer = GetGameTimer() + while NetworkGetEntityOwner(vehicle) ~= PlayerId() do + Wait(0) + if GetGameTimer() - timer > 10000 then + return + end + end + + ESX.Game.SetVehicleProperties(vehicle, value) end) RegisterNetEvent('esx:setAccountMoney')