Sistema de Tempo V1.0

    Compartilhe
    avatar
    zmarcelo
    Membro
    Membro

    Mensagens : 24
    Credibilidade : 4

    Sistema de Tempo V1.0

    Mensagem por zmarcelo em Qui Dez 29, 2011 12:08 pm

    Sistema
    de Tempo v1.0






    Desculpa ae qualquer coisa esse e meu primeiro tutorial

    Introdução
    Ele permite criar um sistema de tempo com segundos, minutos, horas e dias. Você
    pode nomear os dias, definir tonalidades de tela para os mapas
    "exteriores" (defina quais são colocando um [KTS] antes do nome, exemplo:
    [KTS]MAP001) para cada período e criar eventos baseados no tempo.

    Como Usar
    Colar o Script em cima de Main, as instruções estão no próprio Script.

    Script

    Código:



    [font=&quot]#[/font]
    [font=&quot]# Sistema de Tempo Kylock para VX v1.0[/font]
    [font=&quot]#    10.5.2011[/font]
    [font=&quot]# traduzido zmarcelo[/font]


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

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

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

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

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

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

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

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

    [font=&quot]#[/font]
    [font=&quot]# Atualiza instantaneamente quando entra na batalha[/font]
    [font=&quot]#[/font]
    [font=&quot]class Spriteset_Battle[/font]
    [font=&quot]  alias kts_create_battleback create_battleback[/font]
    [font=&quot]  def create_battleback[/font]
    [font=&quot]  $kts.update_tint(0)[/font]
    [font=&quot]  kts_create_battleback[/font]
    [font=&quot]  end[/font]
    [font=&quot]end[/font]

    [font=&quot]#[/font]
    [font=&quot]# Desabilita temporariamente quando um evento muda a tonalidade[/font]
    [font=&quot]#[/font]
    [font=&quot]class Game_Interpreter[/font]
    [font=&quot]  alias kts_Interpreter_command_223 command_223[/font]
    [font=&quot]  def command_223[/font]
    [font=&quot]  $kts_event_tone = true[/font]
    [font=&quot]  kts_Interpreter_command_223[/font]
    [font=&quot]  end[/font]
    [font=&quot]end[/font]

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

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

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

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

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







    Créditos
    e Agradecimentos







    • Kylock por criar o Script
    • Zmarcelo por disponibilizar
    avatar
    Rhazik
    Membro
    Membro

    Mensagens : 12
    Credibilidade : 0

    Re: Sistema de Tempo V1.0

    Mensagem por Rhazik em Qui Dez 29, 2011 1:06 pm

    Ai, obrigado mesmo, estava precisando de um sistema assim.
    Ultimamente quando pesquisei por isso, só surgia o site da MRM e, não consigo acessar então...

    Obg pela ajuda e por disponibilizar aqui, realmente eu sei que ajudará alguns makers por ai Radiante

    EDIT

    Cara, o script funciona com esse monte de [/font] no mesmo? Obg pela atenção...
    avatar
    zmarcelo
    Membro
    Membro

    Mensagens : 24
    Credibilidade : 4

    Re: Sistema de Tempo V1.0

    Mensagem por zmarcelo em Qui Dez 29, 2011 3:14 pm

    oops malz aki ta denovo

    Código:


    #
    # Sistema de Tempo Kylock para VX v1.0
    # 10.5.2011
    # traduzido zmarcelo


    #
    # Script por: zmarcelo
    # 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

    Conteúdo patrocinado

    Re: Sistema de Tempo V1.0

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sab Jun 24, 2017 1:24 am