• 05 Juin 2026, 00:10:07


Auteur Sujet: [Tuto] Le début d'un anti cheat  (Lu 1444 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
[Tuto] Le début d'un anti cheat
« le: 24 Juin 2010, 21:59:48 »
Salut, voila comment créer la base d'un anti Weapon Hack !


Voici une liste des compétences qui vont être apprises :
* Les Timers
* Les fonctions GetPlayerWeapon, BanEx, Et formater une phrase
* Et bien sûr, comment connaitre l'id d'une arme !


But :
Nous voulons contrôler si le joueur possède un minigun pour le bannir, mais le contrôle ne va pas se faire tout seul ! Ca serait tellement simple :p
On va donc utiliser un Timer qui se mettra en route au début du GameMode et qui contrôlera toutes les secondes (ou autre) si le joueur possède un Minigun.
Un Timer se crée avec SetTimer. Il faudra le placer dans OnGameModeInit.
Un timer doit avoir son callback, ou il effectuera son "action" si le joueur cheat. nous allons donc employer un forward.

Script :
En haut du script
forward Cheat(); // Indique au script le nouveau callback. Le nom du forward doit être le même que celui donné au timer, et au Callback.

public OnGameModeInit()
{
SetTimer("Cheat",1000,true); // Un timer de 1000 Millisecondes (= 1 seconde)
}

Nous venons de créer notre Timer !
Détails : ("Cheat") Le nom du timer
              1000 : Le nombre de millisecondes avant un controle
              True : Le timer se répète ; False : Il n'est utilisé qu'une fois.

Place maintenant au callback : public Cheat()
public Cheat()
{
 for(new i=0; i < MAX_PLAYERS; i++)
{
new Name[MAX_PLAYER_NAME], Ban[44];
GetPlayerName(i, Name, sizeof(Name));
format(Ban, sizeof(Ban), "%s a été banni pour possession de minigun",Name);

if (GetPlayerWeapon(i) == 38)
{
BanEx(i,"Cheat");
SendClientMessageToAll(couleur,Ban);
}
}
return 1;
}



Vous remarquerez que j'ai placé ca :  for(new i=0; i < MAX_PLAYERS; i++)
C'est juste une structure de loop (boucle) et il faut faire attention à remplacer playerid par i dans toutes les fonctions de cette loop.

Citer
new Name[MAX_PLAYER_NAME], Ban[44];
GetPlayerName(playerid, Name, sizeof(Name));
format(Ban, sizeof(Ban), "%s a été banni pour possession de minigun",Name);

Alors ces 3 phrases servent juste à une chose : Récupérer le nom du joueur qui cheate pour le stocker dans la variable "Name" qui sera elle même réutilisée pour être stockée dans la variable Ban qui est en fait la phrase qui sera utilisée si un joueur est détecté comme cheater.
On aura donc :
Citer
Gilux a été banni pour possession de minigun
Ou
Citer
Chuck Norris a été banni pour possession de minigun
Ou
Citer
R. Domenech a été banni pour possession de minigun

Selon le nom du joueur.

Vous aurez remarqué : %s (enfin j'espère !  :rules)
Ca sert a stocker du texte, donc dans ce cas un nom de joueur.
autres exemples :
%i : Nombre entier (Peut être utilisé pour l'id d'un joueur)
%d : Nombre décimal
etc etc.

Et pour finir, if (GetPlayerWeapon(i) == 38) !
Ce code cherche a savoir si le joueur possède l'arme 38 ???
Oui car 38 = L'id du minigun ! Pour avoir la liste des armes, go ICI.

Donc voilà, vous avez un anti cheat de base qui vous éliminera quelques cheaters sans efforts :p
Vous pouvez par la suite faire la même chose pour les lances roquettes (ID 35 et 36) Et surtout les lunettes de vision nocturnes qui posent des problèmes à tout les joueurs quand un cheater les met (Tout le monde voit ses effets)

Liens utiles :
GetPlayerWeapon
BanEx
SetTimer
WeaponsIDs

Code a valider ! :p

++

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : [Tuto] Le début d'un anti cheat
« Réponse #1 le: 24 Juin 2010, 22:21:04 »
bon petit debut mais tu peu eviter les timers juste en inserant Cheat(); dans une callback exemple OnPlayerDeath
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [Tuto] Le début d'un anti cheat
« Réponse #2 le: 25 Juin 2010, 00:26:16 »
Autant ne pas attendre qu'il ne fasse de victimes  :ninja

PS : Si vous avez des DM en monde virtuel qui utilisent un minigun ou autre arme interdite, n'oubliez pas d'ajouter une condition pour ne bannir le joueur que si il est dans le VW 0  ;)

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Tuto] Le début d'un anti cheat
« Réponse #3 le: 25 Juin 2010, 02:34:37 »
Bon travail :)

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Re : [Tuto] Le début d'un anti cheat
« Réponse #4 le: 25 Juin 2010, 08:40:52 »
On peut passer outre l'utilisation des timer en agissant uniquement lorsque le joueur appui sur la touche pour tirer (action).

exact en ajoute playerid a la fonction Cheat
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Barto

  • Aiiiiiiirght
  • *
  • GTAOnline Addict
  • Messages: 4205
    • Voir le profil
Re : [Tuto] Le début d'un anti cheat
« Réponse #5 le: 25 Juin 2010, 09:06:58 »
Bon petit tuto, bien joué.
Les filles, c'est comme les échappées en cyclisme, faut en tenter plusieurs pour en réussir une.

Gifs interdit dans les avatars/signs