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 :

  1. lit GlobalState.hzbets_board pour le tableau en direct, et
  2. transmet le placement des paris / "mes paris" via les mêmes callbacks hz_lib que l'interface bureau (le serveur reste l'autorite unique).
Le compagnon officiel HZ-Bets App for QS Smartphone (qs-smartphone) est exactement cela — un adaptateur léger et sécurisé. Pour faire un deep-link depuis un autre framework téléphone, pointez le gestionnaire d'ouverture de son application vers :

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.