Aller au contenu principal
ShadowAcademy

Les langages Sécurité FiveM Vérifier le contexte

Distance et cadence

Un distributeur de billets, une récolte, un coffre : la plupart des actions n'ont de sens qu'à un endroit et à un certain rythme. Un menu de triche, lui, déclenche l'événement depuis l'autre bout de la carte, cent fois par seconde.

La distance, calculée par le serveur

Avec OneSync -- activé sur la plupart des serveurs aujourd'hui -- le serveur connaît la position des joueurs :

local DISTRIBUTEUR = vector3(147.4, -1035.8, 29.3)

local pos = GetEntityCoords(GetPlayerPed(src))
if #(pos - DISTRIBUTEUR) > 3.0 then return end   -- à plus de 3 mètres

a - b donne le vecteur qui va de b à a, et # sa longueur : la distance en mètres. Jamais une position envoyée par le client : elle se falsifie aussi facilement qu'un prix.

La cadence, avec l'horloge du serveur

GetGameTimer() renvoie le nombre de millisecondes écoulées depuis le démarrage du serveur. On retient, pour chaque joueur, le moment de sa dernière action :

local dernier = {}

local maintenant = GetGameTimer()
if dernier[src] and maintenant - dernier[src] < 2000 then return end
dernier[src] = maintenant

Un délai commun à tous les joueurs serait une autre erreur : le premier qui récolte bloquerait tous les autres.

La table dernier est local au fichier : rien, en dehors du script, n'a à la lire ni à la modifier.

2 exercices pour cette lecon

Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte

  • Être sur place moyen lecon a valider
  • La cadence moyen lecon a valider