GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ApocKalipsS le 25 Août 2009, 11:29:47

Titre: Unkown Command
Posté par: ApocKalipsS le 25 Août 2009, 11:29:47
Bonjour,
Je souhaiterais que si un joueur tape une commande inconnue, il y est une action spéciale, plutôt que "Unkown Command".
Comment faire ?
Merci.
Titre: Re : Unkown Command
Posté par: cristab le 25 Août 2009, 11:42:59
c'est a dire une action special ?

si tu veut juste une phrase


a la place du return 0;

Tu met ceci

return SendClientMessage(patati patata);
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 25 Août 2009, 11:55:49
Ok, mais en fait ce que je veux dire c'est :
"La commande "/machintrucbidule" n'existe pas."
Donc je pense pas qu'il faut faire un retun à chaque commande.
Titre: Re : Unkown Command
Posté par: cristab le 25 Août 2009, 12:00:47
non du tout


tu utilise un format

new wrongcmd[128];
format(wrongcmd, sizeof(wrongcmd), "desoler %s n'existe pas sur ce serveur", cmdtext);
return SendClientMessage(playerid,Blanc,wrongcmd);

voila a la place du return 0; a la fin de la callback OnPlayerCommandText
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 25 Août 2009, 12:40:20
En fait je veux affichier un TextDraw, donc je fait comme çà :
OnPlayerCMDText
{
return truc=CreateTextDraw()
TextDrawFont(..)
etc..
}

C'est comme ceci ?
Titre: Re : Unkown Command
Posté par: cristab le 25 Août 2009, 12:58:33
euh en TD ce serais plutot textdrawhideforplayer


car tu dois surement le creer avant et utiliser un string mais pense a le detruire sinon il resteras longtemps
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 25 Août 2009, 13:04:02
J'ai pas bien compris...
Pour le Hide, je ferais un timer.
Titre: Re : Unkown Command
Posté par: cristab le 25 Août 2009, 13:09:20
le mieux ce serais

return Wrongcmd(playerid);



Wrongcmd(playerid)
{

// le code de ton td avec le timer

}
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 25 Août 2009, 13:47:24
J'ai réussi, merci à toi, Cristab ;)

Double post
Arf, j'ai un autre problème.

Voilà mon code :


return Wrongcmd(playerid);//Wrongcmd(playerid);
}// Fin de OnPlayerCMDtext

Il y a quelques commandes qui utilise l'action Wrongcmd alors que les commandes sont bonnes, comment ca se fait ?

J'ai aussi ce warning :

Citer
warning 209: function "Wrongcmd" should return a value
Elle présente la dernière accolade du public Wrongcmd.
Titre: Re : Unkown Command
Posté par: cristab le 25 Août 2009, 21:29:20
tu peu me faire voir en gros ton Wrondcmd et les commande qui l'affiche or qu'elle existe c'est surement une histoire de return 1; dans la commande en question
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 25 Août 2009, 22:17:59
public Wrongcmd(playerid)
{
if(hidetruc[playerid] == 0)
{
txt2 = TextDrawCreate(5.0, 400.0,Text_Minimap2);
  TextDrawUseBox(txt2, 0);
TextDrawFont(txt2, 1);
TextDrawSetShadow(txt2,0);
TextDrawSetOutline(txt2,1);
TextDrawBackgroundColor(txt2,0x000000FF);
TextDrawColor(txt2,0xFFFFFFFF);
TextDrawShowForPlayer(playerid, txt2);
SetTimerEx("HideTextDraw2", 2500, false, "i", playerid);
SetTimerEx("HideTextDraw2", 4500, false, "i", playerid);
hidetruc[playerid] = 1;
}
}
Titre: Re : Unkown Command
Posté par: cristab le 25 Août 2009, 22:23:38
essaie de lui ajouter un return 1;
Titre: Re : Unkown Command
Posté par: S!m le 25 Août 2009, 23:57:27
Salut,

les callback doivent toujours retourner une valeur, ainsi ton OnPlayerCommandText doit se terminer avec un return, ici tu retourne la valeur de retour de ta fonction, or ta fonction ne retourne pas de valeur, bref tu doit faire comme Cristab l'a dit, ajouter un return

sinon tu peut toujours modifier ta façon d'utiliser la fonction de façon à ne pas en retourner la valeur mais une valeur "constante", retourner un nombre directement.

    WrongCmd(playerid);
    return 1;

de plus, tu devrais mettre en paramètre la commande faite par le joueur si tu désire un texte du genre :" La commande /allo n'existe pas."

j'ajouterais même que l'intérêt d'utiliser un TextDraw est plutôt limité, tu serais pratiquement mieux d'utiliser un simple SendClientMessage

++Sim++
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 26 Août 2009, 10:26:56
J'ai rajouté un return aux deux, ca s'arrange mais c'est pas toujours ça :

On m'affichais avant un "Unknown Command" dans la chat box + le text draw, maintenant il n'y a que le text draw, mais seulement il s'affiche dans certaines commandes qui peuvent être bonne.
Peut être que...
Les commandes appellent une call back, qui est par la suite non retournée ?
Titre: Re : Unkown Command
Posté par: cristab le 26 Août 2009, 11:15:07
sa se pourrais regarde qu'elle commande reagisse comme ceci est regarde les callback appeler verifie en meme temps que ta commande se compose d'un return 1;
Titre: Re : Unkown Command
Posté par: Lance le 26 Août 2009, 17:24:56
Alors, voila moi on ma dis d'une autre façon, pour moi ça marche bien.

Aprés ton retun de fin de OnPlayerCommandText tu met:

  else
    {
SendClientMessage(playerid, Couleur_Rouge, "Commande Inconnue."); // Tu peut mettre autre chose...
SendClientMessage(playerid, Couleur_Rouge, "Tapez /aide pour voir les différentes commandes.");
         return 1;
   }
}

Titre: Re : Unkown Command
Posté par: Ssk le 26 Août 2009, 17:47:47
Ouais c' est une solution comme une autre, mais le return c' est mieu ;)
Titre: Re : Unkown Command
Posté par: ApocKalipsS le 27 Août 2009, 10:22:05
La technique que l'on ma donner dans les anciens posts marchent très bien. Il faut cepandant ne pas oublier de mettre un return 1; à la fin de chaque commande.
Titre: Re : Unkown Command
Posté par: Ssk le 27 Août 2009, 13:52:33
Ouais je pense que le probleme te viens d ici tu as dut mettre un return 0; dans une de tes commande =)