Exports
Lance un mini-jeu depuis n'importe quel script et attends le résultat.
Lance un mini-jeu depuis n'importe quel script et attends le résultat.
Tout passe par un seul export client. Tu ne touches ni aux events ni au NUI directement —
tu appelles play, tu attends le résultat, et tu agis dessus.
playexports['see_minigames']:play(game, options) -- booleanLance un mini-jeu et renvoie le verdict, re-validé côté serveur. Il bloque jusqu'à ce que
le joueur réussisse, échoue ou dépasse le temps : appelle-le dans un CreateThread (ou tout
contexte async).
gamestringrequiredLe jeu à lancer : 'wires', 'pattern', 'sequence' ou 'lockpick'.
optionstableoptionalOptionnel. { difficulty = 'easy' | 'medium' | 'hard' }. Par défaut Config.defaultDifficulty.
Renvoie — boolean. true seulement quand le serveur valide la tentative du joueur.
false si un jeu est déjà en cours, si le joueur échoue, si le temps est écoulé ou si la
tentative est invalide.
CreateThread(function()
local success = exports['see_minigames']:play('lockpick', { difficulty = 'hard' })
if not success then
return -- échec ou annulation : la porte reste verrouillée
end
-- réussite : déverrouille la porte, ouvre la planque, lance le braquage...
TriggerServerEvent('myscript:door:open')
end)Chaque jeu est serveur-autoritaire : le serveur construit le défi, le lie à un token à usage
unique, et reste le seul à décider de la réussite quand play renvoie. L'interface ne fait que
jouer et soumettre la tentative.
Un skillcheck doit montrer le défi au joueur : un client entièrement modifié pourrait donc, en théorie, en auto-résoudre un. Le serveur garantit aucune validation sans token correspondant ni tentative cohérente — vois les jeux comme de la friction et de l'immersion, pas comme un anti-triche autonome sur une action critique.