My friend Eron did an script about this one month ago, for RPG maker XP.
timer.set(time[, x, y, show_numbers, font_name, font_size, [red, green, blue[,alpha]] ])
With this, timer has some new methods as you can see on the script instructions.
#==============================================================================
# ** Sprite_Timer Mejorado
#------------------------------------------------------------------------------
# Autor: Eron
#------------------------------------------------------------------------------
# Para usarlo a parte de con los comandos de siempre,
# desde Llamar Script podéis usar éstos métodos directamente:
# timer.set(time[, x, y, show_numbers, font_name, font_size, [red, green, blue[,alpha]] ])
# Ejemplo 1: timer.set(5)
# Ejemplo 2: timer.set(10, 0, 0)
# Ejemplo 3: timer.set(5, 5, 5, true, "Verdana", 35, [255,200,20])
# timer.time
# timer.min
# timer.sec
# timer.play # (unpause)
# timer.pause
# timer.stop
# timer.reset
# timer.pause?
# timer.add_time(value)
# timer.x
# timer.font
# timer.size
# timer.color
# timer.x = x
# timer.font = font
# timer.size = size
# timer.color = [red, green, blue[, alpha]]
# timer.show_numbers
# timer.show_numbers = true / false
#==============================================================================
class Scene_Map
attr_reader :spriteset
end
class Scene_Battle
attr_reader :spriteset
end
class Spriteset_Map
attr_reader :timer_sprite
end
class Spriteset_Battle
attr_reader :timer_sprite
end
class Interpreter
def timer
return $scene.spriteset.timer_sprite
end
def command_124
@parameters[0] == 0 ? timer.set(@parameters[1]) : timer.stop
end
end
class Sprite_Timer < Sprite
attr_accessor :show_numbers
def initialize
super
@font_name = "Arial"
@font_size = 32
@font_color = Color.new(255,255,255)
get_bitmap_size
self.x = 552
self.y = 0
self.z = 500
@time = -1
@reset_time = -1
@show_numbers = true
@pause = false
update
end
def get_bitmap_size
self.bitmap = Bitmap.new(1,1)
self.bitmap.font.name = @font_name
self.bitmap.font.size = @font_size
w = self.bitmap.text_size("00:00").width
h = self.bitmap.text_size("00:00").height
self.bitmap = Bitmap.new(w,h)
self.bitmap.font.name = @font_name
self.bitmap.font.size = @font_size
self.bitmap.font.color = @font_color
end
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#------------------------------------------------------------------------------
def set(time,x=self.x,y=self.y,show_numbers=@show_numbers,font_name=@font_name,font_size=@font_size,font_color=@font_color)
$game_system.timer_working = true
@time = (time + 1) * Graphics.frame_rate
@reset_time = time
@show_numbers = show_numbers
self.x, self.y = x, y
self.font = font_name if font_name != @font_name
self.size = font_size if font_size != @font_size
self.color = font_color if font_color != @font_color
update
end
def time
return @time / Graphics.frame_rate
end
def min
return time / 60
end
def sec
return time % 60
end
#------------------------------------------------------------------------------
def play
@pause = false
end
def pause
@pause = true
end
def pause?
return @pause
end
def stop
@time = -1
$game_system.timer_working = false
return
end
def reset
set(@reset_time)
end
#------------------------------------------------------------------------------
def add_time(value)
@time += value * Graphics.frame_rate
@time = [0, @time].max
end
#------------------------------------------------------------------------------
def font
return @font_name
end
def font=(name)
@font_name = name
self.bitmap.font.name = name
end
def size
return @font_size
end
def size=(size)
@font_size = size
get_bitmap_size
end
def color
return @font_color
end
def color=(array)
array << 255 if array.size == 3
color = Color.new(array[0],array[1],array[2],array[3])
@font_color = color
self.bitmap.font.color = color
end
def update
super
@time -= 1 if @time > 0 and not @pause
$game_system.timer = @time
if $game_system.timer_working
self.visible = @show_numbers
else
self.visible = false
end
if $game_system.timer / Graphics.frame_rate != @total_sec
self.bitmap.clear
@total_sec = $game_system.timer / Graphics.frame_rate
min = @total_sec / 60
sec = @total_sec % 60
text = sprintf("%02d:%02d", min, sec)
self.bitmap.draw_text(self.bitmap.rect, text, 1)
end
end
end