Mundo Maker
¡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 4133 miembros registrados.
El último usuario registrado es Neysersitoh.

Nuestros miembros han publicado un total de 84767 mensajes en 12064 argumentos.

[XP] Sprite Timer con barra de tiempo

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Sprite Timer con barra de tiempo

Mensaje por Wecoc el 2016-09-26, 16:06

Éste script hace que el tiempo se muestre con una barra que va bajando.
Es muy personalizable, y puse anotaciones en el script para que os sea más fácil hacerla como queráis.

Código:
#==============================================================================
# ** [XP] Sprite Timer con barra de tiempo
#------------------------------------------------------------------------------
# Autor:
#   Wecoc (no requiere créditos)
#
# Llamadas de script:
#   $game_system.timer_position = (POSICIÓN)   # 0: Arriba, 1: Centro, 2: Abajo
#==============================================================================

class Game_System
  attr_accessor :timer_position
  attr_accessor :timer_max
  alias sprite_timer_ini initialize unless $@
  def initialize
    sprite_timer_ini
    @timer_position = 2 # Posición inicial
    @timer_max = 0 # Máximo (uso interno, no cambiar)
  end
end

class Interpreter
  def command_124
    if @parameters[0] == 0
      $game_system.timer = @parameters[1] * Graphics.frame_rate
      $game_system.timer_working = true
      $game_system.timer_max = @parameters[1]
    end
    if @parameters[0] == 1
      $game_system.timer_working = false
      $game_system.timer_max = 0
    end
    return true
  end
end

#==============================================================================

class Sprite_Timer < Sprite
  
  OUTLINE = true    # Mostrar texto con outline
  SMOOTH = true     # Mover barra por frame / solo cuando cambia el segundo
  
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super
    self.bitmap = Bitmap.new(480, 40) # Tamaño de la barra
    # Fuente (nombre, negrita, tamaño)
    self.bitmap.font.name = "Arial"
    self.bitmap.font.bold = true
    self.bitmap.font.size = 32
    # Posición de la barra (por defecto queda centrada)
    self.x = 640 / 2 - (self.bitmap.width) / 2
    self.z = 500
    update
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.bitmap.clear
    # Obtener texto en formato hora
    @total_sec = $game_system.timer / Graphics.frame_rate
    min = @total_sec / 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d", min, sec)
    # Fondo de barra
    self.bitmap.fill_rect(self.bitmap.rect, Color.new(0,0,0,64))
    # Obtener ancho y alto de la barra
    width = self.bitmap.width
    height = self.bitmap.height
    if $game_system.timer > 0 && $game_system.timer_max > 0
      timer = $game_system.timer.to_f / Graphics.frame_rate
      bar_width = (timer * width / $game_system.timer_max).to_i
      bar_height = self.bitmap.height
      rect = Rect.new(0, 0, bar_width, bar_height)
      # Definir color de la barra
      bar_color = Color.new(64, 128, 192, 128)
      # Dibujar Barra
      self.bitmap.fill_rect(rect, bar_color)
    end
    # Mostrar texto outline
    if OUTLINE == true
      # Definir color outline
      self.bitmap.font.color = Color.new(0, 0, 0)
      # Dibujar texto outline
      self.bitmap.draw_text( 1,  1, width, height, text, 1)
      self.bitmap.draw_text( 1, -1, width, height, text, 1)
      self.bitmap.draw_text(-1,  1, width, height, text, 1)
      self.bitmap.draw_text(-1, -1, width, height, text, 1)
    end
    # Definir color texto
    self.bitmap.font.color.set(255, 255, 255)
    # Dibujar texto
    self.bitmap.draw_text(0, 0, width, height, text, 1)
  end  
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    # Mostrar solo si se ejecuta el contador de tiempo
    self.visible = $game_system.timer_working
    # Definir posición del sprite según $game_system.timer_position
    case $game_system.timer_position
    when 0
      self.y = 24
    when 1
      self.y = 480 / 2 - (self.bitmap.height) / 2
    when 2
      self.y = 480 - self.bitmap.height - 24
    end
    # Refrescar barra
    if ($game_system.timer / Graphics.frame_rate != @total_sec) || SMOOTH
      refresh
    end
  end
end

Imagen:



Está todo en el script pero igualmente si tenéis alguna duda ponedla aquí.
avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

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.