Tu n'a pas dit où se trouvait le problème.
Mais bon, en analysant ta commande, je vois que tu récupères mal les paramètres.
Tu fait un premier strtok dans ta commande qui permet de récupérer le premier paramètre (idJoueur).
Jusque là, pas de problème.
Ensuite, tu pars dans un boucle qui compte les caractères jusqu'au premier espace (' ').
Le problème ici, c'est que tu comptes les caractères depuis le début de la chaîne. Donc tu n'auras pas le paramètre que tu veux (arme) mais le nom de la commande.
Sinon, tu ne récupères pas le paramètre munitions (mais je pense que tu l'avais laissé de côté).
Le plus judicieux dans tous les cas pour une commande avec paramètres, c'est de faire un strtok par paramètre de la commande.
if (strcmp("/arme", cmd, true, 10) == 0)
{
new idjoueur;
new arme;
new munitions;
/* On récupère le paramètre idjoueur */
tmp = strtok(cmdtext, idx);
if(strlen(tmp) == 0)
{
SendClientMessage(playerid,couleur_rouge, "[INFO]: /arme < id joueur > < id arme > < munnition >");
return 1;
}
idjoueur = strval (tmp);
/* On récupère le paramètre arme */
tmp = strtok(cmdtext, idx);
if(strlen(tmp) == 0)
{
SendClientMessage(playerid,couleur_rouge, "[INFO]: /arme < id joueur > < id arme > < munnition >");
return 1;
}
arme = strval (tmp);
/* On récupère le paramètre munition */
tmp = strtok(cmdtext, idx);
if(strlen(tmp) == 0)
{
/* Dans ce cas, on peut mettre un valeur par défaut pour munitions */
munitions = 50;
}
else
{
munitions = strval (tmp);
}
/* Maintenant qu'on a tous nos paramètres, on peut faire ce que l'on veut avec */
GetPlayerName(idjoueur,nom,sizeof(nom));
GivePlayerWeapon(idjoueur,arme,munition);
new stringgun[256];
format(stringgun,sizeof(stringgun),"[INFO]: Un admin donne une l'arme %d à %s (id: %d ) avec %d munitions",arme, nom, idjoueur, munitions);
print(stringgun);
return 1;
}
NB : Je n'ai pas eu le temps de tester ce bout de script, il se peut que j'ai fait des erreurs mais le principe est correct.
++
Syg