¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [XP] Advanced Status Display el Miér Feb 15, 2012 3:54 pm

Pólux

avatar
Advanced Status Display
VERSIÓN: 1.0 | RPG MAKER XP


INTRODUCCIÓN
Sí. La pantalla de status que viene con el RPG Maker XP es aburrida. No era ningún secreto... Así que, ya que estaba aprendiendo RGSS, me dije: "¿Por qué no hago una pantalla de status yo mismo? ¿Por qué Windows XP se llama XP, les gustaba ese smiley? ¿Por qué en los botones de los ascensores pone el número en braille, si cuando tocas ya se ha pulsado?"... Ya sabéis, cosas profundas.

CARACTERÍSTICAS

  • Muestra nombre, profesión, estado, vida, magia, armamento y estadísticas.
  • Muestra información adicional como peso, altura, etcétera.
  • Muestra una pequeña "historia" del personaje.
  • Para terminar, muestra un gráfico de face y el chara.

SCREENSHOTS


DEMO
¡Descarga de mediafire!

SCRIPT
Spoiler:
Código:
###··· |######################################| ···###
##···· | Advanced Status Display, by Selkie  | ····##
#····· | 17/01/2010 (DD/MM/YYYY)              | ·····#
##···· |    planetarpg.com.ar                | ····##
###··· |######################################| ···###

################################################################################
# La finalidad de este script es sustituir la sosa ventana de Estado que viene #
# por defecto en RPG Maker XP por una escena con varias ventanas, organización #
# más bonita, añadiendo gráficos de face y un perfil personal para cada perso- #
# naje.                                                                        #
# -Autor: Selkie                                                              #
# -Agradecimientos:                                                            #
#  · Silentwalker por su método para dibujar faces                            #
#  · Abbet por la idea                                                        #
################################################################################
# Instrucciones:                                                              #
#  1.- Pegar el script en una página superior a Main.                          #
#  2.- En Graphics/Pictures, meter gráficos de Face para cada personaje,      #
#      preferiblemente de 96x96px.                                            #
#  3.- Personalizar los datos de los personajes                                #
#  3.- ¡Disfrutar!                                                            #
################################################################################

#==============================================================================
# ** Método para dibujar las faces **                         
#==============================================================================
class Window_Base < Window
  def draw_actor_face      (actor, x, y)#############  Aquí se edita el nombre
###############################(Edición de nombre  )#  que ha de tener cada
    bitmap = RPG::Cache.picture('Face'+actor.id.to_s)#<-face.
######################################################
    src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(x - bitmap.width / 2, y - bitmap.height, bitmap, src_rect)
  end
end

#==============================================================================
# ** Ventana superior **
#==============================================================================
class Window_Status0 < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 96, 32, "Nombre:")
    self.contents.draw_text(230, 0, 96, 32, "Profesión:")
    self.contents.font.color = normal_color
    draw_actor_name(@actor, 80, 0)
    draw_actor_class(@actor, 320, 0)
    draw_actor_state(@actor, 480, 0)
  end
end

