FAQRechercherPortailAccueilAccueilForumPraline au mielS'enregistrerConnexionMembres


Partagez
 

 [xp] Script affichage dégats

Aller en bas 
AuteurMessage
tfkmaster

tfkmaster

Messages : 2009


[xp] Script affichage dégats Empty
MessageSujet: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMar 11 Mai - 10:06

Voilà le Script pour modifier le type d'affichage de dégats (animation, police d'écriture, effet quand critique etc...)
*J'ai pas vraiment de screen donc bon... a essayer*
Le Script est pour RPG MAKER XP et a été créer par Corbaque

Code:
#Installation : Ouvrez l'éditeur de scripts (F11) et créez un nouveau script au dessus de "Main" et
#nommez le "Sprite" et collez le code ci-dessous :

#===================================
# Créé par Corbaque
#---------------------------------------------------------------
# Le 19/08/2006
#---------------------------------------------------------------
# Modification de l'affichage des dégats
#---------------------------------------------------------------
# Version 1.0
#===================================
module RPG
  # ces trois constantes sont modifiables
  POLICE_DES_LETTRES = "Arial"
  COULEUR_DES_LETTRES = Color.new(255, 255, 255)
  COULEUR_DU_CONTOUR = Color.new(0, 0, 0)
  # Modification de la classe sprite
  class Sprite < ::Sprite
    @@_animations = []
    @@_reference_count = {}
    def initialize(viewport = nil)
      super(viewport)
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
      @_damage_duration = 0
      @_animation_duration = 0
      @_blink = false
    end
    def dispose
      dispose_damage
      dispose_animation
      dispose_loop_animation
      super
    end
    def whiten
      self.blend_type = 0
      self.color.set(255, 255, 255, 128)
      self.opacity = 255
      @_whiten_duration = 16
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
    end
    def appear
      self.blend_type = 0
      self.color.set(0, 0, 0, 0)
      self.opacity = 0
      @_appear_duration = 16
      @_whiten_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
    end
    def escape
      self.blend_type = 0
      self.color.set(0, 0, 0, 0)
      self.opacity = 255
      @_escape_duration = 32
      @_whiten_duration = 0
      @_appear_duration = 0
      @_collapse_duration = 0
    end
    def collapse
      self.blend_type = 1
      self.color.set(255, 64, 64, 255)
      self.opacity = 255
      @_collapse_duration = 48
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
    end
    #-----------------------------------------------------------
    # Redéfinition de la methode damage
    #-----------------------------------------------------------
    def damage(value, critical)
      # Suprimme le dernière affichage de
      # dommage si ce n'est pas fait
      dispose_damage
      # Transforme la valeur en chaine de caractère
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      # définition du bitmap
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = POLICE_DES_LETTRES
      bitmap.font.size = 32
      bitmap.font.color = COULEUR_DU_CONTOUR
      bitmap.draw_text(-1, 12, 160, 36, damage_string, 1)
      bitmap.draw_text(0, 13, 160, 36, damage_string, 1)
      bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
      bitmap.draw_text(1, 12, 160, 36, damage_string, 1)
      if value.is_a?(Numeric) and value < 0
        bitmap.font.color.set(176, 255, 144)
      else
        bitmap.font.color = COULEUR_DES_LETTRES
      end
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      if critical
        bitmap.font.size = 20
        bitmap.font.color = COULEUR_DU_CONTOUR
        bitmap.draw_text(-1, -1, 160, 20, "COUP CRITIQUE", 1)
        bitmap.draw_text(+1, -1, 160, 20, "COUP CRITIQUE", 1)
        bitmap.draw_text(-1, +1, 160, 20, "COUP CRITIQUE", 1)
        bitmap.draw_text(+1, +1, 160, 20, "COUP CRITIQUE", 1)
        bitmap.font.color = COULEUR_DES_LETTRES
        bitmap.draw_text(0, 0, 160, 20, "COUP CRITIQUE", 1)
      end
      # Définition du sprite
      @_damage_sprite = ::Sprite.new(self.viewport)
      @_damage_sprite.bitmap = bitmap
      @_damage_sprite.ox = 80
      @_damage_sprite.oy = 20
      @_damage_sprite.x = self.x
      @_damage_sprite.y = self.y - self.oy / 2
      @_damage_sprite.z = 3000
      @_damage_sprite.zoom_x = 0
      @_damage_sprite.zoom_y = 0
      @_damage_duration = 40
    end
    def animation(animation, hit)
      dispose_animation
      @_animation = animation
      return if @_animation == nil
      @_animation_hit = hit
      @_animation_duration = @_animation.frame_max
      animation_name = @_animation.animation_name
      animation_hue = @_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_animation_sprites = []
      if @_animation.position != 3 or not @@_animations.include?(animation)
        for i in 0..15
          sprite = ::Sprite.new(self.viewport)
          sprite.bitmap = bitmap
          sprite.visible = false
          @_animation_sprites.push(sprite)
        end
        unless @@_animations.include?(animation)
          @@_animations.push(animation)
        end
      end
      update_animation
    end
    def loop_animation(animation)
      return if animation == @_loop_animation
      dispose_loop_animation
      @_loop_animation = animation
      return if @_loop_animation == nil
      @_loop_animation_index = 0
      animation_name = @_loop_animation.animation_name
      animation_hue = @_loop_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_loop_animation_sprites = []
      for i in 0..15
        sprite = ::Sprite.new(self.viewport)
        sprite.bitmap = bitmap
        sprite.visible = false
        @_loop_animation_sprites.push(sprite)
      end
      update_loop_animation
    end
    def dispose_damage
      if @_damage_sprite != nil
        @_damage_sprite.bitmap.dispose
        @_damage_sprite.dispose
        @_damage_sprite = nil
        @_damage_duration = 0
      end
    end
    def dispose_animation
      if @_animation_sprites != nil
        sprite = @_animation_sprites[0]
        if sprite != nil
          @@_reference_count[sprite.bitmap] -= 1
          if @@_reference_count[sprite.bitmap] == 0
            sprite.bitmap.dispose
          end
        end
        for sprite in @_animation_sprites
          sprite.dispose
        end
        @_animation_sprites = nil
        @_animation = nil
      end
    end
    def dispose_loop_animation
      if @_loop_animation_sprites != nil
        sprite = @_loop_animation_sprites[0]
        if sprite != nil
          @@_reference_count[sprite.bitmap] -= 1
          if @@_reference_count[sprite.bitmap] == 0
            sprite.bitmap.dispose
          end
        end
        for sprite in @_loop_animation_sprites
          sprite.dispose
        end
        @_loop_animation_sprites = nil
        @_loop_animation = nil
      end
    end
    def blink_on
      unless @_blink
        @_blink = true
        @_blink_count = 0
      end
    end
    def blink_off
      if @_blink
        @_blink = false
        self.color.set(0, 0, 0, 0)
      end
    end
    def blink?
      @_blink
    end
    def effect?
      @_whiten_duration > 0 or
      @_appear_duration > 0 or
      @_escape_duration > 0 or
      @_collapse_duration > 0 or
      @_damage_duration > 0 or
      @_animation_duration > 0
    end
    #-----------------------------------------------------------
    # Redéfinition de la methode update
    #-----------------------------------------------------------
    def update
      # Appel la class superieur (::Sprite)
      super
      #################################
      #      Mise à jour des autres éléments        #
      #################################
      if @_whiten_duration > 0
        @_whiten_duration -= 1
        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
      end
      if @_appear_duration > 0
        @_appear_duration -= 1
        self.opacity = (16 - @_appear_duration) * 16
      end
      if @_escape_duration > 0
        @_escape_duration -= 1
        self.opacity = 256 - (32 - @_escape_duration) * 10
      end
      if @_collapse_duration > 0
        @_collapse_duration -= 1
        self.opacity = 256 - (48 - @_collapse_duration) * 6
      end
      #################################
      # Mouvement du sprite
      if @_damage_duration > 0
        @_damage_duration -= 1
        case @_damage_duration
        when 28..39
          # Modification de la position du sprite
          @_damage_sprite.x += 30 * Math.cos(@_damage_duration * Math::PI / 5)
          @_damage_sprite.y += 15 * Math.sin(@_damage_duration * Math::PI / 5)
          @_damage_sprite.zoom_x += 0.1
          @_damage_sprite.zoom_y += 0.1
        end
        # fondu d'opacitée
        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
        # supprime le sprite si l'effet est terminé
        if @_damage_duration == 0
          dispose_damage
        end
      end
      #################################
      #      Mise à jour des autres éléments        #
      #################################
      if @_animation != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration -= 1
        update_animation
      end
      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
        update_loop_animation
        @_loop_animation_index += 1
        @_loop_animation_index %= @_loop_animation.frame_max
      end
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
      #################################
    end
    def update_animation
      if @_animation_duration > 0
        frame_index = @_animation.frame_max - @_animation_duration
        cell_data = @_animation.frames[frame_index].cell_data
        position = @_animation.position
        animation_set_sprites(@_animation_sprites, cell_data, position)
        for timing in @_animation.timings
          if timing.frame == frame_index
            animation_process_timing(timing, @_animation_hit)
          end
        end
      else
        dispose_animation
      end
    end
    def update_loop_animation
      frame_index = @_loop_animation_index
      cell_data = @_loop_animation.frames[frame_index].cell_data
      position = @_loop_animation.position
      animation_set_sprites(@_loop_animation_sprites, cell_data, position)
      for timing in @_loop_animation.timings
        if timing.frame == frame_index
          animation_process_timing(timing, true)
        end
      end
    end
    def animation_set_sprites(sprites, cell_data, position)
      for i in 0..15
        sprite = sprites[i]
        pattern = cell_data[i, 0]
        if sprite == nil or pattern == nil or pattern == -1
          sprite.visible = false if sprite != nil
          next
        end
        sprite.visible = true
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
        if position == 3
          if self.viewport != nil
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
          else
            sprite.x = 320
            sprite.y = 240
          end
        else
          sprite.x = self.x - self.ox + self.src_rect.width / 2
          sprite.y = self.y - self.oy + self.src_rect.height / 2
          sprite.y -= self.src_rect.height / 4 if position == 0
          sprite.y += self.src_rect.height / 4 if position == 2
        end
        sprite.x += cell_data[i, 1]
        sprite.y += cell_data[i, 2]
        sprite.z = 2000
        sprite.ox = 96
        sprite.oy = 96
        sprite.zoom_x = cell_data[i, 3] / 100.0
        sprite.zoom_y = cell_data[i, 3] / 100.0
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
        sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
        sprite.blend_type = cell_data[i, 7]
      end
    end
    def animation_process_timing(timing, hit)
      if (timing.condition == 0) or
        (timing.condition == 1 and hit == true) or
        (timing.condition == 2 and hit == false)
        if timing.se.name != ""
          se = timing.se
          Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
        end
        case timing.flash_scope
        when 1
          self.flash(timing.flash_color, timing.flash_duration * 2)
        when 2
          if self.viewport != nil
            self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
          end
        when 3
          self.flash(nil, timing.flash_duration * 2)
        end
      end
    end
    def x=(x)
      sx = x - self.x
      if sx != 0
        if @_animation_sprites != nil
          for i in 0..15
            @_animation_sprites[i].x += sx
          end
        end
        if @_loop_animation_sprites != nil
          for i in 0..15
            @_loop_animation_sprites[i].x += sx
          end
        end
      end
      super
    end
    def y=(y)
      sy = y - self.y
      if sy != 0
        if @_animation_sprites != nil
          for i in 0..15
            @_animation_sprites[i].y += sy
          end
        end
        if @_loop_animation_sprites != nil
          for i in 0..15
            @_loop_animation_sprites[i].y += sy
          end
        end
      end
      super
    end
  end
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Aenki
   
   
Aenki

