• 03 Mai 2025, 00:48:24


Auteur Sujet: [Aide]Afficher un TextDraw pendant un certain temps puis l'effacer  (Lu 1911 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Xx_Men_xX

  • *
  • Nouveau
  • Messages: 19
    • Voir le profil
Bonjour,

Je ne comprend pas, comment on peut afficher un TextDraw à l'écran pendant par exemple 10 secondes. Je voudrait faire un truc du genre : le joueur tape une commande, et ensuite sa lui affiche un TextDraw au milieu de l'écran pendant 4, 5 secondes puis le TextDraw disparait. J'ai cherché sur le forum, et j'ai vu que plusieurs sujets à propos de ça, on déjà été créer , le problème c'est que je n'est toujours pas compris comment il fallait procéder  :sad:. J'ai compris mais très vaguement  :mellow:
Je sais(enfin, je crois) qu'il faut utiliser un SetTimerEx, et une fonction publique. Mais sa reste pour moi très vague étant donné que je débute. Pourrait-on m'expliquer clairement comment il faut s'y prendre, je suis perdu.

Je vous remercie beaucoup pour votre aide.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Procède par ordre logique:

  • Le joueur entre sa commande.
  • Un TextDraw est affiché.
  • On attend 5 secondes.
  • On cache le TextDraw .

À mettre en place, c'est très simple.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Exactement, en utilisant uniquement ces fonctions ça devrait fonctionner.

Code: (pawn) [Sélectionner]
TextDrawCreate();
TextDrawShowForPlayer();
SetTimerEx();
TextDrawHideForPlayer();

 :bye:


Adju ♥
(-_-)



Hors ligne Xx_Men_xX

  • *
  • Nouveau
  • Messages: 19
    • Voir le profil
Exactement, en utilisant uniquement ces fonctions ça devrait fonctionner.

Code: (pawn) [Sélectionner]
TextDrawCreate();
TextDrawShowForPlayer();
SetTimerEx();
TextDrawHideForPlayer();

 :bye:
Ouaai  :huh:. Non parceque j'ai l'air idiot mais je ne sais pas comment faire cela, pourtant je suis pas si bete que ça.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Tu créés le textdraw à dans OnGameModeInit() (Cf. TextDrawCreate) ensuite, tu décides de l'afficher quand le joueur fait une commande, donc...

Code: (pawn) [Sélectionner]
forward Montimer(playerid);
OnPlayerCommandText()
{
     ... // Ta commande, elle commence par if(!strcmp(cmdtext, "/tacommande", true, 0))
    TextDrawShowForPlayer(.....);// Ce bout de code dedans
    SetTimerEx("Montimer", 5000/* Durée */, false /* Si il se répète */, "i" /* Obligatoire pour que le timer ne soit utiliser que par un joueur*/, playerid);
}
pubic Montimer(playerid)
{
   TextDrawHideForPlayer(MonTD, playerid);
   return 1;
}

Enlève le text entre /* et */ c'était juste pour t'expliquer..

Je ne peux pas plus t'aider ;)



Adju ♥
(-_-)



Hors ligne Xx_Men_xX

  • *
  • Nouveau
  • Messages: 19
    • Voir le profil
Tu créés le textdraw à dans OnGameModeInit() (Cf. TextDrawCreate) ensuite, tu décides de l'afficher quand le joueur fait une commande, donc...

Code: (pawn) [Sélectionner]
forward Montimer(playerid);
OnPlayerCommandText()
{
     ... // Ta commande, elle commence par if(!strcmp(cmdtext, "/tacommande", true, 0))
    TextDrawShowForPlayer(.....);// Ce bout de code dedans
    SetTimerEx("Montimer", 5000/* Durée */, false /* Si il se répète */, "i" /* Obligatoire pour que le timer ne soit utiliser que par un joueur*/, playerid);
}
pubic Montimer(playerid)
{
   TextDrawHideForPlayer(MonTD, playerid);
   return 1;
}

Enlève le text entre /* et */ c'était juste pour t'expliquer..

Je ne peux pas plus t'aider ;)


Coucou. J'ai corriger les quelques fautes que tu avait faite :)
J'ai créer une variable global pour stoker mon TD :
Code: (pawn) [Sélectionner]
new Text:Textdraw1Ensuite dans OnGameModeInit :
Code: (pawn) [Sélectionner]
    Textdraw1 = TextDrawCreate(14 ,188 , "Coucou");
    TextDrawFont(Textdraw1 , 3);
    TextDrawLetterSize(Textdraw1 , 1.2, 8.4);
    TextDrawColor(Textdraw1, VERT);
    TextDrawSetOutline(Textdraw1 , false);
    TextDrawSetProportional(Textdraw1 , true);
    TextDrawSetShadow(Textdraw1 , 1);

Le timer :
Code: (pawn) [Sélectionner]
public MonTimer(playerid)
{
   new Text:MonTD;
   TextDrawHideForPlayer(playerid, MonTD);

}

forward MonTimer(playerid);

Et enfin, dans ma commande :
Code: (pawn) [Sélectionner]
CMD:coucou(playerid, params[])
{
  TextDrawShowForPlayer(playerid, Textdraw1);
  SetTimerEx("MonTimer", 5000, false, "i", playerid);


  return 1;

}
Le TextDraw s'affiche mais il RESTE afficher. Pourtant j'ai bien le TextDrawHideForPlayer dans la fonction publique et le 5000(5 secondes) dans le SetTimerEx. Si quelqu'un a une solution...
Merci pour ton aide Infu.
« Modifié: 18 Mai 2013, 15:41:53 par Xx_Men_xX »

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Le timer :
Code: (pawn) [Sélectionner]
public MonTimer(playerid)
{
   new Text:MonTD;
   TextDrawHideForPlayer(playerid, MonTD);

}

forward MonTimer(playerid);

Et enfin, dans ma commande :
Code: (pawn) [Sélectionner]
CMD:coucou(playerid, params[])
{
  TextDrawShowForPlayer(playerid, Textdraw1);
  SetTimerEx("MonTimer", 5000, false, "i", playerid);


  return 1;

}

Si tu as exactement fait comme ça, tu utilises deux noms de Textdraw différents  :smile:
PS: ton forward doit être avant le public  :bye:

EDIT: Je viens de voir que tu as créé un nouveau textdraw à l'endroit où tu dois en fait l'effacer..

Fais comme ça:

Code: (pawn) [Sélectionner]
CMD:coucou(playerid, params[])
{
   TextDrawHideForPlayer(playerid, Textdraw1);
   return 1;
}
« Modifié: 18 Mai 2013, 15:48:48 par Infu. »


Adju ♥
(-_-)



Hors ligne Xx_Men_xX

  • *
  • Nouveau
  • Messages: 19
    • Voir le profil
Le timer :
Code: (pawn) [Sélectionner]
public MonTimer(playerid)
{
   new Text:MonTD;
   TextDrawHideForPlayer(playerid, MonTD);

}

forward MonTimer(playerid);

Et enfin, dans ma commande :
Code: (pawn) [Sélectionner]
CMD:coucou(playerid, params[])
{
  TextDrawShowForPlayer(playerid, Textdraw1);
  SetTimerEx("MonTimer", 5000, false, "i", playerid);


  return 1;

}

Si tu as exactement fait comme ça, tu utilises deux noms de Textdraw différents  :smile:
PS: ton forward doit être avant le public  :bye:

EDIT: Je viens de voir que tu as créé un nouveau textdraw à l'endroit où tu dois en fait l'effacer..

Fais comme ça:

Code: (pawn) [Sélectionner]
CMD:coucou(playerid, params[])
{
   TextDrawHideForPlayer(playerid, Textdraw1);
   return 1;
}
Oui, j'ai corrigé ce problème sa marche parfaitement maintenant :)
Pour ceux qui voudrait créer des TextDraw sans trop ce prendre la tete vous pouvez aller sur ce site, que je trouve très bien  :smile: : http://bsndesign.webs.com/tde.htm