Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Clive's Hero Database

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Clive's Hero Database

Mensaje por AsFzKakarotto el 2018-03-18, 19:23

Información:
Este script permite abrir un menú de biografía para cada Aliado:

•Permite ver información de aliados de una manera muy Cómoda
•Posee un sistema de Biografía para cada Aliado.
•Muestra Personajes Desconocidos de forma Oculta ???





Para editar la biografía de cada Aliado dirígete a la linea 25 de el script:

Para llamar el menú utilizar el siguiente llamado el script:
           
$scene = Scene_Hero_DataBase.new

El Script está en ingles pero créanme que es muy fácil de comprender si al menos entiendes lo que es un script.
Código:
#==============================================================================
# Clive's Hero Database
#==============================================================================
# SephirothSpawn
# Version 1
# 22.02.06
#==============================================================================
# Instructions:
#   ~ Setting Up Hero's Bio
#         Find the line HERO_BIO = {
#         Below That, have a x=>[] for each actor in your database
#         Withing the array, have up to 3 lines of 'text'
#   ~ Calling the Scene
#         Use: $scene = Scene_Hero_DataBase.new
#==============================================================================
#==============================================================================
# ** Window_Clive_HeroStatus
#==============================================================================
class Window_Clive_HeroStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Hero Biography Constant
  #Biografia de cada héroe Héroe1 = 1 - Héroe2 = 2 Héroe3 = 3 etc...
  #--------------------------------------------------------------------------
  HERO_BIO = {
    1=>["Here's a neat fact:", 'Arshes is the most used sprite in the rmxp community'],
    2=>['I thought Basil was something for cooking?'],
    3=>['I am thor!', 'Fear My Axe!'],
    4=>['Watch out fellas,', 'She will steal your hearts', '[/chessy]'],
    5=>['I still do not understant', 'whats up with the end of here bow...'],
    6=>['Bang Bang!'],
    7=>['Only for healing...'],
    8=>['Woot Woot!', 'Kill those Ghost with Fire', 'The secret to beat Sephs Demos']
    }
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor, index)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor, @index, @frame = actor, index, 0
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Information Arrays
    main_info = ['Nombre:', 'Clase:', 'Nivel:', 'Experiencia:', 'A Proximo Nivel:']
    stat_info = ['hp', 'sp', 'str', 'dex', 'agi', 'int'].collect! {|x| (eval "$data_system.words.#{x}") + ':'}
    stat_info.push('Evasion:', 'Hit %:')
    equip_info = ['atk', 'pdef', 'mdef'].collect! {|x| (eval "$data_system.words.#{x}") + ':'}
    # Draws Page
    self.contents.font.color = system_color
    self.contents.draw_text(192, 0, 224, 24, "Pagina : #{@index} / #{$data_actors.size - 1}", 1)
    # Draws Stat Words
    for i in 0...stat_info.size
      self.contents.draw_text(4, 144 + i * 24, 284, 24, stat_info[i])
    end
    # Draws Equipment Words
    for i in 0...equip_info.size
      self.contents.draw_text(324, 144 + i * 24, 284, 24, equip_info[i])
    end
    # Draws Biography Heading
    self.contents.font.color = @actor.nil? ? disabled_color : normal_color
    self.contents.draw_text(20, 336, contents.width, 24, 'Biografia:')
    # If Actor isn't nil
    unless @actor.nil?
      # Draws Actor Sprite
      refresh_sprite
      # Draws Actor Battler
      self.contents.scale_blt(Rect.new(400, 0, 192, 144),
        bitmap = RPG::Cache.battler(@actor.battler_name, @actor.battler_hue),
        Rect.new(0, 0, bitmap.width, bitmap.height))      
      # Gets Actor Main Information
      info = ['name', 'class_name', 'level', 'exp', 'next_rest_exp_s'].collect! {|x| eval "@actor.#{x}"}
      # Draws Main Information
      self.contents.font.color = system_color
      for i in 0...info.size
        self.contents.draw_text(192, (i + 1) * 24, 224, 24, "#{main_info[i]} #{info[i]}", 1)
      end
      # Gets Acor Stat Information
      info = ["#{@actor.hp} / #{@actor.maxhp}", "#{@actor.sp} / #{@actor.maxsp}"]
      info << ['str', 'dex', 'agi', 'int', 'eva', 'hit'].collect! {|x| eval "@actor.#{x}"}
      # Draws Actor Stat Information
      self.contents.font.color = normal_color
      for i in 0...info.flatten!.size
        self.contents.draw_text(- 4, 144 + i * 24, 284, 24, info[i].to_s, 2)
      end
      # Gets Actor Base Equip Information
      info = ['atk', 'pdef', 'mdef'].collect! {|x| eval "@actor.#{x}"}
      for i in 0..info.size
        self.contents.draw_text(316, 144 + i * 24, 284, 24, info[i].to_s, 2)
      end
      # Gets Equipment IDs
      equipment = ['weapon_id', 'armor1_id', 'armor2_id', 'armor3_id', 'armor4_id'].collect! {|x| eval "@actor.#{x}"}
      # Gets Equipment
      for i in 0..4
        equipment[i] = i == 0 ? $data_weapons[equipment[i]] : $data_armors[equipment[i]]
      end
      # Draws Equipment
      for i in 0..4
        draw_equipment(equipment[i], 324, 216 + i * 24, 284, 1, i)
      end
      # Gets Bio
      bio = HERO_BIO[@index]
      # Draws bio
      self.contents.font.color = normal_color
      for i in 0...bio.size
        self.contents.draw_text(36, 336 + (i + 1) * 24, contents.width - 72, 24, bio[i], 1)
      end
    # If Actor is nil
    else
      # Draws Main Information
      self.contents.font.color = system_color
      for i in 0..4
        self.contents.draw_text(192, (i + 1) * 24, 224, 24, "#{main_info[i]} ??????", 1)
      end
      # Draws Actor Stat Information
      self.contents.font.color = normal_color
      for i in 0..7
        text = i == 0 ? '???? / ????' : i == 1 ? '??? / ???' : '???'
        self.contents.draw_text(- 4, 144 + i * 24, 284, 24, text, 2)
      end
      # Gets Actor Base Equip Information
      for i in 0..2
        self.contents.draw_text(316, 144 + i * 24, 284, 24, '???', 2)
      end
      # Draws Equipment
      for i in 0..4
        draw_equipment(nil, 324, 216 + i * 24, 284, 1, i, false)
      end
      # Draws Empty Bio
      self.contents.font.color = disabled_color
      self.contents.draw_text(36, 360, contents.width - 72, 24, 'Biografia Desconocida', 1)
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Sprite
  #--------------------------------------------------------------------------
  def refresh_sprite
    # Clears Bitmap Area
    self.contents.fill_rect(Rect.new(0, 0, 192, 144), Color.new(0, 0, 0, 0))
    # Draws Actor Sprite
    draw_sprite(0, 0, 192, 144, @actor.character_name, @actor.character_hue, 0, @frame)
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    # Checks to Refresh Sprite
    if Graphics.frame_count % 10 == 0
      @frame == 3 ? @frame = 0 : @frame += 1
      refresh_sprite unless @actor.nil?
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Equipment
  #     item : item
  #     x    : draw spot x-coordinate
  #     y    : draw spot y-coordinate
  #     width : draw text width
  #     align  : text align
  #--------------------------------------------------------------------------
  def draw_equipment(item, x, y, width = 212, align = 0, type = 0, unknown = true)
    if item.nil?
      case type
      when 0  # Weapon
        bitmap = RPG::Cache.icon("001-Weapon01")
      when 1  # Shield
        bitmap = RPG::Cache.icon("009-Shield01")
      when 2  # Helmet
        bitmap = RPG::Cache.icon("010-Head01")
      when 3  # Armor
        bitmap = RPG::Cache.icon("014-Body02")
      when 4  # Accessory
        bitmap = RPG::Cache.icon("016-Accessory01")
      end
      contents.font.color, alpha = disabled_color, disabled_color.alpha
      txt = unknown ? 'Nada' : 'Desconocido'
    else
      bitmap = RPG::Cache.icon(item.icon_name)
      contents.font.color, alpha, txt = normal_color, 255, item.name
    end
    # Draws Icon
    self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), alpha)
    self.contents.draw_text(x + 28, y, width - 28, 24, txt, align)
  end
  #--------------------------------------------------------------------------
  # * Draw Sprite
  #--------------------------------------------------------------------------
  def draw_sprite(x, y, w, h, name, hue, stance, frame)
    # Gets Bitmap
    bitmap = RPG::Cache.character(name, hue)
    # Bitmap Division
    cw, ch = bitmap.width / 4,  bitmap.height / 4
    # Gets Animation Offsets
    x_off, y_off = cw * frame, ch * stance
    # Draws Bitmap
    self.contents.scale_blt(Rect.new(x, y, w, h), bitmap, Rect.new(x_off, y_off, cw, ch))
  end
end

#==============================================================================
# ** Bitmap
#==============================================================================
class Bitmap
  #--------------------------------------------------------------------------
  # * Scale Blt
  #--------------------------------------------------------------------------
  def scale_blt(dest_rect, src_bitmap, src_rect, opacity = 255)
    w, h = src_rect.width, src_rect.height
    scale = [w / dest_rect.width.to_f, h / dest_rect.height.to_f].max
    ow, oh = (w / scale).to_i, (h / scale).to_i
    ox, oy = (dest_rect.width - ow) / 2, (dest_rect.height - oh) / 2
    stretch_blt(Rect.new(ox + dest_rect.x, oy + dest_rect.y, ow, oh),
      src_bitmap, src_rect )
  end
end

#==============================================================================
# ** Game_Actors
#==============================================================================
class Game_Actors
  #--------------------------------------------------------------------------
  # * Public Instance Variabeles
  #--------------------------------------------------------------------------
  attr_reader :data
end

#==============================================================================
# ** Scene_Hero_DataBase
#==============================================================================
class Scene_Hero_DataBase
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(actor_index = 1)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Sets Actor
    @actor = $game_actors.data[@actor_index].nil? ? nil : @actor = $game_actors[@actor_index]
    # Creates Database Profile Window
    @actor_profile_window = Window_Clive_HeroStatus.new(@actor, @actor_index)
    # Draws Blank Sprites if Actor isn't in you actors database
    if @actor.nil?
      # Starts Frame Count
      @frame = 0
      # Creates Actor Character Sprite
      @actor_c_sprite = Sprite.new
        @actor_c_sprite.x, @actor_c_sprite.y = 16, 16
        @actor_c_sprite.z, @actor_c_sprite.opacity = 999, 160
      # Refreshes Sprite
      refresh_character_sprite
      # Creates Actor Battle Sprite
      @actor_b_sprite = Sprite.new
        @actor_b_sprite.x, @actor_b_sprite.y = 416, 16
        @actor_b_sprite.z, @actor_b_sprite.opacity = 999, 160
        @actor_b_sprite.bitmap = Bitmap.new(192, 144)
        actor = $data_actors[@actor_index]
        bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
        @actor_b_sprite.bitmap.scale_blt(Rect.new(0, 0, 192, 144), bitmap,
          Rect.new(0, 0, bitmap.width, bitmap.height))
        @actor_b_sprite.tone = Tone.new(- 255, - 255, - 255, 160)
    end
    # Execute transition
    Graphics.transition
    # Main loop
    while $scene == self
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of Database Profile Window
    @actor_profile_window.dispose
    # Disposes nil actor sprites
    if @actor.nil?
      @actor_c_sprite.dispose
      @actor_b_sprite.dispose
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update Profile Window
    @actor_profile_window.update
    # If L button is pressed
    if Input.trigger?(Input::L)
      # Play Cursor SE
      $game_system.se_play($data_system.cursor_se)
      # Changes Index
      @actor_index == 1 ? @actor_index = $data_actors.size - 1 : @actor_index -= 1
      # Changes Actor
      $scene = Scene_Hero_DataBase.new(@actor_index)
    end
    # If R button is pressed
    if Input.trigger?(Input::R)
      # Play Cursor SE
      $game_system.se_play($data_system.cursor_se)
      # Changes Index
      @actor_index == $data_actors.size - 1 ? @actor_index = 1 : @actor_index += 1
      # Changes Actor
      $scene = Scene_Hero_DataBase.new(@actor_index)
    end
    # If b button is pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Proceeds to Menu Screen
      $scene = Scene_Menu.new
    end
    # If nil actor
    if @actor.nil?
      # Checks to Refresh Contents
      if Graphics.frame_count % 10 == 0
        @frame == 3 ? @frame = 0 : @frame += 1
        refresh_character_sprite
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Character Sprite
  #--------------------------------------------------------------------------
  def refresh_character_sprite
    # Sets Blank Bitmap
    @actor_c_sprite.bitmap = Bitmap.new(192, 144)
    # Gets Actor
    actor = $data_actors[@actor_index]
    # Gets Bitmap
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    # Draws Bitmap
    @actor_c_sprite.bitmap.scale_blt(Rect.new(0, 0, 192, 144),
      bitmap,
      Rect.new(bitmap.width / 4 * @frame, 0, bitmap.width / 4, bitmap.height / 4))
    # Adjust Sprite Tone
    @actor_c_sprite.tone = Tone.new(- 255, - 255, - 255, 160)
  end
end

Autor: SephirothSpawn
Intentando de compartir cosillas nuevas y que no están en Mundo Maker
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 273

Gracias : 59

Volver arriba Ir abajo

RPG Maker XP Re: Clive's Hero Database

Mensaje por Dariel Lopez el 2018-03-18, 19:31

Hace unos días estaba pensando en un menú de este tipo pero para el Vx Ace. ¿Sabes si existe alguna versión para ese Maker?
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 661

Gracias : 37

Volver arriba Ir abajo

RPG Maker XP Re: Clive's Hero Database

Mensaje por RiKennedy-Maker el 2018-03-18, 19:39

Wow kakarotto cada vez que te veo tienes un gif diferente de avatar xD

Se ve bastante interesante el script, aunque faltaría una demo para rematarla, es bueno que aportes cosas que no están en Mundo Maker, algunos nunca salimos de nuestra madriguera (?) sigue así
avatar
RiKennedy-Maker
Reportero

0/3

Créditos 134

Gracias : 68

Volver arriba Ir abajo

RPG Maker XP Re: Clive's Hero Database

Mensaje por AsFzKakarotto el 2018-03-18, 20:43

Dariel Lopez lo lamento, pero desconozco si está para el VX ACE lo único que te puedo decir es que intentes probar si es compatible o no.

RiKennedy-Maker sii la verdad es que me gustan los gif como avatar  y sobre la demo quisas en otra semana la publique no pensé que para un script así se necesitará una Demo pero si la pides pronto la subiré es que se me da mal con las demos XD
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 273

Gracias : 59

Volver arriba Ir abajo

RPG Maker XP Re: Clive's Hero Database

Mensaje por RiKennedy-Maker el 2018-03-18, 22:00

@AsFzKakarotto Tranquilo, no es necesario, es solo que siempre es más cómodo descargar una demo de un script, así no te sientes tan perdido xD porque hay a los que les da flojera investigar por ellos mismos cómo hacer funcionar un script y prefieren copiar y pegar de una demo :v

Además, ya sabes cómo somos con las demos en este foro xD siempre son oportunidades para sacar a relucir un poco de humor y dejar una buena experiencia, o dejar easter eggs, mensajes subliminales y todo tipo de cosas... aunque tampoco es necesario xD

Y ahora que medio presto un poco más de atención... sólo se puede acceder al menú de la biografía por medio del llamado de script? osea que si quieres entrar cuando quieras tendrás que poner el llamando en un evento común?
avatar
RiKennedy-Maker
Reportero

0/3

Créditos 134

Gracias : 68

Volver arriba Ir abajo

RPG Maker XP Re: Clive's Hero Database

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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