GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Eloctro le 09 Juillet 2008, 12:18:57

Titre: [TuTo]AntiBot
Posté par: Eloctro le 09 Juillet 2008, 12:18:57
Salut,
Nous allons éloignez ses bots qui nous embète grrr .


Alors à connexion les bots prenne un tempa se chargé :


//Toute en haut

Code: (pawn) [Sélectionner]
forward StopBot();
//Dans OnPlayerConnect
Code: (pawn) [Sélectionner]
SetTimer("StopBot",2000,0);
Toute en bas :

Code: (pawn) [Sélectionner]
public StopBot()
{
for (new i = 0; i < MAX_PLAYERS; i++)
if(GetPlayerPing(i) <= 0)
{
Kick(i);//On le kick car le bannir change rien car l'ip change
}
}

Voila les bots ne vous embétrons plus .
Titre: Re : [TuTo]AntiBot
Posté par: Tunsi le 09 Juillet 2008, 12:23:18
Les bots ne reste pas 10secondes ..........
Titre: Re : [TuTo]AntiBot
Posté par: spykerc8 le 09 Juillet 2008, 12:28:10
En plus, si tu lances le timer à la connexion, si 100 bots se connectaient d'un coup tu auraient 100 timers de lancés qui exécuteraient 100 fois la fonction, ce qui ne sert à rien et va juste faire ramer le serveur.

Ce que tu peux faire aussi c'est tester si l'IP est déjà présente sur le serveur et ne pas afficher les messages de connexion, puis kicker direct.
Titre: Re : [TuTo]AntiBot
Posté par: Eloctro le 09 Juillet 2008, 12:30:52
La sa doit marcher 2 secondes
Et 100 bots ses impossbile enfin pour l'instant normalement ses 2 je ses pu la moyene
Ou je peut faire un ou des KillTimer();
Titre: Re : Re : [TuTo]AntiBot
Posté par: Tunsi le 09 Juillet 2008, 12:55:28
La sa doit marcher 2 secondes
Et 100 bots ses impossbile enfin pour l'instant normalement ses 2 je ses pu la moyene
Ou je peut faire un ou des KillTimer();


Tout est possible ;)
Titre: Re : [TuTo]AntiBot
Posté par: Bayshore le 09 Juillet 2008, 13:17:52
Kyeman avait donné le script pour se protéger des bots qui se déco/réco mais je ne le retrouve plus. :(

Il prenait l'IP du client et si l'IP revenait 5 fois dans un labs de temps de 15 secondes alors le serveur bannissait.


++
Alexandre
Titre: Re : [TuTo]AntiBot
Posté par: MasterOfQuebec le 09 Juillet 2008, 18:53:07
Crée un seul timer qui sera appelé tous les secondes.
Crée une variable pour tous les joueurs (tableau, ex: new secondes[MAX_PLAYERS]; ).
Quand un joueur se connecte met la variable secondes a 5.
Chaque seconde, pour chaque joueur connecté si la variable secondes est plus grande que 0 réduit la de 1.
Quand la variable seconde atteint 0, vérifie si le ping du joueur est plus petit ou égal a 0, si oui banni le joueur.
Si un joueur se déconnecte avant que sa variable secondes soit a 0 (5 secondes) tu peut le bannir temporairement à l'aide d'une fonction personnalisé.