• 05 Juin 2026, 23:06:52


Auteur Sujet: Compteur de morts en Textdraw  (Lu 2526 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Compteur de morts en Textdraw
« le: 13 Août 2008, 01:50:56 »
Bonjour, je souhaiterais faire un compteur de morts en textdraw, j'ai essayé, j'y suis arrivé en gametext mais le problème c'est qu'il reste pas longtemps affiché et que ca compte les morts de tout le monde !! Alors que je veux que sa compte les morts de chaque personnes. Donc j'ai essayé en textdraw ( qui est plus dur mais largement mieux) mais j'y arrive pas car ça ne change pas le chiffre quand on meurt et si ça le ferais ça comptera toujours les morts de tous les joueurs. Donc si des personnes veulent bien m'aider ca serais sympas... :D :D

Ps : en gametext je voulais celui là qui est positionné a droite de l'écran mais il est limité à 3 secondes même si on défini plus de secondes dans la fonction donc c'est pour ca que je veux faire le compteur en Textdraw.

en résumer les erreurs sont :

-  Le compteur compte les morts de toutes les personnes du serveur :s
- Le compteur ne change pas de numéro ( en textdraw )

En haut du FS j'ai mis ça :

new comdm = 0;
new Text:textdr;


dans onplayercommandtext j'ai mis ces commandes :

if(strcmp(cmdtext, "/stat-on") == 0)              //faire apparaitre le compteur
{


format(string,sizeof(string),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, string);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);

return 1;
}

if(strcmp(cmdtext, "/stat-off") == 0)   // le faire disparaitre
{
TextDrawDestroy(textdr);
SendClientMessage(playerid, COLOR_ORANGE, "Vous venez de désactiver le compteur de mort.");
return 1;
}



Voilà...

Merci d'avance.


Cordialement, j0n.
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Compteur de morts en Textdraw
« Réponse #1 le: 13 Août 2008, 03:28:31 »
Il change pas de chiffre parce que tu la forcé a 0 xD ^^

En haut tu met

new comdm[MAX_PLAYER];

après tu fait :

comdm[playerid]= 0;     dans OnPlayerConnect, et tu met

comdm[playerid]++;

Dans OnPlayerReSpawn ^^ Ok ??

Ou alors dans OnPlayerDeath, mais tu le mettra la :

public OnPlayerDeath(playerid)
{
ICI !!!
if(machin .... )
{

En gros avant le 1er IF que tu as ok ??
^^ voila ++
« Modifié: 13 Août 2008, 03:32:37 par [StAfF]mAn »
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne R@f

  • *
  • GTAOnline Addict
  • Messages: 4655
    • Voir le profil
Re : Compteur de morts en Textdraw
« Réponse #2 le: 13 Août 2008, 10:47:03 »
Faut aussi utiliser un timer pour mettre à jour ton TextDraw ou si tu ne veux pas utiliser de timer tu le mets à jour avec la callback OnPlayerDeath ;)

++
R@f

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Re : Compteur de morts en Textdraw
« Réponse #3 le: 13 Août 2008, 12:20:29 »
Merci bien les gars, mais quel fonction je dois mettre dans un timer pour mettre à jour le textdraw? j'ai essayer de détruire le textdraw puis de le recréer mais ca met warning tag mismatch... :s

Merci d'avance.


Cordialement, j0n.


___________________________________________________________________


                                   système anti double post


___________________________________________________________________


Voilà ça avance bien mais le problème c'est qu'il y a une personne qui peux voir le compteur, quand quelqu'un fait pour la 1èere fois la commande il voit le compteur mais les personnes qui la font après voit pas leurs compteur :s...

Voilà le code, j'y suis presque ^^ :


En haut du script il y a ca :

new comdm[MAX_PLAYERS];
new Text:textdr;
new textdra[MAX_PLAYERS];
new onoff[MAX_PLAYERS];

forward Timertext();
forward Timertext2(playerid);


Dans public OnPlayerCommandText il y a ca:

if(strcmp(cmdtext, "/stat-on") == 0)
{
if(onoff[playerid] == 1)
{

textdra[playerid] = 1;
format(string,sizeof(string),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, string);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);


if(textdra[playerid] == 1)
{

SetTimer("Timertext", 1, 1);
SetTimer("Timertext2", 2, 1);
}
}

if(onoff[playerid] == 0)
{
SendClientMessage(playerid, COLOR_ORANGE,"Vous avez déjà fait cette commande !");
}
onoff[playerid] = 0;
return 1;
}

if(strcmp(cmdtext, "/stat-off") == 0)
{
onoff[playerid] = 1;
textdra[playerid] = 0;
TextDrawHideForPlayer(playerid,textdr);
TextDrawDestroy(textdr);
SendClientMessage(playerid, COLOR_ORANGE, "Vous venez de désactiver le compteur de mort.");
return 1;
}


Merci d'avance.

Cordialement, j0n.
« Modifié: 13 Août 2008, 13:31:49 par jonjon »
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Compteur de morts en Textdraw
« Réponse #4 le: 13 Août 2008, 13:31:34 »
Alors en faite, dans ton timer tu aura tout ton texte draw ;)

je t'explique :

En haut de ton script :

new Timer;
forward Mort();
Après dans ta commande
if(IsPlayerConnected(playerid)) { //tu vérifie si le joueur est connecté
Timer=SetTimer("Mort", 1000, 1); //ton timer, qui vérifie toute les secondes
return 1;
}

Après dans ton autre commande, pour quitter :
KillTimer(Timer);
et ton destroyTextDraw

Après tu fait un public

public Mort()
{
format(string,sizeof(string),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, string);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);
return 1;
}
« Modifié: 13 Août 2008, 13:33:44 par [StAfF]mAn »
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Re : Compteur de morts en Textdraw
« Réponse #5 le: 13 Août 2008, 13:35:43 »
Ui mais mais le problème c'est qu'il y a une personne qui peux voir le compteur, quand quelqu'un fait pour la 1ère fois la commande il voit le compteur mais les personnes qui la font après voit pas leurs compteur :s...

Voilà le code, j'y suis presque ^^, si vous pourriez m'aider à finir le script ca serai sympas :D :

Code:


En haut du script il y a ca :

new comdm[MAX_PLAYERS];
new Text:textdr;
new textdra[MAX_PLAYERS];
new onoff[MAX_PLAYERS];

forward Timertext();
forward Timertext2(playerid);


Dans public OnPlayerCommandText il y a ca:

if(strcmp(cmdtext, "/stat-on") == 0)
{
if(onoff[playerid] == 1)
{

textdra[playerid] = 1;
format(string,sizeof(string),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, string);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);


if(textdra[playerid] == 1)
{

SetTimer("Timertext", 1, 1);
SetTimer("Timertext2", 2, 1);
}
}

if(onoff[playerid] == 0)
{
SendClientMessage(playerid, COLOR_ORANGE,"Vous avez déjà fait cette commande !");
}
onoff[playerid] = 0;
return 1;
}

if(strcmp(cmdtext, "/stat-off") == 0)
{
onoff[playerid] = 1;
textdra[playerid] = 0;
TextDrawHideForPlayer(playerid,textdr);
TextDrawDestroy(textdr);
SendClientMessage(playerid, COLOR_ORANGE, "Vous venez de désactiver le compteur de mort.");
return 1;
}



Merci d'avance.

Cordialement, j0n.
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Compteur de morts en Textdraw
« Réponse #6 le: 13 Août 2008, 13:39:05 »
heu attend, ta pas des TextDrawForPlayer ?? a la place des TextDraw tout court ?? parce que c'est fortement probable que sa vienne de la....
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Re : Compteur de morts en Textdraw
« Réponse #7 le: 13 Août 2008, 13:43:11 »
Ca : TextDrawShowForAll  ? mais si un joueur va faire la commande ca apparaitra sur tous les écrans , non ? lol


Cordialement, j0n.
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Compteur de morts en Textdraw
« Réponse #8 le: 13 Août 2008, 14:07:48 »
TesxtDrawShowForPlayer ?? Ce serais mieux ^^
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Re : Compteur de morts en Textdraw
« Réponse #9 le: 13 Août 2008, 19:23:44 »
Ah mais oui pardon j'avais oublié un morceau du script :s donc cela donne ça (mais ça fonctionne toujours pas :s) :

Ps : ce que je veux c'est que chaque puisse faire la commande et chaque joueur puisse son propre nombre de morts sur le compteur.

Alors voilou le code :


En haut du script il y a ca :

new comdm[MAX_PLAYERS];
new Text:textdr;
new textdra[MAX_PLAYERS];
new onoff[MAX_PLAYERS];

forward Timertext();
forward Timertext2(playerid);


Dans public OnPlayerCommandText il y a ca:

if(strcmp(cmdtext, "/stat-on") == 0)
{
if(onoff[playerid] == 1)
{

textdra[playerid] = 1;
format(string,sizeof(string),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, string);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);


if(textdra[playerid] == 1)
{

SetTimer("Timertext", 1, 1);
SetTimer("Timertext2", 2, 1);
}
}

if(onoff[playerid] == 0)
{
SendClientMessage(playerid, COLOR_ORANGE,"Vous avez déjà fait cette commande !");
}
onoff[playerid] = 0;
return 1;
}

if(strcmp(cmdtext, "/stat-off") == 0)
{
onoff[playerid] = 1;
textdra[playerid] = 0;
TextDrawHideForPlayer(playerid,textdr);
TextDrawDestroy(textdr);
SendClientMessage(playerid, COLOR_ORANGE, "Vous venez de désactiver le compteur de mort.");
return 1;


}

