Sources d'evenements

Chaque source alimente le meme coeur serveur (creer → regler) derriere une abstraction generique fixtures. Le coeur ne sait jamais si un evenement provient d'une vraie API ou de votre imagination — par defaut, les cotes sont generees par HZ-Bets (au parimutuel) — ou, avec la source optionnelle the-odds-api ci-dessous, importees comme de vraies lignes de bookmaker (cotes fixes).


ESPN — tous sports, sans cle

Config.Sources.espn recupere le scoreboard public d'ESPN pour chaque championnat configure : NBA, WNBA, MLB, NHL, NFL, UFC, et le football mondial (Premier League, La Liga, Ligue 1, Bundesliga, Serie A, MLS, Bresil, Mexique…). Le football devient un marche 1/X/2 ; tout autre sport un Vainqueur a 2 issues.

Il cree automatiquement les matchs a venir, diffuse le score en direct, et regle automatiquement sur le vrai resultat. Chaque championnat est une ligne de config :

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
}

Les championnats hors saison ne renvoient simplement rien ; ceux en saison remplissent le tableau automatiquement.

Endpoint non officiel. Le scoreboard d'ESPN est public et sans cle mais non documente — ESPN ne donne aucune garantie et pourrait le changer. HZ-Bets se degrade gracieusement : une reponse mauvaise / vide / inattendue ne fait rien (il continue de servir le dernier tableau connu et ne regle jamais sur de mauvaises donnees). Si ESPN change un jour son format, les mises a jour en direct se mettent en pause jusqu'a une mise a jour du script — les paris ne sont jamais corrompus. C'est opt-in par conception (Config.Sources.espn.Enabled).

Comment il regle : le score est la source de verite (le drapeau du vainqueur ne sert qu'a opposer un veto a un desaccord), et un evenement ne se regle que sur un final propre et joue — jamais sur un match reporte / abandonne.


the-odds-api — vraies cotes de bookmaker (optionnel)

ESPN vous donne les matchs mais aucune cote — un nouveau tableau s'ouvre donc a des cotes parimutuelles symetriques jusqu'a ce que les joueurs parient. Config.Sources.oddsapi remplit plutot les evenements avec de vraies cotes pilotees par les donnees : les memes lignes de marche qu'affichent les grandes applis de paris, via the-odds-api.com. Elle cote les sports qu'ESPN ne peut pas coter, dont le NRL et l'AFL, plus le football, le NBA, le NFL, le MLB, le NHL et le MMA. Ces evenements utilisent des cotes fixes (une ligne de consensus moyennee sur l'ensemble des bookmakers) et se reglent sur le vrai score final.

Cle cote serveur — jamais exposee a un client. Recuperez une cle gratuite sur the-odds-api.com et definissez-la dans votre server.cfg (elle n'est jamais livree a l'interieur de la ressource ni envoyee a la NUI) :
set hz_bets_oddsapi_key "your_key_here"

Activez ensuite les sports voulus (cles depuis 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)
}
Risque pour la maison. Les vraies cotes sont des cotes fixes — la maison porte le risque comme un vrai bookmaker (un gagnant tres mise entraine un gros paiement). Cela reste borne par Config.Bet.MaxPayoutPerSelection et Config.Odds.MaxDecimal. Si vous voulez que la maison ne perde jamais, gardez plutot ce sport sur le modele parimutuel.
Quota de l'offre gratuite. L'offre gratuite de the-odds-api est de 500 requetes / mois. HZ-Bets est econome par defaut — une seule region, cotes sondees toutes les ~3 h, et scores sondes uniquement tant qu'un match est en attente — ce qui convient largement a un seul sport. Plus de sports ou un rafraichissement plus rapide necessitent une offre payante. Le quota restant est journalise a chaque sondage (activez Config.Debug).
Ne faites pas doublon. Si vous cotez un sport avec the-odds-api, retirez-le de Config.Sources.espn (et vice-versa), sinon les deux sources creeront deux fois les memes matchs. Tout ce qui suit en aval — reglement, grand livre, gains — est identique a n'importe quelle autre source.

OpenLigaDB — football, ODbL

Config.Sources.openligadb est un flux de football sans cle, sans auth, ouvert (https://api.openligadb.de). Listez les championnats sous forme shortcut ou shortcut/season (wm26/2026 pour la Coupe du Monde, bl1/2025, dfb…). Il cree automatiquement les marches configures avec de vrais blasons d'equipes, regle automatiquement sur le score final, et publie les meilleurs buteurs du championnat ("Top des Buteurs").
Attribution (ODbL). Quand OpenLigaDB est active, l'interface affiche un credit "Données de match : OpenLigaDB · ODbL 1.0". Conservez-le — il est requis par l'Open Database License.

Les matchs en cours sont sondes a une cadence plus rapide pour les scores en direct et un reglement rapide.


RP — evenements crees par l'admin

La source RP n'a aucune dependance externe : vous creez les evenements a la main depuis l'ecran admin en jeu — courses, combats, matchs fictifs, n'importe quoi — pour n'importe quel sport, avec vos propres issues et cotes. C'est aussi ainsi que vous creez un marche buteur (Buteur) pariable (l'admin choisit qui a marque). Voir Marches et cotes.


Degradation gracieuse

Tout le travail API est cote serveur uniquement et mis en cache ; le client n'appelle jamais une API. Une source qui renvoie n'importe quoi ou qui tombe ne peut jamais faire planter la ressource, creer un evenement malforme, ou mal regler un pari — elle cesse simplement de se mettre a jour jusqu'a ce qu'elle se retablisse. Les evenements deja crees restent visibles (dernier tableau connu) pendant tout ce temps.