• 15 Mai 2024, 05:07:32


Auteur Sujet: [RESOLUT]TextDraw Limite  (Lu 2491 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne feldbrau

  • Despo_Rutti,Co-Scripteur de Redwood Valley RP & Ancien Scripteur GTAngel Life RP
  • *
  • Bandit
  • Messages: 410
    • Voir le profil
[RESOLUT]TextDraw Limite
« le: 09 Décembre 2008, 15:47:17 »
Salut a tous,

Suite a une suggestion de certains de mes joueurs, je suis en train de faire un systeme de Barre style Sims. Tous est presque scripté, , tous fonctionne nikel mais je suis obligé de passé via une commande pour afficher le textdraw. Je voudrais savoir si l'on peut mettre plusieur textdraw en meme temps?

J'arrive a mettre un textdraw "Toilette" (par exemple) a coté de la barre, mais lorsque je met un autre texte en dessous de Toilette ("Hygiene"), il n'y a que hygiene qui s'affiche et la barre des toilettes. Meme probleme avec la barre, si je met les deux barres, c'est celle qui s'affiche en dernier qui reste et l'autre "meurt".

Merci d'avance, si vous avez pas compris quelque chose demandez ;)

@++
« Modifié: 14 Décembre 2008, 23:30:13 par feldbrau »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : TextDraw Limite
« Réponse #1 le: 09 Décembre 2008, 16:00:57 »
Salut,

j'ai déjà eu ce problème, utiliserais tu souvent la fonction TextDrawDestroy?? car lorsque je m'en servais elle semblait parfois détruire tout les textdraw, surement lorsqu'elle est mal utilisée... sinon je voit pas dsl :(
++Sim++





Hors ligne feldbrau

  • Despo_Rutti,Co-Scripteur de Redwood Valley RP & Ancien Scripteur GTAngel Life RP
  • *
  • Bandit
  • Messages: 410
    • Voir le profil
Re : TextDraw Limite
« Réponse #2 le: 09 Décembre 2008, 16:25:03 »
Enfait je me suis basé sur le systeme de tAxI ca barre de vie vehicule (dispo dans le XVM) et j'ai adapté ces bases a se que je voulais faire. Le truc c'est que indépendamment les textdraw s'affiche bien. En attendant de voir de nouvelles réponses, je vais essayer de faire se que tu dit ;) (regarder les destroy)

Merci.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : TextDraw Limite
« Réponse #3 le: 10 Décembre 2008, 00:53:01 »
Je confirme, la fonction TextDrawDestroy est bugguée et détruit TOUS les textdraws (ou du moins elle les cache).
NB : Non vérifié en 0.2.X

Je te conseille d'utiliser les fonctions TextDrawShowForPlayer, TextDrawHideForPlayer et TextDrawSetString (sachant que la dernière est suffisante pour un TextDraw affiché en permanence) après avoir créer les TextDraw dans OnGameInit (la destruction devra se faire dans OnGameModeExit).
NB : Si il s'agit d'un filterscript, il faut créer les TD dans OnFilterScriptInit et les détruire dans OnFilterScriptExit.

Sinon, il y a une limite au nombre global de TextDraw mais je crois qu'elle est très haute (1024 si ma mémoire est bonne).

++
Syg
Courtesy of GtaManiac

Hors ligne feldbrau

  • Despo_Rutti,Co-Scripteur de Redwood Valley RP & Ancien Scripteur GTAngel Life RP
  • *
  • Bandit
  • Messages: 410
    • Voir le profil
Re : TextDraw Limite
« Réponse #4 le: 10 Décembre 2008, 02:50:50 »
Pour te répondre Syg:

Je confirme, la fonction TextDrawDestroy est bugguée et détruit TOUS les textdraws (ou du moins elle les cache).
NB : Non vérifié en 0.2.X
En 0.2X ca doit être pareil, vu que je bosse dessus en ce moment et c'est avec elle que je script et test ^^

Je te conseille d'utiliser les fonctions TextDrawShowForPlayer, TextDrawHideForPlayer et TextDrawSetString (sachant que la dernière est suffisante pour un TextDraw affiché en permanence) après avoir créer les TextDraw dans OnGameInit (la destruction devra se faire dans OnGameModeExit).
NB : Si il s'agit d'un filterscript, il faut créer les TD dans OnFilterScriptInit et les détruire dans OnFilterScriptExit.
Hélas, en commençant la lecture de ce passage j'ai eu un espoire mais c'est déja se que j'utilise dans mon systeme (peut-etre mal utilisé). . .

Sinon, il y a une limite au nombre global de TextDraw mais je crois qu'elle est très haute (1024 si ma mémoire est bonne).
Je cofirme ^^, j'ai était farfouillé le wiki et avec du mal j'ai pu trouvé les nouvelles limite depuis 0.2.2 R3 (Par la meme occasion, pour ceux qui n'ont pas fait gaffe, la nouvelle limite de voiture et de 126 officiellement mais j'ai testé et ca crash a partir de 122 donc un peu moins du double de model possible :D)

Si tu veut voir un peu plus le script au cas ou ca aiderai, demande moi jte l'enverrais par PM. Je sais que c'est un script facile a faire mais je préfère pas partager le code pour le moment.

Merci de ton attention,

A bientot.

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : TextDraw Limite
« Réponse #5 le: 10 Décembre 2008, 09:48:01 »
Sa ressemble a mon systeme de besoin que j'avait fait.
Il marchait mais fait attention car souvent sa marche quand on est tout seul mais quand on commence a etre une dizaine sa marche plus ou sa marche mal.bref moi j'ai trouver la solution j'ia pas mit de barre textdraw.Et les Setimer bug parfois il lance plein de fois l'action mais sa je sait pas de ou sa vient bref fait attention a sa car ses chiant a les voires

Hors ligne Spike4395

  • *
  • Criminel
  • Messages: 29
    • Voir le profil
Re : TextDraw Limite
« Réponse #6 le: 10 Décembre 2008, 13:12:18 »
Je confirme limite de TextDraws 1024.

SOURCE : http://wiki.sa-mp.com/wiki/Limits]http://wiki.sa-mp.com/wiki/Limits

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : TextDraw Limite
« Réponse #7 le: 12 Décembre 2008, 23:35:52 »
Je viens de faire un test sur mon script à tout faire.
Je créer 3 TextDraws à chaque fois qu'un joueur se connecte et je commence à les afficher au moment où il spawn.
Tout marche très bien pour moi avec 2 joueurs (je n'ai que 2 machines, je n'ai pas pu tester avec plus).

En "haut" du script :
new Text:Text1Seconde[MAX_PLAYERS];
new Text:Text2Seconde[MAX_PLAYERS];
new Text:Text3Seconde[MAX_PLAYERS];
new Compteur[MAX_PLAYERS] = -1;
forward UpdateTextDraws ();

public UpdateTextDraws ()
{
new string[61];
/* Boucle sur les joueurs */
for (new i=0 ; i<MAX_PLAYERS ; i++)
{
/* Si le joueur est connecté et que son compteur est lancé */
if (IsPlayerConnected (i) && Compteur[i] != -1)
{
/* Incrémentation du compteur pour le joueur */
Compteur[i]++;

/* Fabrication de la chaine */
for (new j=0 ; j<Compteur[i] ; j++)
{
string[j]='-';
}
string[Compteur[i]]=0;

/* Mise à jour des TextDraws */
TextDrawSetString (Text1Seconde[i], string);
if (Compteur[i]%2 == 0)
{
TextDrawSetString (Text2Seconde[i], string);
}
if (Compteur[i]%3 == 0)
{
TextDrawSetString (Text3Seconde[i], string);
}
if (Compteur[i] == 60)
{
Compteur[i] = 0;
}
}
}
}

Dans OnGameModeInit :
SetTimer ("UpdateTextDraws", 1000, true);
Dans OnPlayerConnect :
Text1Seconde[playerid] = TextDrawCreate (320.00, 370.00, " ");
TextDrawFont (Text1Seconde[playerid], 3);
TextDrawSetProportional (Text1Seconde[playerid], 2);
TextDrawAlignment (Text1Seconde[playerid], 2);
TextDrawSetOutline (Text1Seconde[playerid], 1);
TextDrawSetShadow (Text1Seconde[playerid], 0);
TextDrawColor (Text1Seconde[playerid], 0x00AA00FF);
TextDrawBackgroundColor (Text1Seconde[playerid], 0x005500FF);
TextDrawHideForPlayer (playerid, Text1Seconde[playerid]);

Text2Seconde[playerid] = TextDrawCreate (320.00, 380.00, " ");
TextDrawFont (Text2Seconde[playerid], 3);
TextDrawSetProportional (Text2Seconde[playerid], 2);
TextDrawAlignment (Text2Seconde[playerid], 2);
TextDrawSetOutline (Text2Seconde[playerid], 1);
TextDrawSetShadow (Text2Seconde[playerid], 0);
TextDrawColor (Text2Seconde[playerid], 0x00AA00FF);
TextDrawBackgroundColor (Text2Seconde[playerid], 0x005500FF);
TextDrawHideForPlayer (playerid, Text2Seconde[playerid]);

Text3Seconde[playerid] = TextDrawCreate (320.00, 390.00, " ");
TextDrawFont (Text3Seconde[playerid], 3);
TextDrawSetProportional (Text3Seconde[playerid], 2);
TextDrawAlignment (Text3Seconde[playerid], 2);
TextDrawSetOutline (Text3Seconde[playerid], 1);
TextDrawSetShadow (Text3Seconde[playerid], 0);
TextDrawColor (Text3Seconde[playerid], 0x00AA00FF);
TextDrawBackgroundColor (Text3Seconde[playerid], 0x005500FF);
TextDrawHideForPlayer (playerid, Text3Seconde[playerid]);

Dans OnPlayerSpawn :
/* On demarre l'affichage des TextDraws */
Compteur[playerid]=0;
TextDrawShowForPlayer (playerid, Text1Seconde[playerid]);
TextDrawShowForPlayer (playerid, Text2Seconde[playerid]);
TextDrawShowForPlayer (playerid, Text3Seconde[playerid]);

Dans OnPlayerDisconnect :
/* Destructions des TextDraws */
Compteur[playerid] = -1;
TextDrawDestroy (Text1Seconde[playerid]);
TextDrawDestroy (Text2Seconde[playerid]);
TextDrawDestroy (Text3Seconde[playerid]);

++
Syg
Courtesy of GtaManiac

Hors ligne feldbrau

  • Despo_Rutti,Co-Scripteur de Redwood Valley RP & Ancien Scripteur GTAngel Life RP
  • *
  • Bandit
  • Messages: 410
    • Voir le profil
Re : TextDraw Limite
« Réponse #8 le: 12 Décembre 2008, 23:46:00 »
Le problème n'est pas l'affichage sur plusieurs client,  le probleme c'est d'afficher toutes les barres en meme temps sur l'écran d'un client en l'occurence 4 (Toilette, Hygiene, Vie Social, Energie)

En gros ca serait faire comme un gametext mais en textdraw vu que les gametext sont moyen a configuré comme il faut.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : TextDraw Limite
« Réponse #9 le: 13 Décembre 2008, 23:00:19 »
Si tu regardes bien mon, exemple, tu verras que j'avais bien compris ton problème, l'exemple que je donne affiche 3 TextDraws pour chaque joueur.
Ces trois TextDraw sont indépendant entre eux (même si il affiche la même chaîne mais à des intervalles différents) et indépendant d'un joueur à l'autre (puisque le compteur ne démarre que quand le joueur spawn).

Je pense que ceci correspond tout à fait à ce que tu veux faire. Pour ça, il suffit d'adapter le fonction UpdateTextDraws de mon exemple pour que chaque TextDraw affiche une chaîne différente et indépendante de la chaîne des autres TextDraw.

++
Syg
Courtesy of GtaManiac

Hors ligne feldbrau

  • Despo_Rutti,Co-Scripteur de Redwood Valley RP & Ancien Scripteur GTAngel Life RP
  • *
  • Bandit
  • Messages: 410
    • Voir le profil
Re : TextDraw Limite
« Réponse #10 le: 14 Décembre 2008, 05:08:28 »
D'accord merci, j'avoue ne pas avoir lu tous le code. Raison: J'ai vu parlé qu'il n'y avait pasde problème d'affichage lors de multiple connection donc j'ai déduit vite mais mal désolé ^^.

Je vais voir ca tous de suite (ou taleur il se fait tard) et je tiendrais au courant ;)

Encore merci

EDIT:
C'est bon tout fonctionne nikel pour la limite de TextDraw :) Merci encore.
Maintenant j'ai encore un autre problème mais je vais essayer de le régler, si ca va pas j'ouvrirai un autre topis, vu que ce n'est plus la limite de textdraw qui m'embete ^^.
« Modifié: 14 Décembre 2008, 23:29:55 par feldbrau »

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : [RESOLUT]TextDraw Limite
« Réponse #11 le: 15 Décembre 2008, 01:29:09 »
Merci de votre aide ^^
Grace à ça on pourra avancé plus vite lol

++ Franky


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes