• 09 Juillet 2025, 05:18:35


Auteur Sujet: Problème avec strlen?  (Lu 882 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne falcko

  • *
  • Nouveau
  • Messages: 7
    • Voir le profil
Problème avec strlen?
« le: 04 Janvier 2013, 16:13:27 »
Salut,
J'ai créé une commande qui consiste à créer une guerre entre deux teams.
Seulement j'ai un bug avec la vérification, elle est censée renvoyer un message mais ça ne renvoie rien...
J'ai testé avec des format, ça renvoie bien le strlen correct.

Voici mon code :
if(strcmp(cmd, "/arene", true) == 0)
{
  if(UserStats[playerid][Leader] == 0)
    {
      SendClientMessage(playerid, -1, "Vous n'êtes pas leader !");
        return 1;
        }
        if(ArenesCreees+1 > MAX_ARENES)
        {
        SendClientMessage(playerid, COLOR_RED, "Il y a trop d'arènes en cours. Veuillez patienter pour en lancer une.");
          return 1;
        }
        if(GetPVarInt(playerid, "AreneCree") != 0)
        {
        SendClientMessage(playerid, COLOR_RED, "Vous avez déjà créé une arène ou vous avez une demande en attente. Pour la supprimer faites /finarene ou pour refuser l'invitation faites /arenerefuser");
          return 1;
        }
    new tmp1[TMP_SIZE];
    new tmp2[TMP_SIZE];
    new tmp3[TMP_SIZE];
    new tmp4[TMP_SIZE];
    new tmp5[TMP_SIZE];
new Joueur, Lieu, ArmeUne, ArmeDeux, Gilet;
tmp1 = strtok(cmdtext, idx);
tmp2 = strtok(cmdtext, idx);
tmp3 = strtok(cmdtext, idx);
tmp4 = strtok(cmdtext, idx);
tmp5 = strtok(cmdtext, idx);
new string[128];
format(string, sizeof(string), "Tmp1: %s %d Strlen : %d Tmp2: %s %d Strlen: %d Tmp3: %s %d Strlen: %d Tmp4: %s %d Strlen: %d Tmp5: %s %d Strlen: %d", tmp1, tmp1, strlen(tmp1), tmp2, tmp2, strlen(tmp2), tmp3, tmp3, strlen(tmp3), tmp4, tmp4, strlen(tmp4), tmp5, tmp5, strlen(tmp5));
SendClientMessage(playerid, -1, string);
if(strlen(tmp1) == 0 || strlen(tmp2) == 0 || strlen(tmp3) == 0 || strlen(tmp4) == 0 || strlen(tmp5)) return SendClientMessage(playerid, COLOR_GREY, "{33CCFF}USAGE:{FFFFFF} /arene [ID/Nom leader adverse] [Lieu (/lieuxarene)] [Première arme (/armesarene)] [Deuxième arme (/armesarene)] [Gilet (1=oui, 0=non)]");
Joueur = ReturnUser(tmp);
Lieu = strval(tmp2);
ArmeUne = strval(tmp3);
ArmeDeux = strval(tmp4);
Gilet = strval(tmp5);
// Vérification joueur
if(Joueur == playerid) { return SendClientMessage(playerid, COLOR_RED, "Impossible de créer une arène contre vous même."); }
if(!IsPlayerConnected(Joueur)) return SendClientMessage(playerid, COLOR_RED, "Le joueur n'est pas connecté !");
if(UserStats[Joueur][Jail] != 0) return SendClientMessage(playerid, COLOR_RED, "Le joueur est en prison !");
if(UserStats[Joueur][Leader] == 0) return SendClientMessage(playerid, COLOR_RED, "Le joueur n'est pas leader d'une team !");
if(AreneEnCours[Joueur] == 1) return SendClientMessage(playerid, COLOR_RED, "Le joueur est déjà en arène !");
  if(GetPVarInt(Joueur, "AreneCree") != 0 || GetPVarInt(Joueur, "IDArene") != 0) { return SendClientMessage(playerid, COLOR_RED, "Cette personne a déjà créée une arène ou a une demande en attente."); }
// Vérification lieu
if(Lieu < 1 || Lieu > 7) return SendClientMessage(playerid, COLOR_RED, "Entrez un lieu entre 1 et 7. (/lieuxarene pour voir à quoi ils correspondent)");
// Vérification arme 1
if(ArmeUne != 0 && ArmeUne != 24 && ArmeUne != 30 && ArmeUne != 31) return SendClientMessage(playerid, COLOR_RED, "La première arme est incorrecte.");
// Vérification arme 2
if(ArmeDeux != 0 && ArmeDeux != 24 && ArmeDeux != 30 && ArmeDeux != 31) return SendClientMessage(playerid, COLOR_RED, "La seconde arme est incorrecte.");
// Vérification gilet
if(Gilet != 0 && Gilet != 1) return SendClientMessage(playerid, COLOR_RED, "Veuillez entrer 0 si vous ne souhaitez pas de gilet ou 1 si vous souhaitez le gilet full.");
CreateArene(playerid, Joueur, Lieu, ArmeUne, ArmeDeux, Gilet);
    return 1;
}
Dès qu'on tape /arene, il ne retourne rien IG mais quand on met tous les paramètres, cela marche.

Merci d'avance.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Problème avec strlen?
« Réponse #1 le: 04 Janvier 2013, 17:06:08 »
Il te manque une accolade :)

Code: (pawn) [Sélectionner]
if(UserStats[playerid][Leader] == 0)
{
SendClientMessage(playerid, -1, "Vous n'êtes pas leader !");
return 1;
}

Tu n'avais pas fermer l'accolade :)


Adju ♥
(-_-)



Hors ligne falcko

  • *
  • Nouveau
  • Messages: 7
    • Voir le profil
Re : Problème avec strlen?
« Réponse #2 le: 04 Janvier 2013, 17:23:22 »
Salut, si elle était fermée, le forum rend l'indentation bizarre.
Le problème est résolu, le message d'erreur était trop long.  :P
Merci !