GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: LePtitClown le 06 Avril 2012, 21:37:06
-
Slt
Comme le titre du sujet l'indique, je n'arrive pas à afficher un textdraw contenant une variable à un joueur en particulier. En effet, tous les joueurs ont une valeur différente pour cette variable.
Voici mon code:
new Text:EtoilesTD[MAX_PLAYERS];//tout en haut évidemment
public OnPlayerConnect(playerid)
{
//TDDDDDDDDDDDDDDDDDD
EtoilesTD[playerid] = TextDrawCreate(498.000000, 98.000000, "etoiles");
TextDrawBackgroundColor(EtoilesTD[playerid], 255);
TextDrawFont(EtoilesTD[playerid], 3);
TextDrawLetterSize(EtoilesTD[playerid], 0.439999, 1.899999);
TextDrawColor(EtoilesTD[playerid], -10092289);
TextDrawSetOutline(EtoilesTD[playerid], 0);
TextDrawSetProportional(EtoilesTD[playerid], 1);
TextDrawSetShadow(EtoilesTD[playerid], 1);
TextDrawShowForPlayer(playerid, EtoilesTD[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(playerid, EtoilesTD[playerid]);
return 1;
}
stock majetoiles(playerid)//Ce script est appelé à chaque modification de la variable etoiles[playerid]
{
format(string3, sizeof string3, "%d etoiles", etoiles[playerid]);
TextDrawSetString(EtoilesTD[playerid], string3);
}
Lors des tests avec deux personnes, l'un des 2 joueurs voyaient apparaitre la valeur de la variable de l'autre tout le long. Une seul valeur était donc affichée pour les 2 joueurs.
Si vous avez des réponses à mes questions, ça me dépannerait bien. :P
Merci d'avance
-
Detruit le texte a sa sortie du jeu et tout en haut met :
#undef MAX_PLAYERS
#define MAX_PLAYERS 55Le 55 étant le nombres de joueur que tu as au maximum sur ton serveur +1 donc si tu a 50 slot tu met 51-52 pour faire des économies de mémoire...
Ensuite tu le montre au joueur comme tu a déjà fais je pense que ensuite tu applique un : TextDrawSetString(EtoilesTD[playerid], "~y~]");Et non recréer le texte ?
-
Hélas non, ce SetString a l'air de mettre à jour tous les Textdraw et non un seul. J'ai réussi à trouver une impasse mais elle bouffe sûrement énormément de mémoire vu que je recrée le Textdraw du joueur à chaque modification de la valeur.
A+ :)
-
Bizarre j'avais eu le même problème et je l'avais rectifié comme ça sinon essaye ça :
stock majetoiles(playerid, nombre)
{
etoiles[playerid]=nombre;
format(string3, sizeof string3, "%d etoiles", etoiles[playerid]);
TextDrawSetString(EtoilesTD[playerid], string3);
}
Et a la connexion met un settimerex pour la création des TextDraw ce fasse 1 seconde après la connexion joueur j'ai pu remarqué que quelques fois SA:MP zapper des bous de code...
Sinon recréer le texte a chaque fois bouffe énormément de mémoire comme tu le dis...