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

Titre: Flood en /nomoff
Posté 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.
Titre: Re : Flood en /nomoff
Posté par: vincentdu90 le 29 Mai 2012, 23:05:57
D'après le Wiki (http://wiki.sa-mp.com/wiki/ShowPlayerNameTagForPlayer) les paramètres de la commande sont :

Citer
(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  :)
Titre: Re : Flood en /nomoff
Posté par: Ssk le 29 Mai 2012, 23:11:02
C'est surtout parceque tu as mis ton SendClientMessage dans une boucle lol
Titre: Re : Flood en /nomoff
Posté par: vincentdu90 le 29 Mai 2012, 23:12:38
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.
Titre: Re : Flood en /nomoff
Posté par: Ssk le 29 Mai 2012, 23:28:03
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 ^^
Titre: Re : Flood en /nomoff
Posté par: vincentdu90 le 30 Mai 2012, 09:46:11
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 ".
Titre: Re : Flood en /nomoff
Posté par: jeje29140 le 30 Mai 2012, 13:53:30
C'est bon ça fonctionne, merci beaucoup à vous deux!!!!