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
-
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 !
-
C'est simple. Je te donne le code, commenté, car ça va être compliqué de t'expliquer ça...
// 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é. :)
-
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++
-
Exactement, je suis désolé, ça m'a échappé. ^^
-
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 ^^
-
Je ne connaissais pas la fonction strins. Tu m'as appris quelque-chose. :)
-
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++