GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: NatiVe™ le 23 Août 2007, 00:02:55

Titre: Quelle code utiliser ?[RESOLU]
Posté par: NatiVe™ le 23 Août 2007, 00:02:55
Salut all !

Je voudrais savoir quelle code utiliser et ou le placer pour que quand un player fait une mauvaise command un petite phrase du jore (Mauvaise commande utiliser) apparaisse !

je penser a mettre un GameTextForPlayer a la fin du return 0 met apparement nan ! :( (on mavais dit ca un jour :s )

Voila merci de vos futur reponse

AK.
Titre: Re : Quelle code utiliser ?
Posté par: spykerc8 le 23 Août 2007, 00:10:38
Code: (cpp) [Sélectionner]
return 0;
Code: (cpp) [Sélectionner]
return tonmessagetexte;
Titre: Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 00:19:03
Bien di donc tu est gentil se soir lol merci beaucoup !

si j'ai bien compris a la fin jdoit avoir par exemple

Citer
return 1;
}
return monmessage;
}

C'est sa ?

AK.
Titre: Re : Quelle code utiliser ?
Posté par: Syg le 23 Août 2007, 00:38:58
Spyker, tu tournes à quoi ce soir ?
ou alors tu aimes pas Arsenik .....
J'arrive même à faire planter le compilo PAWN avec ta solution ...  :)

A la fin de OnPlayerCommandText, tu appelles GameTextForPlayer et tu fait un return 0 (voire même return 1 si tu ne veux pas que le message par défaut apparaisse dans la console)

++
Syg
Titre: Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 00:40:27
Re !!

a la fin de toute mes commande j'ai mit sa

Citer
}
return 1;
}
return Serveur Message: Commande inconnue;
}

Mais ce ne marche pas j'ai une erreur

Citer
error 010: invalid function or declaration
Titre: Re : Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 00:42:31
A la fin de OnPlayerCommandText, tu appelles GameTextForPlayer et tu fait un return 0 (voire même return 1 si tu ne veux pas que le message par défaut apparaisse dans la console)

++
Syg

J'ai pa trop ccompris...

Tu aurais un exemple s'il te plais !
Merci ! :)

AK.
Titre: Re : Quelle code utiliser ?
Posté par: Syg le 23 Août 2007, 00:46:15
Si :

A placer à la fin de OnPlayerCommandText

   GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
   return 1;


++
Syg
Titre: Re : Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 00:48:36
Sa ne marche pas

je doit mettre

GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
   return 1;

 tou a la fin de mes commande ? si c'est sa ca ne marche pas !

Par exemple

....................................
....................................
..........MES..CMD..........
....................................
....................................
GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
   return 1;

???

AK.
Titre: Re : Quelle code utiliser ?
Posté par: spykerc8 le 23 Août 2007, 01:36:39
Non...
Dsl pour le premier post, j'était un peu pressé, ça aurait été mieux que je poste pas d'ailleurs xD

Code: (cpp) [Sélectionner]
return GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
J'ai coder ça comme ça sur mes scripts, ça marche jusqu'à présent.
En fait au lieu de déclarer une commande invalide tu lui fait retourner une commande qui n'est pas un bool vrai ou faux (1 ou 0) mais qui est interprété comme un faux.

Bref, je sais pas si je me fais bien comprendre, jsuis un peu fatiguer là :s


PS : Ak : On ne PEUT PAS retourner deux fois true or false dans une fonction pour la fermer sauf cas particuliers (et encore pas certains, le pro Syg nous dira :P).
Titre: Re : Quelle code utiliser ?
Posté par: Syg le 23 Août 2007, 02:35:03
Ah, je préfère ça Spyker.
Mais normalement dans la callback OnPlayerCommandText on retourne soit 0 (pour dire qu'on a pas traité la commande) soit 1 (pour dire qu'on a traité la commande) et on sait pas ce que retourne GameTextForPlayer (peut-être le nombre de caractères affiché ou 0 ou je sais pas quoi) donc pour être sùr, vaut mieux le faire en deux lignes.

Arsenik, voilà à quoi devrait ressembler ta fonction :

public OnPlayerCommandText
{
   if ("cmd1")
   {
      /* On traite la commande */
      ...
      return 1;
   }
   else if ("cmd2")
   {
      /* On traite la commande */
      ...
      return 1;
   }
   else if ....
   {
   }

   GameTextForPlayer (...);
   return 1;
}


NB : Il peut y avoir des if à la place des else if, ça change rien pour ce qui nous intéresse.

Voilà, je pense que c'est clair.

++
Syg
Titre: Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 02:52:07
:( :( :( :(

if ("cmd")
{
/* je traite mes cmd */
...........
}
GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
return 1;
}

Ca ne marche pas ! :( :(
Titre: Re : Re : Quelle code utiliser ?
Posté par: At1x le 23 Août 2007, 07:00:41
:( :( :( :(

if ("cmd")
{
/* je traite mes cmd */
...........
}
GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
return 1;
}

Ca ne marche pas ! :( :(

return GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
Bonjour, derien, au revoir je vais au lit :)
Titre: Re : Quelle code utiliser ?
Posté par: Syg le 23 Août 2007, 09:36:48
Tu te couches trop tard Atx1  :)
Cette solution a déjà été donnée par Spycker et elle n'est pas différente de celle que j'ai donnée.
Le problème d'Arsenik est ailleurs.
Mais pour ça, il faudrait qu'on voit ton code Arsenik. Est-ce que tu peux mettre le code de ta fonction OnPlayerCommandText dans le pastebin :
(http://pastebin.gtaonline.fr/pastebin.php)

Pour les explication sur le pastebin :
http://www.gtaonline.fr/forums/index.php/topic,1098.0.html

++
Syg
Titre: Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 12:24:07
Salut ! :s

Je crois que vous n'avez pas compris mon probleme qui n'en n'est pas un d'ailleur.

Je cherche le code qui existe pour par exemple si le player fait une commande qui n'existe pas dans mon GameMode sa lui affiche Commande Invalide au lieu de SERVER: Unknown Command qui lui est d'origine.

Exemple:

Imaginons j'ai que 3 commandes dans mon GameMode:
/ls
/lv
/sf

Un player decide de faire une commande au hazard, il fait /commande

(http://www.mezimages.com/up/08/min-510473-sa-mp-002.png) (http://www.mezimages.com/afficher.php?num=510473-sa-mp-002.png)

le serveur lui dit:

(http://www.mezimages.com/up/08/min-510474-sa-mp-003.png) (http://www.mezimages.com/afficher.php?num=510474-sa-mp-003.png)

Bien moi je cherche le code qui remplace SERVER: Unknown Command par une phrase que je voudrais.

J'espere que je me suis bien expliquer ;).

AK.
Titre: Re : Quelle code utiliser ?
Posté par: spykerc8 le 23 Août 2007, 12:31:57
Oui ba met ce qu'on t'a répondu ^^

Code: (cpp) [Sélectionner]
return GameTextForPlayer (playerid, "Commande invalide", 2000, 6);
Titre: Re : Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 12:46:40
Oui ba met ce qu'on t'a répondu ^^

Code: (cpp) [Sélectionner]
return GameTextForPlayer (playerid, "Commande invalide", 2000, 6);

Voila ce que je viens de faire.

Citer
if ("cmd")
{
/* je traite mes cmd */
...........
}
return GameTextForPlayer (playerid, "Commande Invalide", 2000, 6)
}

Sa ce compile parfaitement mais ne marche pas.

Je suis désolé de vous embetter avec sa.

Si vous ne savez plus quoi faire pour moi laisser tombé je comprendrez.

Merci

AK.
Titre: Re : Quelle code utiliser ?
Posté par: spykerc8 le 23 Août 2007, 12:54:12
Bon bon bon..

Code: (cpp) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
  new error[256];
format(error, sizeof (error), "Commande inconnue: %s",cmdtext);

      [...Tes commandes...]


return SendClientMessage(playerid,0xFFFF00AA, error);
}
Titre: Re : Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 13:07:00
En dessous des autres au debut je mais sa >

new error[256];

Sa je le place ou s'il te plais.

format(error, sizeof (error), "Commande inconnue: %s",cmdtext);

AK.
Titre: Re : Quelle code utiliser ?
Posté par: spykerc8 le 23 Août 2007, 13:11:57
N'importe où avant le return. Garde les deux bouts ensemble, c'est plus lisible.
Titre: Re : Quelle code utiliser ?
Posté par: NatiVe™ le 23 Août 2007, 13:18:19
Merciiiiiiiiii !!!!

Ca marche merci beaucoup SpyKerc8

Et merci aux autres.

AK.