Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Speedrun Counter Display

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Speedrun Counter Display

Mensaje por Wecoc el 2018-02-10, 23:22

Últimamente no acepto pedidos pero este fue fácil así que lo he hecho ;D La idea es un contador que indica el tiempo que llevas de partida en todo momento, lo cual es ideal si quieres que en tu juego se puedan hacer speedruns.

Funcionamiento

Por defecto no se muestra. Para visualizar/ocultar el contador hay que clicar F6. Si se usa un sistema de opciones puede ponerse como opción ahí si se prefiere, pero eso ya es cosa vuestra; es un script fácil de comprender y editar.

Al iniciar la partida el contador empieza a funcionar. Tal como es de esperar, eso de guarda al guardar la partida y luego volver a cargarla.



Se muestran las horas, minutos, segundos y milisegundos jugados hasta el momento.

Para parar el juego solo hay que igualar una variable de Game_System a false y ya está, el contador queda parado.


4 segundos y medio. Ese tiempo para un speedrun no está mal, pero los he visto mejores...

Script

Código:
#==============================================================================
# ** [XP] Speedrun Counter Display
# Autor: Wecoc (no requiere créditos)
#==============================================================================

begin
  counter_viewport = Viewport.new(392, 440, 240, 32)
  counter_viewport.z = 10000
  $counter = Sprite.new(counter_viewport)
  $counter.visible = false
  $counter.bitmap = Bitmap.new(240, 32)
  $counter.bitmap.font.name = "Courier New"
  $counter.bitmap.font.size = 20
  $counter.bitmap.font.bold = true
end

class Game_System
  attr_accessor :speedrun_counter, :speedrun_running
  alias speedrun_counter_ini initialize unless $@
  def initialize
    speedrun_counter_ini
    @speedrun_counter = 0.0
    @speedrun_running = false
  end
end

class Scene_Title
  alias speedrun_new_game command_new_game unless $@
  def command_new_game
    speedrun_new_game
    $game_system.speedrun_running = true
  end
end

module Graphics
  class << self
    alias counter_upd update
    def update
      counter_upd
      $counter.bitmap.clear
      $counter.bitmap.fill_rect($counter.bitmap.rect, Color.new(0, 0, 0, 128))
      if !$game_system.nil? && $game_system.speedrun_running
        $game_system.speedrun_counter += 60
        $counter.bitmap.font.color = Color.new(0, 255, 0)
      else
        $counter.bitmap.font.color = Color.new(255, 255, 0)
      end
      c = ($game_system.speedrun_counter / Graphics.frame_rate).to_i
      msec = c % 60
      sec = (c / 60) % 60
      min = (c / 60 / 60) % 60
      hour = (c / 60 / 60 / 24) % 24
      counter_str = sprintf("%02d:%02d:%02d:%02d", hour, min, sec, msec)
      rect = Rect.new(0, 0, $counter.bitmap.width - 8, $counter.bitmap.height)
      $counter.bitmap.draw_text(rect, counter_str, 2)
    end
  end
end

module Input
  class << self
    alias counter_upd update
    def update
      counter_upd
      if Input.trigger?(Input::F6)
        $counter.visible = !$counter.visible
      end
    end
  end
end

Configuración

- Posición y tamaño del rectángulo del contador



- Fuente (nombre, tamaño y estilo) del contador (se recomienda una fuente monospace)



- Color y transparencia del fondo del rectángulo (puede borrarse la línea si no se quiere fondo)



- Color y transparencia de la fuente, según si el contador está activo o no



- Tecla que muestra/oculta del contador (si se quiere una tecla no default hay que usar un script de Input o Keyboard extendido)



Si neceistáis ayuda con modificaciones más complejas del script, comentad en el topic.
avatar
Wecoc
Administrador
Administrador



Créditos 12310

Gracias : 654

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Speedrun Counter Display

Mensaje por Gacoro el 2018-02-11, 14:47

Que script mas simple pero útil dentro se sus posibilidades, lo voy a mirar para tenerlo como guía y hacer uno pero que muestre el horario del juego y no el tiempo jugado.
Tengo una pregunta, en el caso de que no tuviera un fondo traslusido, que fuera transparente, el color de las letras se podrían camuflar y no distinguirse bien, en ese caso ¿se podría hacer que los números tengan un color (ejemplo blanco) y un bordende otro color (ejemplo negro)?, creo que es imposible en programación.

Buen aporte, suerte.
avatar
Gacoro
Principiante
Principiante

0/3

Créditos 389

Gracias : 30

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Speedrun Counter Display

Mensaje por Wecoc el 2018-02-11, 15:13

lo voy a mirar para tenerlo como guía y hacer uno pero que muestre el horario del juego y no el tiempo jugado

Bueno la gracia del script es el funcionamiento del contador para speedruns; para que muestre el "horario" será algo distinto (según como hayas montado ese horario). Igualmente más o menos el 50% del script sí te podría servir igual.

¿se podría hacer que los números tengan un color (ejemplo blanco) y un bordende otro color (ejemplo negro)?, creo que es imposible en programación

No, no es imposible, de hecho es fácil... Solo hay que hacer un poco de "trampa", mostrar el texto en negro, cambiar el color y mostrar el texto de color encima.

Mira, pongo dos versiones del update de Graphics algo distintas para que funcione de ese modo.

1) Sombra

Código:
module Graphics
  class << self
    alias counter_upd update
    def update
      counter_upd
      $counter.bitmap.clear
      if !$game_system.nil? && $game_system.speedrun_running
        $game_system.speedrun_counter += 60
      end
      c = ($game_system.speedrun_counter / Graphics.frame_rate).to_i
      msec = c % 60
      sec = (c / 60) % 60
      min = (c / 60 / 60) % 60
      hour = (c / 60 / 60 / 24) % 24
      counter_str = sprintf("%02d:%02d:%02d:%02d", hour, min, sec, msec)
      w, h = $counter.bitmap.width - 8, $counter.bitmap.height
      # Sombra
      $counter.bitmap.font.color = Color.new(0, 0, 0, 128)
      $counter.bitmap.draw_text(1, 1, w, h, counter_str, 2)
      # Texto
      $counter.bitmap.font.color = Color.new(255, 255, 255)
      $counter.bitmap.draw_text(0, 0, w, h, counter_str, 2)
    end
  end
end



2) Borde

Código:
module Graphics
  class << self
    alias counter_upd update
    def update
      counter_upd
      $counter.bitmap.clear
      if !$game_system.nil? && $game_system.speedrun_running
        $game_system.speedrun_counter += 60
      end
      c = ($game_system.speedrun_counter / Graphics.frame_rate).to_i
      msec = c % 60
      sec = (c / 60) % 60
      min = (c / 60 / 60) % 60
      hour = (c / 60 / 60 / 24) % 24
      counter_str = sprintf("%02d:%02d:%02d:%02d", hour, min, sec, msec)
      w, h = $counter.bitmap.width - 8, $counter.bitmap.height
      # Borde
      $counter.bitmap.font.color = Color.new(0, 0, 0, 128)
      $counter.bitmap.draw_text(-1, -1, w, h, counter_str, 2)
      $counter.bitmap.draw_text(+1, -1, w, h, counter_str, 2)
      $counter.bitmap.draw_text(-1, +1, w, h, counter_str, 2)
      $counter.bitmap.draw_text(+1, +1, w, h, counter_str, 2)
      # Texto
      $counter.bitmap.font.color = Color.new(255, 255, 255)
      $counter.bitmap.draw_text(0, 0, w, h, counter_str, 2)
    end
  end
end

avatar
Wecoc
Administrador
Administrador



Créditos 12310

Gracias : 654

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Speedrun Counter Display

Mensaje por Gacoro el 2018-02-11, 16:40

Claaaaro así si, voy a guardar esta información que es muy útil, gracias por aclararme ésto (aunque creo que ya sabia como hacerlo).
avatar
Gacoro
Principiante
Principiante

0/3

Créditos 389

Gracias : 30

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Speedrun Counter Display

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.