GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: NatiVe™ le 21 Octobre 2007, 20:50:48

Titre: Commande Admin !
Posté par: NatiVe™ le 21 Octobre 2007, 20:50:48
Salut !

Je viens vers vous car j'ai un petit probleme avec une commande Admin Rcon que je n'arrive pas a faire fonctionner !

if(strcmp(cmdtext, "/ann", true) == 0) {

if(!IsPlayerAdmin(playerid))  return SendClientMessage(playerid, 0xDEEE20FF, "Vous n'êtes pas admin.");

new announce[256];

format(announce, sizeof(announce), "%s",cmdtext[4]) ;

GameTextForAll(announce,4000,5);

return 1 ;

}

Je ne trouve pas ou est l'erreur ou le probleme !

J'ai retourner le code dans tout les sens mais non je ne vois pas ! :(

Pourrais-je avoir de l'aide ?

Merci beaucoup !

AK NV.
Titre: Re : Commande Admin !
Posté par: Syg le 21 Octobre 2007, 22:23:19
Ton erreur vient du fait que tu utilises cmdtext en entier pour faire le strcmp.
Or cmdtext n'est jamais égal à "/ann" puisque normallement tu vas completer le "/ann" par le message que tu veux afficher.
Du genre : "/ann JE SUIS ADMIN".

Donc la solution réside dans le fait de ne tester que les 4 premiers caractères de la chaîne cmdtext.
Ceci est très simple :
if(strcmp(cmdtext, "/ann", true, 4) == 0)
Voilà qui resoudra ton problème.

Maintenant, ce n'est pas la peine d'afficher le 5ème caractère de la chaîne (cmdtext[4]) puisque c'est forcément un espace.
Donc n'affiche qu'à partir du 6ème (cmdtext[5]) :
format (announce, sizeof (announce), "%s", cmdtext[5]);
Mais ceci n'est pas très grave.

Par contre, beaucoup plus grave, il faut absolument tester le fait que la chaîne que tu vas afficher ne soit pas vide sinon ton serveur va se planter.
Ce sera le cas si un admin entre "/ann" sans rien derrière ou même "/ann " (avec un espace à la fin).
Le test est simple :
if (strlen (cmdtext[5]) != 0)
{
   format ..
   GameTextForAll ...
}


++
Syg

Titre: Re : Commande Admin !
Posté par: UrbanGhetto le 21 Octobre 2007, 22:32:37
Bah oui, J'allais le dire ! :P. Ça explique pourquoi ça marchais chez moi et pas chez toi AK  :)
Titre: Re : Commande Admin !
Posté par: NatiVe™ le 21 Octobre 2007, 22:34:48
Je n'arrive pas a placer le

if (strlen (cmdtext[5]) != 0)
{
   format ..
   GameTextForAll ...
}


:(

AK NV.
Titre: Re : Commande Admin !
Posté par: Syg le 21 Octobre 2007, 22:43:25
Bon alors je te le donne en entier, je sais que ça ne te fera pas plaisir mais bon  :) :
Code: (cpp) [Sélectionner]
if(strcmp(cmdtext, "/ann", true, 4) == 0) {

if(!IsPlayerAdmin(playerid))  return SendClientMessage(playerid, 0xDEEE20FF, "Vous n'êtes pas admin.");

new announce[256];

if (strlen (cmdtext[5]) != 0)
{
format(announce, sizeof(announce), "%s",cmdtext[5]) ;

GameTextForAll(announce,4000,5);
}

return 1 ;

}
++
Syg
Titre: Re : Commande Admin !
Posté par: NatiVe™ le 22 Octobre 2007, 18:39:45
Merci encore une fois SYG tu me sauve la "Vie" ;)

AK NV.
Titre: Re : Commande Admin !
Posté par: UrbanGhetto le 22 Octobre 2007, 19:06:06
Ouais ca m'est déjà arriver d'être autour de 24 Karatéka que j'ai pas payer, Jusqu'a ce que je voille Syg arriver avec un GivePlayerWeapon(playerid,36); à la main  :)

Mais bon je commence à être en HS lol
Titre: Re : Re : Commande Admin !
Posté par: Syg le 22 Octobre 2007, 22:14:06
Ouais ca m'est déjà arriver d'être autour de 24 Karatéka que j'ai pas payer, Jusqu'a ce que je voille Syg arriver avec un GivePlayerWeapon(playerid,36); à la main 

 :lmfao :lmfao Je la trouve super drôle celle là, mais si tu me voyais, tu ferais pas le fier au milieu de tes karatékas  :P !!!

++
Syg
Titre: Re : Commande Admin !
Posté par: UrbanGhetto le 22 Octobre 2007, 23:53:25
Je vois ca... xD