GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: inbox le 12 Décembre 2008, 20:24:58
-
Bonjour,
Il existe un Anti-Cheat pour le nitro ?
Car j'ai fait quelques races mais les cheaters avec leur programme ils utilisent un cheat pour avoir le nitro gratuit
donc je voudrais bannir tout joueur qui l'utilise
Merci
cordialement,
-
Fait un timer !
Si il a le composant ... et bah tu le ban ou tu fait ce que tu veut
NV. 8)
-
Salut,
autant que je sache, Native, il n'existe aucune fonction afin de détecter si un véhicule possède une composante....
par contre il est possible de faire dans un timer des :
RemoveVehicleComponent(GetPlayerVehicleID(playerid),1010);
mais malheureusement, cette fonction ne retourne aucune valeur particulière, ainsi il est impossible de savoir lesquels triche et lesquels ne trichent pas... et encore, il est possible que le joueur soit allé au Transfender se faire metre de la nos...
++Sim++
-
Bonjour,
Merci beaucoup pour vos réponses :)
Cordialement,
-
autant que je sache, Native, il n'existe aucune fonction afin de détecter si un véhicule possède une composante....
C'est pas une fonction, c'est un groupe de fonction ..
NV. 8)
-
C'est pas une fonction, c'est un groupe de fonction ..
NV. 8)
désolé, mais je suis pas sur de comprendre de quel groupe de fonction tu parle, et puis comment ferait tu la distinction entre cheater et ceux qui vont au transfender??
je sais qu'il existe la callback OnVehicleMod mais sinon....ton ban est peut-être excessif... un simple kick....
ah je vien de comprendre lol
tien voilà le code, pas tester:
new Avert[MAX_PLAYERS];//en haut de ton script
#define MAX_AVERT 4//en haut de ton script
public OnVehicleMod(playerid,vehicleid,componentid)
{
if(componentid == 1010 || componentid == 1009 || componentid == 1008){//si le joueur s'est mit de la nitro
if(GetPlayerInterior(playerid) == 0){//si il est à l'extérieur (les transfender sont intérieur
RemoveVehicleComponent(vehicleid,componentid);//on lui enlève sa nitro
Avert[playerid]++;//la variable pour lui laissé des chances...
if(Avert[playerid] == MAX_AVERT){//s'il l'a fait trop de fois
new string[64],name[MAX_PLAYER_NAME];//les variables pour le message P.S. les string trop longs servent à rien
GetPlayerName(playerid,name,sizeof(name));//on récupère son nom
format(string,sizeof(string),"%s [ID %d] a été kické pour cheat!",name,playerid);//on compose les message
SendClientMessageToAll(COLOR_YELLOW,string);//on envoie le message à tout le monde
Kick(playerid);//on le kick
return 1;
}else SendClientMessage(playerid,COLOR_RED,"CHEAT: ne te met plus de nitro ou tu sera kické!");//on l'averti s'il n'as pas le nombre max d'avertissements
}
}
return 1;
}
et voilà :D, c'est si simple, essaie de comprendre le code, les commentaires sont pas là pour rien... :cheers
++Sim++
-
Et non...
J'ai essayé, et SA:MP ne détecte pas le cheat.
Ce que je te conseille de faire, c'est regarder si le joueur appuie sur le bouton pour le Nos, et envoyer un message aux admins le signalant; cependant, certains joueurs ont tendance à appuyer sur la souris sans raison, donc fais gaffe...
[15:26:35] DEBUG: OnPlayerKeyStateChange( Bayshore[0], 4, 0 )
[15:26:35] DEBUG: OnPlayerUpdate( Bayshore[0] )
[15:26:35] DEBUG: OnPlayerKeyStateChange( Bayshore[0], 0, 4 )
EDIT: Cette «protection» peut être déjouer si le joueur maintient un autre bouton en appuyant sur le Nos, fais un mégalo pour savoir si c'est le cas.
if( newkeys != 0 )
{
if( newkeys % 4 == 0 )
{
// Envoie l'alerte.
}
}
-
ton ban est peut-être excessif... un simple kick...
J'ai mis ça comme ça sans penser au transfender
NV. 8)