Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment :
Jeux, jouets et Lego : le deuxième à ...
Voir le deal

Partagez
 

 [XP] Afficher les dégats en combat

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
[XP] Afficher les dégats en combat 8915271400100 / 100100 / 100[XP] Afficher les dégats en combat 8915271400

[XP] Afficher les dégats en combat Pater_10
[XP] Afficher les dégats en combat Staffe10
[XP] Afficher les dégats en combat Mythe_10
[XP] Afficher les dégats en combat Membre11
[XP] Afficher les dégats en combat Doyen10
[XP] Afficher les dégats en combat Scanar10
[XP] Afficher les dégats en combat Compos10
[XP] Afficher les dégats en combat Testeu10
[XP] Afficher les dégats en combat Membre15
[XP] Afficher les dégats en combat Partag10
[XP] Afficher les dégats en combat Projet10
[XP] Afficher les dégats en combat Projet16
[XP] Afficher les dégats en combat Riche_10
[XP] Afficher les dégats en combat Travai10
[XP] Afficher les dégats en combat Collec10
[XP] Afficher les dégats en combat Collec11
[XP] Afficher les dégats en combat Collec12
[XP] Afficher les dégats en combat Collec13
[XP] Afficher les dégats en combat Connar10


[XP] Afficher les dégats en combat Empty
MessageSujet: [XP] Afficher les dégats en combat   [XP] Afficher les dégats en combat EmptySam 25 Oct 2008 - 12:03

Une petite modif de l'affichage des dégats plus la possibilitée de changer la police d'écriture ainsi que la couleur et la couleur du contour.
Je vous laisse découvrir le nouvelle effet (qui donne trés bien)
Sans plus attendre voila le script !


Nommez le 'Sprite' :


Code:
#===================================
# 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
https://www.ledijonshow.fr https://twitter.com/EleKoptes
axel4
Ancien staffeux
Ancien staffeux
axel4

Masculin
Messages postés : 684
Date d'inscription : 31/08/2008
Jauge LPC :
[XP] Afficher les dégats en combat 891527140032 / 10032 / 100[XP] Afficher les dégats en combat 8915271400


[XP] Afficher les dégats en combat Empty
MessageSujet: Re: [XP] Afficher les dégats en combat   [XP] Afficher les dégats en combat EmptyLun 27 Oct 2008 - 0:55

Cool ton script mais normal que des smileys se balade dedans ^^
Revenir en haut Aller en bas
http://rpgmakerboss.idoo.com
 
[XP] Afficher les dégats en combat
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Calcul du système de dégâts
» Calculateur de dégats (RMVX)
» [XP] Afficher le nom de la map.
» [VX] Afficher le nom de la map.
» [XP] Afficher le nom de la map

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Combat-
Sauter vers: