first commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
local pendingCallbacks = {}
|
||||
local callbackCounter = 0
|
||||
local resourceName = GetCurrentResourceName()
|
||||
local responseEvent = ('devx_core:client:callback:%s'):format(resourceName)
|
||||
|
||||
function DevXTriggerCallback(name, payload, callback)
|
||||
assert(type(name) == 'string' and name:match('^[%w_%-]+:[%w_%-]+$'),
|
||||
'Callbackname ist ungültig.')
|
||||
assert(type(callback) == 'function', 'Clientcallback muss eine Funktion sein.')
|
||||
|
||||
callbackCounter = callbackCounter + 1
|
||||
local requestId = ('%s:%s:%s'):format(resourceName, GetGameTimer(), callbackCounter)
|
||||
|
||||
pendingCallbacks[requestId] = callback
|
||||
|
||||
TriggerServerEvent(
|
||||
('devx_core:server:callback:%s:%s'):format(resourceName, name),
|
||||
requestId,
|
||||
payload or {}
|
||||
)
|
||||
|
||||
SetTimeout(22000, function()
|
||||
local pending = pendingCallbacks[requestId]
|
||||
if not pending then return end
|
||||
|
||||
pendingCallbacks[requestId] = nil
|
||||
pending({
|
||||
ok = false,
|
||||
error = ('Keine Antwort auf %s. Prüfe die txAdmin- und F8-Konsole.'):format(name)
|
||||
})
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterNetEvent(responseEvent)
|
||||
AddEventHandler(responseEvent, function(requestId, result)
|
||||
local callback = pendingCallbacks[requestId]
|
||||
if not callback then return end
|
||||
|
||||
pendingCallbacks[requestId] = nil
|
||||
callback(result or { ok = false, error = 'Leere Serverantwort.' })
|
||||
end)
|
||||
Reference in New Issue
Block a user