Memory Of Making

Forum en contruction
 
AccueilAccueil  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­GroupesGroupes  ­ConnexionConnexion  
Partager | 
 

 [Tuto Script) Créer des jauges Hp, tout en ruby

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Eldiablo
Admin Supprême
Admin Supprême


Nombre de messages: 11
Date d'inscription: 13/08/2007

MessageSujet: [Tuto Script) Créer des jauges Hp, tout en ruby   Dim 9 Déc - 17:13

Voila un tuto pour créer des jauges indiquant les hp de votre perso !
Auteur : Dooxe ( je ne suis pas gay Smile )
Forum : Rpg Maker Legende ( ni Ciberphile Wink )
----------------------------------------------------------------------------------
Dans ce tuto, nous alons apprendre à créer une méthode ( fonction ) qui permet de créer une jauge de HP.
Néanmoins, cela peut s'appliquer à quelque chose que ce soit.

Dans cet exemple, j'affiche un jauge dans une fenêtre.
Il faut donc créer la fonction dans la classe mère de toutes le classes Window => la classe Window_Base

1ère étape : nous allons créer le couleur pour les jauges.

Dans Window_Base, après les déclaration des couleurs telles que :

Code:
def knockout_color
    return Color.new(255, et  64, 0)
  end


créer une couleur nommée hp_color.
Pour cela on va créer une fonction qui retourne une couleur.
Commen ceci :
Code:

def hp_color #Declaration de la fonction
  return Color.new(100,255,50,200) # Retourne la Couleur definie
end  #Fin de la fonction


Dès lors, pour utiliser cette couleur dans les "Windows", au lieu de faire :
Code:
@ma_couleur = Color.new100,255,50,200)
self.contents.font.color = @ma_couleur


il n'y aura plus qu'à faire :

Code:
self.contents.font.color = hp_color


Ensuite, faites un autre couleur nommée low_hp_color, de la même façon que hp_color, cela définit la couleur de la jauge, lorsque les HP sont bas.
Puis faites une autres couleur qui sera le noir = > Color.new(0,0,0), qui servira pour l'ombre.

2nde étape : création de la fonction de création d'une jauge HP.

Le principe de la jauge, c'est qu'elle a une longueur qui dépend d'un pourcentage d'une valeur divisée par le maximum qu'elle peut atteindre.
En effet, dans l'exemple des HP, le pourcentage est égal à :
HP/MaxHP*100

nous allons tout d'abord déclarer la fonction.
Toujours dans le script Window_Base, après la fonction draw_actor_hp, déclarez la fonction draw_jauge_hp comme ceci :

Code:
def draw_jauge_hp

end


Cette jauge a 5 caractéristiques :
-Le perso a qui sont les HP
-La coordonnée X, ou l'on veut l'afficher
-La coordonnée Y, ou l'on veut l'afficher
-Une largeur => width
-Une hauteur => height

Nous allons donc mettre ces caractéristiques en arguments à la déclaration de la fonction, comme ceci :

Code:
def draw_jauge_hp(actor, x , y, width = 50, height = 6)

end


Donc quand vous voudrez créer une jauge HP dans une fenêtre, il vous faudra juste mettre :

Code:
draw_jauge_hp(actor, x , y, width, height)


par exemple :

Code:
@actor = $game_party.actors[0]
draw_jauge_hp(@actor, 50 , 150, 100, 8)


affichera une jauge des HP du premier membre de l'équipe ($game_party.actors[0]), au coordonnées (50, 150), d'une largeur de 100, et d'une hauteur de 8 pixels.

Remarque : width et height, ne sont pas obligés d'être précisé, dans ce cas, il auront comme valeurs par défaut respectivement 50, et 6, d'où le = 50 et le = 6 après width et height

exemple :


Code:
@actor = $game_party.actors[0]
draw_jauge_hp(@actor, 50 , 150)


affichera une jauge des HP du premier membre de l'équipe ($game_party.actors[0]), au coordonnées (50, 150), d'une largeur de 50, et d'une hauteur de 6 pixels.

Après avoir déclaré la fonction, il faut donc la remplir ^^.

Pour cela nous allons tout d'abord créer 3 variables :

-Une qui sera le nombre actuel de HP du perso :
Code:
@hp = actor.hp


