434434--- @param source any
435435--- @param cb function
436436--- @param ... any
437- function QBCore .Functions .TriggerClientCallback (name , source , cb , ...)
438- QBCore .ClientCallbacks [name ] = cb
439- TriggerClientEvent (' QBCore:Client:TriggerClientCallback' , source , name , ... )
437+ function QBCore .Functions .TriggerClientCallback (name , source , ...)
438+ local cb = nil
439+ local args = { ... }
440+
441+ if QBCore .Shared .IsFunction (args [1 ]) then
442+ cb = args [1 ]
443+ table.remove (args , 1 )
444+ end
445+
446+ QBCore .ClientCallbacks [name ] = {
447+ callback = cb ,
448+ promise = promise .new ()
449+ }
450+
451+ TriggerClientEvent (' QBCore:Client:TriggerClientCallback' , source , name , table.unpack (args ))
452+
453+ if cb == nil then
454+ Citizen .Await (QBCore .ClientCallbacks [name ].promise )
455+ return QBCore .ClientCallbacks [name ].promise .value
456+ end
440457end
441458
442459--- Create Server Callback
@@ -446,16 +463,6 @@ function QBCore.Functions.CreateCallback(name, cb)
446463 QBCore .ServerCallbacks [name ] = cb
447464end
448465
449- --- Trigger Serv er Callback
450- --- @param name string
451- --- @param source any
452- --- @param cb function
453- --- @param ... any
454- function QBCore .Functions .TriggerCallback (name , source , cb , ...)
455- if not QBCore .ServerCallbacks [name ] then return end
456- QBCore .ServerCallbacks [name ](source , cb , ... )
457- end
458-
459466-- Items
460467
461468--- Create a usable item
@@ -475,7 +482,7 @@ function QBCore.Functions.CreateUseableItem(item, data)
475482 elseif type (data ) == " function" then
476483 rawFunc = data
477484 end
478-
485+
479486 if rawFunc then
480487 QBCore .UsableItems [item ] = {
481488 func = rawFunc ,
0 commit comments