GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: chneubeul le 02 Novembre 2010, 12:51:57
-
Bonjour,
J'utilise le script de monsieur Fredo pour son système de voiture. Qui marche parfaitement bien :)
J'ai passer depuis peu mes commandes en sscanf, et
1) J'aimerais qu'on puisse utiliser soit l'id ou soit le nom de la voiture,
2) Puis les couleurs par défauts les mettres à 0
J'ai regarder j'ai vu comme paramètres '' z " qui est optionnel mais c'est un string, donc que des lettres ?
Pour ma première question, je sais comment faire aprés le check de la commande, mais c'est quel lettre mettre pour checké des caractères en tout genre ?
if (sscanf(params, "ddd", id, col1, col2))
{
SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /veh <nom> <col1> <col2>");
return 1;
}
Merci,
Sam. :cheers
-
je suis pas fort avec sscanf, mais sa devrai pas etre sa :
if (sscanf(params, "sdd", id, col1, col2))
pour le nom puisque tu dit: USAGE: /veh <nom> <col1> <col2>
-
Salut, oui, mais j'ai marquer <nom> mais c'est faux x') ce que je veux c'est qu'on tape soit le nom soit l'id et que les couleurs soit optionnel ^^
-
Salut,
déjà, pour qu'un paramètre soit optionnel il faut le mettre en majuscule avec une valeur par défaut entre ()
exemple:
if ( sscanf ( params, "dD(-1)D(-1)", id, col1, col2 ) )
ce qu'il te faudrait ensuite ce serait d'ajouter un test si celui ci ne fonctionne pas qui récupérerait le texte et qui récupérerait l'ID grâce au texte en question.
bref, un truc de ce genre:
if ( sscanf ( params, "dD(-1)D(-1)", id, col1, col2 ) )
{
if ( sscanf ( params, "s[32]D(-1)D(-1)", string, col1, col2 ) )
{
//message d'erreur
}
else
{
//récupération du ID
}
}
bonne chance
++Sim++
-
Pourquoi tu as mis de test de sscanf ?
-
Salut,
sscanf retourne 0 si la récupération a été effectuée correctement et une autre valeur (qui varie selon l'erreur rencontré si je me rappelle bien). Ainsi, on peut savoir s'il y a eu un problème à trouver l'id du véhicule dans la première expression et tenter le coup avec un string.
++Sim++
-
Désolé la question à l'air un peu bete mais je profite qu'il y a un sujet dessus pour la poser :happy
Est ce que le sscanf est plus ou moins l'équivalent du scanf en C ?
Vu que je vois le C en cours, j'vais peut etre me remetre au pawn alors autant demander cette question qui me turlupine (Way mot d'Belge) l'esprit :P
-
Désolé la question à l'air un peu bete mais je profite qu'il y a un sujet dessus pour la poser :happy
Est ce que le sscanf est plus ou moins l'équivalent du scanf en C ?
Vu que je vois le C en cours, j'vais peut etre me remetre au pawn alors autant demander cette question qui me turlupine (Way mot d'Belge) l'esprit :P
non pas vraiment scanf permet de faire la même chose, mais sur un flux, que ce soit un fichier, ou bien sur le stdin/stdout, mais c'est l'équivalent du sscanf en C ^^
-
non en C aussi c'est sscanf ^^
Comme je disais sscanf c'est le même qu'en pawn, et scanf ça permet de faire la même chose mais sur des flux ^^
-
J'ai fait ça :
CMD:veh(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 1337)
{
if(IsPlayerConnected(playerid))
{
new
id,
col1,
col2,
string[128];
if (sscanf(params, "dD(0)D(0)", id, col1, col2))
{
SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /veh <nom> <col1> <col2>");
return 1;
}
Ça fonctionne.. Pour le premier paramètre j'vien de comprendre x) Je dirais des nouvelles, je vais aller chez mon père là.. :)