Exports
HZ-Bets est standalone-first : la logique du coeur et l'interface vivent entièrement dans la ressource et exposent un petit contrat stable. Chaque point d'entrée (commande, raccourci, PNJ, téléphone) appelle la même porte.
Exports client
exports['hz_bets']:OpenBets(tab) -- open the app. tab is optional: 'events' | 'mybets' | 'admin'
exports['hz_bets']:CloseBets() -- close it
exports['hz_bets']:Toggle() -- open if closed, close if open
exports['hz_bets']:IsOpen() -- boolean
-- or fire the event from anywhere:
TriggerEvent('hz_bets:open') -- optionally pass a tab
L'onglet admin ne s'affiche que si le serveur confirme que le joueur est un admin.
Lire le tableau en direct
Le tableau est publié dans GlobalState et est lisible par n'importe quelle ressource — aucun callback nécessaire :
local board = GlobalState.hzbets_board -- { serverNow, active = {…}, settled = {…} }
local scorers = GlobalState.hzbets_scorers -- top scorers (when OpenLigaDB is on)
C'est exactement ainsi que le compagnon téléphone lit les données, sans aucun couplage avec les internes de HZ-Bets.
Intégration téléphone / externe
Un adaptateur téléphone n'a besoin d'aucune modification de HZ-Bets. Il :
- lit
GlobalState.hzbets_boardpour le tableau en direct, et - transmet le placement des paris / "mes paris" via les mêmes callbacks hz_lib que l'interface bureau (le serveur reste l'autorite unique).
exports['hz_bets']:OpenBets()
L'interface ne dépend jamais de la présence d'un téléphone. Qu'elle soit ouverte depuis une commande, un PNJ ou un écran d'accueil de téléphone, elle parle au même moteur à serveur autoritaire.
