• 05 Juin 2026, 08:05:21


Auteur Sujet: Problème création fonction /kick  (Lu 1921 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Problème création fonction /kick
« le: 24 Juin 2011, 11:45:12 »
Bonjour  à toute la communauté avant tout,

Je script depuis très très peu de temps et je me suis attaqué à la création des commandesdu type /kick [id], /skin [id].

Après de nombreuse rechercher sur je me suis résolu à faire un copier-coller de wiki pour la cmd /kick.
Je l'ai donc donc intégré  à mon code.
Hélas j'ai tout de même réussi a avoir des erreurs que je n'arrive pas à résoudre, même après de longue recherches où je retrouve ce problème mais pas la solution.

Voici le lien de mon OnPlayerCommandText: http://pastebin.gtaonline.fr/pastebin.php?show=1117

Voici le haut de mon script si ça peut aider: http://pastebin.gtaonline.fr/pastebin.php?show=1118

Voici le message d'erreur: http://pastebin.gtaonline.fr/pastebin.php?show=1120

Je vous serais très reconnaissant d'une aide si possible,
bien à vous,
Remy.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #1 le: 24 Juin 2011, 12:07:42 »
Salut,
As-tu bien copié la fonction strtok quelque part dans ton script ?
++

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #2 le: 24 Juin 2011, 12:23:25 »
Les deux seules fois où fonction strtok est présente dans mon script, c'est dans cette partie du script : http://pastebin.gtaonline.fr/pastebin.php?show=1117


Il n'y a qu'ici que l'on trouve la fonction strtok dans mon script.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #3 le: 24 Juin 2011, 12:29:01 »
Oui, mais ta fonction strtok ne fait pas partie de <a_samp> !

Moi je te parle de ça :

<?php // Ne copie pas ça (Coloration du code)

strtok(const string[], &index)
{
new length strlen(string);
while ((index length) && (string[index] <= ' '))
{
index++;
}
 
new offset index;
new result[20];
while ((index length) && (string[index] > ' ') && ((index offset) < (sizeof(result) - 1)))
{
result[index offset] = string[index];
index++;
}
result[index offset] = EOS;
return result;
}

Ce bout de code déclare la fonction strtok.
Tu dois mettre celui-ci en bas de ton script, hors de toute callback.
(Regarde mon tuto, chapitre 3 pour comprendre le principe de créer ses fonctions ;) )
++

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #4 le: 24 Juin 2011, 12:33:08 »
D'accord, je pensais en effet qu'elle était intégrée à une des directives.
Je te remercie, et repasserai à nouveau dans ton tuto (sacré tuto d'ailleur ;))

Résolu.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #5 le: 24 Juin 2011, 12:37:12 »
Merci  ;)

D'ailleurs, tu pourrais te simplifier la tâche en utilisant sscanf et zcmd qui sont plus simples à utiliser :P
Regarde du côté du tuto de FuSion pour en savoir plus ;)
++

Hors ligne Aegoss

  • I'm gonna kick dat' ass !
  • *
  • • « a3goss - иsɢ Lєadєʀ » •
  • Messages: 4787
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #6 le: 24 Juin 2011, 12:52:58 »
Merci d'aller te présenter et lire le topic de règlement.

Bonne journée :)
HP Envy 15-K222NF - Argent
15,6'' Full HD - Intel Core i5-4200U - HDD 1 To - RAM 8 Go - NVIDIA GeForce GTX 850M 4 Go - LG E2251 - Logitech G105 - R.A.T 7 Contagion - Siberia V2 ''Orange''




Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Re : Problème création fonction /kick
« Réponse #7 le: 24 Juin 2011, 12:58:37 »
et lire le topic de règlement.

Bonne journée :)

Je ne vois pas où il n'a pas respecté le règlement  :happy

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #8 le: 24 Juin 2011, 14:09:34 »
Je viens d'aller le lire en effet, je vois pas non plus :O

J'avais une autre question concernant le fameux "strtok", et autant la poser là plutot que créer un nouveau topic, non ? :)
J'aurai aimé savoir à quoi correspond exactement sa fonction ? J'ai lu deux, trois chose dessus sans comprendre réellement sa fonction.

D'où cette lige que je ne comprend pas:

strtok(cmdtext, idx);
Si c'était possible de me l'expliquer en détail ? :P C'est uniquement par curiosité car je vais par là suite utiliser la tuto de Fusion.
Merci à toi.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Problème création fonction /kick
« Réponse #9 le: 24 Juin 2011, 14:20:12 »
J'ai toujours eu du mal avec ça...
Si j'ai bien compris (Si quelqu'un peut me corriger au cas où), strtok "sépare" le texte de la commande en 2 (ou plus) dès qu'il y a un espace, et retourne ce qu'il y a écrit après. (Un peu comme split(); sur IV:MP)

Donc normalement, si la commande est /kick [ID], strtok retournera [ID].

Mais comme le wiki SA:MP le dit, cette fonction est obsolète et elle doit être utilisée le moins possible. Pourtant... Je vois très peu de GM/FS codés avec sscanf qui est plus compliqué au début, mais qui après même pas 1h de pratique devient très simple.

Et en plus, sscanf et zcmd permettent de réduire le nombre de lignes :

Code: (Pawn (strtok)) [Sélectionner]
if(strcmp(cmd, "/kick", true) == 0)
{
new tmp[128];
tmp = strtok(cmdtext, idx);
 
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /kick [playerid]");
 
Kick(strval(tmp));
return 1;
}
Code: (Pawn(Zcmd/sscanf)) [Sélectionner]
CMD:kick(playerid,params[])
{
     new pid;
     if(sscanf(params,i,pid)) return SendClientMessage(playerid,0xFFFFFFFF, "USAGE: /kick [playerid]");
     else
     {
          Kick(pid);
     }
     return 1;
}

(Pour 1 paramètre, même longueur, mais si on veut ajouter un paramètre "Raison" par exemple, alors là il y a pas photo  :happy)

++

Hors ligne Aegoss

  • I'm gonna kick dat' ass !
  • *
  • • « a3goss - иsɢ Lєadєʀ » •
  • Messages: 4787
    • Voir le profil
Re : Re : Problème création fonction /kick
« Réponse #10 le: 24 Juin 2011, 14:41:44 »
Je viens d'aller le lire en effet, je vois pas non plus :O

J'avais une autre question concernant le fameux "strtok", et autant la poser là plutot que créer un nouveau topic, non ? :)
J'aurai aimé savoir à quoi correspond exactement sa fonction ? J'ai lu deux, trois chose dessus sans comprendre réellement sa fonction.

D'où cette lige que je ne comprend pas:

strtok(cmdtext, idx);
Si c'était possible de me l'expliquer en détail ? :P C'est uniquement par curiosité car je vais par là suite utiliser la tuto de Fusion.
Merci à toi.

Ça fait simplement parti des choses à faire quand on arrive sur un forum.
HP Envy 15-K222NF - Argent
15,6'' Full HD - Intel Core i5-4200U - HDD 1 To - RAM 8 Go - NVIDIA GeForce GTX 850M 4 Go - LG E2251 - Logitech G105 - R.A.T 7 Contagion - Siberia V2 ''Orange''