Oniromancie: Scripts - Dégats (affichage amélioré)


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (28 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

72 connectés actuellement

9262692 visiteurs
depuis l'ouverture

865 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

La maison des Makers

RPG Maker Universe

RMXP Forum

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Dégats (affichage amélioré)
Script pour RPG Maker XP
Ecrit par tfkmaster

Voici la Citation:


Portion de 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
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.x += sx
end
end
if @_loop_animation_sprites != nil
for i in 0..15
@_loop_animation_sprites.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.y += sy
end
end
if @_loop_animation_sprites != nil
for i in 0..15
@_loop_animation_sprites.y += sy
end
end
end
super
end
end
end


Si il y a le moindre souci dans le script, MP moi.:biere


Exemples - posté le 23/02/2010 à 10:58:34. (2019 messages postés)

Pff.

A quoi ça sert?
Y'aurait pas un pt'it screen?
RPG XP ou VX?
Une petite description serait la bienvenue, je pense. :hihi

Bouh.


Lufia - posté le 23/02/2010 à 11:09:26. (5792 messages postés)

Un Oniromancien. PVs 1, Attaque 0, Défense 0.

Ce genre de commentaire commence à me saouler. Le script est dans la section XP et y'a une description juste en dessous de son titre sur la page des scripts.

Une signature ? Pour quoi faire ?


Rockmik - posté le 23/02/2010 à 11:41:55. (12633 messages postés) - honor

exemples a dit:

A quoi ça sert?
Y'aurait pas un pt'it screen?
RPG XP ou VX?
Une petite description serait la bienvenue, je pense.


Un ban pour montrer l'exemple ? :F


Navarro - posté le 23/02/2010 à 11:54:05. (56317 messages postés) - admin

Vive le making libre

Les gens sont tellement habituer qu'on leurs donne des captures d'écran, qu'on fasse leurs boulots à leurs places, qu'on fasse de l'assistanat, qu'ils ne sont plus capables de copier coller un vulgaire script pour voir si c'est compatible, et les effets de la chose !

VDM !

Pixner|Offgame | Le comptoire des clikeurs


Exemples - posté le 23/02/2010 à 14:38:19. (2019 messages postés)

Pff.

Ohlala c'est bon! J'ai le droit de savoir non? :hum
On est bani quand on demande une description plus claire?

Citation:

Les gens sont tellement habituer qu'on leurs donne des captures d'écran, qu'on fasse leurs boulots à leurs places, qu'on fasse de l'assistanat, qu'ils ne sont plus capables de copier coller un vulgaire script pour voir si c'est compatible, et les effets de la chose !

Je ne demande pas qu'on m'assiste, mais qu'on m'explique en détail à quoi sert le script.
Tout ceci sans animosité aucune, bien sur :)

Bouh.


tfkmaster - posté le 23/02/2010 à 16:04:09. (238 messages postés)

S.T.A.L.K.E.R for the life

Désolé mais je n'ai pas de screen et puis ca ne servirait pas à grand chose pour montrer le changement d'animation, mais cela pourrais être utile pour le changement de couleur ou de police, donc je n'en vois pas l'utilité


Exemples - posté le 23/02/2010 à 16:35:38. (2019 messages postés)

Pff.

Merci quand même ;)

Bouh.


Zeus81 - posté le 23/02/2010 à 17:02:40. (11072 messages postés)

Le truc Lufia c'est que dans la page du script on ne voit ni sa section ni sa description donc si on y accède via la page d'accueil on ne sait pas quand on est un noob.
Bon après oui c'est pas bien compliqué d'aller vérifier mais bon, ça serait pas plus mal si le log et la description étaient aussi affichés dans la page, faudrait demander à Sylvanor.


reelie - posté le 14/10/2010 à 22:41:07. (35 messages postés)

Marine

Ça à l'air pas mal...

Hell, it's about time !


Jakylla - posté le 30/04/2011 à 15:02:13. (45 messages postés)

Heureux

Mode chieur ON:

1e Essai, rien modifié, je n'ai aucun autre script ajoutés:

????? 'Aff_Degats' ? 337 ??? NoMethoderror ????????
undefinied method `visible=' for #<Array:0x49a5498>

Lignes 337 et 338

337: sprite.visible = true
338: sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)

Bienvenues à tous et bonne chance pour vos RPG !


simoncanas - posté le 10/07/2012 à 21:32:18. (84 messages postés)

Tu veux un glaçon ?

ah lala que de problème ce script
:hum

Choisi t'a destiné mais bas toi pour elle si tu ne veux pas la perdre a jamais

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis