@@ -11,6 +11,7 @@ local DisableControlAction = DisableControlAction
1111local DisablePlayerFiring = DisablePlayerFiring
1212local playerState = LocalPlayer .state
1313local createdProps = {}
14+ local maxProps = GetConvarInt (' ox:progressPropLimit' , 2 )
1415
1516--- @class ProgressPropProps
1617--- @field model string
@@ -34,13 +35,16 @@ local createdProps = {}
3435--- @field disable ? { move ?: boolean , sprint ?: boolean , car ?: boolean , combat ?: boolean , mouse ?: boolean }
3536
3637local function createProp (ped , prop )
37- lib .requestModel (prop .model )
38+ local ok , result = pcall (lib .requestModel , prop .model )
39+
40+ if not ok then return lib .print .error (result ) end
41+
3842 local coords = GetEntityCoords (ped )
39- local object = CreateObject (prop . model , coords .x , coords .y , coords .z , false , false , false )
43+ local object = CreateObject (result , coords .x , coords .y , coords .z , false , false , false )
4044
4145 AttachEntityToEntity (object , ped , GetPedBoneIndex (ped , prop .bone or 60309 ), prop .pos .x , prop .pos .y , prop .pos .z , prop .rot .x , prop .rot .y , prop .rot .z , true ,
4246 true , false , true , prop .rotOrder or 0 , true )
43- SetModelAsNoLongerNeeded (prop . model )
47+ SetModelAsNoLongerNeeded (result )
4448
4549 return object
4650end
@@ -90,7 +94,7 @@ local function startProgress(data)
9094 end
9195
9296 if data .prop then
93- playerState : set ( ' lib :progressProps' , data .prop , true )
97+ TriggerServerEvent ( ' ox_lib :progressProps' , data .prop )
9498 end
9599
96100 local disable = data .disable
@@ -137,7 +141,7 @@ local function startProgress(data)
137141 end
138142
139143 if data .prop then
140- playerState : set ( ' lib :progressProps' , nil , true )
144+ TriggerServerEvent ( ' ox_lib :progressProps' , nil )
141145 end
142146
143147 if anim then
@@ -225,14 +229,18 @@ end
225229
226230local function deleteProgressProps (serverId )
227231 local playerProps = createdProps [serverId ]
232+
228233 if not playerProps then return end
234+
235+ createdProps [serverId ] = nil
236+
229237 for i = 1 , # playerProps do
230238 local prop = playerProps [i ]
239+
231240 if DoesEntityExist (prop ) then
232241 DeleteEntity (prop )
233242 end
234243 end
235- createdProps [serverId ] = nil
236244end
237245
238246RegisterNetEvent (' onPlayerDropped' , function (serverId )
@@ -248,22 +256,29 @@ AddStateBagChangeHandler('lib:progressProps', nil, function(bagName, key, value,
248256 local ped = GetPlayerPed (ply )
249257 local serverId = GetPlayerServerId (ply )
250258
251- if not value then
259+ if not value or createdProps [ serverId ] then
252260 return deleteProgressProps (serverId )
253261 end
254262
255- createdProps [serverId ] = {}
256- local playerProps = createdProps [serverId ]
263+ local playerProps = {}
257264
258265 if value .model then
259- playerProps [# playerProps + 1 ] = createProp (ped , value )
266+ local prop = createProp (ped , value )
267+
268+ if prop then
269+ playerProps [# playerProps + 1 ] = createProp (ped , value )
270+ end
260271 else
261- for i = 1 , # value do
262- local prop = value [i ]
272+ local propCount = math.min (maxProps , # value )
273+
274+ for i = 1 , propCount do
275+ local prop = createProp (ped , value [i ])
263276
264277 if prop then
265- playerProps [# playerProps + 1 ] = createProp ( ped , prop )
278+ playerProps [# playerProps + 1 ] = prop
266279 end
267280 end
268281 end
269- end )
282+
283+ createdProps [serverId ] = playerProps
284+ end )
0 commit comments