GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Eclips le 25 Juin 2014, 19:53:13
-
Salut,
Je viens à vous pour vous demander de l'aide, n'ayant toujours pas trouvé de solutions à mon problème, je commence à désespéré :)
Bien, je m'explique, tout d'abord, sachez que j'utilise ZCMD et SSCANF. La commande que je veux faire (/vehicule) prendre d'abord un paramètre, qui est l'action. Donc par exemple : /vehicule moteur (éteindra le moteur, et l'allumera). Maintenant, j'aimerai que pour le plein, ça fasse : /vehicule [Plein] [Litres], hors ma commande ne fonctionne pas.
La voici pour que vous voyez à quoi elle ressemble :)
if(!strcmp(action, "plein", true))
{
new montant;
if(sscanf(params, "s[25]d", params[0], montant)) return SCM(playerid, COLOR_BLUE2, "[Astuce]: /v plein [Litre]");
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2271.4924,-2353.4355,13.2526))
{
if (montant > 100 || montant < 1) return SCM(playerid, COLOR_RED, "[Erreur]: Le montant du plein doit être compris entre 1 et 100!");
if(VehicleInfo[vehicleid][Essence] < 98) return SCM(playerid, COLOR_RED, "[Erreur]: Le moteur doit être éteind !");
if(moteur[vehicleid] == 0)
{
new Total = PrixEssence * montant;
if(InfosJoueurs[playerid][Argent] > Total) return SCM(playerid, COLOR_RED, "[Erreur]: Vous n'avez pas assez d'argent !");
GivePlayerMoney(playerid, - Total);
InfosJoueurs[playerid][Argent] = InfosJoueurs[playerid][Argent] - Total;
VehicleInfo[vehicleid][Essence] = montant;
return 1;
}
else return SCM(playerid, COLOR_RED, "[Erreur]: Votre véhicule a le réservoir plein!");
}
}
Si vous pourriez m'aider, ça serait sympa car j'ai chercher maintes et maintes fois sans succès..
Bonne soirée, et je remercie d'avance les personnes qui m'aideront!
-
Salut, tu pourrai nous montrer le premier sscanf qui te permet de récupérer le contenu de la variable 'action' ?
Merci.
-
Salut,
Ouaip pas de soucis :)
if(sscanf(params, "s[12]", action))
{
SCM(playerid, -1, "[Astuce]: /v [action]");
SCM(playerid, COLOR_BLUE2, "[Action]: infos moteur, garer, capot, coffre, phares, (de)verrouiller radio");
}
-
Le soucis vient d'ici
sscanf(params, "s[25]d", params[0], montant)
Tu écrase la variable params, donc il ne peut pas récupérer la valeur de montant.
Pour éviter ça, tu dois passer le ton s[25] (qui te permet de récupérer l'action) en quiet, c'est à dire de ne pas le prendre en compte.
Pour cela tu dois faire ça :
sscanf(params, "{s[25]}d", montant)
-
Salut, je connais pas cette forme de "quiet".
Cependant mon problème n'est pas résolu, rien ne se passe :S
-
Essaies avec ce code et dit moi ce qu'il s'affiche.
if(!strcmp(action, "plein", true))
{
new montant;
SCM(playerid, -1, "Etape 1");
if(sscanf(params, "s[25]d", params[0], montant))
{
return SCM(playerid, COLOR_BLUE2, "[Astuce]: /v plein [Litre]");
}
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2271.4924,-2353.4355,13.2526))
{
SCM(playerid, -1, "Etape 2");
if (montant > 100 || montant < 1) return SCM(playerid, COLOR_RED, "[Erreur]: Le montant du plein doit être compris entre 1 et 100!");
if(VehicleInfo[vehicleid][Essence] < 98) return SCM(playerid, COLOR_RED, "[Erreur]: Le moteur doit être éteind !");
if(moteur[vehicleid] == 0)
{
new Total = PrixEssence * montant;
if(InfosJoueurs[playerid][Argent] > Total) return SCM(playerid, COLOR_RED, "[Erreur]: Vous n'avez pas assez d'argent !");
GivePlayerMoney(playerid, - Total);
InfosJoueurs[playerid][Argent] = InfosJoueurs[playerid][Argent] - Total;
VehicleInfo[vehicleid][Essence] = montant;
return 1;
}
else return SCM(playerid, COLOR_RED, "[Erreur]: Votre véhicule a le réservoir plein!");
}
}
-
ça m'affiche l'étape 1 quand je fais /v plein, quand je fais /v plein 1, eh bien rien ne se passe.. ça ne m'affiche aucun message
-
Ton
if(sscanf(params, "s[12]", action))
{
SCM(playerid, -1, "[Astuce]: /v [action]");
SCM(playerid, COLOR_BLUE2, "[Action]: infos moteur, garer, capot, coffre, phares, (de)verrouiller radio");
}
Change le en
if(sscanf(params, "s[12]{s}", action))
{
SCM(playerid, -1, "[Astuce]: /v [action]");
SCM(playerid, COLOR_BLUE2, "[Action]: infos moteur, garer, capot, coffre, phares, (de)verrouiller radio");
}
-
Cela fonctionne ! Merci à toi SSK :D