• 21 Avril 2025, 23:44:05


Auteur Sujet: [Conseil/Aides] Commandes  (Lu 1780 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
[Conseil/Aides] Commandes
« le: 29 Novembre 2010, 16:46:05 »
Bonsoir,
Pour creer des commandes j'ai vu qu'il y avait plusieurs methodes ,
ZCMD, DCMD, SSCANF .....
Voila j'aimerai savoir laquelle est la plus facile et si vous aurai un lien qui explique a merveille le fonctionnement de ce dernier, surtout sur les commandes multi parametres  avce different genre /commande [Float:_1] [Float:_2] [Float:_3] [String] [...]  , et si vous aurez un lien qui explique a merveille sa serai aussi bien ..
 Merci d'avance ..
« Modifié: 30 Novembre 2010, 08:23:21 par Boomerkuigi »

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Conseil] Commandes
« Réponse #1 le: 29 Novembre 2010, 17:20:29 »
Salut :)

zcmd + sscanf :D

un tuto expliquand sscanf est sur gta online cherche commande rapide.

A+, Sam.

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : [Conseil] Commandes
« Réponse #2 le: 30 Novembre 2010, 08:23:01 »
Quelqu'un pourrait m'aider avec cette commande :
***

 if(strcmp(cmd, "/sethp", true) == 0)
   {
        new tmp1[128], tmp2[128];
        tmp1 = strtok(cmd, idx);
        tmp2 = strtok(cmd, idx);

     if(!strlen(tmp1))
         {
            SendClientMessage(playerid, 0x555555AA, "Usage: /sethp <id> <hpamount>");
            return 1;
         }


     if(!strlen(tmp2))
         {
            SendClientMessage(playerid, 0x555555AA, "Usage: /sethp <id> <hpamount>");
            return 1;
         }

     new id, Float:hpamount;
     id = strval(tmp1);
     hpamount = strval(tmp2);

         if(!IsPlayerConnected(id))
         {
                SendClientMessage(playerid, 0xFF0000FF, "ERROR: Player not connected");
                return 1;
         }

            new name1[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
            new str1[128], str2[128];
            GetPlayerName(playerid, name1, sizeof(name2));
            GetPlayerName(id, name2, sizeof(name2));
            SetPlayerHealth(id, hpamount);
            format(str1, sizeof(str1), "%s(%d) has set your health to %f !", name1, playerid, hpamount);
            format(str2, sizeof(str2), "You have set %s's(%d) health to %f", name2, id, hpamount);
            SendClientMessage(id, 0xAAAADDAA, str1);
            SendClientMessage(playerid, 0x30EE3000, str2);
            return 1;
   }

Quoi que je fasse elle m'affiche toujours la meme chose : " Usage: /sethp <id> <hpamount> "
j'ai beau mettre des valeurs sa ne m'affiche rien !
*

Hors ligne Jimmy_Krapovich

  • *
  • Tueur
  • Messages: 71
    • Voir le profil
    • www.lvdr.keuf.net
Re : [Conseil/Aides] Commandes
« Réponse #3 le: 30 Novembre 2010, 17:22:36 »
Salut toi =D

Tiens essaye sa, sa pourrais t'aidé:

                                if(strcmp(cmd, "/sethp", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0x555555AA, "Usage: /sethp <id> <hpamount>");
return 1;
}
new playa;
new health;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
health = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
   if(IsPlayerConnected(playa))
   {
       if(playa != INVALID_PLAYER_ID)
       {
SetPlayerHealth(playa, health);
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 256, "Attention: %s a donné %d% de santé à %s", sendername, health, giveplayer);
ABroadCast(COLOR_YELLOW,string,1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "   Vous n'êtes pas admin !");
}
}
return 1;
}

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : [Conseil/Aides] Commandes
« Réponse #4 le: 30 Novembre 2010, 17:36:23 »
Je plussoie, copier/coller n'est pas une méthode d'aide !

http://wiki.sa-mp.com/wiki/Zcmd

Hors ligne Jimmy_Krapovich

  • *
  • Tueur
  • Messages: 71
    • Voir le profil
    • www.lvdr.keuf.net
Re : [Conseil/Aides] Commandes
« Réponse #5 le: 30 Novembre 2010, 18:04:37 »
Faut faire preuve de patience..

