GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: jonjon le 12 Avril 2009, 11:42:44

Titre: [Résolu]Barre de statut
Posté par: jonjon le 12 Avril 2009, 11:42:44
Bonjour, alors voilà j'ai réalisé pour mon serveur un petit FS qui affiche une barre de petit besoin et je n'arrive pas à la faire fonctionner... :s Quand je vais sur mon serveur la barre ne diminue pas... alors que je pense avoir tout bien fait. 0 warnings, 0 erreurs.

Donc voici mon script sur pastebin : http://pastebin.gtaonline.fr/pastebin.php?show=557 (http://pastebin.gtaonline.fr/pastebin.php?show=557)


Un petit screen vous montrant un aperçu du script est disponible ci-dessous.



Ps : ne faites pas attention au temps du timer ^^ il est petit car c'est pour les tests... c'est plus rapide.
Ps2 : ce script m'a pris une heure voir deux heures (en comptant les tests) pour le réaliser donc s'il vous plait ne recopiez pas bêtement mon script.


Cordialement, Jon.
Titre: Re : Barre de statut
Posté par: Franky™ le 12 Avril 2009, 17:13:44
Salut,

Je sais pas t'aider pour ce problème mais je viens de tester ton FS et il me bloque toutes mes cmds qui sont sur mon GM
Même pour se loguer /login impossible de le faire...

Voila c'etais une info pour pas que sa t'arrive ^^

++ Franky
Titre: Re : Barre de statut
Posté par: jonjon le 12 Avril 2009, 19:15:56
salut, effectivement voilà une erreur bête , j'ai mi un return 1 à la place d'un return 0. Mais ça résout pas mon problème.... :S


Cordialement, j0n
Titre: Re : Barre de statut
Posté par: Nikko™ le 12 Avril 2009, 20:39:40
Ta esseyé de mettre un TextDrawDestroy puis un TextDrawCreate a la place de TextDrawSetString(BesoinBar[playerid],"..");
Juste pour tester si ca viens de la ... ??

++
nikko
Titre: Re : Barre de statut
Posté par: jonjon le 12 Avril 2009, 21:31:58
Ce n'est pas là non plus d'où viens l'erreur ^^
Titre: Re : Barre de statut
Posté par: Syg le 12 Avril 2009, 23:01:49
Effectivement, le TextDrawSetString suffit depuis la 0.2.X.

J'ai jeté un coup d'oeil à ton FS :
L'erreur principale (qui fait que ton TextDraw n'est pas mis à jour) est ton timer :
    SetTimerEx("Timerbesoin", 180000, false, "99", 1);
Ce timer n'est lancé qu'une seule fois (paramètre false) donc la variable besoin ne sera incrémentée qu'une seule fois et ne changera plus de valeur par la suite.
De plus, les paramètres "99" et 1 ne correspondent à rien.

La deuxième erreur, que tu ne verras pas vu en étant tout seul vient de la variable besoin elle même.
Il n'y a qu'une seule variable pour tous les joueurs .... !!
Il faudrait en faire un tableau pour chaque joueur est sa variable à lui.

++
Syg

Titre: Re : Barre de statut
Posté par: jonjon le 13 Avril 2009, 11:50:22
Merci Syg ça m'a bien avancé, ma variable se change bien, j'ai fais un test de variable et ça fonctionne impec. Par contre quand besoin arrive à 6 et quand sa arrive à ci-dessous:

Citer
   if(besoin == 6)
   {
       TextDrawSetString(BesoinBar[playerid],"");

      if(Health >= 100)
   {
       SetPlayerHealth(playerid, 70.0);
       return 1;
   }
      if(Health >= 70)
   {
       SetPlayerHealth(playerid, 50.0);
       return 1;
   }
      if(Health >= 50)
   {
       SetPlayerHealth(playerid, 30.0);
       return 1;
   }
      if(Health >= 30)
   {
       SetPlayerHealth(playerid, 10.0);
       return 1;
   }
      if(Health >= 10)
   {
       SetPlayerHealth(playerid, 0.0);
       return 1;
   }
      return 1;
   }

