Sistema
de Tempo v1.0
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="]#[/font]
[font="]# Sistema de Tempo Kylock para VX v1.0[/font]
[font="]# 10.5.2011[/font]
[font="]# traduzido zmarcelo[/font]
[font="]#[/font]
[font="]# Script por: zmarcelo[/font]
[font="]# Praticamente todo reescrito
desde a versão para XP. Códigos mais limpos[/font]
[font="]# e compatíveis. Esse é o meu sistema de dia e noite. Ele adiciona uma
nova janela[/font]
[font="]# ao menu, então, se você usa um CMS, cole este script acima dele.[/font]
[font="]# Eu tentei fazer esse o mais
customizável possível, as configurações[/font]
[font="]# são encontrada logo em baixo. Embora as variáveis sejam opcionais, eu[/font]
[font="]# sugiro que as usem, pois poderão construtir eventos baseados nesse
script[/font]
[font="]# mais facilmente.[/font]
[font="]#[/font]
[font="]# Histórico[/font]
[font="]# 1.0 - Lançamento.[/font]
[font="]# 1.1 - Corrigido a mudança de tonalidade nas batalhas.
Coloque este script[/font]
[font="]# abaixo de scripts de batalha caso você note
alguma erro na mesma.[/font]
[font="]# 1.2 - Corrigida a precisão de $kts.stop e $kts.go[/font]
[font="]# 1.3 - $kts.stop realmente para tudo agora. Adicionadas
switches para eventos.[/font]
[font="]#[/font]
[font="]# Instruções de Mudança de Tonalidade[/font]
[font="]#[/font]
[font="]# Mapas designados como
"fora" são os únicos que devem ser afetados pela[/font]
[font="]# tonalidade. Coloque um [KTS] antes do nome do mapa para criar este
efeito.[/font]
[font="]#[/font]
[font="]# Chamar Funções do Script[/font]
[font="]#[/font]
[font="]# Use o comando "Chamar
Script".[/font]
[font="]# $kts.stop - parar o
tempo[/font]
[font="]# $kts.go -
continuar o tempo[/font]
[font="]# $kts.sec(n) - avança (n)
segundos[/font]
[font="]# $kts.min(n) - avança (n)
minutos[/font]
[font="]# $kts.hours(n) - avança (n) horas[/font]
[font="]# $kts.days(n) - avança (n) dias.[/font]
[font="]# $kts.jump_to_hour(n) - Muda o tempo para a hora (n).[/font]
[font="]#[/font]
[font="]# Configurações do Dabatase do Jogo[/font]
[font="]#[/font]
[font="]# Esse script, por padrão, usa as seguintes variáveis e
switches:[/font]
[font="]# Variáveis:[/font]
[font="]# [1] O tempio atual
[4] Horas Atual[/font]
[font="]# [2] Segundo atual [5] Dia
Atual[/font]
[font="]# [3] Minuto atual [6] Nome
do dia atual[/font]
[font="]# Switches:[/font]
[font="]# [1] ON durante a noite
(2200-0400)(10pm-4am)[/font]
[font="]# [2] ON durante a madrugada
(0500-0800)( 5am-8am)[/font]
[font="]# [3] ON durante o amanhecer
(0900-1800)( 9am-6pm)[/font]
[font="]# [4] ON durante o anoitecer
(1900-2100)( 7pm-9pm)[/font]
[font="]#[/font]
[font="]#[/font]
[font="]# Guarda as configurações definidas.[/font]
[font="]#[/font]
[font="]module KTS[/font]
[font="] #-[/font]
[font="] # Define as configurações do relógio[/font]
[font="] #-[/font]
[font="] # Define a velocidade do relógio.[/font]
[font="] # 1 é o tempo real. O padrão é 100 (cem vezes mais rápido
do que o tempo real)[/font]
[font="] SPEED = 100[/font]
[font="] #AM-PM? (True: relógio de 12 horas AM e 12 horas PM, False:
relógio de 24 horas)[/font]
[font="] AMPM = false[/font]
[font="] # Define o horário inicial do jogo.[/font]
[font="] START_HOUR = 0[/font]
[font="] START_DAY = 1[/font]
[font="] #-[/font]
[font="] # Nomes dos dias[/font]
[font="] #-[/font]
[font="] DAY_NAMES =
["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"][/font]
[font="] #-[/font]
[font="] # Períodos[/font]
[font="] #-[/font]
[font="] T1 = [ 0,5 ] # Noite # Arruma os
períodos para a tonalidade.[/font]
[font="] T2 = [ 6,8 ] # Madrugada # [Hora
Inicial, Hora Final][/font]
[font="] T3 = [ 9,18] # Manhã # Use termos
de um relógio de 24 horas.[/font]
[font="] T4 = [19,21] # Tarde[/font]
[font="] T5 = [22,24] # Noite # <- Ex: Noite
é entre 22:00 e 24:00[/font]
[font="] #-[/font]
[font="] # Configurações para as variáveis em jogo[/font]
[font="] #-[/font]
[font="] # True para colocar o tempo nas variáveis e switches definidas[/font]
[font="] DATABASE_OUTPUT = true[/font]
[font="] # Variável a ser usada[/font]
[font="] TIME = 1 #(É nesse formato: "2:48 AM"
ou "02:48")[/font]
[font="] SECONDS = 2 [/font]
[font="] MINUTES = 3 [/font]
[font="] HOURS = 4 [/font]
[font="] DAYS = 5 [/font]
[font="] DAYNAME = 6[/font]
[font="] # Switches[/font]
[font="] NIGHT = 1 # Estará on nas horas
definidas[/font]
[font="] DAWN = 2 # Estará on nas horas definidas[/font]
[font="] DAY = 3 # Estará on nas horas definidas[/font]
[font="] SUNSET = 4 # Estará on nas horas definidas[/font]
[font="] #-[/font]
[font="] # Configurações para a tonalidade da tela[/font]
[font="] #-[/font]
[font="] # True para habilitar essa função; false para desabilitar essa
função.[/font]
[font="] USE_TONE = true[/font]
[font="] # Duração da mudança de tonalidade (em frames)[/font]
[font="] FADE_LENGTH = 120[/font]
[font="] # Definir Tonalidades para cada período[/font]
[font="] # Vermelho, Verde,
Azul, Cinza[/font]
[font="] C1 = Tone.new(-187, -119, -17, 68)[/font]
[font="] C2 = Tone.new( 17, -51, -102, 0)[/font]
[font="] C3 = Tone.new( 0, 0, 0, 0)[/font]
[font="] C4 = Tone.new( -68, -136, -34, 0)[/font]
[font="] C5 = Tone.new(-187, -119, -17, 68)[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Engine do Sistema de Tempo[/font]
[font="]#[/font]
[font="]class Kylock_Time_System[/font]
[font="] # arrumas as variáveis[/font]
[font="] def initialize[/font]
[font="] $kts_map_data = load_data("Data/MapInfos.rvdata")[/font]
[font="] @event_offset = (KTS::START_HOUR * 3600) + (KTS::START_DAY
* 86400)[/font]
[font="] @kts_stop = false[/font]
[font="] $kts_event_tone = false[/font]
[font="] $kts_battle_tone = true[/font]
[font="] end[/font]
[font="] # Guarda o tempo e atualiza[/font]
[font="] def update[/font]
[font="] if !@kts_stop[/font]
[font="] @total_seconds = (Graphics.frame_count * KTS::SPEED
/ 60) + @event_offset[/font]
[font="] @seconds = (@total_seconds) % 60[/font]
[font="] @minutes = (@total_seconds / 60) % 60[/font]
[font="] @hours = (@total_seconds / 3600) % 24[/font]
[font="] @days = (@total_seconds / 86400)[/font]
[font="] update_tint[/font]
[font="] if KTS::DATABASE_OUTPUT[/font]
[font="] update_variables[/font]
[font="] update_switches[/font]
[font="] end[/font]
[font="] end[/font]
[font="] end[/font]
[font="] def update_variables[/font]
[font="] $game_variables[KTS::TIME] = getTime[/font]
[font="] $game_variables[KTS::SECONDS] = @seconds[/font]
[font="] $game_variables[KTS::MINUTES] = @minutes[/font]
[font="] $game_variables[KTS::HOURS] = @hours[/font]
[font="] $game_variables[KTS::DAYS] = @days[/font]
[font="] $game_variables[KTS::DAYNAME] = getDayName[/font]
[font="] end[/font]
[font="] def update_switches[/font]
[font="] if @period == 1 || @period == 5[/font]
[font="] $game_switches[KTS::NIGHT] = true[/font]
[font="] else[/font]
[font="] $game_switches[KTS::NIGHT] = false[/font]
[font="] end[/font]
[font="] if @period == 2[/font]
[font="] $game_switches[KTS::DAWN] = true[/font]
[font="] else[/font]
[font="] $game_switches[KTS::DAWN] = false[/font]
[font="] end[/font]
[font="] if @period == 3[/font]
[font="] $game_switches[KTS::DAY] = true[/font]
[font="] else[/font]
[font="] $game_switches[KTS::DAY] = false[/font]
[font="] end[/font]
[font="] if @period == 4[/font]
[font="] $game_switches[KTS::SUNSET] = true[/font]
[font="] else[/font]
[font="] $game_switches[KTS::SUNSET] = false[/font]
[font="] end[/font]
[font="] end[/font]
[font="] def getTime[/font]
[font="] if KTS::AMPM[/font]
[font="] # Formats a 12-Hour Clock[/font]
[font="] if @hours > 12[/font]
[font="] hours1 = @hours - 12[/font]
[font="] if hours1 > 9[/font]
[font="] time = sprintf("%02d:%02d" +
" PM", hours1, @minutes)[/font]
[font="] else[/font]
[font="] time = sprintf("%01d:%02d" +
" PM", hours1, @minutes)[/font]
[font="] end[/font]
[font="] else[/font]
[font="] if @hours > 9[/font]
[font="] time = sprintf("%02d:%02d" +
" AM", @hours, @minutes)[/font]
[font="] else[/font]
[font="] time = sprintf("%01d:%02d" +
" AM", @hours, @minutes)[/font]
[font="] end[/font]
[font="] end[/font]
[font="] return time[/font]
[font="] else[/font]
[font="] # Formats a 24-Hour Clock[/font]
[font="] time = sprintf("%02d:%02d", @hours,
@minutes)[/font]
[font="] return time[/font]
[font="] end[/font]
[font="] end[/font]
[font="] #-[/font]
[font="] # Comandos para as Funções do Script[/font]
[font="] #-[/font]
[font="] def stop[/font]
[font="] @time_stopped = @total_seconds[/font]
[font="] @kts_stop = true[/font]
[font="] end[/font]
[font="] def go[/font]
[font="] total_seconds = (Graphics.frame_count * KTS::SPEED / 60) +
@event_offset[/font]
[font="] @event_offset -= (total_seconds - @time_stopped)[/font]
[font="] @kts_stop = false[/font]
[font="] end[/font]
[font="] def sec(sec = 0)[/font]
[font="] @event_offset += sec[/font]
[font="] end[/font]
[font="] def min(min = 0)[/font]
[font="] @event_offset += min * 60[/font]
[font="] end[/font]
[font="] def hours(hours = 0)[/font]
[font="] @event_offset += hours * 3600[/font]
[font="] end[/font]
[font="] def days(days = 0)[/font]
[font="] @event_offset += days * 86400[/font]
[font="] end[/font]
[font="] def jump_to_hour(jhour = 0)[/font]
[font="] while @hours != jhour[/font]
[font="] @event_offset += 1[/font]
[font="] $kts.update[/font]
[font="] end[/font]
[font="] end[/font]
[font="] #-[/font]
[font="] # Outras funções[/font]
[font="] #-[/font]
[font="] def getDayName[/font]
[font="] weekday = (@days % KTS::DAY_NAMES.length)[/font]
[font="] return KTS::DAY_NAMES[weekday][/font]
[font="] end[/font]
[font="] #-[/font]
[font="] # Tonalidade de Tela[/font]
[font="] #-[/font]
[font="] def update_tint(duration = KTS::FADE_LENGTH)[/font]
[font="] if KTS::USE_TONE && !$kts_event_tone &&
$kts_map_data[$game_map.map_id].outside_tint?[/font]
[font="] if @hours >= KTS::T1[0] and @hours <=
KTS::T1[1][/font]
[font="] @period = 1[/font]
[font="] screen.start_tone_change(KTS::C1,duration)[/font]
[font="] elsif @hours >= KTS::T2[0] and @hours <=
KTS::T2[1][/font]
[font="] @period = 2[/font]
[font="] screen.start_tone_change(KTS::C2,duration)[/font]
[font="] elsif @hours >= KTS::T3[0] and @hours <=
KTS::T3[1][/font]
[font="] @period = 3[/font]
[font="] screen.start_tone_change(KTS::C3,duration)[/font]
[font="] elsif @hours >= KTS::T4[0] and @hours <=
KTS::T4[1][/font]
[font="] @period = 4[/font]
[font="] screen.start_tone_change(KTS::C4,duration)[/font]
[font="] elsif @hours >= KTS::T5[0] and @hours <=
KTS::T5[1][/font]
[font="] @period = 5[/font]
[font="] screen.start_tone_change(KTS::C5,duration)[/font]
[font="] end[/font]
[font="] else[/font]
[font="] # sem mundaça nos mapas "dentro"[/font]
[font="] if !$kts_map_data[$game_map.map_id].outside_tint?[/font]
[font="]
screen.start_tone_change(Tone.new(0,0,0,0),duration)[/font]
[font="] end[/font]
[font="] end[/font]
[font="] end[/font]
[font="] def screen[/font]
[font="] if $game_temp.in_battle[/font]
[font="] return $game_troop.screen[/font]
[font="] else[/font]
[font="] return $game_map.screen[/font]
[font="] end[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Atualiza instantaneamente quando se teletransporta[/font]
[font="]#[/font]
[font="]class Game_Map[/font]
[font="] alias kts_setup setup[/font]
[font="] def setup(map_id)[/font]
[font="] kts_setup(map_id)[/font]
[font="] $kts_event_tone = false[/font]
[font="] $kts.update[/font]
[font="] $kts.update_tint(0)[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Atualiza instantaneamente quando entra na batalha[/font]
[font="]#[/font]
[font="]class Spriteset_Battle[/font]
[font="] alias kts_create_battleback create_battleback[/font]
[font="] def create_battleback[/font]
[font="] $kts.update_tint(0)[/font]
[font="] kts_create_battleback[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Desabilita temporariamente quando um evento muda a tonalidade[/font]
[font="]#[/font]
[font="]class Game_Interpreter[/font]
[font="] alias kts_Interpreter_command_223 command_223[/font]
[font="] def command_223[/font]
[font="] $kts_event_tone = true[/font]
[font="] kts_Interpreter_command_223[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Integra o sistema ao Game System[/font]
[font="]#[/font]
[font="]class Game_System[/font]
[font="] # inits a KTS object[/font]
[font="] alias kts_initialize initialize[/font]
[font="] def initialize[/font]
[font="] $kts=Kylock_Time_System.new[/font]
[font="] kts_initialize[/font]
[font="] end[/font]
[font="] # Updates kts every game frame[/font]
[font="] alias kts_update update[/font]
[font="] def update[/font]
[font="] $kts.update[/font]
[font="] kts_update[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Scaneia mapas para o nome[/font]
[font="]#[/font]
[font="]class RPG::MapInfo[/font]
[font="] def name # Impede que sistemas de localização leiam o [KTS][/font]
[font="] return @name.gsub(/\[.*\]/) {""} # colchetes e os
inclusos[/font]
[font="] end[/font]
[font="] def original_name[/font]
[font="] return @name[/font]
[font="] end[/font]
[font="] def outside_tint?[/font]
[font="] return @name.scan(/[\KTS]/).size > 0[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Configura a janela de tempo[/font]
[font="]#[/font]
[font="]class Window_KTS < Window_Base[/font]
[font="] def initialize(x, y)[/font]
[font="] super(x, y, 160, WLH + 32)[/font]
[font="] refresh[/font]
[font="] end[/font]
[font="] def refresh[/font]
[font="] self.contents.clear[/font]
[font="] self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)[/font]
[font="] end[/font]
[font="] def update[/font]
[font="] super[/font]
[font="] $kts.update[/font]
[font="] self.contents.clear[/font]
[font="] self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Adiciona a janela ao menu[/font]
[font="]#[/font]
[font="]class Scene_Menu < Scene_Base[/font]
[font="] alias kts_start start[/font]
[font="] def start[/font]
[font="] kts_start[/font]
[font="] @kts_window = Window_KTS.new(0,305)[/font]
[font="] end[/font]
[font="] alias kts_terminate terminate[/font]
[font="] def terminate[/font]
[font="] kts_terminate[/font]
[font="] @kts_window.dispose[/font]
[font="] end[/font]
[font="] alias kts_update update[/font]
[font="] def update[/font]
[font="] kts_update[/font]
[font="] @kts_window.update[/font]
[font="] end[/font]
[font="]end[/font]
[font="]#[/font]
[font="]# Para as tela de Load/Save[/font]
[font="]#[/font]
[font="]class Scene_File[/font]
[font="] alias kts_write_save_data write_save_data[/font]
[font="] def write_save_data(file)[/font]
[font="] kts_write_save_data(file)[/font]
[font="] Marshal.dump($kts, file)[/font]
[font="] end[/font]
[font="] alias kts_read_save_data read_save_data[/font]
[font="] def read_save_data(file)[/font]
[font="] kts_read_save_data(file)[/font]
[font="] $kts = Marshal.load(file)[/font]
[font="] end[/font]
[font="]end[/font]
Créditos
e Agradecimentos
- Kylock por criar o Script
- Zmarcelo por disponibilizar