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