¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3397 miembros registrados.
El último usuario registrado es LucasGF.

Nuestros miembros han publicado un total de 79808 mensajes en 11257 argumentos.
Navega con Google Chrome
[DESCARGA]

[RMXP] Script "facil" de pintar faces

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Script "facil" de pintar faces

Mensaje por Pokepik el 2012-09-05, 08:06

Aquí estoy otra vez XD
Este script tal y como está ahora no sirve prácticamente de nada, porque no tiene memoria de colores y encima da lag, pero lo hice como soporte para scripters o algo así, las bases al menos estan ahí XD
No es mucho mas complicado que cualquier script de escena de los MOG, e incluso tiene un estilo similar, pero este tiene la particularidad de que sirve para cambiar el color a la face del personaje.
Le he hecho todo lo mas sencillo que he podido, luego ya quien quiera usarlo y complicarlo mucho ya es su problema XD.

Con ésta imagen seguro que queda claro cómo es:

Spoiler:

Y aquí un ejemplo cualquiera de la infinidad de posibilidades que hay:

No usa demasiadas imagenes y son fáciles de hacer y editar.
Sirve con cualquier face siempre y cuando se marquen las partes, se pueden poner mas partes a base de copiar y pegar script con pocas modificaciones.

Os pongo el código aunque ya os adelanto que si lo usais tal cual os dará error porque usa pictures:
Código:
=begin
#------------------------------------------------------------------------------
# Script de pintar faces
#------------------------------------------------------------------------------
# (by: Pokepik)

Información de uso:

- Las faces tienen que estar en la carpeta Pictures, empezar por el nombre del
personaje y acabar con _Fc si es la base o _(parte).
- La base es recomendable que esté en blanco y negro para poder manipular bien
los colores luego.
- Marcar las partes de cada face se puede hacer con cualquier programa de
dibujo, pero es importante que se haga con color rojo puro (255,0,0) o el
script no lo leerá bien.
- El script se puede usar y modificar tanto como sea necesario.
- Está prohibido darle un uso comercial.

#------------------------------------------------------------------------------
=end


#------------------------------------------------------------------------------
# Window_FaceColor
#------------------------------------------------------------------------------

class Window_FaceColor < Window_Base
  def initialize(actor)
    @actor = $game_party.actors[actor]
    super(0,0,200,192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 160
  end 
  def dispose
    @eyes.bitmap.dispose rescue nil
    @skin.bitmap.dispose rescue nil
    @hair.bitmap.dispose rescue nil
    @clothes.bitmap.dispose rescue nil
    super
  end
  def refresh
    self.contents.clear
    draw_aface(@actor,32,32)
    @eyes.bitmap.dispose rescue nil
    @skin.bitmap.dispose rescue nil
    @hair.bitmap.dispose rescue nil
    @clothes.bitmap.dispose rescue nil
  end
  def draw_aface(actor,x,y)
    @face = RPG::Cache.picture(actor.name + "_fc")
    cw = @face.width
    ch = @face.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x,y,@face,src_rect)   
  end
  def draw_eyes(actor,x,y,color)
    @eyes.bitmap.dispose rescue nil
    @color = Color.new(255-color.red,255-color.green,255-color.blue)
    @eyes = Sprite.new
    @eyes.bitmap = RPG::Cache.picture(actor.name + "_eyes")
    @eyes.x = x+16
    @eyes.y = y+16
    @eyes.z = 1000
    @eyes.blend_type = 2
    cw = @eyes.bitmap.width
    ch = @eyes.bitmap.height
    for i in 0..cw
      for j in 0..ch
        @c_value = @eyes.bitmap.get_pixel(i,j)
        if @c_value == Color.new(255,0,0)
          @eyes.bitmap.set_pixel(i,j,@color)
        else
          @eyes.bitmap.set_pixel(i,j,Color.new(0,0,0,0))
        end
      end
    end
  end
  def draw_skin(actor,x,y,color)
    @skin.bitmap.dispose rescue nil
    @color = Color.new(255-color.red,255-color.green,255-color.blue)
    @skin = Sprite.new
    @skin.bitmap = RPG::Cache.picture(actor.name + "_skin")
    @skin.x = x+16
    @skin.y = y+16
    @skin.z = 1010
    @skin.blend_type = 2
    cw = @skin.bitmap.width
    ch = @skin.bitmap.height
    for i in 0..cw
      for j in 0..ch
        @c_value = @skin.bitmap.get_pixel(i,j)
        if @c_value == Color.new(255,0,0)
          @skin.bitmap.set_pixel(i,j,@color)
        else
          @skin.bitmap.set_pixel(i,j,Color.new(0,0,0,0))
        end
      end
    end
  end
  def draw_hair(actor,x,y,color)
    @hair.bitmap.dispose rescue nil
    @color = Color.new(255-color.red,255-color.green,255-color.blue)
    @hair = Sprite.new
    @hair.bitmap = RPG::Cache.picture(actor.name + "_hair")
    @hair.x = x+16
    @hair.y = y+16
    @hair.z = 1020
    @hair.blend_type = 2
    cw = @hair.bitmap.width
    ch = @hair.bitmap.height
    for i in 0..cw
      for j in 0..ch
        @c_value = @hair.bitmap.get_pixel(i,j)
        if @c_value == Color.new(255,0,0)
          @hair.bitmap.set_pixel(i,j,@color)
        else
          @hair.bitmap.set_pixel(i,j,Color.new(0,0,0,0))
        end
      end
    end
  end
  def draw_clothes(actor,x,y,color)
    @clothes.bitmap.dispose rescue nil
    @color = Color.new(255-color.red,255-color.green,255-color.blue)
    @clothes = Sprite.new
    @clothes.bitmap = RPG::Cache.picture(actor.name + "_clothes")
    @clothes.x = x+16
    @clothes.y = y+16
    @clothes.z = 1030
    @clothes.blend_type = 2
    cw = @clothes.bitmap.width
    ch = @clothes.bitmap.height
    for i in 0..cw
      for j in 0..ch
        @c_value = @clothes.bitmap.get_pixel(i,j)
        if @c_value == Color.new(255,0,0)
          @clothes.bitmap.set_pixel(i,j,@color)
        else
          @clothes.bitmap.set_pixel(i,j,Color.new(0,0,0,0))
        end
      end
    end
  end
  def actor
    return @actor
  end
