NSS Docs
DiscordStoreHomepage
nss_libs
nss_libs
  • README
  • Changelog
  • UI components
    • NssUiApi basics
    • NssAudio
    • NssButton
    • NssClient
    • NssConfirm
    • NssHelper
    • NssLoadingIndicator
    • NssModal
    • NssPadLock
    • NssResponsive
    • NssSimpleTextEditor
    • NssSvgReplacer
    • NssTextBox
    • NssTip
  • Client/server modules
    • AttachProp
    • Blip
    • Character
      • Client Character
      • Server Character
    • Chunk
    • ClientEvent
    • ConfigValidator
    • Database
    • DatabaseUpdater
    • DependencyAutoRestart
    • Discord
    • EntityInRange
    • Helper
      • Client Helper
      • Server Helper
      • Shared Helper
    • Inventory
    • Keyboard
    • Notify
    • Npc
    • ParticleFxPlayer
    • PointInRange
    • Prompts
    • ServerEvent
    • VersionCheck
Powered by GitBook
On this page
  • Example
  • client.lua
  • server.lua

Was this helpful?

  1. Client/server modules

ClientEvent

This is a library for sending events to the client in synchronous and asynchronous ways optionally waiting for a response.

Example

client.lua

Listen clients from the server.

-- Gets the client listener api.
---@type ClientListenerApi
client_listener_api = exports.nss_libs:getClientListenerApi(GetCurrentResourceName())

-- Register a listener for the event "test" and return the result.
---@param _source number The identifier of the client that fired the event.
---@param times number Example argument.
client_listener_api:addListener('test', function(_source, times)

    local result = {}

    for _ = 1, times do
        table.insert(result, 'Hello from client')
    end

    print('Client Result', table.unpack(result))

    return result
end)

server.lua

Fires events to the client.

-- Gets the client event api.
---@type ClientEventApi
client_event_api = exports.nss_libs:getClientEventApi(GetCurrentResourceName())

Citizen.CreateThread(function()

    local player_id = 1
    local times = 3

    -- Example awaits result and blocks the thread as long as no result response is received.
    -- The client event works like a synchronous function call.
    -- It is not allowed to fire this to all players in one call.
    local data = client_event_api:await("test", player_id, times)
    print('Client Result', table.unpack(data))

    -- The callback is executed async on client response.
    -- Example does not await result and does not block the thread. 
    -- It is not allowed to fire this to all players in one call.
    ---@param response_data any|table
    client_event_api:async("test", player_id, function(response_data)
        print('Client Result', table.unpack(response_data))
    end, times)

    -- Example fires a global client event and does not wait for a result.
    -- Example does not await result and does not block the thread.
    -- If player_id is nil or -1 the event will be fired to all players.
    client_event_api:fire("test", player_id, times)

    -- Example fires a global client event to all players and does not wait for a result.
    -- Example does not await result and does not block the thread.
    client_event_api:fireToAll("test", times)

end)
PreviousChunkNextConfigValidator

Last updated 1 year ago

Was this helpful?