- Zephyr_1.2Membre
- Nombre de messages : 158
Localisation : Scénariste érrant...
Distinction : aucune
Date d'inscription : 13/02/2008
Changer la couleur du personnage
Mer 13 Fév 2008 - 23:06
Voici un script qui permet de changer la couleur du personnage en fonction de plusieurs valeurs.
- Code:
#===============================================================
#
# rpgmakervx.1fr1.net
#
#===============================================================
#====================================================
# Edit Character Color For RMVX
# By Nechigawara Sanzenin
# Traduit par: Ouroboros [metalic_puppets@hotmail.fr] pour RPG MAKER VX
# Exclusivité RPG MAKER VX http://rpgmakervx.1fr1.net
#====================================================
=begin
# Modifier la couleur du personnage sur la map
# Utilisation : Ajouter ça dans un commentaire dans un évènement
# [r.....] pour une couleur Rouge ( -255 à 255 )
# [g....] pour une couleur Verte ( -255 à 255 )
# [b....] pour une couleur Bleue ( -255 à 255 )
# [al...] pour une couleur en fonction de Alpha ( 0 à 255 )
# [hue...] pour changer Hue ( 0 à 360 )
=end
module Cache
def self.character(filename , hue=0)
load_bitmap("Graphics/Characters/", filename , hue)
end
end
class Game_Character
attr_accessor :tone
attr_accessor :hue
#--------------------------------------------------------------------------
# - Initialisation de l'objet
#--------------------------------------------------------------------------
alias inc_initialize initialize
def initialize
inc_initialize
@tone = [0,0,0,0]
@hue = 0
end
end
#==============================================================================
class Game_Event < Game_Character
alias inc_update update
def update
# check Code
for i in 0...@list.size
next if @list[i].code != 108
# For Red Channel
if @list[i].parameters[0].include?("[r")
text = @list[i].parameters[0].scan(/\[r([-,0-9]+)\]/)
red = $1.to_i
if red > 255
red = 255
elsif red < -255
red = -255
end
@tone[0] = red
end
# For Green Channel
if @list[i].parameters[0].include?("[g")
text = @list[i].parameters[0].scan(/\[g([-,0-9]+)\]/)
green = $1.to_i
if green > 255
green = 255
elsif green < -255
green = -255
end
@tone[1] = green
end
# For Blue Channel
if @list[i].parameters[0].include?("[b")
text = @list[i].parameters[0].scan(/\[b([-,0-9]+)\]/)
blue = $1.to_i
if blue > 255
blue = 255
elsif blue < -255
blue = -255
end
@tone[2] = blue
end
# For Alpha Channel
if @list[i].parameters[0].include?("[al")
text = @list[i].parameters[0].scan(/\[al([0-9]+)\]/)
alpha = $1.to_i
if alpha > 255
alpha = 255
elsif alpha < 0
alpha = 0
end
@tone[3] = alpha
end
# For Hue
if @list[i].parameters[0].include?("[hue")
text = @list[i].parameters[0].scan(/\[hue([0-9]+)\]/)
hue = $1.to_i
if hue > 360
hue = 360
elsif hue < 0
hue = 0
end
@hue = hue
end
end
#Load Orginal Update
inc_update
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# - Rafraichissement de la fenêtre
#--------------------------------------------------------------------------
def update_bitmap
@character.update
self.tone.set(@character.tone[0],@character.tone[1],@character.tone[2],@character.tone[3])
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_index != @character.character_index or
@hue != @character.hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_index = @character.character_index
@hue = @character.hue
if @tile_id > 0
sx = (@tile_id / 128 % 2 * 8 + @tile_id % 8) * 32;
sy = @tile_id % 256 / 8 % 16 * 32;
self.bitmap = tileset_bitmap(@tile_id)
self.src_rect.set(sx, sy, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = Cache.character(@character_name,@character.hue)
sign = @character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
@cw = bitmap.width / 3
@ch = bitmap.height / 4
else
@cw = bitmap.width / 12
@ch = bitmap.height / 8
end
self.ox = @cw / 2
self.oy = @ch
end
end
end
end
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum