|
Auteur | Message |
---|
Poulet carnivore Lv.2
Inscrit le : 27/01/2010 Messages : 12
| Sujet: [VX] BattleDamage Mer 27 Jan 2010 - 16:41 | |
| Salut à tous ! Ceci est un script permettant d'afficher les dommages reçus/données durant un combat. Un peu à la manière de FF ou Wow (par exemple...). J'ai cherché sur le net et je n'ai rien trouvé de semblable, alors je me suis mis à le coder. - Code:
-
#============================================================================== # ** BattleDamage ** #------------------------------------------------------------------------------ # A simple script showing battle damages. # Tested under RPG Maker VX # mailto: romuald.dub@gmail.com # Feel free to send comments and fixes. #============================================================================== #============================================================================== # ** Sprite_Damage #------------------------------------------------------------------------------ # This sprite is used to display the damage count, It automatically changes # color during battle. #============================================================================== class Sprite_Damage < Sprite #-------------------------------------------------------------------------- # * Object Initialization # viewport : viewport #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) @effect_duration = 128 self.bitmap = Bitmap.new(88, 48) self.bitmap.font.name = "Impact" self.x = (544 / 2 - 16) # center x self.z = 200 update end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose self.bitmap.dispose super end #-------------------------------------------------------------------------- # * Set Damage #-------------------------------------------------------------------------- def set_damage(target, val) @effect_duration = 128 self.bitmap.clear
if val < 0 if target.actor? self.y = (416 / 2 - 16) # center y else self.y = 0 end self.bitmap.font.color.set(128, 255, 128) # recovery color val = val.abs elsif val > 0 if target.actor? self.y = (416 / 2 - 16) # center y self.bitmap.font.color.set(255, 255, 0) # ennemy attack color else self.y = 0 self.bitmap.font.color.set(255, 255, 255) # actor attack color end else return end if target.critical self.bitmap.font.size = 46 else self.bitmap.font.size = 32 end
self.bitmap.draw_text(self.bitmap.rect, val) end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update super if @effect_duration > 0 @effect_duration -= 1 end self.opacity = 256 - (32 - @effect_duration) * 10 end end #============================================================================== # ** Spriteset_Battle #------------------------------------------------------------------------------ # This class brings together battle screen sprites. It's used within the # Scene_Battle class. #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize create_viewports create_battleback create_battlefloor create_enemies create_actors create_pictures @damage_sprite = Sprite_Damage.new(@viewport1) create_timer update end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose dispose_battleback_bitmap dispose_battleback dispose_battlefloor dispose_enemies dispose_actors dispose_pictures @damage_sprite.dispose dispose_timer dispose_viewports end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update update_battleback update_battlefloor update_enemies update_actors update_pictures update_timer @damage_sprite.update update_viewports end #-------------------------------------------------------------------------- # * Set Damage #-------------------------------------------------------------------------- def set_damage(target, val) @damage_sprite.set_damage(target, val) end end #============================================================================== # ** Scene_Battle #------------------------------------------------------------------------------ # This class performs battle screen processing. #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # * Show HP Damage # target : Target # obj : Skill or item #-------------------------------------------------------------------------- def display_hp_damage(target, obj = nil) if target.hp_damage == 0 # No damage return if obj != nil and obj.damage_to_mp return if obj != nil and obj.base_damage == 0 fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage text = sprintf(fmt, target.name) elsif target.absorbed # Absorb fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage) elsif target.hp_damage > 0 # Damage if target.actor? text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage) Sound.play_actor_damage $game_troop.screen.start_shake(5, 5, 10) else text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage) Sound.play_enemy_damage target.blink = true end else # Recovery fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage) Sound.play_recovery end @message_window.add_instant_text(text) @spriteset.set_damage(target, target.hp_damage) # display hp damage end #-------------------------------------------------------------------------- # * Show MP Damage # target : Target # obj : Skill or item #-------------------------------------------------------------------------- def display_mp_damage(target, obj = nil) return if target.dead? return if target.mp_damage == 0 if target.absorbed # Absorb fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain text = sprintf(fmt, target.name, Vocab::mp, target.mp_damage) elsif target.mp_damage > 0 # Damage fmt = target.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss text = sprintf(fmt, target.name, Vocab::mp, target.mp_damage) else # Recovery fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery text = sprintf(fmt, target.name, Vocab::mp, -target.mp_damage) Sound.play_recovery end @message_window.add_instant_text(text) @spriteset.set_damage(target, target.mp_damage) # display mp damage end end
J'aprécierai des commentaires si il marche, ce que j'espère A+ |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: [VX] BattleDamage Mer 27 Jan 2010 - 16:43 | |
| Merci du partage, mais ce serait bien d'aller te présenté selon les règles dans la section approprié merci. |
|
| |
Poulet carnivore Lv.2
Inscrit le : 27/01/2010 Messages : 12
| Sujet: Re: [VX] BattleDamage Mer 27 Jan 2010 - 17:07 | |
| J'irai ! C'est juste que je n'ai pas le net à plein temps..
A bientôt. |
|
| |
Seigneur Lv.18
Age : 31 Inscrit le : 06/06/2008 Messages : 2005
| Sujet: Re: [VX] BattleDamage Mer 27 Jan 2010 - 18:21 | |
| Tu pourras mettre un screen quand tu auras le temps ? Ça marche sur les A-RPG ?
Merci ! |
|
| |
Age : 134 Inscrit le : 14/04/2009 Messages : 1321
| Sujet: Re: [VX] BattleDamage Mer 27 Jan 2010 - 18:24 | |
| Mais.... Les dommages donnés/reçus ne sont-ils pas déjà affichés? Meme dans le système de base (EDIT: Nan, ils sont écris dans un message ^^)? Dans le Sbs, par exemple? Arty |
|
| |
Poulet carnivore Lv.2
Inscrit le : 27/01/2010 Messages : 12
| Sujet: Re: [VX] BattleDamage Mer 27 Jan 2010 - 20:40 | |
| Salut ! J'ai été un peu vite pour la présentation. Ce script s'insert avant le main. Je l'ai testé avec quelques scripts de combat de vue de côté et ça marche. En gros quand on inflige ou reçoit des dégâts/soins il affiche au milieu de l'écran la valeur. En changeant de couleur selon que ce soit des dégâts/soins de l'ennemi ou de l'actor. Pour info les soins sont des dégâts négatifs Un coup de -500 infligé à un ennemi le soigne de 500 points Sinon je ne sait pas ce qu'est un A-RPG ? J'ai découvert il y quelques heures Tankentai : C'est superbe ! Ce script ne rivalise pas, bien entendu... Voilà A+ |
|
| |
Seigneur Lv.18
Age : 31 Inscrit le : 06/06/2008 Messages : 2005
| Sujet: Re: [VX] BattleDamage Mer 27 Jan 2010 - 21:43 | |
| Tu peux poster le script "Tankentai" si il n'est pas présent sur ce forum si tu le souhaite. (En mettant l'auteur bien sur).
A-RPG = Action-RPG, le personnage attaque directement sur la map, comme Legend of Zelda. |
|
| |
Poulet carnivore Lv.2
Inscrit le : 27/01/2010 Messages : 12
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 16:41 | |
| Si le script Tankentai est présent sur le forum Avec une bonne présentation et tout... Pas besoin de le refaire. Pour les A-RPG (de type Zelda ça me parle plus) ce script ne se lance pas. Il est appelé par la classe Scene_Battle donc en gros des que ça fait *PSHHHHHIT* et que les monstres et le menu du combat est affiché Voilà ! |
|
| |
Croisé Lv.14
Age : 34 Inscrit le : 03/03/2009 Messages : 1141
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 18:00 | |
| Es tu sur que ce script est de toi parce que les commentaires sont anglais.... |
|
| |
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 18:51 | |
| Euh oui j'ai du mal à le croire aussi...
A mon avis c'pas toi "romuald.dub@gmail.com"... Si tu plagie le travail de quelqu'un d'autre tu gagne 2 avertissements. |
|
| |
Poulet trizo Lv.3
Age : 31 Inscrit le : 24/01/2010 Messages : 40
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 19:33 | |
| Moi aussi cela m'a sembler bizarre que ce soit écit en français mais je sait qu'il y a des scripteurs qui script en Anglais même si il parle français ( bizare xD ), en tout cas à voir car c'est quand même bizarre :/ Merci quand même pour le partage je vais tester |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 19:38 | |
| Je commente mes trucs en Anglais quand je code pour moi.
Toi tu viens de l'autre côté de la mer, lui il semble on ne peut plus français si j'en crois son IP x) |
|
| |
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 19:54 | |
| Okay, immaginons. Alors j'ai une question pour lui. Pourquoi t'a mis "fmt" en variable ? c'est pour quoi ? La signification ? |
|
| |
Poulet carnivore Lv.2
Inscrit le : 27/01/2010 Messages : 12
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 20:27 | |
| Waou ! Bon, pour info oui c'est moi qui l'ai fait. J'ai écrit en anglais car la prog et le français = bof. Pour la colle fmt viens de format. Et ensuite 95% du code viens de RPG Maker lui-même ! Donc tout en anglais. Cela s'appel le surclassage quand on se sert d'une classe déjà existante pour y rajouter du code. C'est comme ça qu'on fait un script. Les variables fmt et autres viennent de RPG Maker, je ne l'ai ai pas rajoutées. Si tu veux je peut expliquer le code de A à Z, mais si on peut éviter... Ce code m'à pris une bonne soirée à faire, ca casse pas des briques. Mais je ne l'ai pas pompé !!! EDIT: Je vais expliquer le code : Quand RPG Maker lance un combat, il fait appel à la classe Scene_Battle (hérite de Scene_Base), c'est elle qui s'occupe d'effectuer un coup, utiliser un skill, un item, etc... Cette classe appel une autre classe pour l'affichage des différents sprites : Spriteset_Battle On y trouve la gestion pour les sprites des monstres, des menus, de l'actor et du timer. Les monstres (ennemy), les actors et le timers ont une classe differente. Ce que j'ai fait c'est créer un nouvel objet et crée ma classe pour les damages. Donc voilà tout ce code là je ne l'ai pas écrit, j'ai juste rajouté une ligne ou deux pour que mon code fonctionne. La classe que j'ai crée est Sprite_Damage. Elle contiens quelques méthodes : - initialize : initialisation des variables, création d'une Bitmap pour accueillir les chiffres des dommages. - dispose : on libère la mémoire du Bitmap - set_damage : on change la couleur selon que ce soit l'ennemy ou l'actor et que ce soit un dégat ou un soin. On change la taille si c'est un critique, et on rempli le Bitmap - update : affichage de la Bitmap à l'écran avec une petite boucle pour le fade out. And my english is quite good, at least I can comment my own code ! |
|
| |
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 20:50 | |
| Autant pour moi, c'ma faute désolée d'avoir douté xD
11 points en script du coup , pour m'excuser !
Dernière édition par Blockade le Ven 29 Jan 2010 - 17:25, édité 1 fois |
|
| |
Poulet carnivore Lv.2
Inscrit le : 27/01/2010 Messages : 12
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 20:53 | |
| Ca m'aura fait l'occasion d'expliquer le script. Excuses acceptés, pas de problème. |
|
| |
Croisé Lv.14
Age : 34 Inscrit le : 03/03/2009 Messages : 1141
| Sujet: Re: [VX] BattleDamage Jeu 28 Jan 2010 - 22:29 | |
| Mouais enfin mettre les commentaire en francais pour configurer le scripts serait fort aimable quand même. |
|
| |
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: [VX] BattleDamage Ven 29 Jan 2010 - 17:24 | |
| Y'a rien à configurer m'enfin bon... Sujet clos. |
|
| |
Poulet Lv.1
Age : 32 Inscrit le : 02/01/2011 Messages : 3
| Sujet: Re: [VX] BattleDamage Dim 2 Jan 2011 - 14:37 | |
| Merci!! il marche ce script!!! |
|
| |
Poulet Lv.1
Age : 32 Inscrit le : 15/05/2011 Messages : 2
| Sujet: Re: [VX] BattleDamage Dim 15 Mai 2011 - 13:23 | |
| Merci ,ce script est pas mal je trouve que sa donne un petit plus au combats |
|
| |
Va-nu-pieds Lv.4
Age : 27 Avertissements : 3 Inscrit le : 01/04/2011 Messages : 57
| Sujet: Re: [VX] BattleDamage Mer 15 Juin 2011 - 12:54 | |
| Très bon script. Merci pour le partage. |
|
| |
| Sujet: Re: [VX] BattleDamage | |
| |
|
| |
|