le serveur crashe.... :s


Quelqu'un sait pourquoi ?


Cordialement, Jon
Titre: Re : Barre de statut
Posté par: Ssk le 13 Avril 2009, 13:43:09
j ai as compris pourquoi tu met si la variable health est plus grande que 10 on le tue et si elle est plus grande de 50 on lui baisse ca vie c 'est bete car au final il meurt le gars puisque la variable est toujours au dessus de 10
Titre: Re : Barre de statut
Posté par: ApocKalipsS le 13 Avril 2009, 13:52:26
Je plutôt que si la vie est en dessous de 30, il y a l'action du 10, mais si la vie est entre 50 et 30, il y a l'action du 30, etc.
Titre: Re : Barre de statut
Posté par: Franky™ le 13 Avril 2009, 16:20:23
Oui mais ça

 if(Health >= 10)

C'est dit, si "Health" est plus grand (>) ou egale (=) que 10 patati patata.

Donc pour moi je pense que sa serai mieu de remplacer > par < sa ferai donc

si "Health" est plus petit (<) ou egale (=) que 10 patati patata.

Sa serai mieu, et c'est peu être pour ça que ton serveur il crash, car tu est toujours au dessu de 10 donc il va toujours faire cette variable...

Mais c'est pas qu'avec le 10.
Mais avec tout que ta mis ça.

ça sera mieu comme ca je trouve:
Citer
if(besoin == 6)
   {
       TextDrawSetString(BesoinBar[playerid],"");

      if(Health <= 100)
   {
       SetPlayerHealth(playerid, 70.0);
       return 1;
   }
      if(Health <= 70)
   {
       SetPlayerHealth(playerid, 50.0);
       return 1;
   }
      if(Health <= 50)
   {
       SetPlayerHealth(playerid, 30.0);
       return 1;
   }
      if(Health <= 30)
   {
       SetPlayerHealth(playerid, 10.0);
       return 1;
   }
      if(Health <= 10)
   {
       SetPlayerHealth(playerid, 0.0);
       return 1;
   }
      return 1;
   }

++ Franky
Titre: Re : Re : Barre de statut
Posté par: S!m le 13 Avril 2009, 21:54:38
Salut,

franky, le code orignal est bien meilleur,

dans ton cas, peu importe la vie du joueur, elle sera sous 100 avant d,être sous 70, donc le cas du 100 sera toujours (à quelques exceptions près) validé.

le mieu serait plutôt:

    SetPlayerHealth(playerid, Health - 20.0);

et plus aucun besoin de test

++Sim++
Titre: Re : Barre de statut
Posté par: Syg le 13 Avril 2009, 22:30:44
Le problème de crash vient de cette ligne :
TextDrawSetString(BesoinBar[playerid],"");Le serveur n'aime pas les chaînes vide dans les TextDraw.
Met ceci à la place :
TextDrawSetString(BesoinBar[playerid]," ");NB : Il y a un espace entre les guillemets.

++
Syg
Titre: Re : Barre de statut
Posté par: jonjon le 13 Avril 2009, 23:51:32
Salut, oui merci Syg. C'est Sim qui m'a aidé à finir mon script !!! Un grand merci à Sim car il y avait pas mal de fautes qui m'a corrigé :) et maintenant le script fonctionne nickel.

Merci à tous.


Cordialement, Jon
Titre: Re : [Résolu]Barre de statut
Posté par: Azz45 le 14 Avril 2009, 16:37:50
T'aurais pu dire, Merci aussi à Syg, il ta donner un bon truc  :-[
Titre: Re : Re : Barre de statut
Posté par: White_Light le 14 Avril 2009, 16:51:08
Il a dit

Merci à tous.


donc pour tous ceux qui l'ont aidé ^^

WL