#==============================================================================
# ** Ventana de información del personaje **
#==============================================================================
class Window_Status1 < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 320, 480-64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_face      (@actor, 48, 96)      #Face
    draw_actor_graphic    (@actor, 96, 104)    #Chara
    draw_actor_level      (@actor, 108, -4)    #Nivel
    draw_actor_exp        (@actor, 108, 20)    #Experiencia
    draw_actor_hp        (@actor, 118, 50)    #Vida
    draw_actor_sp        (@actor, 118, 70)    #Magia
    self.contents.font.color = system_color
    self.contents.draw_text(4, 120+00, 300, 32, 'Género:')
    self.contents.draw_text(4, 120+24, 300, 32, 'Edad:')
    self.contents.draw_text(4, 120+48, 300, 32, 'Altura:')
    self.contents.draw_text(4, 120+72, 300, 32, 'Peso:')
    self.contents.draw_text(4, 120+96, 300, 32, 'Carácter:')
    self.contents.font.color = normal_color
   
    ######################################
    ##  Comienzo de la personalización  ##
    ######################################
    case @actor.id
      when 1  #Personaje 1
        self.contents.draw_text(108, 120+00, 300, 32, 'Masculino')      #Género                                                     
        self.contents.draw_text(108, 120+24, 300, 32, '3 meses')          #Edad                                                     
        self.contents.draw_text(108, 120+48, 300, 32, '64 píxeles')      #Altura                                                     
        self.contents.draw_text(108, 120+72, 300, 32, '2 KB')              #Peso                                                     
        self.contents.draw_text(108, 120+96, 300, 32, 'Genérico')      #Carácter
        #-------------------------------------------#Más datos(Múltiples líneas)
        self.contents.draw_text(16, 120+96+48, 300, 32, 'Este pelirrojo individuo se gana la')
        self.contents.draw_text(16, 120+96+72, 300, 32, 'vida como protagonista de los juegos')
        self.contents.draw_text(16, 120+96+96, 300, 32, 'que usan el RTP del RPG Maker XP.')
       
       
      when 2  #Personaje 2
        self.contents.draw_text(108, 120+00, 300, 32, 'Terror (?)')      #Género                                                     
        self.contents.draw_text(108, 120+24, 300, 32, '78 milenios')      #Edad                                                     
        self.contents.draw_text(108, 120+48, 300, 32, '3 pulgadas')      #Altura                                                     
        self.contents.draw_text(108, 120+72, 300, 32, '50 gramos')        #Peso                                                     
        self.contents.draw_text(108, 120+96, 300, 32, 'Inexistente')  #Carácter
        #-------------------------------------------#Más datos(Múltiples líneas)
        self.contents.draw_text(16, 120+96+ 48, 300, 32, 'El mejor amigo de Alexis. Aunque')
        self.contents.draw_text(16, 120+96+ 72, 300, 32, 'parezca un lancero de verdad, tan')
        self.contents.draw_text(16, 120+96+ 96, 300, 32, 'sólo es un disfraz poco conseguido.')
       
       
      when 3  #Personaje 3                                                                                           
        self.contents.draw_text(108, 120+00, 300, 32, '')#Género                                                     
        self.contents.draw_text(108, 120+24, 300, 32, '')#Edad                                                     
        self.contents.draw_text(108, 120+48, 300, 32, '')#Altura                                                     
        self.contents.draw_text(108, 120+72, 300, 32, '')#Peso                                                     
        self.contents.draw_text(108, 120+96, 300, 32, '')#Carácter
        #-------------------------------------------#Más datos(Múltiples líneas)
        self.contents.draw_text(16, 120+96+48, 300, 32, '')
        self.contents.draw_text(16, 120+96+72, 300, 32, '')
        self.contents.draw_text(16, 120+96+96, 300, 32, '')
       
       
      when 4  #Personaje 4                         
        self.contents.draw_text(108, 120+00, 300, 32, '')#Género                                                     
        self.contents.draw_text(108, 120+24, 300, 32, '')#Edad                                                     
        self.contents.draw_text(108, 120+48, 300, 32, '')#Altura                                                     
        self.contents.draw_text(108, 120+72, 300, 32, '')#Peso                                                     
        self.contents.draw_text(108, 120+96, 300, 32, '')#Carácter
        #-------------------------------------------#Más datos(Múltiples líneas)
        self.contents.draw_text(16, 120+96+48, 300, 32, '')
        self.contents.draw_text(16, 120+96+72, 300, 32, '')
        self.contents.draw_text(16, 120+96+96, 300, 32, '')
    end
    #### Fin de la personalización 
  end
end

#==============================================================================
# ** Ventana de Equipo y stats
#==============================================================================
class Window_Status2 < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 320, 480-64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 96, 32, "Arma:")
    self.contents.draw_text(4, 30, 96, 32, "Escudo:")
    self.contents.draw_text(4, 60, 96, 32, "Cabeza:")
    self.contents.draw_text(4, 90, 96, 32, "Cuerpo:")
    self.contents.draw_text(4, 120, 96, 32, "Accesorio:")
    draw_item_name($data_weapons[@actor.weapon_id], 100, 0)
    draw_item_name($data_armors[@actor.armor1_id], 100, 30)
    draw_item_name($data_armors[@actor.armor2_id], 100, 60)
    draw_item_name($data_armors[@actor.armor3_id], 100, 90)
    draw_item_name($data_armors[@actor.armor4_id], 100, 120)
    draw_actor_parameter(@actor, 4, 0  +240-64, 0)
    draw_actor_parameter(@actor, 4, 30 +240-64, 1)
    draw_actor_parameter(@actor, 4, 60 +240-64, 2)
    draw_actor_parameter(@actor, 4, 90 +240-64, 3)
    draw_actor_parameter(@actor, 4, 120+240-64, 4)
    draw_actor_parameter(@actor, 4, 150+240-64, 5)
    draw_actor_parameter(@actor, 4, 180+240-64, 6)
  end
end

#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
#  Aquí está la escena, con las llamadas a las diferentes ventanas
#==============================================================================

class Scene_Status
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor_index : actor index
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Get actor
    @actor = $game_party.actors[@actor_index]
    # Make status window
    @status_window0 = Window_Status0.new(@actor)
    @status_window1 = Window_Status1.new(@actor)
    @status_window1.y = 64
    @status_window2 = Window_Status2.new(@actor)
    @status_window2.x = 320
    @status_window2.y = 64
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @status_window0.dispose
    @status_window1.dispose
    @status_window2.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Menu.new(3)
      return
    end
    # If R button was pressed
    if Input.trigger?(Input::R)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To next actor
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # Switch to different status screen
      $scene = Scene_Status.new(@actor_index)
      return
    end
    # If L button was pressed
    if Input.trigger?(Input::L)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To previous actor
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # Switch to different status screen
      $scene = Scene_Status.new(@actor_index)
      return
    end
  end
end

INSTRUCCIONES
En el script y la demo están bien detalladas

CRÉDITOS
Ningún crédito es necesario, pero en ningún caso has de decir que el script es tuyo.... porque sabes que no es tuyo e.e

F.A.Q
P: ¿Dónde meto las faces?
R: En Graphics/Pictures, con el nombre "FaceX", donde X es el número del personaje.

P: ¿Y para editar los datos de cada personaje?
R: En el script, hay una parte que pone... "when 1", y debajo unos comandos "draw_text". En estos comandos, está
indicado en un comentario al final de la línea lo que corresponde poner ahí. Si quieres añadir más personajes, habría que copiar un "when" entero, con los comandos correspondientes, y cambiar el número a la ID del personaje.

P: ¿Por qué el payaso de la demo es tan bobo?
R: Hay preguntas a las que la ciencia no ha encontrado respuesta aún...

#2 Re: [XP] Advanced Status Display el Miér Feb 15, 2012 7:02 pm

Cuervoso

avatar
Buen Script Pólux, me gusto mucho, la pantalla de estatus así se ve mucho más original. Además, lo hiciste tú xD. Si usase el RPG Maker XP seguro ocuparía este script... pero no, uso el Vx Ace...

De verdad un buen aporte ¡+35 Makedas!.

¿Por qué Windows XP se llama XP, les gustaba ese smiley? ¿Por qué en los botones de los ascensores pone el número en braille, si cuando tocas ya se ha pulsado?"... Ya sabéis, cosas profundas.

Esas son las preguntas que no me dejan dormir por las noches....

P: ¿Por qué el payaso de la demo es tan bobo?
R: Hay preguntas a las que la ciencia no ha encontrado respuesta aún...

xD!!

Bueno, además de ver el Script, me di tiempo de leer todo, da gracia la forma en la que juntas el tema serio con lo cómico.

Saludos!






Cuervoso! No te pases ¬_¬

#3 Re: [XP] Advanced Status Display el Miér Feb 15, 2012 8:08 pm

orochii

avatar
Me gusta mucho la disposición de los datos. Los cambios que le haría serían nada más para facilitar la modificación (seh, una de esas comunes y nada originales listas de configuraciones xD).

Pero en fin, muy buen script Selkieman =D,
Orochii Zouveleki

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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