J'ai créer deux callbacks pour les timers :

public Timertext()
{
TextDrawDestroy(textdr);
return 1;
}

public Timertext2(playerid)
{
format(String,sizeof(String),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, String);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);
TextDrawShowForAll(textdr);
return 1;
}


Voilà alors si vous pouvez me dire pourquoi ca marche comme je veux ca serais sympas :D


Merci d'avance.


Cordialement, j0n.
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Compteur de morts en Textdraw
« Réponse #10 le: 13 Août 2008, 19:40:45 »
Alors
En haut du script il y a ca :

new comdm[MAX_PLAYERS];
new Text:textdr;
new textdra[MAX_PLAYERS];
new onoff[MAX_PLAYERS];

forward Timertext();
forward Timertext2(playerid);


Dans public OnPlayerCommandText il y a ca:

if(strcmp(cmdtext, "/stat-on") == 0)
{
if(onoff[playerid] == 1)
{
onoff[playerid] = 0;
textdra[playerid] = 1;

if(textdra[playerid] == 1)
{
SetTimer("Timertext2", 2, 1);
}
}

if(onoff[playerid] == 0)
{
SendClientMessage(playerid, COLOR_ORANGE,"Vous avez déjà fait cette commande !");
}
return 1;
}

if(strcmp(cmdtext, "/stat-off") == 0)
{
onoff[playerid] = 1;
textdra[playerid] = 0;
SetTimer("Timertext", 1, 1);
TextDrawHideForPlayer(playerid,textdr);
TextDrawDestroy(textdr);
SendClientMessage(playerid, COLOR_ORANGE, "Vous venez de désactiver le compteur de mort.");
return 1;


}

J'ai créer deux callbacks pour les timers :

public Timertext()
{
TextDrawHideForPlayer(playerid,textdr);
TextDrawDestroy(textdr);
return 1;
}

public Timertext2(playerid)
{
format(String,sizeof(String),"DM : %d",comdm);
textdr = TextDrawCreate(503.000000,111.000000, String);
TextDrawAlignment(textdr,0);
TextDrawBackgroundColor(textdr,0x000000ff);
TextDrawFont(textdr,3);
TextDrawLetterSize(textdr,1.000000,1.000000);
TextDrawColor(textdr,0xffffffff);
TextDrawSetOutline(textdr,1);
TextDrawSetProportional(textdr,1);
TextDrawSetShadow(textdr,1);
TextDrawShowForAll(textdr);
return 1;
}

Alors voila, tu définissais deux fois ton texte draw, une fois en dehors du timer une fois dans le timer, donc si le timer fonctionnais on ne pouvais pas voir du fait que l'autre textdraw était par dessus, donc fait un essai et tiens nous au courant ;)
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Re : Compteur de morts en Textdraw
« Réponse #11 le: 13 Août 2008, 20:04:13 »
Merci bien , j'ai essayé mais y a quelques problèmes... :s Imaginons qu' on est deux, le 1er fais la commande, ensuite le 2eme fait la commande tout va bien pour le 1er quand il meurt ca compte ses morts mais le problème c'est que la deuxième personne voit le nombre de morts de la 1èere personne au lieu de voir ses propres morts :s.... Et y aussi un autre problème quand je fais /stat-off le compteur disparait pas....

Quelqu'un pourrait m'aider à résoudre ces dernières erreurs ? s'il vous plait ?

Merci d'avance.


Cordialement, j0n.
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==

Hors ligne R@f

  • *
  • GTAOnline Addict
  • Messages: 4655
    • Voir le profil
Re : Compteur de morts en Textdraw
« Réponse #12 le: 13 Août 2008, 20:18:21 »
pour ton premier problème, à cette ligne :
Code: (pawm) [Sélectionner]
format(string,sizeof(string),"DM : %d",comdm);il faut que tu ajoutes [playerid] à comdm, ce qui donne :
Code: (pawm) [Sélectionner]
format(string,sizeof(string),"DM : %d",comdm[playerid]);
Et il est mieux aussi de mettre comdm[playerid]=0; dans la callback OnPlayerConnect ;) Si tu mets pas ça, quand un joueur se connecte il aura 14, ou 20 morts affiché sur le TextDraw ;)

++
R@f

Hors ligne jonjon

  • *** GTA FanBoy ***
  • *
  • Bandit
  • Mouhaha
  • Messages: 420
    • Voir le profil
    • http://metra-concept.fr
Re : Compteur de morts en Textdraw
« Réponse #13 le: 13 Août 2008, 21:02:40 »
merci bien pour le 1er problème :D mais le 2ème je l'ai déjà fait :s.... et y aussi un autre souci c'est que quand quelqu'un fait la commande ca remet un textdraw par dessus l'autre... :s

Cordialement, j0n.
== Jonjon ==
== Développeur du Web - http://Metra-concept.fr ==