Eldiablo Admin Supprême


Nombre de messages: 11 Date d'inscription: 13/08/2007
 | Sujet: [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  ) Forum : Rpg Maker Legende ( ni Ciberphile  ) ---------------------------------------------------------------------------------- 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_Base1è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 :
-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 )
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à !!!
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... 
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à |
|