Messages : 6951


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMar 11 Mai - 12:09

Je renomme le titre du topic !

RAPPEL: Un script par topic pour se retrouver
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Magicalichigo
   
   
Magicalichigo

Messages : 3283


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMar 11 Mai - 17:47

ah oui je le reconnais celui-la ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kaila
  
  
Kaila

Messages : 4254


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMar 11 Mai - 18:31

Faudrait peut être mettre une ou deux images pour qu'on voie un peu le résultat du truc...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tfkmaster

tfkmaster

Messages : 2009


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMar 11 Mai - 21:24

Je l'avait mit sur Oniro mais j'ai pas de screen, je vais voir si j'en fait, sinon je ferait p'tet une vidéo.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Magicalichigo
   
   
Magicalichigo

Messages : 3283


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 11:38

ouai une vidéo se serait cool
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Organ

Organ

Messages : 700


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 18:53

RMD concerne juste rm XP ou toutes les versions ?
Parceque si ça concerne tous, tu devrais faire des section VX, Xp ... histoire que ce soit un peu plus compréhensible... merci ... Gros sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Aenki
   
   
Aenki

Messages : 6951


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 18:56

Pk, je verrai ça Clin d\'oeil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Organ

Organ

Messages : 700


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 18:58

Citation :
Pk, je verrai ça
Ben, c'est juste une suggestion au passage... pour éviter de chercher pendant 2 heures une ressources spécifiques, Gros sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Aenki
   
   
Aenki

Messages : 6951


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 18:59

Euh... je voulais mettre ok Clin d\'oeil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Organ

Organ

Messages : 700


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 19:01

Ah...
Je croyais que tu disais "pourquoi je ferais ça? "
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Magicalichigo
   
   
Magicalichigo

Messages : 3283


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeMer 12 Mai - 21:35

j'avais compris pareil que toi alka ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Organ

Organ

Messages : 700


[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitimeVen 14 Mai - 18:09

Alors!
Tu vois Slup, "fondateur" n'est qu'une voile en faite ! [xp] Script affichage dégats 245119 [/\o/]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




[xp] Script affichage dégats Empty
MessageSujet: Re: [xp] Script affichage dégats   [xp] Script affichage dégats Icon_minitime

Revenir en haut Aller en bas
 
[xp] Script affichage dégats
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Affichage d'un script à un endroit précis
» Problème d'affichage d'un script avec un code CSS.
» Affichage Quick times
» Réglages des parametres d'affichage
» Affichage des détails cartographiques

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker Détente :: Entrepôt :: Scripts :: Scripts Xp-
Sauter vers: