Anticheat Docs

kairo-anticheat v5.0.1 dépendance : aucune Voir le produit

Présentation

Kairo Anticheat repose sur une idée simple : tout ce qui compte est vérifié côté serveur. Les détections ne dépendent pas d'un programme caché chez le joueur, elles comparent ce qui arrive au serveur à ce qui est possible dans le jeu.

Il surveille l'apparition d'entités, les armes, les déplacements, les explosions et les événements réseau. Chaque sanction est enregistrée avec sa preuve (règle déclenchée, valeurs mesurées, position) pour que ton équipe puisse vérifier.

Il fonctionne seul, mais s'appuie sur Kairo Core et Kairo Logs quand ils sont présents.

Installation

  1. Place le dossier kairo-anticheat dans resources/[kairo]/.
  2. Démarre-le le plus tôt possible dans server.cfg, juste après kairo-core s'il est installé.
  3. Renseigne le webhook Discord des alertes dans config.lua (facultatif mais recommandé).
  4. Lance une première session en mode observe = true : rien n'est sanctionné, les détections sont seulement journalisées. Ajuste les seuils, puis passe en mode actif.
server.cfg
# server.cfgensure kairo-coreensure kairo-anticheat

Configuration

Chaque règle a un seuil et une action : warn, kick ou ban. Commence avec des actions douces et durcis après avoir observé ton serveur pendant quelques jours.

config.lua
-- config/anticheat.luaAnticheat.observe = false -- true : journalise sans sanctionnerAnticheat.webhook = 'https://discord.com/api/webhooks/…'Anticheat.rules = {    teleport   = { maxDistance = 120, action = 'kick' },    weapons    = { whitelist = true, action = 'ban' },    explosions = { ban = true },    entities   = { maxPerMinute = 25, action = 'kick' },    events     = { validate = true, action = 'ban' },}

API

Les exports s'appellent avec exports['kairo-anticheat']:Nom(...). Les fonctions serveur ne sont jamais accessibles depuis le client.

Ban

serveur
exports['kairo-anticheat']:Ban(source, reason, evidence)

Bannit un joueur en enregistrant une preuve.

ParamètreTypeDescription
sourcenumberID serveur
reasonstringMotif
evidencetable?Données associées

Retour string — identifiant du bannissement

exemple.lua
exports['kairo-anticheat']:Ban(source, 'Argent anormal', { amount = amount })

IsBanned

serveur
exports['kairo-anticheat']:IsBanned(identifier)

Vérifie si un identifiant est banni.

ParamètreTypeDescription
identifierstringLicence ou autre identifiant

Retour boolean, table? — et le détail du bannissement

exemple.lua
local banned, info = exports['kairo-anticheat']:IsBanned(license)

Whitelist

serveur
exports['kairo-anticheat']:Whitelist(identifier, rules)

Exempte un joueur de certaines règles (équipe d'administration, tests).

ParamètreTypeDescription
identifierstringLicence
rulestableListe des règles à ignorer

Retour rien

exemple.lua
exports['kairo-anticheat']:Whitelist(license, { 'teleport' })

ProtectEvent

serveur
exports['kairo-anticheat']:ProtectEvent(name, validator)

Ajoute une validation à un de tes événements réseau. Si le validateur renvoie false, l'événement est bloqué et signalé.

ParamètreTypeDescription
namestringNom de l'événement
validatorfunction(source, ...)Renvoie true si l'appel est légitime

Retour rien

exemple.lua
exports['kairo-anticheat']:ProtectEvent('shop:buy', function(source, item)    return Shop.items[item] ~= nilend)

Événements

kairo-anticheat:detection

serveur

Une règle a été déclenchée.

exemple.lua
AddEventHandler('kairo-anticheat:detection', function(source, rule, data)    print(rule, json.encode(data))end)

Commandes

CommandeDescription
/ac unban <id>Lève un bannissement à partir de son identifiant.
/ac info <id>Affiche la preuve associée à un bannissement.

FAQ

Y a-t-il des faux positifs ?

Les seuils par défaut sont prudents, mais chaque serveur est différent (scripts de téléportation, courses…). C'est pour cela que le mode observe existe : commence toujours par là.

Est-il compatible avec mes scripts qui téléportent les joueurs ?

Oui : appelle l'export de téléportation autorisée de ta ressource, ou exempte la ressource dans config.lua (allowedResources).