zero
Membro Especial
Postagens : 301 Data de inscrição : 14/05/2009
| Assunto: Sistema de - Dia/Noite Seg Out 19, 2009 2:04 pm | |
| Dia/Noite
Introdução:Muito bom. Ele permite cria 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) 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:
-
# # 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("d:d" " PM", hours1, @minutes) else time = sprintf("d:d" " PM", hours1, @minutes) end else if @hours > 9 time = sprintf("d:d" " AM", @hours, @minutes) else time = sprintf("d:d" " AM", @hours, @minutes) end end return time else # Formats a 24-Hour Clock time = sprintf("d:d", @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
Créditos e Agradecimentos:1. Kylock por criar o script 2.Traduzido por Gemstone 3. Postado por Zero em TWEG |
|