O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Ghost Countdown System

Iniciado por miguel8884, 15/07/2014 às 10:55

15/07/2014 às 10:55 Última edição: 15/07/2014 às 10:57 por miguel8884
Countdown System

Compativel com: RMVXA
Compatibilidade: boa
Facilidade de uso: fácil
Lag gerado: baixo

[box class=titlebg]
Condições de Uso
[/box]
Livre para uso comercial e não comercial, apenas dê os devidos créditos.

[box class=titlebg]
Para que serve o script
[/box]
O script serve para criar um sistema de contagem regressiva, que pode ser ativada em qualquer mapa apenas colocando um evento com algumas funções citadas no script, e voa-la, além de ativar uma switch e poder tocar um som ao final da contagem, ele também pode ser posicionado, ou em um lugar configurável pelo script, ou simplesmente acima do jogador!

[box class=titlebg]
Imagens
[/box]
Spoiler
[close]

[box class=titlebg]
Script
[/box]
#===============================================================================
# ** Countdown System
# Autor: miguel8884
#-------------------------------------------------------------------------------
# Data de lançamento: 15/07/2014
# Versão: 1.0
#-------------------------------------------------------------------------------
# Descrição:
#
# O script faz com que seja possível ativar um countdown no mapa, e assim que
# a contagem acaba ele desaparece e ativa uma switch.
#-------------------------------------------------------------------------------
# Características:
# * Configurável!
# * Características da fonte!
# * Duas formas de posição e uma delas personalizável!
# * Velocidade de contagem dos segundos definível!
# * Switch ativada após o término da contagem!
# * Possibilidade de tocar som após o término da contagem!
#-------------------------------------------------------------------------------
# Log:
# v1.0
#   15/07/2014 - Script lançado!
#===============================================================================
# Como usar:
#
# No mapa em que quer inserir a contagem, coloque um evento qualquer sem gráfico
# com dois comentários, um dessa forma "Countdown=time" sem aspas onde time é
# o tempo, sendo apenas um número, a quantidade de minutos.
# Exemplo: Countdown=1 será uma contagem regressiva de 1 minuto
# Agora mais um comentário, a posição, deverá ser feito assim: "Position=id" sem
# apas onde id pode ser 0, que será posicionada de acordo com as configurações
# ou pode ser 1, onde será localizada bem acima da cabeça do herói.
#===============================================================================
module Countdown_Config
  #=============================================================================
  # Configurações
  #=============================================================================
  #=============================================================================
  # Second Speed - É a velocidade da contagem dos segundos, o padrão é 60.
  # Quanto maior o número mais demora a passar os segundos e quando menor
  # mais rápido.
  #=============================================================================
  Scond_Speed = 60 
  Position_XY = [0,0] # Posição XY primária da contagem #
  Font_Name = "Verdana" # Nome da fonte #
  Font_Size = 24 # Tamanho da fonte #
  Font_Color = Color.new(255,255,255) # Cor da fonte em sequencia RGB #
  Active_Switch = 1 # Switch que será ativada após o termino da contagem #
  Sound = true # Será tocado um som após a contagem acabar? #
  Sound_Name = "" # Nome do som caso for tocado, na pasta SE #
  Sound_Volume = 80 # Volume do som #
  #=============================================================================
  # Fim das configurações
  #=============================================================================
end
#===============================================================================
# Aqui começa o script
#===============================================================================
#===============================================================================
# Classe Game_Event adicionada um método para verificar se precisa de contagem
#===============================================================================
class Game_Event < Game_Character
  alias gst_sps setup_page_settings
  alias gst_update_c update
  #=============================================================================
  # Método que inicia as configurações da página do evento
  #=============================================================================
  def setup_page_settings
    gst_sps
    check_countdown
  end
  #=============================================================================
  # Método que checa se há um comentário pedindo contagem e suas configurações
  #=============================================================================
  def check_countdown
    return if @list.nil?
    for count in @list
      next unless count.code == 108 or count.code == 408
      if count.parameters[0].include?("Countdown=")
        @time = count.parameters[0].sub("Countdown=","")
      end
      if count.parameters[0].include?("Position=")
        @position = count.parameters[0].sub("Position=","")
        @countdown = Countdown.new(@position,@time)
      end
    end
  end
  #=============================================================================
  # Método que atualiza a classe modificado para atualizar o countdown
  #=============================================================================
  def update
    gst_update_c
    unless @countdown.nil?
      @countdown.update
    end
  end
end
#===============================================================================
# Classe criada para desenhar o countdown
#===============================================================================
class Countdown < Sprite
  include Countdown_Config
  #=============================================================================
  # Método que inicia a classe
  #   pos  : Posição
  #   time : Tempo inicial
  #=============================================================================
  def initialize(pos,time)
    super(nil)
    @position = pos
    @time = time.to_i
    @count = 0
    @string = 00
    self.bitmap = Bitmap.new(100,90)
    self.bitmap.font.name = Font_Name
    self.bitmap.font.size = Font_Size
    self.bitmap.font.color = Font_Color
    self.bitmap.draw_text(0,0,100,90,"#{@time}:#{@string.to_s}",1)
    case @position.to_i
    when 0
      self.x = Position[0]
      self.y = Position[1]
    when 1
      self.x = $game_player.screen_x
      self.y = $game_player.screen_y
    end
    self.z = 3
  end
  #=============================================================================
  # Método que atualiza a classe
  #=============================================================================
  def update
    unless @string == 0 and @time == 0
    if @count < Scond_Speed
      @count += 1
    else
      if @string > 0 
        @string -= 1
      else
        @time -= 1
        @string = 59
      end
      @count = 0
    end
    draw_time
    if @string == 0 and @time == 0
      dispose
      RPG::SE.new(Sound_Name,Sound_Volume).play
      $game_switches[Active_Switch] = true
    end
    unless @string == 0 and @time == 0
      case @position.to_i
      when 0
        self.x = Position[0]
        self.y = Position[1]
      when 1
        self.x = $game_player.screen_x - self.bitmap.width + self.bitmap.width / 2
        self.y = $game_player.screen_y - self.bitmap.height
      end
    end
    end
  end
  #=============================================================================
  # Método que apaga a classe
  #=============================================================================
  def dispose
    self.bitmap = nil
  end
  #=============================================================================
  # Método que desenha o tempo
  #=============================================================================
  def draw_time
    dispose
    self.bitmap = Bitmap.new(100,90)
    self.bitmap.font.name = Font_Name
    self.bitmap.font.size = Font_Size
    self.bitmap.font.color = Font_Color
    if @string < 10
      self.bitmap.draw_text(0,0,100,90,"#{@time}:0#{@string.to_s}",1)
    else
      self.bitmap.draw_text(0,0,100,90,"#{@time}:#{@string.to_s}",1)
    end
  end
end
#===============================================================================
# Fim do script
#===============================================================================

[box class=titlebg]
Créditos e Avisos
[/box]
Criador: miguel8884
Avisos: Qualquer bug ou problema que tiver, avise-me e se possível passe o script, ou uma imagem com o erro, para eu poder identificar.

Sugestões são bem-vindas!

Tipo pra fazer algo de.. O personagem tem uma bomba e explode quando o tempo zerar?  :derp:

Sim, entre outras coisas do tipo  :XD:, como missões cronometradas ou algo assim!

Bom, é melhor do que uma janela na tela, e é personalizável
a posição, então, pra quem usa o cronômetro ja é uma boa.
  :blink: