GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 30 Novembre 2010, 21:22:41
-
Bonjour à toutes et à tous,
je viens vous voir car j'ai un soucis,
j'ai une sous commande
if(strcmp(commande,"inviter",true) == 0)
{
if(JoueurInfos[playerid][jRang]<6) { Message(playerid,4000,"~r~Vous n'avez pas acces a cette commande."); return 1; }
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,grisbleu,"[Usage] (/f)action inviter [Id/PartieduNom]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid) || JoueurInfos[giveplayerid][jSpawn] != 1) { Message(playerid,4000,"~r~Ce joueur n'est pas connecte ou n'a pas encore spawn."); return 1; }
if(!GetDistanceBetweenPlayers(playerid,giveplayerid,5.0)) { Message(playerid,4000,"~r~Ce joueur n'est pas pres de vous."); return 1; }
if(JoueurInfos[giveplayerid][jJob] != 0) { Message(playerid,4000,"~r~Ce joueur a un job il ne peu pas etre dans une faction."); return 1; }
if(JoueurInfos[giveplayerid][jFaction] != 0) { Message(playerid,4000,"~r~Ce joueur est deja dans une faction."); return 1; }
new faction = JoueurInfos[playerid][jFaction];
new nom2[MAX_PLAYER_NAME];
GetPlayerName(giveplayerid,nom2,sizeof(nom2));
JoueurInfos[giveplayerid][jFaction] = faction;
JoueurInfos[giveplayerid][jRang] = 1;
MettreSkinFaction(giveplayerid,faction,1);
SauvegardeCompte(giveplayerid);
format(string,sizeof(string),"[Faction] Le chef %s à invité %s dans le gang.",nom,nom2);
SendFactionMessage(faction,radio,string);
return 1;
}
et au début de la commande
GetPlayerName(playerid,nom,sizeof(nom));
le soucis s'est que ig je reçois
[Faction] Le chef nom2 à invité nom2 dans le gang."
Merci d'avance
-
La var "giveplayerid" a ete cree dans le OnPlayerCommadText() ?
new giveplayerid
-
La var "giveplayerid" a ete cree dans le OnPlayerCommadText() ?
new giveplayerid
Il aurait eu une erreur lors de la compilation si il l'avait oublié or ce n'est pas le cas...
-
Salut,
ajoute des printf pour localiser ton problème, mais je te conseille de tester en plaçant ton GetPlayerName(playerid, nom, ...); juste après l'autre GetPlayerName pour voir.
++Sim++
-
J'ai donc essayé ceci
new faction = JoueurInfos[playerid][jFaction];
format(string,sizeof(string),"%s",nom);
SendClientMessage(playerid,jauneclair,string);
new nom2[MAX_PLAYER_NAME];
GetPlayerName(giveplayerid,nom2,sizeof(nom2));
format(string,sizeof(string),"%s",nom);
SendClientMessage(playerid,jauneclair,string);
JoueurInfos[giveplayerid][jFaction] = faction;
JoueurInfos[giveplayerid][jRang] = 1;
MettreSkinFaction(giveplayerid,faction,1);
SauvegardeCompte(giveplayerid);
format(string,sizeof(string),"[Faction] Le chef %s à invité %s dans le gang.",nom,nom2);
SendFactionMessage(faction,radio,string);
Et j'obtient
[11:31:36] Cesar_Mendez [11:31:36]
Cesar_Mendez [11:31:36]
[Faction] Le chef Kelya_Kendall à invité Kelya_Kendall dans le gang.
Je comprend pas le soucis :s
-
Tu fais un GetPlayerName sur le joueur qui tape la commande ? parce que je ne le vois pas ^^
-
Oui au debut de la commande,
if(strcmp(cmd,"/f",true)==0||strcmp(cmd,"/faction",true)==0)
{
GetPlayerName(playerid,nom,sizeof(nom));
new commande[128];
commande = strtok(cmdtext, idx);
-
essai de refaire le GetPlayerName après celui que tu fais sur nom2
-
Je l'ai fait, alors ça donne
une ligne vite
[Faction] Le chef Kelya_Kendall à invité Kelya_Kendall dans le gang.
-
pourquoi ne pas faire comme ceci
Pseudo(playerid)
{
new nom[MAX_PLAYERS_NAME];
GetPlayerName(playerid,nom,sizeof(nom));
return nom;
}
et dans ta commande au niveau de ton format
format(string,sizeof(string),"[Faction] Le chef %s à invité %s dans le gang.",Pseudo(playerid),Pseudo(giveplayerid));
SendFactionMessage(faction,radio,string);
-
ça ne sera pas plus lent puisqu'il renvoi a un public?
-
pas a un publique mais a une fonction et non ce ne seras pas plus lent par contre ton script seras bien plus propre
-
Plus propre? ...
-
Salut,
ce que cristab veut dire par plus propre, c'est que ce sera sur que tu utilise bien giveplayerid et playerid, et c'est plus court en code.
Si t'as le même problème, le problème vient de tes variables d'ID de joueurs, t'aura qu'à chercher un petit peu.
++Sim++
-
Oui mais bon, ici s'est pas un soucis d'id, donc la méthode de cristab reviendra au même puisque j'ai fait diffèrent sendclient pour voir justement si ça venait de l'id
-
Tente toujours a mon avis sa fonctionneras comme je les demontrer
-
Résolut,
mon erreur faire un
new nom[max_player_name];
en début de script, et toujours formater le nom de playerid dans cette variable.
Solution,
mettre
new nom[max_player_name];
uniquement dans les callback ou il est nécéssaire
merci pour votre aide