• 09 Juillet 2025, 00:33:16


Auteur Sujet: Problème d'anti cheat armure  (Lu 2893 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Problème d'anti cheat armure
« le: 09 Avril 2012, 10:35:19 »
Slt

Je suis en train de faire un anti cheat pour lutter contre les cheat d'armure mais j'ai quelque soucis. Voici mon code:

new Float:armourhack[MAX_PLAYERS];

armourhack[playerid]=0;//dans OnPlayerConnect
armourhack[playerid]=0;//dans OnPlayerDisconnect


stock GetPlayerArmourhack(playerid)
{
return armourhack[playerid];
}

stock SetPlayerArmourhack(playerid,Float:armour)
{
GetPlayerArmourhack(playerid);
armourhack[playerid]= SetPlayerArmour(playerid,armour);
}

Il y a évidemment un timer qui compare la variable à GetPlayerarmour et qui banni si ces 2 valeurs ne sont pas égales. Ces 2 fonctions remplaceraient mes 2 fonctions SetPlayerArmour et GePlayerArmour pour permettre un suivi de l'armure du joueur grâce à une variable. Hélas, il y a toujours des soucis au moment de la compilation.
Des idées pour corriger ceci? Merci d'avance.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème d'anti cheat armure
« Réponse #1 le: 09 Avril 2012, 18:04:06 »
stock SetPlayerArmourhack(playerid, Float:armour) // <----------------\
{                                                               //    |
GetPlayerArmourhack(playerid);                          //    |
                                                        //    |
armourhack[playerid]= SetPlayerArmour(playerid,armour); // ---/
}

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #2 le: 14 Avril 2012, 20:38:38 »
Slt

Je ne comprend pas où tu veux en venir ???

A+ :)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #3 le: 14 Avril 2012, 20:54:05 »
En gros tu créer une fonction qui s'appelle elle même, donc ça te fait une "boucle infinie"



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

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #4 le: 15 Avril 2012, 12:52:08 »
Slt

Oui en effet, mais moi ce que je veux c'est que lorsque je tape cette fonction, ma variable prend la valeur de la vie du joueur.

stock SetPlayerArmourhack(playerid,Float:armour)
{
SetPlayerArmour(playerid,armourhack[playerid]);
}

Il faudrait mettre ça comme ça ??

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème d'anti cheat armure
« Réponse #5 le: 18 Avril 2012, 14:08:40 »
new Float:fPlayerArmour[MAX_PLAYERS] = {0.0};

stock GetPlayerArmourFromServer(playerid) {
    return fPlayerArmour[playerid];
}

stock SetPlayerArmourFromServer(playerid, Float:fArmour) {
    SetPlayerArmour(playerid, fArmour);
    
    fPlayerArmour[playerid] = fArmour;
}

stock IsArmourHacking(playerid) {
    if (GetPlayerArmour(playerid) != GetPlayerArmourFromServer(playerid)){
        return true;
    }
    
    return false;
}

Voilà un code fonctionnel et relativement complet.

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #6 le: 22 Avril 2012, 20:22:28 »
Slt

J'ai essayé de mettre ce code sur mon serveur mais je rencontre une erreur avec une de tes fonction:

stock GetPlayerArmourFromServer(playerid)
{
    return fPlayerArmour[playerid];
}

L'erreur se trouve à la ligne: return fPlayerArmour[playerid]

Le message d'erreur est:

Citer
warning 213: tag mismatch

A+ ;)

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #7 le: 22 Avril 2012, 20:31:03 »
L'armure c'est du type float je crois, ajoute ça dans les paramètres ;)

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #8 le: 22 Avril 2012, 20:53:23 »
Mais elle est déjà définit en Float:
new Float:fPlayerArmour[MAX_PLAYERS] = {0.0};
Je ne comprend pas où tu veux en venir ;D

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #9 le: 22 Avril 2012, 22:01:30 »
On ne peux pas retourner un float ? Il faut le mettre dans les parametres non ?

stock GetPlayerArmourFromServer(playerid, &Float:armure)
{
    armure = fPlayerArmour[playerid];
}

Ca se fait ca ?

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème d'anti cheat armure
« Réponse #10 le: 22 Avril 2012, 22:25:11 »
Les tags ne sont pas d'une importance capitale, si vous voulez les utiliser, il faut le faire jusqu'à bout:

new Float:fPlayerArmour[MAX_PLAYERS] = {0.0};

stock Float:GetPlayerArmourFromServer(playerid) {
    return Float:fPlayerArmour[playerid];
}

stock SetPlayerArmourFromServer(playerid, Float:fArmour) {
    SetPlayerArmour(playerid, fArmour);
   
    fPlayerArmour[playerid] = fArmour;
}

stock IsArmourHacking(playerid) {
    if (GetPlayerArmour(playerid) != GetPlayerArmourFromServer(playerid)){
        return true;
    }
   
    return false;
}

Sinon, pour la ligne suivante:

new Float:fPlayerArmour[MAX_PLAYERS] = {0.0};
J'initialise toutes les valeurs du tableau à 0.0 (soit 0).

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #11 le: 27 Avril 2012, 19:54:00 »
Slt

stock Float:GetPlayerArmourHack(playerid)
En utilisant ce nouveau Float dans la fonction précédente, j'obtiens le message d'erreur ci dessous:
Citer
warning 208: function with tag result used before definition, forcing reparse
fonction avec résultat étiquette utilisée avant la définition, ce qui oblige une révision

Si vous avez des idées pour réparer ce problème, je suis preneur

A+ ;)

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème d'anti cheat armure
« Réponse #12 le: 27 Avril 2012, 21:54:25 »
Le prototype doit être défini avant l'utilisation.
Met tous tes prototypes dès le début de ton script, ça sera plus simple.


stock Float:GetPlayerArmourFromServer(playerid);
stock SetPlayerArmourFromServer(playerid, Float:fArmour);
stock IsArmourHacking(playerid);

new Float:fPlayerArmour[MAX_PLAYERS] = {0.0};

stock Float:GetPlayerArmourFromServer(playerid) {
    return Float:fPlayerArmour[playerid];
}

stock SetPlayerArmourFromServer(playerid, Float:fArmour) {
    SetPlayerArmour(playerid, fArmour);
   
    fPlayerArmour[playerid] = fArmour;
}

stock IsArmourHacking(playerid) {
    if (GetPlayerArmour(playerid) != GetPlayerArmourFromServer(playerid)){
        return true;
    }
   
    return false;
}

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #13 le: 28 Avril 2012, 14:31:42 »
Slt

Merci beaucoup, ça fonctionne nickel. Par contre, je ne compred pas pourquoi je ne peux pas vérifier l'armure dans un timer.
Lorsque je laisse le timer faire, je suis ban en permanence.
Dès que je tape une cmd pour avoir un gilet, le message s'arrête

if (strcmp("/test", cmdtext, true) == 0)
{
SetPlayerArmourHack(playerid, 50);
format(string1, sizeof(string1), "var armour: %f", armourhack[playerid]);
SendClientMessageToAll(COLOR_INFO, string1);
return 1;
}
   

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Problème d'anti cheat armure
« Réponse #14 le: 28 Avril 2012, 14:40:35 »
Tu fais comment dans le Timer ? ( code ? )