Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

FrozenGraveyard

avatar
Membro Honorário I
Membro Honorário I
Advanced Timer v2.5
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)
Screenshots

v1
Spoiler:

[Você precisa estar registrado e conectado para ver esta imagem.]
v2
Spoiler:

[Você precisa estar registrado e conectado para ver esta imagem.]
v2.5
-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
[Você precisa estar registrado e conectado para ver este link.]
v2
[Você precisa estar registrado e conectado para ver este link.]
v2.5
[Você precisa estar registrado e conectado para ver 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
v2
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
v2.5
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

    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
  • VitorJ, por criar o script.

Ver perfil do usuário

Dr.

avatar
Banido
Banido
HUm.enteresande ! vai ajudar muitos novatos !



Este usuário foi banido do fórum, não responderá mensagens privadas nem nada até 2038.
Ver perfil do usuário

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum