¡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 3686 miembros registrados.
El último usuario registrado es Derinne.

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

Skill preview

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Skill preview

Mensaje por Pokepik el 2012-06-10, 04:35

Este lo empecé hace tiempo pero lo he acabado ahora mismo.
Hace que en la Scene_Skill se muestre una preview de la animación.
- Si ésta afecta al héroe, el sprite que saldrá será el del que lo esté usando.
- Respeta la posición de la animación: Abajo, Centro, Arriba, Pantalla



Doy las gracias a Orochii por haberme ayudado a acabarlo, porque me había quedado encallada.
Aquí el código, pegadlo encima de main.

Código:
#==============================================================================
# Skill Preview
# by Pokepik
#==============================================================================

#==============================================================================
# Window_Skill
#==============================================================================

class Window_Skill < Window_Selectable
  def initialize(actor)
    super(0, 128, 640/2, 352)
    @actor = actor
    @column_max = 1
    refresh
    self.index = 0
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
  end
end

#==============================================================================
# Window_SkillShow
#==============================================================================

class Window_SkillShow < Window_Base
  def initialize(index, actor)
    super(320, 128, 640/2, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
    @skill_index = index
    refresh(index)
  end
  def refresh(index)
    self.contents.clear
    @data = []
    for i in 0...@actor.skills.size
      skill = $data_skills[@actor.skills[i]]
      if skill != nil
        @data.push(skill)
      end
    end
   
    @index = index
    if @data.size == 0
      return
    end
    skill = $data_skills[@actor.skills[@index]]
   
    @backimage = RPG::Cache.picture("backimage")
    src_rect = Rect.new(0, 0, 256, 256)
    self.contents.blt(16 , 32, @backimage, src_rect)
   
    if skill.scope >= 3
      @battlerimage = RPG::Cache.battler(@actor.character_name.to_s, 0)
    else
      @battlerimage = RPG::Cache.battler("monster", 0)
    end
    @battlerimage_x = 16 + (256/2) - @battlerimage.width/2
    @battlerimage_y = 32 + (256/2) - @battlerimage.height/2
    self.contents.blt(@battlerimage_x,@battlerimage_y, @battlerimage, src_rect)
  end
end

#==============================================================================
# Scene_Skill
#==============================================================================

class Scene_Skill
  def main
    @actor = $game_party.actors[@actor_index]
    @help_window = Window_Help.new
    @status_window = Window_SkillStatus.new(@actor)
   
    @skill_window = Window_Skill.new(@actor)
    @skill_index = -1
    @skillshow_window = Window_SkillShow.new(@skill_window.index, @actor)
   
    @skill_window.help_window = @help_window
   
    @target_window = Window_Target.new
    @target_window.visible = false
    @target_window.active = false
   
    @spr = RPG::Sprite.new
   
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @spr.dispose
    @status_window.dispose
    @skill_window.dispose
    @skillshow_window.dispose
    @target_window.dispose
  end

  def update
    if @skill_index != @skill_window.index
      if @skill_window.skill != nil
      @skillshow_window.refresh(@skill_window.index)
      @animskill = @skill_window.skill
      anim = $data_animations[@animskill.animation2_id]
      @spr.x = 480
      case anim.position
      when 0
        @spr.y = 250
      when 1
        @spr.y = 300
      when 2
        @spr.y = 350
      else
        @spr.y = 300
      end
      @spr.animation(anim, true)
      @skill_index = @skill_window.index
      end
    end
    @help_window.update
    @status_window.update
    @spr.update
    @skill_window.update
    @skillshow_window.update
    @target_window.update
    if @skill_window.active
      update_skill
      return
    end
    if @target_window.active
      update_target
      return
    end
  end
end

Imágenes usadas:
Pictures/backimage


Battlers/monster
avatar
Pokepik
Principiante
Principiante

0/3

Créditos 1834

Gracias : 4

Volver arriba Ir abajo

RPG Maker XP Re: Skill preview

Mensaje por Aarl el 2012-06-10, 08:33

Me parece bastante interesante el script. Vaya Pokepik, sabes de grafismo, de scripting, Oh God, eres polivalente xD

Bromas aparte, la verdad es un detalle que me parece atractivo y que no pinta nada mal. Aún me pregunto cómo no lo implanta el Default para parecer más... No sé, ¿profesional? XD

Quizá te interese que ese fondo en el que se hace la animación varíe según el battleback usado en batalla, para parecer como más realista y cuidado.

Fantástico aporte Pokepik,
Saludos~
avatar
Aarl
Veterano
Veterano

0/3

Créditos 141

Gracias : 37

https://soundcloud.com/aarl

Volver arriba Ir abajo

RPG Maker XP Re: Skill preview

Mensaje por orochii el 2012-06-10, 14:10

Me gusta cómo se ve :F!!. Lo tengo aplicado en mi proyecto de pruebas y me gusta.
Con skills que ocupen toda la pantalla quizá tenga un problema, porque pasa sobre todo lo demás. Creo que sería nada más crear un viewport del tamaño de "backimage" y en su misma posición, y entonces al crear el sprite hacer "Sprite.new(viewport)". Con eso, ya no se tira la animación sobre lo demás C:.
Creo fue algo que se me olvidó tomar en cuenta antes xD.

En fin Ppik, muy buen script C:!, y a ver si sacamos los otros del tema aquel adelante,
Orochii Zouveleki
avatar
orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6164

Gracias : 293

http://ragnarokrproject.com/

Volver arriba Ir abajo

RPG Maker XP Re: Skill preview

Mensaje por Wecoc el 2012-06-10, 16:16

Me gusta bastante el arreglo sí :D Aunque le veo unas cuantas cosas mejorables, por si quieres hacer una versión 2.0 xD o quizá intente arreglarle yo alguna de estas cosas si me aburro xD
- Lo que ha dicho Piltrafa97 del battleback es buena idea.
- Lo que ha dicho Orochii de la pantalla habría que arreglarlo.
- Ahora la select_skill en batalla se ve rara, estaría bien que se viera la ventana ahí también.
- Se muestra la animación pero no los flash de personaje.
avatar
Wecoc
Administrador
Administrador



Créditos 8776

Gracias : 412

Volver arriba Ir abajo

RPG Maker XP Re: Skill preview

Mensaje por Wecoc el 2015-01-25, 23:55

Yo y mis sucios necropost... xD <-- ¡No, porque es un update!

Me acordé de éste script de Pokepik y he visto que tenía unos fallos que ya comenté en su momento, y que eran simples de arreglar... así que arreglé algunos.

Cosas arregladas:

- Ahora se puede cambiar el Battleback por mapa, justo al principio del script. Como funciona con los Battleback normales ya no requiere una picture extra para ello.
- Ahora se puede cambiar el Battler por mapa, justo al principio del script. Como funciona con los Battler normales ya no requiere una picture extra para ello.
- El fallo de la viewport está arreglado.
- Los flash de personaje ahora se muestran bien.
- Sigue viéndose un borde alrededor de la battleback, solo que la battleback cambia.
Usa ésta picture, a la que llamé "sprite_border". Aún así, es opcional, el script funciona bien sin ella.



Cosas no arregladas:

- La select_skill en batalla se ve rara, estaría bien que se viera la ventana ahí también o algo.
- Aunque el target de la skill sea un aliado, se muestra encima del monstruo igualmente.

(Es curioso, tiene exactamente el mismo número de líneas que antes xD)

Código:
#==============================================================================
# Skill Preview
#------------------------------------------------------------------------------
# by Pokepik
# Edit by Wecoc
#==============================================================================

module Preview_Skill
  MAP_BG = {1 => "002-Woods01"}
  MAP_BG.default = "001-Grassland01"
 
  MAP_BATTLER = {3 => "051-Undead01"}
  MAP_BATTLER.default = "055-Snake01"
 
  BORDER = "sprite_border"
end

#==============================================================================
# Window_Skill
#==============================================================================

class Window_Skill < Window_Selectable
  def initialize(actor)
    super(0, 128, 320, 352)
    @actor = actor
    @column_max = 1
    refresh
    self.index = 0
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
 
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
  end
end

#==============================================================================
# Window_SkillShow
#==============================================================================

class Window_SkillShow < Window_Base
  def initialize
    super(320, 128, 320, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
    @preview_viewport = Viewport.new(self.x + 32, self.y + 48, 256, 256)
    @preview_viewport.z = self.z + 100
    bg_name = Preview_Skill::MAP_BG[$game_map.map_id]
    @border_sprite = Sprite.new()
    @border_sprite.x = self.x + 32 - 3
    @border_sprite.y = self.y + 48 - 3
    @border_sprite.z = self.z + 50
    @border_sprite.bitmap = RPG::Cache.picture(Preview_Skill::BORDER) rescue nil
    @background = Sprite.new(@preview_viewport)
    @background.bitmap = RPG::Cache.battleback(bg_name)
    @background.x = -160
    @background.y = -60
    sprite_name = Preview_Skill::MAP_BATTLER[$game_map.map_id] 
    @sprite = RPG::Sprite.new(@preview_viewport)
    @sprite.bitmap = RPG::Cache.battler(sprite_name, 0)
    @sprite.x = (256 / 2) - (@sprite.bitmap.width / 2)
    @sprite.y = (256 / 2) - (@sprite.bitmap.height / 2)
  end
 
  def dispose
    super
    @background.dispose
    @sprite.dispose
    @border_sprite.dispose
  end
 
  def refresh(skill=nil)
    return if skill == nil
    animation_id = skill.animation2_id
    @sprite.animation($data_animations[animation_id], true)
  end
 
  def update
    super
    @preview_viewport.update
    @background.update
    @sprite.update
    @border_sprite.update
  end
end

#==============================================================================
# Scene_Skill
#==============================================================================

class Scene_Skill
  def main
    @actor = $game_party.actors[@actor_index]
    @help_window = Window_Help.new
    @status_window = Window_SkillStatus.new(@actor)
 
    @skill_window = Window_Skill.new(@actor)
    @skill_index = -1
    @skillshow_window = Window_SkillShow.new
    @skill_window.help_window = @help_window
 
    @target_window = Window_Target.new
    @target_window.visible = false
    @target_window.active = false
 
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @status_window.dispose
    @skill_window.dispose
    @skillshow_window.dispose
    @target_window.dispose
  end
 
  def update
    if @skill_index != @skill_window.index
      if @skill_window.skill != nil
        skill = @skill_window.skill
        @skillshow_window.refresh(skill)
        @skill_index = @skill_window.index
      end
    end
    @help_window.update
    @status_window.update
    @skill_window.update
    @skillshow_window.update
    @target_window.update
    if @skill_window.active
      update_skill
      return
    end
    if @target_window.active
      update_target
      return
    end
  end
end


Y si Pokepik se enfada por el edit... Total ella se enfada por tod- digo... Si se enfada, lo siento mucho.
avatar
Wecoc
Administrador
Administrador



Créditos 8776

Gracias : 412

Volver arriba Ir abajo

RPG Maker XP Re: Skill preview

Mensaje por Contenido patrocinado


Contenido patrocinado


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.