AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

Partagez
 

 [VX] BattleDamage

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
romu
Poulet carnivore Lv.2
Poulet carnivore Lv.2
romu


Inscrit le : 27/01/2010
Messages : 12

[VX] BattleDamage Empty
MessageSujet: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 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 Wink
A+
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 42
Inscrit le : 26/05/2008
Messages : 2360

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 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.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
romu
Poulet carnivore Lv.2
Poulet carnivore Lv.2
romu


Inscrit le : 27/01/2010
Messages : 12

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 27 Jan 2010 - 17:07

J'irai ! C'est juste que je n'ai pas le net à plein temps..

A bientôt.
Revenir en haut Aller en bas
Kamachi-Kuno
Seigneur Lv.18
Seigneur Lv.18
Kamachi-Kuno


Masculin Age : 31
Inscrit le : 06/06/2008
Messages : 2005

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 27 Jan 2010 - 18:21

Tu pourras mettre un screen quand tu auras le temps ? Ça marche sur les A-RPG ?

Merci !
Revenir en haut Aller en bas
Arty'
Modérateur
Modérateur
Arty'


Masculin Age : 134
Inscrit le : 14/04/2009
Messages : 1321

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 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
Revenir en haut Aller en bas
romu
Poulet carnivore Lv.2
Poulet carnivore Lv.2
romu


Inscrit le : 27/01/2010
Messages : 12

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 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 Smile Un coup de -500 infligé à un ennemi le soigne de 500 points Smile

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à Smile
A+
Revenir en haut Aller en bas
Kamachi-Kuno
Seigneur Lv.18
Seigneur Lv.18
Kamachi-Kuno


Masculin Age : 31
Inscrit le : 06/06/2008
Messages : 2005

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 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.
Revenir en haut Aller en bas
romu
Poulet carnivore Lv.2
Poulet carnivore Lv.2
romu


Inscrit le : 27/01/2010
Messages : 12

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 28 Jan 2010 - 16:41

Si le script Tankentai est présent sur le forum Smile
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é Smile

Voilà !
Revenir en haut Aller en bas
Dark Raviel
Croisé Lv.14
Croisé Lv.14
avatar


Masculin Age : 34
Inscrit le : 03/03/2009
Messages : 1141

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 28 Jan 2010 - 18:00

Es tu sur que ce script est de toi parce que les commentaires sont anglais....
Revenir en haut Aller en bas
http://aigledor1989.forumpro.fr/forum.htm
Blockade
Ex-Admin Cruelle
Ex-Admin Cruelle
Blockade


Féminin Age : 32
Inscrit le : 03/07/2008
Messages : 2441

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 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.
Revenir en haut Aller en bas
iSquall xX
Poulet trizo Lv.3
Poulet trizo Lv.3
iSquall xX


Masculin Age : 31
Inscrit le : 24/01/2010
Messages : 40

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 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 Very Happy
Revenir en haut Aller en bas
jebbou
Doyen
Doyen
jebbou


Masculin Age : 46
Inscrit le : 20/08/2008
Messages : 2485

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 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)
Revenir en haut Aller en bas
Blockade
Ex-Admin Cruelle
Ex-Admin Cruelle
Blockade


Féminin Age : 32
Inscrit le : 03/07/2008
Messages : 2441

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 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 ?
Revenir en haut Aller en bas
romu
Poulet carnivore Lv.2
Poulet carnivore Lv.2
romu


Inscrit le : 27/01/2010
Messages : 12

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 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 ! Razz
Revenir en haut Aller en bas
Blockade
Ex-Admin Cruelle
Ex-Admin Cruelle
Blockade


Féminin Age : 32
Inscrit le : 03/07/2008
Messages : 2441

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 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
Revenir en haut Aller en bas
romu
Poulet carnivore Lv.2
Poulet carnivore Lv.2
romu


Inscrit le : 27/01/2010
Messages : 12

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 28 Jan 2010 - 20:53

Ca m'aura fait l'occasion d'expliquer le script.
Excuses acceptés, pas de problème.

Smile
Revenir en haut Aller en bas
Dark Raviel
Croisé Lv.14
Croisé Lv.14
avatar


Masculin Age : 34
Inscrit le : 03/03/2009
Messages : 1141

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeJeu 28 Jan 2010 - 22:29

Mouais enfin mettre les commentaire en francais pour configurer le scripts serait fort aimable quand même.
Revenir en haut Aller en bas
http://aigledor1989.forumpro.fr/forum.htm
Blockade
Ex-Admin Cruelle
Ex-Admin Cruelle
Blockade


Féminin Age : 32
Inscrit le : 03/07/2008
Messages : 2441

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeVen 29 Jan 2010 - 17:24

Y'a rien à configurer m'enfin bon... Sujet clos.
Revenir en haut Aller en bas
RPGMAKER01
Poulet Lv.1
Poulet Lv.1
RPGMAKER01


Masculin Age : 32
Inscrit le : 02/01/2011
Messages : 3

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeDim 2 Jan 2011 - 14:37

Merci!! il marche ce script!!!
Revenir en haut Aller en bas
Blood-sy
Poulet Lv.1
Poulet Lv.1
Blood-sy


Masculin Age : 32
Inscrit le : 15/05/2011
Messages : 2

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeDim 15 Mai 2011 - 13:23

Merci ,ce script est pas mal je trouve que sa donne un petit plus au combats
Revenir en haut Aller en bas
shinnosuke
Va-nu-pieds Lv.4
Va-nu-pieds Lv.4
shinnosuke


Masculin Age : 27
Avertissements : 3
Inscrit le : 01/04/2011
Messages : 57

[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitimeMer 15 Juin 2011 - 12:54


Très bon script. Merci pour le partage. Salut !!
Revenir en haut Aller en bas
Contenu sponsorisé




[VX] BattleDamage Empty
MessageSujet: Re: [VX] BattleDamage   [VX] BattleDamage Icon_minitime

Revenir en haut Aller en bas
 

[VX] BattleDamage

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
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Combat-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit