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

Titre: Probleme commande
Posté 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  :)
Titre: Re : Probleme commande
Posté par: D0os-Nox le 25 Août 2010, 18:19:49
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

Titre: Re : Probleme commande
Posté par: vincentdu90 le 25 Août 2010, 19:56:38
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)
Titre: Re : Probleme commande
Posté par: minimicro le 25 Août 2010, 22:14:07
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;
Titre: Re : Probleme commande
Posté par: D0os-Nox le 26 Août 2010, 04:42:05
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
Titre: Re : Probleme commande
Posté par: Syg le 26 Août 2010, 10:23:12
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
Titre: Re : Probleme commande
Posté par: vincentdu90 le 26 Août 2010, 10:46:23
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  ;)
Titre: Re : Probleme commande
Posté par: minimicro le 26 Août 2010, 11:03:38
Ohoh, bien vu, j'avais zappé les arguments du OnPlayerCommandText  :bangin :jesors
Titre: Re : Probleme commande
Posté par: vincentdu90 le 26 Août 2010, 11:05:49
Syg est et reste le maître  :D