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

Dinasty RPG

Fórum para interessados em Rpgs, Indie Games, RPG Maker e afins
 
InícioPortalProcurarÚltimas imagensRegistrarEntrar

 

 Sistema de Dia e Noite

Ir para baixo 
2 participantes
AutorMensagem
XDJonasXD
Administrador
Administrador
XDJonasXD


Mensagens : 179
Data de inscrição : 26/07/2011
Idade : 27
Localização : São Paulo

Sistema de Dia e Noite Empty
MensagemAssunto: Sistema de Dia e Noite   Sistema de Dia e Noite I_icon_minitimeTer Ago 02, 2011 8:40 pm

Sistema de Tempo Kylock para VX v1.3



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".

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


Configurações do Dabatase do Jogo

Esse script, por padrão, usa as seguintes variáveis e switches:
Variáveis:
[list][li][1] O tempio atual [4] Horas Atual[/li]
[li][2] Segundo atual [5] Dia Atual[/li]
[li][3] Minuto atual [6] Nome do dia atual

Switches:

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



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 ^.^

Créditos a Kylock
Ir para o topo Ir para baixo
https://dynastyrpg.forumeiros.com
Zendion
Cordenador
Cordenador
Zendion


Mensagens : 372
Data de inscrição : 31/07/2011
Idade : 27
Localização : Leme

Sistema de Dia e Noite Empty
MensagemAssunto: Legal   Sistema de Dia e Noite I_icon_minitimeTer Ago 02, 2011 9:50 pm

bem legal cara, muito simples. Eu fiz um assim por eventos(Lógico sou Eventer lol! ) muito simples
Gostei pra caramba
+ 1 cred
FUI
Ir para o topo Ir para baixo
https://www.youtube.com/user/Zendionx
 
Sistema de Dia e Noite
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Sistema de Dia e Noite
» MHMS - Sistema de magia através de HP
» Sistema de Medalhas
» Sistema de 3 moedas correntes
» Sistema de Pesca & Cozinha.

Permissões neste sub-fórumNão podes responder a tópicos
Dinasty RPG  :: Scripts (RGSS/RGSS2) :: Scripts (RGSS2)-
Ir para: