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

Titre: [ZCMD]: Commande qui ne fonctionne pas!
Posté 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 :)

Code: (pawn) [Sélectionner]
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!
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Ssk le 25 Juin 2014, 23:16:39
Salut, tu pourrai nous montrer le premier sscanf qui te permet de récupérer le contenu de la variable 'action' ?
Merci.
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Eclips le 26 Juin 2014, 10:52:00
Salut,
Ouaip pas de soucis :)

Code: (pawn) [Sélectionner]
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");
}
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Ssk le 26 Juin 2014, 14:50:50
Le soucis vient d'ici

Code: (pawn) [Sélectionner]
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 :

Code: (pawn) [Sélectionner]
sscanf(params, "{s[25]}d", montant)
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Eclips le 26 Juin 2014, 15:38:26
Salut, je connais pas cette forme de "quiet".
Cependant mon problème n'est pas résolu, rien ne se passe :S
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Ssk le 26 Juin 2014, 15:57:50
Essaies avec ce code et dit moi ce qu'il s'affiche.

Code: (pawn) [Sélectionner]
    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!");
}
    }     
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Eclips le 26 Juin 2014, 16:35:19
ç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
Titre: Re : [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Ssk le 26 Juin 2014, 20:17:21
Ton

Code: (pawn) [Sélectionner]
    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

Code: (pawn) [Sélectionner]
    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");
    }
Titre: [Résolu]: [ZCMD]: Commande qui ne fonctionne pas!
Posté par: Eclips le 26 Juin 2014, 21:20:12
Cela fonctionne ! Merci à toi SSK :D