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

Titre: Floatdiv
Posté 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
Titre: Re : Floatdiv
Posté par: S!m le 25 Février 2010, 02:21:19
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++
Titre: Re : Floatdiv
Posté par: scott1 le 25 Février 2010, 13:31:56
Mais je ne sais pas a quoi la valeur dos correspondre, la différence entre les x de chaque extrémité ou autre.

Merci
Titre: Re : Floatdiv
Posté par: Syg le 01 Mars 2010, 14:59:42
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