end

#------------------------------------------------------------------------------
# Window_ColorBars
#------------------------------------------------------------------------------

class Window_ColorBars < Window_Base
  def initialize
    super(0,0,300,192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 160
    @red_active = false
    @green_active = false
    @blue_active = false
  end
  def dispose
    @color.dispose rescue nil
    super
  end
 
  def set_color(color)
    self.contents.clear
    if @color != nil
      @color.dispose
    end
    @r_bar = RPG::Cache.picture("barra_red")
    @g_bar = RPG::Cache.picture("barra_green")
    @b_bar = RPG::Cache.picture("barra_blue")
   
    @r_x = 20
    @g_x = 60
    @b_x = 100

    @r_y = (color.red/2).round
    @g_y = (color.green/2).round
    @b_y = (color.blue/2).round
   
    src_rect = Rect.new(0, 0, 20, 128)
    self.contents.blt(@r_x,10,@r_bar,src_rect)
    self.contents.blt(@g_x,10,@g_bar,src_rect)
    self.contents.blt(@b_x,10,@b_bar,src_rect)   
   
    @color = Sprite.new
    @color.bitmap = RPG::Cache.picture("color")
    @color.x = 400
    @color.y = 100
    @color.z = 980
    cw = @color.bitmap.width
    ch = @color.bitmap.height
    for i in 0..cw
      for j in 0..ch
        @color.bitmap.set_pixel(i,j,color)
      end
    end
   
    if @red_active
      @cursor_r = RPG::Cache.picture("cursor_on")
    else
      @cursor_r = RPG::Cache.picture("cursor")
    end
    cw = @cursor_r.width
    ch = @cursor_r.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(@r_x-cw,10+(128-@r_y)-ch/2,@cursor_r,src_rect)

    if @green_active
      @cursor_g = RPG::Cache.picture("cursor_on")
    else
      @cursor_g = RPG::Cache.picture("cursor")
    end
    cw = @cursor_g.width
    ch = @cursor_g.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(@g_x-cw,10+(128-@g_y)-ch/2,@cursor_g,src_rect)
   
    if @blue_active
      @cursor_b = RPG::Cache.picture("cursor_on")
    else
      @cursor_b = RPG::Cache.picture("cursor")
    end
    cw = @cursor_b.width
    ch = @cursor_b.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(@b_x-cw,10+(128-@b_y)-ch/2,@cursor_b,src_rect)
  end
  def red_active=(value)
    @red_active = value
  end
  def green_active=(value)
    @green_active = value
  end
  def blue_active=(value)
    @blue_active = value
  end
  def red_active?
    return @red_active
  end
  def green_active?
    return @green_active
  end
  def blue_active?
    return @blue_active
  end
end

#------------------------------------------------------------------------------
# Scene_FaceColor
#------------------------------------------------------------------------------

class Scene_FaceColor
  def main
    @spriteset = Spriteset_Map.new
    s1 = "Eyes"
    s2 = "Skin"
    s3 = "Hair"
    s4 = "Clothes"
    s5 = "Back"
    @command_window = Window_Command.new(140,[s1,s2,s3,s4,s5])
    @command_window.x = 500
    @command_window.back_opacity = 160
   
    @eyes_color = Color.new(87,135,249)
    @skin_color = Color.new(244,199,162)
    @hair_color = Color.new(291,175,65)
    @clothes_color = Color.new(240,85,70)
   
    @facecolor_window = Window_FaceColor.new(0)
    @facecolor_window.refresh
    refresh_facecolor_eyes
    refresh_facecolor_skin
    refresh_facecolor_hair
    refresh_facecolor_clothes
   
    @cbars_window = Window_ColorBars.new
    @cbars_window.x = 200
    @cbars_window.active = false
   
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @command_window.dispose
    @facecolor_window.dispose
    @cbars_window.dispose
  end
 
  def refresh_facecolor_eyes
    @actor = @facecolor_window.actor
    @facecolor_window.draw_eyes(@actor,32,32,@eyes_color)
  end
  def refresh_facecolor_skin
    @actor = @facecolor_window.actor
    @facecolor_window.draw_skin(@actor,32,32,@skin_color)
  end
  def refresh_facecolor_hair
    @actor = @facecolor_window.actor
    @facecolor_window.draw_hair(@actor,32,32,@hair_color)
  end
  def refresh_facecolor_clothes
    @actor = @facecolor_window.actor
    @facecolor_window.draw_clothes(@actor,32,32,@clothes_color)
  end
 
  def update
    @command_window.update
    @facecolor_window.update
    @cbars_window.update
    if @command_window.active
      update_command
      return
    end
    if @cbars_window.active
      if @cbars_window.red_active?
        update_cbar_red
        return
      end
      if @cbars_window.green_active?
        update_cbar_green
        return
      end     
      if @cbars_window.blue_active?
        update_cbar_blue
        return
      end   
    end
  end

  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @command_window.index == 4 # Back
        $scene = Scene_Map.new
        return
      end
      @cbars_window.red_active = true
      @cbars_window.active = true
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      @command_window.active = false
      return
    end
    case @command_window.index
    when 0 # Eyes
      @cbars_window.set_color(@eyes_color)
    when 1 # Skin
      @cbars_window.set_color(@skin_color)
    when 2 # Hair
      @cbars_window.set_color(@hair_color)
    when 3 # Clothes
      @cbars_window.set_color(@clothes_color)
    when 4 # Back
      @cbars_window.set_color(Color.new(0,0,0))
    end
  end
 
  def update_cbar_red
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window.active = true
      @cbars_window.red_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      @cbars_window.active = false
      return
    end
    if Input.trigger?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @cbars_window.green_active = true
      @cbars_window.red_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      return
    end
    if Input.trigger?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @cbars_window.blue_active = true
      @cbars_window.red_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
    end   
    if Input.trigger?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @command_window.index
      when 0 # Eyes
        @eyes_color.red += 5
        @cbars_window.set_color(@eyes_color)
        refresh_facecolor_eyes
      when 1 # Skin
        @skin_color.red += 5
        @cbars_window.set_color(@skin_color)
        refresh_facecolor_skin
      when 2 # Hair
        @hair_color.red += 5
        @cbars_window.set_color(@hair_color)
        refresh_facecolor_hair
      when 3 # Clothes
        @clothes_color.red += 5
        @cbars_window.set_color(@clothes_color)
        refresh_facecolor_clothes
      end
    end
    if Input.trigger?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @command_window.index
      when 0 # Eyes
        @eyes_color.red -= 5
        @cbars_window.set_color(@eyes_color)
        refresh_facecolor_eyes
      when 1 # Skin
        @skin_color.red -= 5
        @cbars_window.set_color(@skin_color)
        refresh_facecolor_skin
      when 2 # Hair
        @hair_color.red -= 5
        @cbars_window.set_color(@hair_color)
        refresh_facecolor_hair
      when 3 # Clothes
        @clothes_color.red -= 5
        @cbars_window.set_color(@clothes_color)
        refresh_facecolor_clothes
      end
    end
  end
 
  def update_cbar_green
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window.active = true
      @cbars_window.green_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      @cbars_window.active = false
      return
    end
    if Input.trigger?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @cbars_window.blue_active = true
      @cbars_window.green_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      return
    end
    if Input.trigger?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @cbars_window.red_active = true
      @cbars_window.green_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
    end   
    if Input.trigger?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @command_window.index
      when 0 # Eyes
        @eyes_color.green += 5
        @cbars_window.set_color(@eyes_color)
        refresh_facecolor_eyes
      when 1 # Skin
        @skin_color.green += 5
        @cbars_window.set_color(@skin_color)
        refresh_facecolor_skin
      when 2 # Hair
        @hair_color.green += 5
        @cbars_window.set_color(@hair_color)
        refresh_facecolor_hair
      when 3 # Clothes
        @clothes_color.green += 5
        @cbars_window.set_color(@clothes_color)
        refresh_facecolor_clothes
      end
    end
    if Input.trigger?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @command_window.index
      when 0 # Eyes
        @eyes_color.green -= 5
        @cbars_window.set_color(@eyes_color)
        refresh_facecolor_eyes
      when 1 # Skin
        @skin_color.green -= 5
        @cbars_window.set_color(@skin_color)
        refresh_facecolor_skin
      when 2 # Hair
        @hair_color.green -= 5
        @cbars_window.set_color(@hair_color)
        refresh_facecolor_hair
      when 3 # Clothes
        @clothes_color.green -= 5
        @cbars_window.set_color(@clothes_color)
        refresh_facecolor_clothes
      end
    end
  end
  def update_cbar_blue
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window.active = true
      @cbars_window.blue_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      @cbars_window.active = false
      return
    end
    if Input.trigger?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @cbars_window.red_active = true
      @cbars_window.blue_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
      return
    end
    if Input.trigger?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @cbars_window.green_active = true
      @cbars_window.blue_active = false
      case @command_window.index
      when 0 # Eyes
        @cbars_window.set_color(@eyes_color)
      when 1 # Skin
        @cbars_window.set_color(@skin_color)
      when 2 # Hair
        @cbars_window.set_color(@hair_color)
      when 3 # Clothes
        @cbars_window.set_color(@clothes_color)
      end
    end   
    if Input.trigger?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @command_window.index
      when 0 # Eyes
        @eyes_color.blue += 5
        @cbars_window.set_color(@eyes_color)
        refresh_facecolor_eyes
      when 1 # Skin
        @skin_color.blue += 5
        @cbars_window.set_color(@skin_color)
        refresh_facecolor_skin
      when 2 # Hair
        @hair_color.blue += 5
        @cbars_window.set_color(@hair_color)
        refresh_facecolor_hair
      when 3 # Clothes
        @clothes_color.blue += 5
        @cbars_window.set_color(@clothes_color)
        refresh_facecolor_clothes
      end
    end
    if Input.trigger?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @command_window.index
      when 0 # Eyes
        @eyes_color.blue -= 5
        @cbars_window.set_color(@eyes_color)
        refresh_facecolor_eyes
      when 1 # Skin
        @skin_color.blue -= 5
        @cbars_window.set_color(@skin_color)
        refresh_facecolor_skin
      when 2 # Hair
        @hair_color.blue -= 5
        @cbars_window.set_color(@hair_color)
        refresh_facecolor_hair
      when 3 # Clothes
        @clothes_color.blue -= 5
        @cbars_window.set_color(@clothes_color)
        refresh_facecolor_clothes
      end
    end
  end
end

Link de descarga: Script Pintar Faces.zip

Pokepik
Principiante
Principiante

0/3

Créditos 1834

Gracias : 4

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

Permisos de este foro:
No puedes responder a temas en este foro.