GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: triton le 22 Janvier 2008, 13:39:33
-
Bonjour, j'aimerais savoir s'il est possible de personnaliser les SendClientMessageToAll selon une variable.C'est à dire que tous les joueurs ayant la variable == 0 recevraient par exemple salut et ceux ayant la variable == 1 recevraient hello.Jusqu'à aujourd'hui je n'utilisais que des SendClientMessage, donc c'était facile en fesant
if (variable [playerid]== 0){
SendClientMessage(playerid,COLOR_BLUE, "salut");}
if (variable [playerid]== 1){
SendClientMessage(playerid,COLOR_BLUE, "hello");}
mais avec les SendClientMessageToAll je ne sais plus.Merci
-
Je ne comprend pas trés bien le problème que tu as ! ( si s'en est un )
Possible que tu réexlique ?
NV.
-
Je voudrais tout simplement qu'en envoyant un SendClientMessageToAll les joueurs ayant la variable == 0 recoivent bonjour et ceux ayant la variable ==1 hello
-
Mais comment tu veut definir qu'un joueur est 1 ou 0 ??
Haa oui j'ai compris !
if (Variable[playerid] == 1)
{
SendClientMessage(playerid, COLOR, "** Bonjour **");
return 1;
}
if (Variable[playerid] == 0)
{
SendClientMessage(playerid, COLOR, "** hello **");
return 1;
}
Comme ca !
NV.
-
Ce sont eux au départ qui choisissent leur langue.S'il tapent /english la variable prend la valeur 1.C'est pour cela que quand un joueur est recherché un message sera envoyé en disant "native est recherché" avec la variable == 0 ou "native is wanted" avec la variable == 1.
Edit : Oui mais la ce n'est que pour un joueur alors que moi je veux écrire le message pour tout le monde avec un SendClientMessageToAll.
-
A ba sa change pas, tu met SendClientMessageToAll a la place de SendClientMessage ! tout simplement
NV.
-
Mais le message sera envoyé à tout le monde selon la langue tu playerid.Je veux quil soit envoyé à tous les joueur et selon leur langue.
-
Si tu veut faire ca a toute les phrase que diras le player ce n'est pas possible !
Pour un message a la connection je vais esseyer de chercher car je n'est encore jamais fait ca !
NV.
-
c'est très simple, d'abort tu mets
new Variable [MAX_PLAYERS]; en haut de ton script en dessus de main
Après dans OnPlayerConnect tu mets le language par défaut que tu veux avec ta variable, donc sa donne sa
Variable[playerid] = 0; //le 0 c'est pour la langue française par exemple
Ensuite tu fais la commande pour sélectioner le language, voila un exemple :
if(strcmp(cmdtext,"/english", true)==0){
Variable[playerid] = 1; //le 1 c'est pour la langue anglaise
return 1;
}Tu fais pareil pour le français mais en changeant quelques trucs ;)
Pour la fin tu vas utiliser tes variables, par exemple quand je joueur entre dans un véhicule
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (Variable[playerid] == 0)
{
SendClientMessage(playerid, COLOR, "** Bonjour **");
return 1;
}
else if (Variable[playerid] == 1)
{
SendClientMessage(playerid, COLOR, "** hello **");
return 1;
}
return 1;
}Je sais pas si les codes sont faux, je ne les ai pas testés, donc dit moi si il y a des erreurs ;)
++
R@f
-
Merci et comment je fais pour envoyer un SendClientMessageToAll different pour les 2 variables?
Si c'était pour un seul joueur ça ferait ça
if (variable [playerid]== 0){
SendClientMessage(COLOR_GREEN, "bienvenue");}
if (variable [playerid]== 1){
SendClientMessage(COLOR_GREEN, "welcome");}
mais pour plusieurs ...
if (variable [...]== 0){
SendClientMessageToAll(COLOR_GREEN, "toto est recherché");}
if (variable [...]== 1){
SendClientMessageToAll(COLOR_GREEN, "toto is wanted");}
Merci
-
j'ai enfin compris ce que tu voulais :D
Tu veux faire un SendClientMessage pour le joueur ayant la variable correspondante à celle qu'il a choisie
Voila la soution :
SendClientMessageToEnglishPlayers(color, text[]) {
for(new i = 0; i < MAX_PLAYERS; i ++) {
if(IsPlayerConnected(i)) {
if (Variable(i) == 1) { //1 c'est pour l'anglais ;)
SendClientMessage(i, color, text);
}
}
}
}tu fais de même pour pour la variable 0 ;)
++
R@f
-
Merci :)