GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 24 Février 2010, 17:18:45
-
Bonjour, j'ai créer un texdraw amovible en fonction de l'essence que j'ai, mais j'ai un soucis
dans la callback de mon timer j'ai créé ceci
if(JaugeCreated[i] == true)
{
TextDrawDestroy(EssenceJaugeQuibouge[i]);
}
EssenceJaugeQuibouge[i] = TextDrawCreate(245.000000,402.000000,"_");
TextDrawUseBox(EssenceJaugeQuibouge[i],1);
TextDrawBoxColor(EssenceJaugeQuibouge[i],0xffffffff);
TextDrawTextSize(EssenceJaugeQuibouge[i], floatadd(241.0, floatdiv(Gas[vehicle], 1.000000)),0.000000);
//TextDrawTextSize(EssenceJaugeQuibouge,383.000000,0.000000);
TextDrawAlignment(EssenceJaugeQuibouge[i],0);
TextDrawBackgroundColor(EssenceJaugeQuibouge[i],0x000000ff);
TextDrawFont(EssenceJaugeQuibouge[i],3);
TextDrawLetterSize(EssenceJaugeQuibouge[i],1.000000,1.800000);
TextDrawColor(EssenceJaugeQuibouge[i],0xffffffff);
TextDrawSetOutline(EssenceJaugeQuibouge[i],1);
TextDrawSetProportional(EssenceJaugeQuibouge[i],1);
TextDrawSetShadow(EssenceJaugeQuibouge[i],1);
JaugeCreated[i] = true;
Le probleme s'est que rien n'apparait, je pense que ça vien de la ligne
TextDrawTextSize(EssenceJaugeQuibouge[i], floatadd(241.0, floatdiv(Gas[vehicle], 1.000000)),0.000000);
Je ne sais pas par quelle valeur diviser mon essence pour que se soit correct. Merci de votre aide
-
Sa,
simplement une petit de math: X/1 = X
sinon moi j'utiliserais simplement la multiplication: X * 2
ps. 2 est une valeur hypothétique
++Sim++
-
Mais je ne sais pas a quoi la valeur dos correspondre, la différence entre les x de chaque extrémité ou autre.
Merci
-
Ce qu'il faudrait savoir c'est la valeur maximum de la variable Gas[vehicle].
Après, il suffit de convertir la valeur de la jauge en pourcentage de la valeur maximum.
Ensuite, le plus simple, c'est d'ajouter par exemple un underscore (_) pour chaque tranche 10% (ou pour chaque tranche de 5%).
Exemple :
Si la valeur max est 255, le pourcentage se calcule comme suit :
new Float:P;
P = 100.0*Gas[vehicle]/255.0;
Le nombre de underscores (_) dans la chaîne est donné par : P/10 (P/5 si on veut des tranches de 5%)
On crée alors une chaîne avec le nombre de underscores voulu :
new TexteJauge[128];
for (i=0 ; i<P/10 ; i++)
{
TexteJauge[i] = '_';
}
TexteJauge[i] = 0; // Fin de chaîne
Ceci permet d'éviter le destruction/création systématique du TextDraw.
Il suffit de de faire :
TextDrawSetString (EssenceJaugeQuibouge[i], TexteJauge);
NB : Le TextDraw EssenceJaugeQuibouge doit être crée pour chaque joueur, par exemple au moment de la connexion ou du spawn et ne sera jamais détruit jusqu'à la déconnexion du joueur.
Si on veut cacher le TextDraw, on utilisera la fonction TextDrawHideForPlayer puis TextDrawShowForPlayer pour l'afficher de nouveau
++
Syg