GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ShaDowxx™ le 27 Novembre 2010, 08:12:24

Titre: Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 27 Novembre 2010, 08:12:24
Bonjour, je voudrais savoir comment on peut faire cette commande

* Organisateur :

Vous le savez ?

Et si vous pouvez aussi le bloquer s'il vous plaît merci.
Titre: Re : Commande
Posté par: Jcvag44800 le 27 Novembre 2010, 10:42:11
Peut tu être plus préci,

Sa serais pour une faction/team ?
Titre: Re : Commande
Posté par: Jimmy_Krapovich le 27 Novembre 2010, 10:50:40
Salut à vous =DD

Tiens julien essaye de faire avec sa:

if (strcmp(cmd, "/admins", true) == 0) // By Jimmy =D
         {
        if(IsPlayerConnected(playerid))
        {
SendClientMessage(playerid, COLOR_VERTCLAIR, "|____ ~~ Admins~~La Vie De Rêve~~ ____|");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   if(PlayerInfo[i][pAdmin] >= 1 && PlayerInfo[i][pAdmin] <= 1338 || PlayerInfo[i][pTester] >= 1)
   {
       new admtext[64];
       if(PlayerInfo[i][pAppearList] == 1)
       {
        if(PlayerInfo[i][pAdmin] == 1338) { admtext = "Oranisateur"; }
         else { admtext = "Rang inconnu"; }
}
GetPlayerName(i, sendername, sizeof(sendername));
if(PlayerInfo[i][pAdminDuty] == 0 && PlayerInfo[i][pAppearList] == 1)
{
format(string, sizeof(string), "%s - %s", admtext, sendername);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else if(PlayerInfo[i][pAdminDuty] == 1 && PlayerInfo[i][pAppearList] == 1)
{
   format(string, sizeof(string), "%s - %s En Service", admtext, sendername);
SendClientMessage(playerid, COLOR_JAUNE, string);
}
}
}
}
}
return 1;
         }
Titre: Re : Commande
Posté par: Karting06 le 27 Novembre 2010, 12:02:55
Non, il ne veut pas ça. Il veut un truc du genre /rcon say mais au lieu d'avoir Admin il veut organisateur ! Exemple: /say Je suis Orga et ça affichera: *Organisateur: Je suis Orga.
Titre: Re : Commande
Posté par: S!m le 27 Novembre 2010, 16:36:53
Salut,

julien donne un titre plus clair à ton sujet, sinon je vais devoir  :lock

merci de ta coopération.

++Sim++
Titre: Re : Commande
Posté par: ShaDowxx™ le 28 Novembre 2010, 13:27:19
Ok ok !

Bon je vais faire un meilleur truc pour mieux comprendre :

Bonjour, je voudrais s'il vous plaît une commande qui permet de parler comme ceci :

" Organisateur : "

Or, je n'arrive pas à faire ce que je veut.
Titre: Re : Commande
Posté par: chneubeul le 28 Novembre 2010, 13:37:21
Tu veux une commande ou quand on parle directement dans le tchat ?

Si tu veux une commande, dis moi quel système de commande utilise tu ?
- le classique : tes commandes dans onplayercommandtext
- la version avec zcmd, dcmd etc..
- si tu utilise sscanf ou strcmp

Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 28 Novembre 2010, 13:39:21
T'a compris, je veut un commande pour que sa s'affiche dans le tchat
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: chneubeul le 28 Novembre 2010, 13:47:01
Oui j'ai compris ce que tu veux, mais toi tu ne m'a pas compris..

Citer

Si tu veux une commande, dis moi quel système de commande utilise tu ?
- le classique : tes commandes dans onplayercommandtext
- la version avec zcmd, dcmd etc..
- si tu utilise sscanf ou strcmp

Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 28 Novembre 2010, 14:04:11
le classique : tes commandes dans onplayercommandtext
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Xartrick le 28 Novembre 2010, 14:08:30
Voilà pour toi, j'ai fais extrêmement simple.

http://pastebin.gtaonline.fr/pastebin.php?show=953 (http://pastebin.gtaonline.fr/pastebin.php?show=953)
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: chneubeul le 28 Novembre 2010, 14:12:27
Je crois qu'il voulais une commande du style : /parler [message], non ?
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Xartrick le 28 Novembre 2010, 14:14:10
Il aura juste à le déplacer dans OnPlayerCommandText et d'utiliser strtok si c'est cela qu'il veut !
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 28 Novembre 2010, 14:37:01
@chneubeul : C'est ça que je voulais

@ Xartrick : Merci pour ton script, il m'a été très utile ! :)
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Xartrick le 28 Novembre 2010, 14:55:40
Parfait alors, bonne chance !
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Jimmy_Krapovich le 28 Novembre 2010, 16:56:04
Salut à vous =D

Julien c'est un peu compliqué pour srtok:

if(strcmp(cmd, "/organisateur", true) == 0 || strcmp(cmd, "/orga", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
                        while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
new sendername[MAX_PLAYERS_NAME];
     new result[120];
format(string, sizeof(string), "* Organisateur: %s",result);
                                                SendClientMessageToAll(COLOR_WHITE, string);
  }
  return 1;
}

J'espère t'avoir aidé.
Titre: Re : Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Jimmy_Krapovich le 28 Novembre 2010, 17:00:41
super simple a la facon rp avec result , moi j'te reduis ça en 3 ligne mdr

Mdr.. Et bah vasy
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Ssk le 28 Novembre 2010, 18:06:51
vous vous prenez la tête pour rien pas besoin de sscanf ou autre, seul strcmp suffit ^^


if( strcmp( "/organisateur", cmdtext, true, 13 ) == 0 )
{
    if( strlen( cmdtext[ 13 ] ) == 0 )
        return SendClientMessage( playerid, 0xFF0000FF, "/organisateur [Texte]" );
new name[ MAX_PLAYER_NAME ] = "";
GetPlayerName( playerid, name, MAX_PLAYER_NAME );
format( cmdtext, 128, "L'organisateur %s dit %s", name, cmdtext[14] );
SendClientMessageToAll( 0xFFFFFFFF, cmdtext );
return 1;
}
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Xartrick le 28 Novembre 2010, 18:16:06
Je préfère utiliser strtok personnellement.
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: chneubeul le 28 Novembre 2010, 19:21:50
J'utilise plus la méthode classique c'pour ça :)
puis strcmp c'est trop long, vive sscanf :D
Titre: Re : Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: S!m le 29 Novembre 2010, 16:06:51
Salut,

