1 Advanced Timer v2 [Atualizado 27/9/09] 12/8/2012, 01:46
FrozenGraveyard
Membro Honorário I
Advanced Timer v2.5
por VitorJ
por VitorJ
Introdução
Fiz esse script a pedido de um amigo, Ele modifica o contador padrão do VX, Podendo escolher o tipo de contagen, Crescente ou Decresente. E também armazena o tempo em variaveis que podem ser definida no script. E pode mostrar só os Segundos ou o Minuto e Segundo, conforme uma switch que também pode ser definida no script e também adiciona uma imagen de fundo no timer, e inicia automaticamente se a variavel de segundo ou minuto forem maior que zero, e some automaticamente se as mesma forme igual a zero.
Características
- Facil costumização
- Tempo armazenado em variaveis, Mais facil de criar condições
- Pode por imagen de fundo, Deixando com um visual mais agradavel
- Pode fazer contagens decrescentes ou crescentes
- Pode mostrar somente segundos, para contagens rapida
- Pode mostrar o contador totalmente por pictures (v2)
- Pisca quando chega ao um certo valor na contagen decrescente (v2.5)
v1
- Spoiler:
- Spoiler:
-Nao Precisa-
Como usar
Cole acima do main e abaixo do Sprite_Timer.
O Tempo inicia automaticamente se a variavel de minuto ou segundo for maior que 0.
Demo
v1
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
v2
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
v2.5
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Script
v1
- Spoiler:
- Código:
#==============================================================================#
# Sistema de tempo(ou cronometro) avançado por VitorJ, Creditos bem-vindo =]
#==============================================================================#
module AT
Min_Var = 1 # ID da variavel de minuto
Sec_Var = 2 # ID da variavel de segundo
Dec_Swi = 1 # ID da switch que passa pra contagen decrescente
Sec_Swi = 2 # Switch que faz mostrar somente segundos
Pos_X = 248 # Posição X do contador
Pos_Y = 10 # Posição Y do contador
Sec_X = 258 # Posição X do contador quando estiver somente segundos
Sec_Y = 10 # Posição Y do contador quando estiver somente segundos
Back = "Timer_Back" # Nome da imagen de fundo
Back_X = 222 # Posição X da imagen de fundo
Back_Y = 0 # Posição Y da imagen de fundo
Mes_Att = false # O tempo vai passar enquanto estiver com a mensagen aberta?
Font = "Palatino Linotype" # Nome da fonte usada nos numeros
Size = 28 # Tamanho da fonte usada nos numeros
end
class Sprite_Timer < Sprite
#--------------------------------------------------------------------------
# Inicialização do objeto
# viewport : "camada"
#--------------------------------------------------------------------------
def initialize(viewport)
super(viewport)
self.bitmap = Bitmap.new(544, 416)
self.bitmap.font.name = AT::Font
self.bitmap.font.size = AT::Size
self.z = 200
@t = 0
update
end
#--------------------------------------------------------------------------
# Dispose
#--------------------------------------------------------------------------
def dispose
self.bitmap.dispose
super
end
def active?
result = false
result = true if $game_variables[AT::Min_Var] > 0
result = true if $game_variables[AT::Sec_Var] > 0
return result
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
super
self.visible = active?
if active?
if @t >= 60
update_time
@t = 0
end
self.bitmap.clear
bitmap = Cache.system(AT::Back)
w = bitmap.width
h = bitmap.height
src_rect = Rect.new(0, 0, w, h)
self.bitmap.blt(AT::Back_X, AT::Back_Y, bitmap, src_rect)
min = $game_variables[AT::Min_Var]
sec = $game_variables[AT::Sec_Var]
text = sprintf("%02d:%02d", min, sec)
text2 = "02:02"
s = bitmap.text_size(text2.to_s)
self.bitmap.font.color.set(255, 255, 255)
rect = Rect.new(AT::Pos_X,AT::Pos_Y,s.width,AT::Size)
if $game_switches[AT::Sec_Swi]
text = sprintf("%02d", sec)
text2 = "02"
rect = Rect.new(AT::Sec_X,AT::Sec_Y,s.width,AT::Size)
end
self.bitmap.draw_text(rect, text)
if AT::Mes_Att
@t += 1
else
@t += 1 if (not $game_message.visible)
end
end
end
def update_time
if $game_switches[AT::Dec_Swi]
if $game_variables[AT::Sec_Var] > 0
$game_variables[AT::Sec_Var] -= 1
else
if $game_variables[AT::Min_Var] > 0
$game_variables[AT::Sec_Var] = 59
$game_variables[AT::Min_Var] -= 1
end
end
else
if $game_variables[AT::Sec_Var] < 59
$game_variables[AT::Sec_Var] += 1
else
if $game_variables[AT::Min_Var] < 59
$game_variables[AT::Sec_Var] = 0
$game_variables[AT::Min_Var] += 1
end
end
end
end
end
- Spoiler:
- Código:
#==============================================================================#
# Sistema de tempo(ou cronometro) avançado por VitorJ, Creditos bem-vindo =]
#==============================================================================#
module AT
Min_Var = 1 # ID da variavel de minuto
Sec_Var = 2 # ID da variavel de segundo
Dec_Swi = 1 # ID da switch que passa pra contagen decrescente
Sec_Swi = 2 # Switch que faz mostrar somente segundos
Pos_X = 248 # Posição X do contador
Pos_Y = 10 # Posição Y do contador
Sec_X = 258 # Posição X do contador quando estiver somente segundos
Sec_Y = 10 # Posição Y do contador quando estiver somente segundos
Back = "Timer_Back" # Nome da imagen de fundo
Back_X = 222 # Posição X da imagen de fundo
Back_Y = 0 # Posição Y da imagen de fundo
Mes_Att = false # O tempo vai passar enquanto estiver com a mensagen aberta?
Font = "Palatino Linotype" # Nome da fonte usada nos numeros
Size = 28 # Tamanho da fonte usada nos numeros
Pic_Num = true # Vai usar imagen como numero?
Num_Name = "Timer_Num" # Se true, qual o nome da imagen?
DoubleDot = "DD" # Imagen dos 2 pontos
Zero = true # Mostrar o zero? (01,02,03,04,05,06...)
end
class Sprite_Timer < Sprite
#--------------------------------------------------------------------------
# Inicialização do objeto
# viewport : "camada"
#--------------------------------------------------------------------------
def initialize(viewport)
super(viewport)
self.bitmap = Bitmap.new(544, 416)
self.bitmap.font.name = AT::Font
self.bitmap.font.size = AT::Size
self.z = 200
@t = 0
update
end
#--------------------------------------------------------------------------
# Dispose
#--------------------------------------------------------------------------
def dispose
self.bitmap.dispose
super
end
def active?
result = false
result = true if $game_variables[AT::Min_Var] > 0
result = true if $game_variables[AT::Sec_Var] > 0
return result
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
super
self.visible = active?
if active?
if @t >= 60
update_time
@t = 0
end
self.bitmap.clear
bitmap = Cache.system(AT::Back)
w = bitmap.width
h = bitmap.height
src_rect = Rect.new(0, 0, w, h)
self.bitmap.blt(AT::Back_X, AT::Back_Y, bitmap, src_rect)
min = $game_variables[AT::Min_Var]
sec = $game_variables[AT::Sec_Var]
if (not AT::Pic_Num)
if AT::Zero
text = sprintf("%02d:%02d", min, sec)
text2 = "02:02"
if $game_switches[AT::Sec_Swi]
text = sprintf("%02d", sec)
text2 = "02"
end
else
text = sprintf("% 2d:% 2d", min, sec)
text2 = "02:02"
if $game_switches[AT::Sec_Swi]
text = sprintf("% 2d", sec)
text2 = "02"
end
end
s = bitmap.text_size(text2.to_s)
self.bitmap.font.color.set(255, 255, 255)
rect = Rect.new(AT::Pos_X,AT::Pos_Y,s.width+24,AT::Size)
self.bitmap.draw_text(rect, text)
else
if AT::Zero
if $game_switches[AT::Sec_Swi]
x = AT::Pos_X + 8
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if sec < 10
draw_numb(x,y,0)
draw_numb(x+c1,y,sec)
else
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
else
x = AT::Pos_X - 16
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if min < 10
draw_numb(x,y,0)
draw_numb(x+c1,y,min)
else
uni = min % 10
dez = min % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
bmp = Cache.system(AT::DoubleDot)
rect = Rect.new(0,0,bmp.width,bmp.height)
self.bitmap.blt(x+(c1*2), y, bmp, rect)
x += bmp.width
if sec < 10
draw_numb(x+(c1*2),y,0)
draw_numb(x+(c1*3),y,sec)
else
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x+(c1*2),y,dez)
draw_numb(x+(c1*3),y,uni)
end
end
else
if $game_switches[AT::Sec_Swi]
x = AT::Pos_X + 8
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if sec < 10
draw_numb(x+c1,y,sec)
else
n = sec
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
else
x = AT::Pos_X - 16
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if min < 10
draw_numb(x+c1,y,min)
else
uni = min % 10
dez = min % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
bmp = Cache.system(AT::DoubleDot)
rect = Rect.new(0,0,bmp.width,bmp.height)
self.bitmap.blt(x+(c1*2), y, bmp, rect)
x += bmp.width
if sec < 10
draw_numb(x+(c1*3),y,sec)
else
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x+(c1*2),y,dez)
draw_numb(x+(c1*3),y,uni)
end
end
end
end
if AT::Mes_Att
@t += 1
else
@t += 1 if (not $game_message.visible)
end
end
end
def update_time
if $game_switches[AT::Dec_Swi]
if $game_variables[AT::Sec_Var] > 0
$game_variables[AT::Sec_Var] -= 1
else
if $game_variables[AT::Min_Var] > 0
$game_variables[AT::Sec_Var] = 59
$game_variables[AT::Min_Var] -= 1
end
end
else
if $game_variables[AT::Sec_Var] < 59
$game_variables[AT::Sec_Var] += 1
else
if $game_variables[AT::Min_Var] < 59
$game_variables[AT::Sec_Var] = 0
$game_variables[AT::Min_Var] += 1
end
end
end
end
def draw_numb(x,y,n)
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
rect = Rect.new(n*c1,0,c1,img.height)
self.bitmap.blt(x, y, img, rect)
end
end
- Spoiler:
- Código:
#==============================================================================#
# Sistema de tempo(ou cronometro) avançado v2.5 por VitorJ
#==============================================================================#
module AT
Min_Var = 1 # ID da variavel de minuto
Sec_Var = 2 # ID da variavel de segundo
Blink_Var = 3 # ID da variavel que vai definir com quantos segundos vai piscar
Dec_Swi = 1 # ID da switch que passa pra contagen decrescente
Sec_Swi = 2 # Switch que faz mostrar somente segundos
Pos_X = 248 # Posição X do contador
Pos_Y = 10 # Posição Y do contador
Sec_X = 258 # Posição X do contador quando estiver somente segundos
Sec_Y = 10 # Posição Y do contador quando estiver somente segundos
Back = "Timer_Back" # Nome da imagen de fundo
Back_X = 222 # Posição X da imagen de fundo
Back_Y = 0 # Posição Y da imagen de fundo
Mes_Att = false # O tempo vai passar enquanto estiver com a mensagen aberta?
Font = "Palatino Linotype" # Nome da fonte usada nos numeros
Size = 28 # Tamanho da fonte usada nos numeros
Pic_Num = true # Vai usar imagen como numero?
Num_Name = "Timer_Num" # Se true, qual o nome da imagen?
DoubleDot = "DD" # Imagen dos 2 pontos
Zero = true # Mostrar o zero? (01,02,03,04,05,06...)
end
class Sprite_Timer < Sprite
#--------------------------------------------------------------------------
# Inicialização do objeto
# viewport : "camada"
#--------------------------------------------------------------------------
def initialize(viewport)
super(viewport)
self.bitmap = Bitmap.new(544, 416)
self.bitmap.font.name = AT::Font
self.bitmap.font.size = AT::Size
self.z = 200
@t = 0
@b = 0
@w = 0
@blink = false
update
end
#--------------------------------------------------------------------------
# Dispose
#--------------------------------------------------------------------------
def dispose
self.bitmap.dispose
super
end
def active?
result = false
result = true if $game_variables[AT::Min_Var] > 0
result = true if $game_variables[AT::Sec_Var] > 0
return result
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
super
self.visible = active?
if active?
if @t >= 60
update_time
@t = 0
end
min = $game_variables[AT::Min_Var]
sec = $game_variables[AT::Sec_Var]
if @b > 0
@b -= 1
end
if @w > 0
@w -= 1
end
if @blink and @b == 0
@blink = false
@w = (sec*3)
end
self.bitmap.clear
bitmap = Cache.system(AT::Back)
w = bitmap.width
h = bitmap.height
src_rect = Rect.new(0, 0, w, h)
self.bitmap.blt(AT::Back_X, AT::Back_Y, bitmap, src_rect)
if $game_variables[AT::Blink_Var] >= sec and $game_switches[AT::Dec_Swi] and @b == 0 and @w == 0
@blink = true
@b = 20
end
if not @blink
if (not AT::Pic_Num)
if AT::Zero
text = sprintf("%02d:%02d", min, sec)
text2 = "02:02"
if $game_switches[AT::Sec_Swi]
text = sprintf("%02d", sec)
text2 = "02"
end
else
text = sprintf("% 2d:% 2d", min, sec)
text2 = "02:02"
if $game_switches[AT::Sec_Swi]
text = sprintf("% 2d", sec)
text2 = "02"
end
end
s = bitmap.text_size(text2.to_s)
self.bitmap.font.color.set(255, 255, 255)
rect = Rect.new(AT::Pos_X,AT::Pos_Y,s.width+24,AT::Size)
self.bitmap.draw_text(rect, text)
else
if AT::Zero
if $game_switches[AT::Sec_Swi]
x = AT::Pos_X + 8
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if sec < 10
draw_numb(x,y,0)
draw_numb(x+c1,y,sec)
else
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
else
x = AT::Pos_X - 16
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if min < 10
draw_numb(x,y,0)
draw_numb(x+c1,y,min)
else
uni = min % 10
dez = min % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
bmp = Cache.system(AT::DoubleDot)
rect = Rect.new(0,0,bmp.width,bmp.height)
self.bitmap.blt(x+(c1*2), y, bmp, rect)
x += bmp.width
if sec < 10
draw_numb(x+(c1*2),y,0)
draw_numb(x+(c1*3),y,sec)
else
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x+(c1*2),y,dez)
draw_numb(x+(c1*3),y,uni)
end
end
else
if $game_switches[AT::Sec_Swi]
x = AT::Pos_X + 8
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if sec < 10
draw_numb(x+c1,y,sec)
else
n = sec
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
else
x = AT::Pos_X - 16
y = AT::Pos_Y
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
if min < 10
draw_numb(x+c1,y,min)
else
uni = min % 10
dez = min % 100 / 10
draw_numb(x,y,dez)
draw_numb(x+c1,y,uni)
end
bmp = Cache.system(AT::DoubleDot)
rect = Rect.new(0,0,bmp.width,bmp.height)
self.bitmap.blt(x+(c1*2), y, bmp, rect)
x += bmp.width
if sec < 10
draw_numb(x+(c1*3),y,sec)
else
uni = sec % 10
dez = sec % 100 / 10
draw_numb(x+(c1*2),y,dez)
draw_numb(x+(c1*3),y,uni)
end
end
end
end
end
if AT::Mes_Att
@t += 1
else
@t += 1 if (not $game_message.visible)
end
end
end
def update_time
if $game_switches[AT::Dec_Swi]
if $game_variables[AT::Sec_Var] > 0
$game_variables[AT::Sec_Var] -= 1
else
if $game_variables[AT::Min_Var] > 0
$game_variables[AT::Sec_Var] = 59
$game_variables[AT::Min_Var] -= 1
end
end
else
if $game_variables[AT::Sec_Var] < 59
$game_variables[AT::Sec_Var] += 1
else
if $game_variables[AT::Min_Var] < 59
$game_variables[AT::Sec_Var] = 0
$game_variables[AT::Min_Var] += 1
end
end
end
end
def draw_numb(x,y,n)
img = Cache.system(AT::Num_Name)
c1 = img.width / 10
rect = Rect.new(n*c1,0,c1,img.height)
self.bitmap.blt(x, y, img, rect)
end
end
- Perguntas Frequentes
- VitorJ, por criar o script.
Q:Como faço para ligar o modo decrescente?
A:Ligue a switch que você definiu na linha 7 do script.
Q:Como faço para mostrar somente segundos?
A:Ligue a switch que você definiu na linha 8 do script.
Créditos e Agradecimentos