Salut,
attention, j'ai vu quelques petits problèmes.
Si on reprend la commande originale:
if(strcmp(cmdtext, "/devenir", true) == 0)
{
subcmd = strtok(cmdtext, idx);
if( !strlen(subcmd) )
{
SendClientMessage(playerid, COLOR_RED, "[UTILISATION]{0xFF4500FF} /devenir <nom>");
SendClientMessage(playerid, COLOR_RED, "[UTILISATION]{0xFF4500FF} (mem)bre, (help)eur, (mod)erateur, (admin)istrateur");
return 1;
}
else if(strcmp(subcmd, "mem", true) == 0 || strlen(subcmd, "membre", true) == 0)
{
if(UserInformation[playerid] == USER_MEMBER)
{
SendClientMessage(playerid, COLOR_ERROR, "Vous êtes déjà membre.");
}
else
{
UserInformation[playerid] == USER_MEMBER;
SendClientMessage(playerid, COLOR_GREEN, "Vous êtes désormais membre ! ");
}
}
else if(strcmp(subcmd, "help", true) == 0 || strlen(subcmd, "helpeur", true) == 0)
{
if(UserInformation[playerid] == USER_MEMBER)
{
SendClientMessage(playerid, COLOR_ERROR, "Vous n'avez pas les droits nécessaire pour executer cela.");
}
else
{
UserInformation[playerid] == USER_HELPEUR;
SendClientMessage(playerid, COLOR_GREEN, "Vous êtes désormais Helpeur !");
}
}
return 1;
}
Es-ce que ton OnPlayerCommandText commence avec un strtok?
La façon de fonctionner de strtok est très simple, elle va chercher le enieme mot dans le texte.
Si tu as fait un strtok auparavant, elle ira chercher le second terme.
Sinon, elle ira chercher le premier terme (soit «/devenir»).
Attention, si tu utilise strtok dans tout ton système de commande sache que ce n'est pas vraiment le meilleur système (tendance à faire des erreurs (dans le code), risque au niveau des dimensions des array etc...).
Petit conseil:
Si tu as peut de commande et voudrait bien te lancer dans une petite amélioration de ton script, tu pourrais essayer de passer ton code en YCMD ou ZCMD qui sont très bons (ZCMD un peu plus simple pour toi).
Si tu ne veut pas passer avec un tel système de commande, j'aurais tendance à faire ainsi:
if(strcmp(cmdtext[1], "devenir", true, 7) == 0) //(on ne vérifie pas le premier caractère que l'on sait être "/"
{
format(subcmd, size(subcmd), cmdtext[9]); // on copie à partir du 9e caratère qui est la première lettre du second mot ('/0' si aucun mot normalement)
if(strlen(subcmd) < 3) // tout texte de moins de 3 caractère sera trop court
{
........
}
else if(strcmp(subcmd, "mem", true) == 0 || strcmp(subcmd, "membre", true) == 0)
{
...............
}
........
return 1;
}
Voilà, ça devrait fonctionner pour remplacer ta façon de faire et c'est plus rapide.
Toutefois, c'est moins compréhensible, si tu veut tu peut changer le cmdtext[1] en cmdtext, il faut alors mettre "/devenir" et 8 pour la longueur au lieu de 7.
merci et bonne chance
++Sim++