Je préfère utiliser strtok personnellement.
je me disait la même chose avant, d'ailleurs j'ai codé une version de strtok plus rapide et sécuritaire (disponible ICI (http://www.gtaonline.fr/forums/index.php/topic,2149.90.html), plus bas dans la page, et d'ailleurs tu peut enlever le return de la fonction...).

Sauf que je me suis rendu compte que cette fonction était pas très recommandé (pas une bonne idée de retourner une chaine), et relativement lente, principalement car il fallait encore traiter les données par la suite. En utilisant sscanf, on évite de devoir traiter les données manuellement comme la fonction le fait déjà.

Niveau système de commandes, pour avoir essayé la plupart des systèmes, mon préféré est de loin zcmd. Il est simple d'utilisation, permet de faire pratiquement tout et a un avantage remarquable: il ne ralentit pas de façon importante avec le nombre de commandes.

++Sim++
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Xartrick le 29 Novembre 2010, 17:51:10
Merci à Sim pour cette remarque, je vais essayer d'utiliser zcmd.
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 01 Décembre 2010, 15:27:38
J'aime bien le code à sasuke mais le problème c'est que sa marche pas, j'ai mon return qui marque que la commande n'existe pas :(
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Ssk le 01 Décembre 2010, 15:53:57
T'es sur ? car chez moi ça fonctionne parfaitement la preuve
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 01 Décembre 2010, 16:11:44
Désolé mais chez moi c'est une commande inconnue. J'ai juste modifié le nom de la commande aussi en /psay (pilote parler)

(j'ai un autre truc aussi c'est pour les voitures en txd dans le dossier vehicle dans scriptfiles :

C:\Users\Julien\Downloads\samp\gamemodes\AviationL.pwn(89) : error 012: invalid function call, not a valid address
C:\Users\Julien\Downloads\samp\gamemodes\AviationL.pwn(89) : warning 215: expression has no effect
C:\Users\Julien\Downloads\samp\gamemodes\AviationL.pwn(89) : error 001: expected token: ";", but found ")"
C:\Users\Julien\Downloads\samp\gamemodes\AviationL.pwn(89) : error 029: invalid expression, assumed zero
C:\Users\Julien\Downloads\samp\gamemodes\AviationL.pwn(89) : fatal error 107: too many error messages on one line

*Tousse, tousse*)
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Ssk le 01 Décembre 2010, 16:22:17
bah c'est normal si tu as changé le nom ^^

essai de comprendre le code et tu verra qu'il y a que quelque valeur à changer pour que ça fonctionne
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 01 Décembre 2010, 16:57:12
J'ai vu comment ça marche or la configuration est dur ! ^^ Merci de m'avoir éclairé
Titre: Re : Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: cristab le 01 Décembre 2010, 19:04:03
vous vous prenez la tête pour rien pas besoin de sscanf ou autre, seul strcmp suffit ^^


if( strcmp( "/organisateur", cmdtext, true, 13 ) == 0 )
{
    if( strlen( cmdtext[ 13 ] ) == 0 )
        return SendClientMessage( playerid, 0xFF0000FF, "/organisateur [Texte]" );
new name[ MAX_PLAYER_NAME ] = "";
GetPlayerName( playerid, name, MAX_PLAYER_NAME );
format( cmdtext, 128, "L'organisateur %s dit %s", name, cmdtext[14] );
SendClientMessageToAll( 0xFFFFFFFF, cmdtext );
return 1;
}

cette methode est la plus rapide connut en pawn a ce jour sa ne sert a rien le strtok dans ce genre de commande il y a meme un tuto de Yless sur le forum SAMP qui explique pourquoi dans ce genre de commande sa ne sert a rien d'utiliser le strtok ou le sscanf
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 02 Décembre 2010, 07:15:27
Sinon quand je regarde la commande /organisateur il y en à 13 (+ le / qui compte).
128 qui doit limitée le nombre de caractère et le 14 je ne sais pas à quoi il sert.
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Xartrick le 02 Décembre 2010, 07:44:22
C'est simple, la commande /organisateur fait 13 caractères donc si on ne trouve que 13 caractères, cela voudra dire que aucun argument n'aura était donné, et là, tu peux afficher la syntaxe par exemple.
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 02 Décembre 2010, 07:57:26
je ne sais pas se que veut dire le 14
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Ssk le 02 Décembre 2010, 07:58:17
Le 14 c'est la commande + un espace donc on prend le texte qui suit l'espace ^^
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 02 Décembre 2010, 08:25:09
Donc je n'ai pas besoins de le changé ?
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Ssk le 02 Décembre 2010, 17:35:31
bah si, relis un peu ce que je dis ^^
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: ShaDowxx™ le 02 Décembre 2010, 18:46:37
J'ai changer le 14 par 5 c'est bon on peut : ->  :lock <-
Titre: Re : Commande " * Organisateur : " (Pour que sa parle en Organisateur)
Posté par: Ssk le 02 Décembre 2010, 19:37:19
Je suis content pour toi :)


Je laisse le topic ouvert on ne sait jamais si quelqu'un veut intervenir ^^