• 05 Juin 2026, 23:09:14


Auteur Sujet: Problème avec mon anticheat cheat SERVER SIDE  (Lu 3348 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème avec mon anticheat cheat SERVER SIDE
« Réponse #15 le: 13 Juin 2011, 13:18:35 »
Reste maintenant à savoir si ma proposition corrige le problème.
D'ailleurs, je me rappelle qu'à l'époque, j'avais aidé Guigui a corrigé un problème similaire sur le SFTDM concernant l'argent. C'était il y a 2 ou 3 ans et je me rappelle plus ce qu'on avait fait mais surement quelque chose d'équivalent.

++
Syg
Courtesy of GtaManiac

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème avec mon anticheat cheat SERVER SIDE
« Réponse #16 le: 13 Juin 2011, 13:33:37 »
ça m'étais aussi arrivé mais je me souviens plus comment j'ai réglé le problème lol



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Re : Problème avec mon anticheat cheat SERVER SIDE
« Réponse #17 le: 16 Juin 2011, 22:27:56 »
Bonjour,
Je pensais que mon topic avait été abandonné mais je suis retombé dessus par hasard et je vois que non finalement  :)

Étant en plein bac actuellement je vais pas pouvoir vérifié ton code maintenant Syg...

Avant sa, je me rappel (si je me souvient bien) que lorsque je donnais de l'armure avec ma fonction, la variable SSArmor[playerid] était égal à 100 mais lorsque le timer "checkais", l'armure était reset car la variable SSArmor[playerid] était égal à 0 (quelque fois elle était bien était égal à 100 donc l'armure n'était pas reset, par conséquence l'armure était bien donné).

Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Re : Problème avec mon anticheat cheat SERVER SIDE
« Réponse #18 le: 04 Juillet 2011, 22:37:59 »
Bonjour,

Alors j'ai une mauvaise nouvelle, ton code ne fonctionne pas plus Syg.

Mais j'ai trouvé la solution: Utilisé un booléen qui indique à l'anticheat si le joueur peut ou non utiliser l'armure.

stock SetPlayerArmourEx(playerid, Float:varArmor)
{
CanUseArmour[playerid] = 1; // Indique que le joueur peut utiliser l'armure qu'il a acheté / trouvé
SSArmor[playerid] = varArmor;
return SetPlayerArmour(playerid,varArmor);
}

Ensuite, au lieu d'utiliser un Timer, j'ai préféré utilise OnPlayerUpdate qui est, selon moi, plus adapté pour un anti-cheat bien que mon propos peut être discutable.

public OnPlayerUpdate(playerid)
{
if(IsSpawned[playerid] == 1 && AdminLevel[playerid] == 1337)
{
new Float:tArmor;
GetPlayerArmour(playerid, tArmor);
if(tArmor != SSArmor[playerid]) /* Premier contrôle */
{
/* On récupère l'armure pour un double controle */
GetPlayerArmour(playerid, tArmor);
if(tArmor < SSArmor[playerid]) /* Deuxième contrôle */
{
SSArmor[playerid] = tArmor;
}
else if(tArmor > SSArmor[playerid])
{
if(CanUseArmour[playerid] == 1) // Si le joueur peut utiliser l'armure qu'il a acheté/trouvé
{
CanUseArmour[playerid] = 0;
SSArmor[playerid] = tArmor; // alors on met à jour la variable qui n'avait pas été mise à jour pour une raison inconnue ??
}
else // Sinon cela signifie qu'il a cheaté donc:
{
new username[MAX_PLAYER_NAME], string[150];
GetPlayerName(playerid,username,sizeof(username));
format(string,sizeof(string),"[ANTI-CHEAT]"ECOLOR_WHITE" %s(%d) a tenté de regénérer son armure.", username,playerid);
SendClientMessageToAllAdmins(string);
SetPlayerArmour(playerid,SSArmor[playerid]);
}
}
}
}
return 1;
}

Et sa fonctionne d'après mes tests !

Je pense qu'en réalité la variable SSArmor n'avait pas le temps de se mettre à jour car elle était reset aussitôt, j'ai remarqué sa car le bug était plus flagrant en utilisant OnPlayerUpdate qu'avec un timer (qui est exécuté moins souvent);

Que pensez vous de ma solution ?

Merci
« Modifié: 04 Juillet 2011, 22:40:12 par Winklevows »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème avec mon anticheat cheat SERVER SIDE
« Réponse #19 le: 04 Juillet 2011, 23:33:34 »
Dans la première condition tu test si le joueur est admin au level 1337, cela veut donc dire que les autres joueurs qui ne sont pas admins pourront cheater sans problème.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Re : Problème avec mon anticheat cheat SERVER SIDE
« Réponse #20 le: 06 Juillet 2011, 03:08:40 »
S'était pour utiliser mon compte administrateur et mes commandes admins pour me donner de l'armure lors de mes tests, j'ai juste oublié de remplacé 1337 par 0 quand je vous ai collé mon code  :happy