• 07 Juillet 2025, 23:25:27


Auteur Sujet: Ajouter un tag à un joueur  (Lu 1441 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Slaker

  • débutant confirmé
  • *
  • Tueur
  • tolère le sérieux uniquement quand il faut l'être
  • Messages: 53
    • Voir le profil
    • Brother in arms
Ajouter un tag à un joueur
« 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 !

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Ajouter un tag à un joueur
« Réponse #1 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é. :)

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Ajouter un tag à un joueur
« Réponse #2 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++





Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Ajouter un tag à un joueur
« Réponse #3 le: 20 Avril 2013, 19:52:40 »
Exactement, je suis désolé, ça m'a échappé. ^^

Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : Ajouter un tag à un joueur
« Réponse #4 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 ^^

[/url]

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Ajouter un tag à un joueur
« Réponse #5 le: 21 Avril 2013, 02:00:28 »
Je ne connaissais pas la fonction strins. Tu m'as appris quelque-chose. :)

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Ajouter un tag à un joueur
« Réponse #6 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++