GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: vincentdu90 le 25 Août 2010, 17:41:09
-
Bonjour/Bonsoir
Je m'interesse depuis assez longtemps au pawn et j'ai quelques connaissances , et pour apprendre et m'execer j'ai voulu créer une commande /argent [montant] qui donnerai de l'argent au joueur avec strtok , en suivant l'exemple du samp wiki (j'ai pas fait du copier coller :D)
Mais le problème c'est que j'ai beau taper /montant 10000 par exemple et ça me donne rien .
new cmd[128], index;
strtok(cmd,index);
if(strcmp(cmd,"/argent",true) == 0)
{
new tmp[128];
tmp = strtok(cmd,index);
if (strlen(tmp) == 0)
{
SendClientMessage(playerid,ROUGE,"Utilisation /Argent [Montant]");
}
else
{
GivePlayerMoney(playerid,strval(tmp));
}
return 1;
}
Merci d'avance de votre aide :)
-
Bonjour, La valeur TMP(C'est un exemple sa pourrai être argent[128] ...) permet de stocker les valeurs ecrite ( Donc le Montant )
GivePlayerMoney(playerid,tmp);
:closedeyes D0os-Nox :laugh
-
Je sais que c'est un exemple la valeur TMP et j'ai enlevé la fonction strval et j'ai l'erreur 035 > argument type mismatch (argument 2)
-
Surtout pas donner TMP comme cela, c'est une variable type "Chaine de Caractere", qu'il faut convertir en Nombre entier (Integer), d'ou l'utilisation de la fonction strval(tmp), qui revoit la valeur numérique contenue dans TMP.
Laisse strval, par contre, pour index, en haut, initialise le à 0 : index = 0;
-
RE : Oui ou sinon, Définir une simple variable comme étant = a strval(tmp) !
new argent;
argent = strval(tmp);
GivePlayerMoney(playerid, argent);
::) D0os-Nox :dry
-
Il faut toujours tout regarder avant de donner une réponse.
Le problème vient de la deuxième ligne de son bout de script :
strtok (cmd, index);
Cette ligne ne fait rien.
Donc la variable cmd ne contient rien et le test if (strcmp(cmd, "/argent", true) == 0) n'est jamais vérifié et la commande n'est jamais exécutée.
Il faut donc remplacer la ligne citée ci-dessus par :
cmd = strtok (cmdtext, index); // On extraie la commande et on la place dans la variable cmd
Le reste du code est correct.
++
Syg
-
Merci Syg en plus de ça je l'avais fait plus bas et j'ai vu aussi que j'avais une autre erreur à la ligne
tmp = strtok(cmd,index);
Il fallait mettre cmdtext .
Merci à vous ;)
-
Ohoh, bien vu, j'avais zappé les arguments du OnPlayerCommandText :bangin :jesors
-
Syg est et reste le maître :D