On attend juste sa réponse et c'est à ce moment là que vous pourrez me critiquez, m'insulté...
« Modifié: 30 Novembre 2010, 18:06:59 par Jimmy_Krapovich »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Conseil/Aides] Commandes
« Réponse #6 le: 30 Novembre 2010, 18:11:37 »
@Jimmy_Krapovich: Ils ont raison la prochaine fois évite de faire des copiés collés de tes bouts de code, si tu veux aider c'est bien, mais faut le faire sérieusement en expliquant ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Jimmy_Krapovich

  • *
  • Tueur
  • Messages: 71
    • Voir le profil
    • www.lvdr.keuf.net
Re : [Conseil/Aides] Commandes
« Réponse #7 le: 30 Novembre 2010, 18:12:23 »
ok
 free post

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Conseil/Aides] Commandes
« Réponse #8 le: 30 Novembre 2010, 19:25:46 »
Salut,

pour un gain (très léger) en vitesse, utilisez isnull(...) au lieu de strlen(...) == 0, qui se défini comme suit:

#define isnull(%0) (%0[0] == '\0' || (%0[1] == '\0' && %0[0] == '\1'))
fait de mémoire, normalement ça devrait être correct.

Je vous explique, cette macro test si le premier caractère est le caractère de fin de chaine.
Dans le cas des fonctions appelées de façon externe, il est impossible de mettre une chaine vide, elle sera composé du caractère '\1' suivi du caractère de fin de chaine, c,est la deuxième partie de la macro.

++Sim++





Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : [Conseil/Aides] Commandes
« Réponse #9 le: 30 Novembre 2010, 21:26:54 »
Merci de votre aide, merci Jimmy, mais le truc c'est que je la connai ton code que t'as donnée, (GodFather) ...
Mais le truc c'est que j'arrive pas a voir ce qui cloche dans mon code je pense que sa devrait marcher, et bah non ..
si quelqqu'un pouvait m'eclairer,

IG quand je tappe la commande , sa m'affiche toujours la meme chose et sa ne heal rien
" Usage: /sethp <id> <hpamount> "

Hors ligne D0os-Nox

  • Connais toi - toi même
  • *
  • Tueur en série
  • Retourne toi, t'es déjà mort
  • Messages: 144
    • Voir le profil
    • :.. UG - Communauté d'entraide, de production vidéo games et multigaming ..:
Re : [Conseil/Aides] Commandes
« Réponse #10 le: 30 Novembre 2010, 22:58:26 »
Bonjour, Ci-dessous, tu lui demande d'extraire cmd comme étant la répétition de la commande /sethp !
tmp1 = strtok(cmd, idx);         
tmp2 = strtok(cmd, idx);

Donc,

tmp1 = strtok(cmdtext, idx);         
tmp2 = strtok(cmdtext, idx);

La variable cmdtext est de base dans la callbacks et permet en outre de garder tes différentes données que tu à exécuté pour L'ID et le montant de la santé !

Voilà, Une fois modifier, strlen va en quelques sortes récupérer les données stocker dans cmdtext et les envoyées .

 ??? D0os-Nox  :-\




Citer
La vrai paix n'existe pas, nous somme le reflet de l'ignorance d'un monde détruit par la guerre ![/glow]
Citer
Chaque jours, la haine nous renferme dans l'obscurité ![/glow]
(Citations par D0os)

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : [Conseil/Aides] Commandes
« Réponse #11 le: 01 Décembre 2010, 00:06:57 »
Salut,

c'est pas inclus dans sscanf ça ?

si mes souvenirs sont bons, oui.
Toutefois, ici, ils n'utilisent pas sscanf dans les commandes montrées.

Bien trouvé D0os-Nox ;).

Sinon, pour la quantité de vie à mettre, la variable doit être un «nombre à virgule», soit un float.
Comme la vafriable est un «nombre à virgule», tu ne peut utiliser strval, il faut utiliser floatstr. La fonction est équivalente, mais au lieu de récupérer un entier, elle récupère un nombre fractionnaire (float).

Bonne chance

++Sim++





Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Re : [Conseil/Aides] Commandes
« Réponse #12 le: 01 Décembre 2010, 06:36:04 »
Bonjour, Ci-dessous, tu lui demande d'extraire cmd comme étant la répétition de la commande /sethp !
tmp1 = strtok(cmd, idx);         
tmp2 = strtok(cmd, idx);

Donc,

tmp1 = strtok(cmdtext, idx);         
tmp2 = strtok(cmdtext, idx);

La variable cmdtext est de base dans la callbacks et permet en outre de garder tes différentes données que tu à exécuté pour L'ID et le montant de la santé !

Voilà, Une fois modifier, strlen va en quelques sortes récupérer les données stocker dans cmdtext et les envoyées .

 ??? D0os-Nox  :-\

 Je t'aime <3
Merci aussi a toi Sim pour la floatstr ;)