• 02 Mai 2025, 22:24:47


Auteur Sujet: [Résolu]Besoin d'aide a la compréhension strtok,DCMD,SSCANF  (Lu 900 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Khay

  • *
  • Criminel
  • Messages: 32
    • Voir le profil
Bonsoir, j'apprends depuis 1 semaine environ les bases du Pawn je commence à me débrouiller un petit peu pour des choses simples à faire Cmd Anim, Menu D'armes etc pas grand chose de compliqué

Mais le probleme est que je bloque sur certaine façon d'utiliser ce langage et vu que le but est un peu de le comprendre et pas copier comme un con les tuto je passe par ici encore une fois si on peut m'aider ^^

Alors avec ce tuto
http://www.gtaonline.fr/forums/index.php/topic,9841.0.html

Qui explique si j'ai bien compris que le strtok est compliqué et pas assez lisible mais je veux tout de même comprendre au cas ou j'aurais à modifier un script ou autre

Citer
public OnPlayerCommandText(playerid, cmdtext[])
{
   new idx, cmd[20];
   cmd = strtok(cmdtext, idx);
   if (strcmp(cmd, "/kick", true) == 0)
   {
      new tmp[20],id;
      tmp = strtok(cmdtext, idx);
      if (strlen(tmp))
      {
         id = strval(tmp);
         if (IsPlayerConnected(id))
         {
            Kick(id);
            SendClientMessage(playerid, 0x00FF00AA, "Le joueur fut kické(e)");
         }
      }
      return 1;
   }
   return 0;
}

voici l'exemple donné pour commencer lorsque que il fait

Citer
new idx, cmd[20];
cmd = strtok(cmdtext, idx);

Donc en gros la fonction new si je me trompe pas c'est pour créer un genre de tableau, donc ici le tableau est de 20 cases? pourquoi utiliser 20 et pas un autre chiffre? ce que j'aimerais savoir quelques fois ils utilisent 127 d'autres moins enfin bref je comprends pas pourquoi

Ensuite il définit le "cmd" mais que veut dire strtok? et quelle est la valeur de idx ? je comprends qu'il y a 20 cases mais sinon je comprends plus grand chose désolé mais je débute vraiment je demande peut être un peu beaucoup ^^

Citer
if (strlen(tmp))
      {
         id = strval(tmp);

Dans cet partie je comprends pas le "strlen" sachant que le "tmp" est défini juste avant de la même façon que précédemment

Ensuite le "strval" de même je ne comprends pas sa fonction


Ensuite dans le tuto il parle du DCMD

alors il parle apres l'explique qu'il faut déclaré la fonction DCMD

Citer
#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1;

Là c'est le flou total je sais que les % représente des paramètres comme on m'avait dit mais le reste franchement je sais pas si c'est nécessaire à savoir mais si possible de savoir ^^

Citer
{
   dcmd(kick, 4, cmdtext);
   return 0;
}
 
dcmd_kick(playerid, params[])
{
   if (strlen(params))
   {
      id = strval(params);
      if (IsPlayerConnected(id))
      

Ici apparemment sa veut définir la fonction "kick" mais pourquoi ce chiffre 4? je comprends pas
On revoit les fonctions strlen et strval que je connais pas du tout et params qui je pense veut dire "paramétrer" mais reste à voir

pour finir

Citer
if (sscanf(params, "d", id)) SendClientMessage(playerid, 0xFF0000AA, "Usage: /kick <ID>");

Donc le "d" définit une décimal mais pourquoi définir une décimal ici? si possible de m'expliquer


Sa fait beaucoup de question je sais peut etre un peu conne pour vous mais je veux apprendre et comprendre et non copié coller merci à ceux qui auront la motivation de répondre
« Modifié: 02 Août 2011, 01:27:47 par Khay »

Hors ligne Khay

  • *
  • Criminel
  • Messages: 32
    • Voir le profil
[Résolu]Re : Besoin d'aide a la compréhension strtok,DCMD,SSCANF
« Réponse #1 le: 02 Août 2011, 01:27:17 »
C'est good j'ai eu du mal mais j'ai compris l'ensemble en faisant quelques recherches ^^ je préfère utiliser le strtok malgré que se soit moins lisible enfin sa dépend la personne
« Modifié: 02 Août 2011, 01:28:58 par Khay »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : [Résolu]Besoin d'aide a la compréhension strtok,DCMD,SSCANF
« Réponse #2 le: 02 Août 2011, 02:58:25 »
Le mot clé sert à déclarer une variable.
Un tableau à plus ou moins de cases en fonctions de ce que tu veux mettre dedans.