• 09 Juillet 2025, 12:09:09


Auteur Sujet: Getplayername  (Lu 2358 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Street

  • The retour
  • *
  • Bandit
  • M Power <3
  • Messages: 273
    • Voir le profil
Getplayername
« le: 18 Septembre 2009, 12:31:07 »
Lu a tous,
Je fait un petit fs en smoment
est jaimerai savoir comment faire pour
Faire un getplayername Qui prend qune parti du pseudo
du style je mé [PDK] mais que sa Get Le PDK o debu pour que sa préne qune parti du pseudo
Merci davance
Cordialement
Serveur en cour de création Crée Votre Monde
~~3n1 Stunt drift kill mode game En Cour~~
___________________________________________________________________
          
           [S k D ]P r o S T R E E T

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Getplayername
« Réponse #1 le: 18 Septembre 2009, 15:49:08 »
Salut,

si tu désire vérifier si un texte contient une expression et/ou en trouver la position, utiliser strfind

new idx = strfind(name, "[PDK]", /*true ou false dépendant de ce que tu veut...*/);
si idx vaut -1, c'est que le texte ne contient pas l'expression,
si idx vaut autre chose que -1, la valeur correspond à la position de l'expression dans le texte

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Getplayername
« Réponse #2 le: 18 Septembre 2009, 16:28:50 »
Je crois qu'en fait, ce qu'il veut c'est extraire un morceau du nom.

Exemple :
[PDK]Jimmy   -> Il veut extraire [PDK]
[VTT]Jack      -> Il veut extraire [VTT]

Pour faire ça, il n'existe pas de fonction, il faut que tu la fasse toi-même.
La méthode est simple, tu recherches le caractère [ et tu stockes dans une chaîne intermédiaire tous les caractères que tu trouves jusqu'à ce que tu tombes sur le caractère ].

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Getplayername
« Réponse #3 le: 18 Septembre 2009, 16:37:50 »
Salut,

ouais, désolé moi et ma mauvaise lecture...
pour enlever l'expression, croyez-vous que strdel ferait la job correctement (j'ignore son fonctionnement, je ne l'ai jamais utilisé)?

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Getplayername
« Réponse #4 le: 21 Septembre 2009, 11:13:39 »
Pas grave pour la mauvaise lecture, ça m'arrive aussi.

Sinon, strdel supprime un partie de la chaîne.
Ici on veut en extraire une partie.

++
Syg
Courtesy of GtaManiac

Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Getplayername
« Réponse #5 le: 21 Septembre 2009, 11:27:29 »
Voila une fonction que j'ai faite en vitesse qui recupere le tag en debut de pseudo
Code: (pawn) [Sélectionner]
GetPlayerTag(playerid)
{
new
playername[MAX_PLAYER_NAME],
postag[2];
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
postag[0] = strfind(playername,"["); // On cherche le caractere [ qui ouvre un tag
if(postag[0] == -1 || postag[0] != 0) //Si on n'a pas trouver le caractere ou si il n'est pas au debut du pseudo
   return playername;//On renvoi le nom

postag[1] = strfind(playername,"]",false,1);//On cherche ensuite le caractere ] qui ferme un tag
if(postag[1] == -1)//Si on ne le trouve pas
return playername;//On renvoi le nom

strdel(playername,postag[1]+1,strlen(playername));//On suprime se qui suit le tag
return playername; //On renvoi le tag
}

Hors ligne Street

  • The retour
  • *
  • Bandit
  • M Power <3
  • Messages: 273
    • Voir le profil
Re : Getplayername
« Réponse #6 le: 26 Septembre 2009, 17:50:54 »
Merci bien dessoler jetait absent
Mais il y a une faille la ^^ même si
je ne les pas tester jan suis sur juste en examinant ^^
si une personne a son pseudo entre parentés c considère
ou une personne qui a un tag Qui commence pas [ et se fini par ]
Mais Moi je voudrais que sa prend juste le [PDK] Pas  [ ] Se qui est une faille ^^
Serveur en cour de création Crée Votre Monde
~~3n1 Stunt drift kill mode game En Cour~~
___________________________________________________________________
          
           [S k D ]P r o S T R E E T

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Getplayername
« Réponse #7 le: 26 Septembre 2009, 18:01:31 »
sa ne prend pas les "[""]"
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Getplayername
« Réponse #8 le: 27 Septembre 2009, 11:23:20 »
Cette fonction recupere le tag sans les [] apres ta juste a faire un test du genre:
Code: (pawn) [Sélectionner]
new tag[10];
tag = GetPlayerTag(playerid);
if(strcmp(tag,"[PDK]",true) == 0)// Si le tag du joueur est PDK
{
 //ton code...
}
else //Si il na pas le tag PDK
{
//ton code ...
}

Hors ligne Street

  • The retour
  • *
  • Bandit
  • M Power <3
  • Messages: 273
    • Voir le profil
Re : Getplayername
« Réponse #9 le: 27 Septembre 2009, 14:33:27 »
Yeah :D merci bien!
Serveur en cour de création Crée Votre Monde
~~3n1 Stunt drift kill mode game En Cour~~
___________________________________________________________________
          
           [S k D ]P r o S T R E E T

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Getplayername
« Réponse #10 le: 27 Septembre 2009, 16:42:47 »
GG fredo pour le code ;)



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne BuBuNo

  • Radio Guingamp - Bien plus qu'une radio !
  • *
  • Grand Banditisme
  • La radio bien plus qu'une passion !
  • Messages: 840
    • Voir le profil
    • Radio Guingamp - Bien plus qu'une radio !
Re : Getplayername
« Réponse #11 le: 27 Septembre 2009, 17:02:51 »
Heu la j'ai pas tros compris comment sa marchait  :-\ ou c'est qui faut mettre :
GetPlayerTag(playerid)
{
new
playername[MAX_PLAYER_NAME],
postag[2];
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
postag[0] = strfind(playername,"["); // On cherche le caractere [ qui ouvre un tag
if(postag[0] == -1 || postag[0] != 0) //Si on n'a pas trouver le caractere ou si il n'est pas au debut du pseudo
    return playername;//On renvoi le nom

postag[1] = strfind(playername,"]",false,1);//On cherche ensuite le caractere ] qui ferme un tag
if(postag[1] == -1)//Si on ne le trouve pas
return playername;//On renvoi le nom

strdel(playername,postag[1]+1,strlen(playername));//On suprime se qui suit le tag
return playername; //On renvoi le tag
}
ıllıllı вυвυησ ıllıllı


Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Getplayername
« Réponse #12 le: 27 Septembre 2009, 17:06:36 »
En bas de ton GM c'est une fonction ...

PS: j'ai corrigé mon code juste un peux plu haut pour te montrer comment on l'utilise car j'avait oublier les [] dans la condition

Hors ligne BuBuNo

  • Radio Guingamp - Bien plus qu'une radio !
  • *
  • Grand Banditisme
  • La radio bien plus qu'une passion !
  • Messages: 840
    • Voir le profil
    • Radio Guingamp - Bien plus qu'une radio !
Re : Getplayername
« Réponse #13 le: 27 Septembre 2009, 18:09:53 »
Bas je vien de l'essayer et sa ne marche pas.
Quand mon pseudo est [XST]Master_Bru je fait /team il me marque vous ete bien dans la team XST
et quand mon pseudo est Master_Bru je fait /team il me marque la meme chose
ıllıllı вυвυησ ıllıllı


Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : Getplayername
« Réponse #14 le: 27 Septembre 2009, 18:38:54 »
Salut,

je ne faisais que regarder en passant, mes le code GetPlayerTag contient une ndition légèrement inutile:
Code: (pawn) [Sélectionner]
if(postag[0] == -1 || postag[0] != 0) //Si on n'a pas trouver le caractere ou si il n'est pas au debut du pseudo

si la position est -1 ou si la position est différente de 0.....
si la position est -1, elle est nécessairement différente de 0, donc on peut modifier à:

Code: (pawn) [Sélectionner]
if(postag[0] != 0) //Si on n'a pas trouver le caractere ou si il n'est pas au debut du pseudo

et puis personnellement j'ajouterais ne longueur de tag maximale (possiblement passé en paramètre dans la fonction)
peut-être également enlever les "[]"

sinon l'implantation que j'en ferais:

Code: (pawn) [Sélectionner]
GetPlayerTag(playerid, caractereouverture = '[', caracterefermeture = ']', len = 5)//taille maximale à 5 par defaut
{
new
playername[MAX_PLAYER_NAME],
i = 1;
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
if(playername[0] == CaractereOuverture)
{
while(playername[i] && playername[i] != caracterefermeture)
{
playername[i-1] = playername[i];
i++;
if(i > len)
{
i = 0;
break;
}
}
}
playername[i] = '\0';
return playername; //On renvoi le tag (sans les séparateurs)
}

le code est peut-être imparfait mais bon....
contient peut-être des erreurs, scripté sur le forum

++Sim++