Exports

O HZ-Bets e standalone-first: a logica do nucleo e a UI vivem inteiramente no recurso e expoem um unico contrato pequeno e estavel. Cada ponto de entrada (comando, atalho, NPC, telefone) chama a mesma porta.

Exports de cliente

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

A aba de admin so renderiza se o servidor confirmar que o jogador e um admin.


Lendo o painel ao vivo

O painel e publicado no GlobalState e e legivel por qualquer recurso — sem callback necessario:

local board = GlobalState.hzbets_board      -- { serverNow, active = {…}, settled = {…} }
local scorers = GlobalState.hzbets_scorers  -- top scorers (when OpenLigaDB is on)

E exatamente assim que o complemento de telefone le os dados com zero acoplamento aos internos do HZ-Bets.


Integracao com telefone / externa

Um adaptador de telefone nao precisa de nenhuma alteracao no HZ-Bets. Ele:

  1. le GlobalState.hzbets_board para o painel ao vivo, e
  2. encaminha a colocacao de apostas / "minhas apostas" atraves dos mesmos callbacks do hz_lib que a UI de desktop usa (o servidor permanece a unica autoridade).
O complemento oficial HZ-Bets App for QS Smartphone (qs-smartphone) e exatamente isto — um adaptador leve e seguro. Para fazer deep-link a partir de outro framework de telefone, aponte o handler de abertura do app dele para:

exports['hz_bets']:OpenBets()

A UI nunca depende da presenca de um telefone. Seja aberta a partir de um comando, de um NPC ou da tela inicial de um telefone, ela conversa com o mesmo motor com autoridade no servidor.