Fontes de eventos
Cada fonte alimenta o mesmo nucleo do servidor (criar -> liquidar) por tras de uma abstracao fixtures generica. O nucleo nunca sabe se um evento veio de uma API real ou da sua imaginacao — por padrao, as odds sao geradas pelo HZ-Bets (precificadas por pool) — ou, com a fonte opcional the-odds-api abaixo, importadas como linhas reais de casas de apostas (odds fixas).
ESPN — todos os esportes, sem chave
Config.Sources.espn puxa o placar publico da ESPN para cada liga configurada: NBA, WNBA, MLB, NHL, NFL, UFC e futebol mundial (Premier League, La Liga, Ligue 1, Bundesliga, Serie A, MLS, Brasil, Mexico...). O futebol se torna um mercado 1/X/2; todo outro esporte um Vencedor de 2 vias.
Ele cria automaticamente as proximas partidas, transmite o placar ao vivo e liquida automaticamente no resultado real. Cada liga e uma linha de configuracao:
Leagues = {
{ sport = 'basketball', league = 'nba' },
{ sport = 'baseball', league = 'mlb' },
{ sport = 'hockey', league = 'nhl' },
{ sport = 'football', league = 'nfl' }, -- American football
{ sport = 'mma', league = 'ufc' }, -- per-fight on a card
{ sport = 'soccer', league = 'eng.1' }, -- Premier League
-- … add / remove freely
}
Ligas fora de temporada simplesmente nao retornam nada; as que estao em temporada preenchem o painel automaticamente.
Config.Sources.espn.Enabled).Como ele liquida: o placar e a fonte da verdade (a flag de vencedor apenas veta um desacordo), e um evento so liquida em um final limpo e jogado — nunca em um jogo adiado / abandonado.
the-odds-api — odds reais de casas de apostas (opcional)
A ESPN te da as partidas, mas sem odds — entao um painel novo abre com precos de pool simetricos ate os jogadores apostarem. Em vez disso, Config.Sources.oddsapi preenche os eventos com odds reais, orientadas por dados: as mesmas linhas de mercado que os grandes apps de apostas mostram, via the-odds-api.com. Ela precifica os esportes que a ESPN nao consegue, incluindo NRL e AFL, alem de futebol, NBA, NFL, MLB, NHL e MMA. Esses eventos usam odds fixas (uma linha de consenso, a media entre as casas de apostas) e liquidam no placar final real.
server.cfg (ela nunca e entregue dentro do recurso e nunca enviada a NUI):
set hz_bets_oddsapi_key "your_key_here"
Depois ative os esportes que quiser (chaves em the-odds-api.com/sports):
oddsapi = {
Enabled = true,
Regions = 'au', -- 1 region = 1 quota credit; 'au' for Aussie books
Sports = { 'rugbyleague_nrl' }, -- e.g. add 'aussierules_afl', 'soccer_epl', 'basketball_nba'
PollIntervalMin = 180, -- odds refresh (pre-match lines barely move)
}
Config.Bet.MaxPayoutPerSelection e Config.Odds.MaxDecimal. Se voce quer que a banca nunca perca, mantenha esse esporte no modelo de pool.Config.Debug).Config.Sources.espn (e vice-versa), ou as duas fontes vao criar as mesmas partidas duas vezes. Tudo a jusante — liquidacao, ledger, pagamentos — e identico a qualquer outra fonte.
OpenLigaDB — futebol, ODbL
Config.Sources.openligadb e um feed de futebol sem chave, sem autenticacao e aberto (https://api.openligadb.de). Liste as ligas como shortcut ou shortcut/season (wm26/2026 para a Copa do Mundo, bl1/2025, dfb...). Ele cria automaticamente os mercados configurados com escudos reais das equipes, liquida automaticamente no placar final e publica os artilheiros da liga ("Top des Buteurs").
As partidas em andamento sao consultadas em uma cadencia mais rapida para placares ao vivo e liquidacao rapida.
RP — eventos criados pelo admin
A fonte RP nao tem dependencia externa: voce cria eventos manualmente pela tela de administracao no jogo — corridas, lutas, partidas ficticias, qualquer coisa — para qualquer esporte, com seus proprios resultados e odds. E tambem assim que voce cria um mercado de artilheiro apostavel (Buteur) (o admin escolhe quem marcou). Veja Mercados e odds.
Degradacao elegante
Todo o trabalho de API e apenas no servidor e armazenado em cache; o cliente nunca chama uma API. Uma fonte que retorna lixo ou cai nunca pode travar o recurso, criar um evento malformado ou liquidar uma aposta incorretamente — ela simplesmente para de atualizar ate se recuperar. Eventos ja criados permanecem visiveis (ultimo painel conhecido) o tempo todo.
