feat(resource): load callbacks

Load lib.callback for internal use.
This commit is contained in:
Linden
2022-09-14 00:50:27 +10:00
parent 0ecb968202
commit ed7bf536e8
5 changed files with 17 additions and 12 deletions

View File

@@ -37,11 +37,13 @@ shared_scripts {
}
client_scripts {
'imports/callback/client.lua',
'resource/**/client.lua',
'resource/**/client/*.lua'
}
server_scripts {
'imports/callback/server.lua',
'resource/**/server.lua',
'resource/**/server/*.lua'
}

View File

@@ -59,14 +59,14 @@ local function triggerServerCallback(_, event, delay, cb, ...)
end
---@overload fun(event: string, delay: number, cb: function, ...)
local callback = setmetatable({}, {
lib.callback = setmetatable({}, {
__call = triggerServerCallback
})
---@param event string
---@param delay number prevent the event from being called for the given time
--- Sends an event to the server and halts the current thread until a response is returned.
function callback.await(event, delay, ...)
function lib.callback.await(event, delay, ...)
return triggerServerCallback(_, event, delay, false, ...)
end
@@ -87,10 +87,10 @@ local pcall = pcall
---@param name string
---@param cb function
--- Registers an event handler and callback function to respond to server requests.
function callback.register(name, cb)
function lib.callback.register(name, cb)
RegisterNetEvent(cbEvent:format(name), function(resource, key, ...)
TriggerServerEvent(cbEvent:format(resource), key, callbackResponse(pcall(cb, ...)))
end)
end
return callback
return lib.callback

View File

@@ -40,14 +40,14 @@ local function triggerClientCallback(_, event, playerId, cb, ...)
end
---@overload fun(event: string, playerId: number, cb: function, ...)
local callback = setmetatable({}, {
lib.callback = setmetatable({}, {
__call = triggerClientCallback
})
---@param event string
---@param playerId number
--- Sends an event to a client and halts the current thread until a response is returned.
function callback.await(event, playerId, ...)
function lib.callback.await(event, playerId, ...)
return triggerClientCallback(_, event, playerId, false, ...)
end
@@ -68,10 +68,10 @@ local pcall = pcall
---@param name string
---@param cb function
--- Registers an event handler and callback function to respond to client requests.
function callback.register(name, cb)
function lib.callback.register(name, cb)
RegisterNetEvent(cbEvent:format(name), function(resource, key, ...)
TriggerClientEvent(cbEvent:format(resource), source, key, callbackResponse(pcall(cb, source, ...)))
end)
end
return callback
return lib.callback

View File

@@ -1,4 +1,4 @@
local cache = {}
local cache = _ENV.cache
cache.playerId = PlayerId()
cache.serverId = GetPlayerServerId(cache.playerId)
@@ -44,5 +44,3 @@ end)
function lib.cache(key)
return cache[key]
end
_ENV.cache = cache

View File

@@ -1,5 +1,6 @@
lib = setmetatable({
name = 'ox_lib'
name = 'ox_lib',
context = IsDuplicityVersion() and 'server' or 'client',
}, {
__newindex = function(self, name, fn)
exports(name, fn)
@@ -7,6 +8,10 @@ lib = setmetatable({
end
})
cache = {
resource = lib.name
}
if not LoadResourceFile(lib.name, 'web/build/index.html') then
error('Unable to load UI. Build ox_lib or download the latest release.\n ^3https://github.com/overextended/ox_lib/releases/latest/download/ox_lib.zip^0')
end