-Une qui sera le nombre maximal de HP du perso :
Code:
@maxhp = actor.maxhp


et
-Une qui sera une longueur(fonction de HP, HPMax et de la largeur "width" placée en paramètre) :
Code:
@width = width * @hp / @maxhp


@width sera donc d'une largeur égale a width, multiplié par le pourcentage restant de HP.

On va donc déclarer ces variables a l'interieur de la fonction que l'on vien de créer, comme ceci :

Code:
def draw_jauge_hp(actor, x , y, width = 50, height = 6)
@hp = actor.hp
@maxhp = actor.maxhp
@width = width * @hp / @maxhp
end


Et voilà le travail.

Après la déclaration des variables, la construction de la jauge ( enfin vous allez me dire Laughing )

Nous allons créer un effet d'ombre ( en premier, priorité de superposition oblige ).
Pour cela nous allons créer un rectangle noir, grâce à la fonction fill_rect(x, y, width,height, color), qui s'applique à un Bitmap ( self.contents )

Nous allons le créer de façon à ce qu'il est une longueur égale à la longueur max. Comme ceci :

Code:
self.contents.fill_rect(x+2, y+2, width,height, noir)


ce qui nous donne pour l'instant :

Code:
def draw_jauge_hp(actor, x , y, width = 50, height = 6)
@hp = actor.hp
@maxhp = actor.maxhp
@width = width * @hp / @maxhp
self.contents.fill_rect(x+2, y+2, width,height, noir)
end


Le +2 après X et Y étant pour le décalage de l'ombre.


Nous allons ensuite créer une structure conditionnelle ( si une valeur est vrai, faire quelque chose, sinon faire autre chose ), ceci pour gérer le fait des HP bas.

donc après :

Code:
@width = width * @hp / @maxhp


mettre :
Code:

   if(@hp < (@maxhp*30/100))   # Si les HP sont en dessous de 30% du max, faire

   
   else    # sinon faire
   
   end  # fin


après le if, mettre :

Code:
self.contents.fill_rect(x, y, @width,height, low_hp_color)


=>Remplir un rectangle de coordonnée (x, y) de largeur @width, de hauteur height, et de couleur low_hp_color
==> HP BAS

Puis après else, mettre :


Code:
self.contents.fill_rect(x, y, @width,height, hp_color)


=>Remplir un rectangle de coordonnée (x, y) de largeur @width, de hauteur height, et de couleur low_hp_color
==> HP NORMAUX

ce qui donne au final :

Code:
def draw_jauge_hp(actor, x , y, width = 50, height = 6)
@hp = actor.hp
@maxhp = actor.maxhp
@width = width * @hp / @maxhp
self.contents.fill_rect(x+2, y+2, width,height, noir)
if(@hp < (@maxhp*30/100))   # Si les HP sont en dessous de 30% du max, faire
self.contents.fill_rect(x, y, @width,height, low_hp_color)   
   else    # sinon faire
   self.contents.fill_rect(x, y, @width,height, hp_color)
   end  # fin
end


Et voilà !!! Very Happy

Maintenant pour vérifier, allez dans le script Window_MenuStatus, et en dessous de :

Code:
draw_actor_hp(actor, x + 236, y + 32)


mettre :

Code:
draw_jauge_hp(actor, x + 270, y + 50, 96)


lancez le jeu, ouvrez le menu, et comtemplez ^^ lol, voici normalement ce que cela donne :




Bon, maintenant, il est vrai que ce script est loin d'être parfait, en effet, lorsque les personnage n'ont plus que quelques point de vie, il se peut, que la jauge soit vide... ce qui est embetant, mais je compte améliorer tout ça.
Il est aussi vrai que les jauges ne sont guère ésthétiques, mais bon... Rolling Eyes

Ce tuto est pour les HP,mais avec un peu d'imagination, on peut très bien l'adpater. ( Pareil si on veut faire intervenir une variable de jeu => $game_switches[]... )

Maintenant, s'il y a des questions, des erreurs dans le tuto, merci de m'en faire part ^^

Voilà

_________________
Rpg Memory Ville
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://memory.forumsrpg.com
 

[Tuto Script) Créer des jauges Hp, tout en ruby

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Memory Of Making :: Tutoriaux :: Tuto a Gogo-