Skip to content

tw.callback

Côté : Client + Server

Système de callbacks bidirectionnel client-serveur. Enregistrez un callback d'un côté, déclenchez-le depuis l'autre, avec support des appels synchrones et asynchrones.

Fonctions Client

tw.callback.register(name, handler)

Enregistre un callback côté client, déclenchable depuis le serveur.

ParamètreTypeDescription
namestringNom unique du callback
handlerfunctionFonction handler. La valeur de retour est renvoyée à l'appelant

Alias : tw.callback.registerCallback(name, handler)


tw.callback.triggerServer(name, cb, ...)

Déclenche un callback côté serveur depuis le client.

ParamètreTypeDescription
namestringNom du callback serveur à déclencher
cbfunction ou nilCallback pour le mode async, ou nil pour le mode synchrone (bloquant via Citizen.Await)
...anyArguments passés au handler serveur

Retour : Quand cb est nil, retourne la/les valeur(s) de retour du handler serveur de manière synchrone.


tw.callback.triggerClient(name, cb, ...)

Déclenche un callback local côté client (client-vers-client).

ParamètreTypeDescription
namestringNom du callback client à déclencher
cbfunction ou nilCallback pour le mode async, ou nil pour le mode synchrone
...anyArguments passés au handler

Fonctions Server

tw.callback.register(name, handler)

Enregistre un callback côté serveur. Le source du joueur appelant est toujours injecté comme premier argument.

ParamètreTypeDescription
namestringNom unique du callback
handlerfunction(source, ...)Fonction handler. source est l'ID serveur du joueur

tw.callback.register.latent(name, handler)

Enregistre un callback côté serveur avec des réponses à bande passante limitée (événements latents). Utile pour envoyer de gros payloads au client sans saturer le réseau.

ParamètreTypeDescription
namestringNom unique du callback
handlerfunction(source, ...)Fonction handler avec livraison de réponse à bande passante limitée

tw.callback.triggerServer(name, cb, ...)

Déclenche un callback serveur local (serveur-vers-serveur).

ParamètreTypeDescription
namestringNom du callback serveur à déclencher
cbfunction ou nilCallback pour le mode async, ou nil pour le mode synchrone
...anyArguments passés au handler

tw.callback.triggerClient(name, target, cb, ...)

Déclenche un callback côté client depuis le serveur.

ParamètreTypeDescription
namestringNom du callback client à déclencher
targetintegerID serveur du joueur
cbfunction ou nilCallback pour le mode async, ou nil pour le mode synchrone
...anyArguments passés au handler client

Exemples

Enregistrer sur le serveur, appeler depuis le client (async)

lua
-- server.lua
tw.callback.register("getPlayerBalance", function(source)
    local user = tw.fw:getUser(source)
    return user:getMoney(0)
end)

-- client.lua
tw.callback.triggerServer("getPlayerBalance", function(balance)
    print("Mon solde : $" .. balance)
end)

Appel synchrone depuis le client

lua
-- client.lua
local balance = tw.callback.triggerServer("getPlayerBalance", nil)
print("Mon solde : $" .. balance)

Enregistrer sur le client, appeler depuis le serveur

lua
-- client.lua
tw.callback.register("getPlayerCoords", function()
    return GetEntityCoords(PlayerPedId())
end)

-- server.lua
tw.callback.triggerClient("getPlayerCoords", source, function(coords)
    print("Le joueur est à : " .. coords)
end)

Callback latent pour de grosses données

lua
-- server.lua
tw.callback.register.latent("getAllShopItems", function(source)
    return Config.ShopItems -- grosse table envoyée avec contrôle de bande passante
end)

-- client.lua
local items = tw.callback.triggerServer("getAllShopItems", nil)

Notes

  • Les appels synchrones (cb = nil) utilisent Citizen.Await et bloquent le thread courant jusqu'à la réception de la réponse.
  • Le paramètre source est automatiquement injecté sur les handlers côté serveur ; ne le passez pas manuellement depuis le client.
  • Utilisez register.latent quand le payload de réponse est volumineux pour éviter la congestion réseau.

Premium RedM Scripts — Multi-Framework