• 04 Juin 2026, 21:18:58


Auteur Sujet: [COMMANDES] Problème Sous-Commandes  (Lu 2884 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne asto63

  • *
  • Nouveau
  • Messages: 6
    • Voir le profil
[COMMANDES] Problème Sous-Commandes
« le: 25 Octobre 2013, 16:05:09 »
Salut, j'aurais besoin d'aide pour pouvoir créer une sous-commande?
Voici mon code déjà fait:
Citer
Mes includes:
  • Dutils
  • Dini
  • File

Citer
Le code:
if(strcmp(cmdtext, "/police", true) == 0 || strcmp(cmdtext, "/pol", true) == 0)
   {
       subcmd = strtok(cmdtext, idx);
      if(gTeam[playerid] = TEAM_POLICE)
      {
          SendClientMessage(playerid,C_TEAM_POLICE,"[INFO]Vous n'appartenez pas à la Police.");
      }

      if(!strlen(subcmd))
      {
         SendClientMessage(playerid, C_USAGE, "{FF6600}[Action]{99EEFF} /(pol)ice <nom>");
      }
         return 1;
   }

Et sa me dit ces erreurs:
C:\Users\utilisateur\****\***\*****\***\gamemodes\GM2.pwn(662) : error 017: undefined symbol "cmd"
C:\Users\utilisateur\****\***\*****\***\gamemodes\GM2.pwn(664) : error 017: undefined symbol "subcmd"
C:\Users\utilisateur****\***\*****\***\gamemodes\GM2.pwn(664) : error 017: undefined symbol "idx"
C:\Users\utilisateur\****\***\*****\***\gamemodes\GM2.pwn(670) : error 017: undefined symbol "subcmd"

Je ne sais pas comment faire pour régler ce problème.
« Modifié: 25 Octobre 2013, 16:10:32 par asto63 »

Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #1 le: 25 Octobre 2013, 17:32:41 »
Salut, tes erreurs disent que tu n'as pas crée les variables cmd, idx, etc...
Donc crée-les ^^ (pas dans une commande, dans la callback directement)
new cmd[128], idx, subcmd[128];
(Pour les [128] je ne suis pas sûr: si ça te met une erreur, essaie de les enlever)

PS: pour une si petite commande tu prends beaucoup de place, regarde ce que je ferais moi à ta place :
Code: (pawn) [Sélectionner]
if(!strcmp(cmdtext, "/police", true)||!strcmp(cmdtext, "/pol", true))
{
      subcmd = strtok(cmdtext, idx);
      if(gTeam[playerid] = TEAM_POLICE) return SendClientMessage(playerid,C_TEAM_POLICE,"[INFO]Vous n'appartenez pas à la Police.");
      if(!strlen(subcmd)) return SendClientMessage(playerid, C_USAGE, "{FF6600}[Action]{99EEFF} /(pol)ice <nom>");
      //Tout est correct, tu peux effectuer l'action désirée
      return 1;
}

PPS: Utilise la balise [ code ] [ / code ] (sans les espaces) pour montrer tes codes, et si c'est du pawn utilise [ code = pawn ] [ / code ] (Toujours sans les espaces)

[/url]

Hors ligne asto63

  • *
  • Nouveau
  • Messages: 6
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #2 le: 26 Octobre 2013, 18:25:57 »
Une erreur:


gamemodes\GM2.pwn(814) : error 047: array sizes do not match, or destination array is too small

Ligne 814:
     
Code: (pawn) [Sélectionner]
  subcmd = strtok(cmdtext, idx);

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #3 le: 26 Octobre 2013, 19:49:03 »
Tu modifies la valeur d'une chaîne de caractère d'une très mauvaise façon. Le signe égal suivi de la valeur n'est possible qu'à l'initialisation de la variable, lors de sa création.

Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : Re : [COMMANDES] Problème Sous-Commandes
« Réponse #4 le: 26 Octobre 2013, 20:47:16 »
Tu modifies la valeur d'une chaîne de caractère d'une très mauvaise façon. Le signe égal suivi de la valeur n'est possible qu'à l'initialisation de la variable, lors de sa création.
Donc tu voudrais qu'il fasse new cmd=strtok(cmdtext, idx) ?
Si oui le souci est le suivant:
Citer
error 008: must be a constant expression; assumed zero

Une erreur:


gamemodes\GM2.pwn(814) : error 047: array sizes do not match, or destination array is too small

Ligne 814:
     
Code: (pawn) [Sélectionner]
  subcmd = strtok(cmdtext, idx);
Est-tu bien sûr d'avoir mit [128] ? Si oui, essaie de monter à [256] voir plus (mais pas trop)
Et en cas où ça ne marche toujours pas, je ne sais rien du tout d'autre :/

[/url]

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #5 le: 26 Octobre 2013, 22:09:14 »
Pas forcément, mais la fonction strcmp est plus appropriée pour modifier une chaîne après la déclaration.

Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #6 le: 27 Octobre 2013, 02:34:58 »
Je vois mal comment tu peux modifier une chaîne avec une fonction de comparaison
En l'occurrence on ne veut pas modifier la chaîne mais récupérer le reste de la commande, et quand bien même on voudrait modifier en comparant, que veux-tu qu'on compare en sachant qu'on a pas le reste de la commande u_u (certes, suffit de remplacer /police par '' mais il débute, on va donc faire les choses simplement), le strtok est donc approprié lorsque l'on débute, comme dans le cas ici présent.

[/url]

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #7 le: 27 Octobre 2013, 03:17:20 »
Toutes mes excuses, je me suis trompé de fonction ! À force de ne plus coder, on rouille... Je voulais parler de la fonction format (si je ne me trompe pas de nouveau). :biggrin:

Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #8 le: 27 Octobre 2013, 14:09:42 »
Format, c'est correct pour modifier un string, mais quelle est le différence au juste ?
J'ai toujours fait variable=strtok(cmdtext, idx); et ça ne m'a jamais posé aucun problème personnellement ^^

[/url]

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #9 le: 27 Octobre 2013, 15:53:05 »
Beh de tête, définir une valeur directement par le signe égal pour une chaîne de caractères ça ne fonctionne qu'à la déclaration, ensuite on utilise une fonction qui modifie la chaîne case par case... ? À moins que ça ne soit disponible en Pawn et que c'est un attribut propre au C, auquel cas je dois être complètement à côté de la plaque. :grin:

Hors ligne asto63

  • *
  • Nouveau
  • Messages: 6
    • Voir le profil
Re : [COMMANDES] Problème Sous-Commandes
« Réponse #10 le: 28 Octobre 2013, 22:28:56 »
Résolue:

Code: (pawn) [Sélectionner]

  subcmd = strtok(cmdtext, idx);
// Transformer en:
#define subcmd strtok(cmdtext, idx);

Merci de l'aide