GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: jeje29140 le 29 Mai 2012, 21:06:46
-
Bonjour à tous,
J'ai fait un /nomoff pour cacher les nom au dessus de nos têtes, en reprenant des bouts de codes par ci par là, mais lorsque je tape la commande, ça me flood la phrase "Votre nom est maintenant caché."
if(strcmp(cmd, "/nomoff", true) == 0) // by LordMan
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pMaskuse] == 0)
for(new i = 0; i < MAX_PLAYERS; i++)
{
ShowPlayerNameTagForPlayer(i, playerid, 0);
SendClientMessage(playerid, COLOR_GRAD1, " Votre nom est maintenant caché.");
PlayerInfo[playerid][pMaskuse] = 1;
}
else if(PlayerInfo[playerid][pMaskuse] == 1)
for(new i = 0; i < MAX_PLAYERS; i++)
{
ShowPlayerNameTagForPlayer(i, playerid, 1);
SendClientMessage(playerid, COLOR_GRAD1, " Votre nom est maintenant visible");
PlayerInfo[playerid][pMaskuse] = 0;
}
}
return 1;
}
Pour certain l'erreur sera flagrante, mais moi je vois pas du tout.
merci.
-
D'après le Wiki (http://wiki.sa-mp.com/wiki/ShowPlayerNameTagForPlayer) les paramètres de la commande sont :
(playerid, showplayerid, show)
playerid Player who will see the results of this function // Joueur qui verra les résultats de la fonction. Dans ton cas tous les joueurs.
showplayerid Player whose name tag will be shown or hidden // Le joueur pour qui le "Name Tag" sera caché . Dans ton cas tous les joueurs.
show 1-show name tag, 0-hide name tag
Donc normalement dans ta commande vu que tu veux que chaque joueur soit incapable de voir le Pseudo des autres joueurs et si tu veux que cette commande s'applique à tout les joueurs présents il faudrait remplacer les deux paramètres de cette fonction par " i " .
ShowPlayerNameTagForPlayer(i, i, 0); // remplacé le dernier paramètre par 1 dans l'autre boucle
En effet car la boucle suivante va donner ,à chaque "tour" qu'elle va faire, à "i" toutes les valeurs comprises entre 0 et MAX_PLAYERS (le nombre maximum de joueur possible sur le serveur) et donc la fonction s'appliquera à tous les joueurs.
for(new i = 0; i < MAX_PLAYERS; i++)
{
}
J'espère avoir été assez clair et de ne pas me tromper :)
-
C'est surtout parceque tu as mis ton SendClientMessage dans une boucle lol
-
Oui mais je pense qu'à l'avenir il souhaite l'utiliser à plus grande échelle que sur lui-même , donc une boucle est nécessaire.
-
Dans tous les cas sont problèmes est dû au faite que son SendClientMessage qui d'ailleurs envoi un message au joueur qui a tapé la commande est dans une boucle ^^
-
Oui j'ai omis ça dans ma réponse, j'ai dérivé du problème initial, mais il suffit de remplacer " playerid " par " i " dans " SendClientMessage ".
-
C'est bon ça fonctionne, merci beaucoup à vous deux!!!!