GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Slaker le 20 Avril 2013, 17:15:48

Titre: Ajouter un tag à un joueur
Posté par: Slaker le 20 Avril 2013, 17:15:48
Bonjour/Bonsoir,

Je rencontre un petit problème puisque je ne trouve pas le moyen d'attribuer un tag à un joueur.

Je m'expliquer, j'aimerai ajouter un "[R]" au début du pseudo du joueur (afin d'indiquer que celui-ci est recherché par la police). Bon j'ai fait plusieurs tentatives, mais j'imagine que j'ai du faire tout et n'importe quoi avec les SetPlayerName et compagnie.

D'ailleurs je précise que dans le cas de mon petit gamemode ce n'est pas possible d'indiquer que le joueur est recherché en changeant sa couleur.

Ah et aussi, le joueur doit retrouver son pseudo original à chaque fois qu'il meurt !

Donc voilà, béni soit celui qui aura la bonté de m'expliquer un peu tout ça !
Titre: Re : Ajouter un tag à un joueur
Posté par: Gzsume le 20 Avril 2013, 18:05:49
C'est simple. Je te donne le code, commenté, car ça va être compliqué de t'expliquer ça...

Code: (pawn) [Sélectionner]
// On a besoin d'un tableau qui pour chaque joueur va sauvegarder son pseudonyme initial
new playersNickname[MAX_PLAYERS][MAX_PLAYER_NAME];

// Ensuite, on ajoute le tag, par commande ou timer, ou autre... à toi de voir
new pNickname[MAX_PLAYER_NAME + 3]; // + 3 en taille pour que le tag ne soit pas tronqué
new nicknameTag[4] = "[R]"; // Tu peux modifier ça
GetPlayerName(playerid, pNickname, sizeof(pNickname)); // Je récupère le pseudo
format(playersNickname, sizeof(playersNickname), "%s", pNickname); // J'enregistre dans le tableau
format(pNickname, sizeof(pNickname), "%s%s", nicknameTag, pNickname); // J'ajoute le tag au pseudo
SetPlayerName(playerid, pNickname); // J'applique le pseudo à playerid

// Maintenant, pour rétablir le pseudonyme initial...
SetPlayerName(playerid, playersNickname[playerid]);

En espérant t'avoir aidé. :)
Titre: Re : Ajouter un tag à un joueur
Posté par: S!m le 20 Avril 2013, 19:30:35
Salut,

excuse moi Gzsume, mais il faut faire attention avec le tableau, tu ne donne pas l'index pour enregistrer le nom:

format(playersNickname[playerid], MAX_PLAYER_NAME, "%s", pNickname); // J'enregistre dans le tableau

Je ne suis plus sûr si c'est ainsi que l'on fait, mais le principe est là.

Merci et bonne chance

++Sim++
Titre: Re : Ajouter un tag à un joueur
Posté par: Gzsume le 20 Avril 2013, 19:52:40
Exactement, je suis désolé, ça m'a échappé. ^^
Titre: Re : Ajouter un tag à un joueur
Posté par: Kiloutre le 21 Avril 2013, 01:09:15
J'ai beaucoup plus simple que ce qu'a fait Gzsume :happy:

new pNickname[MAX_PLAYERS][MAX_PLAYER_NAME + 3];
GetPlayerName(playerid, pNickname[MAX_PLAYERS], sizeof(pNickname[MAX_PLAYERS]))
strins("[R]", pNickname[MAX_PLAYERS], 0); //On insère le texte [R]  à partir du caractère zéro, donc tout au début
SetPlayerName(playerid, pNickName[playerid]);

Pas besoin de faire de format, strins est beaucoup plus adéquat pour insérer du texte ^^
Titre: Re : Ajouter un tag à un joueur
Posté par: Gzsume le 21 Avril 2013, 02:00:28
Je ne connaissais pas la fonction strins. Tu m'as appris quelque-chose. :)
Titre: Re : Ajouter un tag à un joueur
Posté par: S!m le 21 Avril 2013, 06:16:57
Salut,

attention, tu inverse les deux premiers paramètres de la fonction.
De plus, le tableau de noms ne sert à rien puisque tu y enregistre le nom modifié. Tu dois faire un GetPlayerName de plus ou copier le nom dans une variable locale:

new pNickname[MAX_PLAYERS][MAX_PLAYER_NAME ]; // au début du code

new pName[MAX_PLAYER_NAME];// en fait le +3 est inutile puisque le nom sera tronqué par SA-MP
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
format(pNickname[playerid], MAX_PLAYER_NAME, "%s", pName);//ça fera, mais il faudrait un strcpy ... ou une fonction du genre
strins("[R]", pName, 0); //On insère le texte [R]  à partir du caractère zéro, donc tout au début
SetPlayerName(playerid, pName);

Voilà

++Sim++