Développeurs

Le serveur garde le score et l'argent. Chaque client calcule la balle ; le dernier joueur qui l'a touchée fait foi et les autres suivent en tenant compte du ping. Le serveur vérifie chaque touche, chaque but et chaque gamelle (temps, position et vitesse de la balle, règles), chaque position de barre et chaque mise.

Exports serveur

Export Retour
exports.kp_babyfoot:GetTables() Toutes les tables : { id, kind, coords, heading, owner }
exports.kp_babyfoot:IsPlaying(src) true si le joueur est dans une partie
exports.kp_babyfoot:GetGame(tableId) Partie en cours sur la table, ou nil
exports.kp_babyfoot:StopGame(tableId) Arrête la partie, rend les mises et les paris

Export client

Export Retour
exports.kp_babyfoot:IsPlaying() true quand le joueur tient les poignées

Events

Event Côté Arguments
kp_babyfoot:goalScored serveur { table, team, mode }
kp_babyfoot:matchEnd serveur { table, winner, mode }
kp_babyfoot:client:playing client playing, tableId

Exemple : cacher ton HUD pendant une partie.

AddEventHandler('kp_babyfoot:client:playing', function(playing)
    exports['my_hud']:SetVisible(not playing)
end)

Anticheat

Les events réseau commencent tous par kp_babyfoot: et le serveur borne chaque valeur : inutile de les bloquer. Une valeur impossible part sur Config.Discord.CheatWebhook, sans sanction automatique.

Brancher un framework ou un inventaire

bridge/framework/custom.lua et bridge/inventory/ sont ouverts : remplis les fonctions (identifiant, nom, argent, groupe staff, objet) et choisis-les dans Config.Framework et Config.Inventory.