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:
- le
GlobalState.hzbets_boardpara o painel ao vivo, e - 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).
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.
