Hacred Sall
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.



 
InícioProcurarÚltimas imagensRegistarEntrar

Compartilhe | 
 

 [RM VX]-Script de dia e noite

Ver o tópico anterior Ver o tópico seguinte Ir para baixo 
AutorMensagem
Makisso
Aspirante
Aspirante
Makisso

Escorpião

[RM VX]-Script de dia e noite Empty
MensagemAssunto: [RM VX]-Script de dia e noite   [RM VX]-Script de dia e noite Icon_minitimeQua Out 07, 2009 4:19 pm

Sistema de Tempo Kylock para VX v1.3
por Kylock
tradução Equipe Gemstone



Introdução

Esse é um script que faz com que, depois de um certo tempo, comece a anoitecer.
Após algum tempo, amanhece novamente.

Como Usar



Chamar Funções do Script
Use o comando "Chamar Script".


$kts.stop - parar o tempo
$kts.go - continuar o tempo
$kts.sec(n) - avança (n) segundos
$kts.min(n) - avança (n) minutos
$kts.hours(n) - avança (n) horas
$kts.days(n) - avança (n) dias.
$kts.jump_to_hour(n) - Muda o tempo para a hora (n).

Configurações do Dabatase do Jogo

Esse script, por padrão, usa as seguintes variáveis e switches:
Variáveis:

[1] O tempio atual [4] Horas Atual
[2] Segundo atual [5] Dia Atual
[3] Minuto atual [6] Nome do dia atual

Switches:


    [1] ON durante a noite (2200-0400)(10pm-4am)
    [2] ON durante a madrugada (0500-0800)( 5am-8am)
    [3] ON durante o amanhecer (0900-1800)( 9am-6pm)
    [4] ON durante o anoitecer (1900-2100)( 7pm-9pm)



Script

Código:
#
# Sistema de Tempo Kylock para VX v1.3
#  10.5.2008
# traduzido pela Equipe Gemstone
#
#  Script por: Kylock
#            Praticamente todo reescrito desde a versão para XP. Códigos mais limpos
# e compatíveis. Esse é o meu sistema de dia e noite. Ele adiciona uma nova janela
# ao menu, então, se você usa um CMS, cole este script acima dele.
#            Eu tentei fazer esse o mais customizável possível, as configurações
# são encontrada logo em baixo. Embora as variáveis sejam opcionais, eu
# sugiro que as usem, pois poderão construtir eventos baseados nesse script
# mais facilmente.
#
# Histórico
#  1.0 - Lançamento.
#  1.1 - Corrigido a mudança de tonalidade nas batalhas.  Coloque este script
#      abaixo de scripts de batalha caso você note alguma erro na mesma.
#  1.2 - Corrigida a precisão de $kts.stop e $kts.go
#  1.3 - $kts.stop realmente para tudo agora.  Adicionadas switches para eventos.
#
# Instruções de Mudança de Tonalidade
#
#            Mapas designados como "fora" são os únicos que devem ser afetados pela
# tonalidade. Coloque um [KTS] antes do nome do mapa para criar este efeito.
#
# Chamar Funções do Script
#
#            Use o comando "Chamar Script".
#  $kts.stop        - parar o tempo
#  $kts.go          - continuar o tempo
#  $kts.sec(n)        - avança (n) segundos
#  $kts.min(n)        - avança (n) minutos
#  $kts.hours(n)      - avança (n) horas
#  $kts.days(n)      - avança (n) dias.
#  $kts.jump_to_hour(n) - Muda o tempo para a hora (n).
#
# Configurações do Dabatase do Jogo
#
#  Esse script, por padrão, usa as seguintes variáveis e switches:
#  Variáveis:
#  [1] O tempio atual                  [4] Horas Atual
#  [2] Segundo atual        [5] Dia Atual
#  [3] Minuto atual        [6] Nome do dia atual
#  Switches:
#  [1] ON durante a noite        (2200-0400)(10pm-4am)
#  [2] ON durante a madrugada      (0500-0800)( 5am-8am)
#  [3] ON durante o amanhecer      (0900-1800)( 9am-6pm)
#  [4] ON durante o anoitecer      (1900-2100)( 7pm-9pm)
#
#

# Guarda as configurações definidas.
#
module KTS
  #-
  # Define as configurações do relógio
  #-
  # Define a velocidade do relógio.
  #  1 é o tempo real. O padrão é 100 (cem vezes mais rápido do que o tempo real)
  SPEED    = 100
  #AM-PM? (True: relógio de 12 horas AM e 12 horas PM, False: relógio de 24 horas)
  AMPM    = false
  # Define o horário inicial do jogo.
  START_HOUR = 0
  START_DAY  = 1
  #-
  # Nomes dos dias
  #-
  DAY_NAMES = ["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]
  #-
  # Períodos
  #-
  T1 = [ 0,5 ] # Noite      # Arruma os períodos para a tonalidade.
  T2 = [ 6,8 ] # Madrugada        # [Hora Inicial, Hora Final]
  T3 = [ 9,18] # Manhã        # Use termos de um relógio de 24 horas.
  T4 = [19,21] # Tarde
  T5 = [22,24] # Noite      # <- Ex: Noite é entre 22:00 e 24:00
  #-
  # Configurações para as variáveis em jogo
  #-
  # True para colocar o tempo nas variáveis e switches definidas
  DATABASE_OUTPUT = true
  # Variável a ser usada
  TIME  = 1 #(É nesse formato: "2:48 AM" ou "02:48")
  SECONDS = 2
  MINUTES = 3
  HOURS  = 4
  DAYS  = 5
  DAYNAME = 6
  # Switches
  NIGHT  = 1 #    Estará on nas horas definidas
  DAWN  = 2 #  Estará on nas horas definidas
  DAY  = 3 # Estará on nas horas definidas
  SUNSET  = 4 #  Estará on nas horas definidas
  #-
  # Configurações para a tonalidade da tela
  #-
  # True para habilitar essa função; false para desabilitar essa função.
  USE_TONE = true
  # Duração da mudança de tonalidade (em frames)
  FADE_LENGTH = 120
  # Definir Tonalidades para cada período
  #          Vermelho, Verde, Azul, Cinza
  C1 = Tone.new(-187,  -119,  -17,  68)
  C2 = Tone.new(  17,  -51, -102,  0)
  C3 = Tone.new(  0,  0,  0,  0)
  C4 = Tone.new( -68,  -136,  -34,  0)
  C5 = Tone.new(-187,  -119,  -17,  68)
end

#
# Engine do Sistema de Tempo
#
class Kylock_Time_System
  # arrumas as variáveis
  def initialize
  $kts_map_data = load_data("Data/MapInfos.rvdata")
  @event_offset = (KTS::START_HOUR * 3600) + (KTS::START_DAY * 86400)
  @kts_stop = false
  $kts_event_tone = false
  $kts_battle_tone = true
  end
 
  # Guarda o tempo e atualiza
  def update
  if !@kts_stop
    @total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
    @seconds = (@total_seconds) % 60
    @minutes = (@total_seconds / 60) % 60
    @hours  = (@total_seconds / 3600) % 24
    @days  = (@total_seconds / 86400)
    update_tint
    if KTS::DATABASE_OUTPUT
      update_variables
      update_switches
    end
  end
  end

  def update_variables
  $game_variables[KTS::TIME]  = getTime
  $game_variables[KTS::SECONDS] = @seconds
  $game_variables[KTS::MINUTES] = @minutes
  $game_variables[KTS::HOURS]  = @hours
  $game_variables[KTS::DAYS]  = @days
  $game_variables[KTS::DAYNAME] = getDayName
  end

  def update_switches
  if @period == 1 || @period == 5
    $game_switches[KTS::NIGHT] = true
  else
    $game_switches[KTS::NIGHT] = false
  end
  if @period == 2
    $game_switches[KTS::DAWN] = true
  else
    $game_switches[KTS::DAWN] = false
  end
  if @period == 3
    $game_switches[KTS::DAY] = true
  else
    $game_switches[KTS::DAY] = false
  end
  if @period == 4
    $game_switches[KTS::SUNSET] = true
  else
    $game_switches[KTS::SUNSET] = false
  end
  end

  def getTime
  if KTS::AMPM
    # Formats a 12-Hour Clock
    if @hours > 12
      hours1 = @hours - 12
      if hours1 > 9
        time = sprintf("%02d:%02d" + " PM", hours1, @minutes)
      else
        time = sprintf("%01d:%02d" + " PM", hours1, @minutes)
      end
    else
      if @hours > 9
        time = sprintf("%02d:%02d" + " AM", @hours, @minutes)
      else
        time = sprintf("%01d:%02d" + " AM", @hours, @minutes)
      end
    end
    return time
  else
    # Formats a 24-Hour Clock
    time = sprintf("%02d:%02d", @hours, @minutes)
    return time
  end
  end
  #-
  # Comandos para as Funções do Script
  #-
  def stop
  @time_stopped = @total_seconds
  @kts_stop = true
  end
  def go
  total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
  @event_offset -= (total_seconds - @time_stopped)
  @kts_stop = false
  end
  def sec(sec = 0)
  @event_offset += sec
  end
  def min(min = 0)
  @event_offset += min * 60
  end
  def hours(hours = 0)
  @event_offset += hours * 3600
  end
  def days(days = 0)
  @event_offset += days * 86400
  end
  def jump_to_hour(jhour = 0)
  while @hours != jhour
    @event_offset += 1
    $kts.update
  end
  end
  #-
  # Outras funções
  #-
  def getDayName
  weekday = (@days % KTS::DAY_NAMES.length)
  return KTS::DAY_NAMES[weekday]
  end

  #-
  # Tonalidade de Tela
  #-
  def update_tint(duration = KTS::FADE_LENGTH)
  if KTS::USE_TONE && !$kts_event_tone && $kts_map_data[$game_map.map_id].outside_tint?
    if @hours >= KTS::T1[0] and @hours <= KTS::T1[1]
      @period = 1
      screen.start_tone_change(KTS::C1,duration)
    elsif @hours >= KTS::T2[0] and @hours <= KTS::T2[1]
      @period = 2
      screen.start_tone_change(KTS::C2,duration)
    elsif @hours >= KTS::T3[0] and @hours <= KTS::T3[1]
      @period = 3
      screen.start_tone_change(KTS::C3,duration)
    elsif @hours >= KTS::T4[0] and @hours <= KTS::T4[1]
      @period = 4
      screen.start_tone_change(KTS::C4,duration)
    elsif @hours >= KTS::T5[0] and @hours <= KTS::T5[1]
      @period = 5
      screen.start_tone_change(KTS::C5,duration)
    end
  else
    # sem mundaça nos mapas "dentro"
    if !$kts_map_data[$game_map.map_id].outside_tint?
      screen.start_tone_change(Tone.new(0,0,0,0),duration)
    end
  end
  end
  def screen
  if $game_temp.in_battle
    return $game_troop.screen
  else
    return $game_map.screen
  end
  end
end

#
# Atualiza instantaneamente quando se teletransporta
#
class Game_Map
  alias kts_setup setup
  def setup(map_id)
  kts_setup(map_id)
  $kts_event_tone = false
  $kts.update
  $kts.update_tint(0)
  end
end

#
# Atualiza instantaneamente quando entra na batalha
#
class Spriteset_Battle
  alias kts_create_battleback create_battleback
  def create_battleback
  $kts.update_tint(0)
  kts_create_battleback
  end
end

#
# Desabilita temporariamente quando um evento muda a tonalidade
#
class Game_Interpreter
  alias kts_Interpreter_command_223 command_223
  def command_223
  $kts_event_tone = true
  kts_Interpreter_command_223
  end
end

#
# Integra o sistema ao Game System
#
class Game_System
  # inits a KTS object
  alias kts_initialize initialize
  def initialize
  $kts=Kylock_Time_System.new
  kts_initialize
  end
  # Updates kts every game frame
  alias kts_update update
  def update
  $kts.update
  kts_update
  end
end

#
# Scaneia mapas para o nome
#
class RPG::MapInfo
  def name # Impede que sistemas de localização leiam o [KTS]
  return @name.gsub(/\[.*\]/) {""} # colchetes e os inclusos
  end
  def original_name
  return @name
  end
  def outside_tint?
  return @name.scan(/[\KTS]/).size > 0
  end
end

#
# Configura a janela de tempo
#
class Window_KTS < Window_Base
  def initialize(x, y)
  super(x, y, 160, WLH + 32)
  refresh
  end
  def refresh
  self.contents.clear
  self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)
  end
  def update
  super
  $kts.update
  self.contents.clear
  self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)
  end
end

#
# Adiciona a janela ao menu
#
class Scene_Menu < Scene_Base
  alias kts_start start
  def start
  kts_start
  @kts_window = Window_KTS.new(0,305)
  end
  alias kts_terminate terminate
  def terminate
  kts_terminate
  @kts_window.dispose
  end
  alias kts_update update
  def update
  kts_update
  @kts_window.update
  end
end

#
# Para as tela de Load/Save
#
class Scene_File
  alias kts_write_save_data write_save_data
  def write_save_data(file)
  kts_write_save_data(file)
  Marshal.dump($kts, file)
  end
  alias kts_read_save_data read_save_data
  def read_save_data(file)
  kts_read_save_data(file)
  $kts = Marshal.load(file)
  end
end

Espero ter ajudado ^.^
Ir para o topo Ir para baixo
Caio Mx2
Tenente-Coronel
Tenente-Coronel
Caio Mx2

Áries
Registro
: Mx2
: Humano
:

[RM VX]-Script de dia e noite Empty
MensagemAssunto: Re: [RM VX]-Script de dia e noite   [RM VX]-Script de dia e noite Icon_minitimeQua Out 07, 2009 7:58 pm

Hummm.... interessante, já vi muita gente usando sistemas por eventos, script até que parece legal mais por eventos vc pode personalizar melhor tipo colocar um contador diferente sei lá.
Talvez eu use esse script em algum projeto futuro.
Vlw por postar aqui o/

Fui na velocidade da LUZ*
Ir para o topo Ir para baixo
 

[RM VX]-Script de dia e noite

Ver o tópico anterior Ver o tópico seguinte Ir para o topo 

 Tópicos semelhantes

+
Página 1 de 1

Permissões neste sub-fórumNão podes responder a tópicos
Hacred Sall :: Centro de Operações :: Armazém :: Scripts-
Ir para: