#==============================================================================#
# #
# # ### / ### #
# / /### #/ ### #
# / / ### ## ## #
# / ## ### ## ## #
# / ### ### ## ## #
# ## ## ## ### /### ## /## /## ## #
# ## ## ## ###/ #### / ## / ### / ### ## #
# ## ## ## ## ###/ ##/ / / ### ## #
# ## ## ## ## ## ## / ## ### ## #
# ## ## ## ## ## ## / ######## ## #
# ## ## ## ## ## ## ## ####### ## #
# ## # / ## ## ###### ## ## #
# ### / ## ## ## ### #### / ## #
# ######/ ### ### ## ### / ######/ ### / #
# ### ### ### ## ##/ ##### ##/ #
# #
# ##### ## ### ### #
# ###### / #### / ### ### #
# /# / / ####/ ## ## #
# / / / # # ## ## #
# / / # ## ## #
# ## ## # /## ## ## #
# ## ## # / ### ## ## #
# ## ######## / ### ## ## #
# ## ## # ## ### ## ## #
# ## ## ## ######## ## ## #
# # ## ## ####### ## ## #
# / ## ## ## ## #
# /##/ ## #### / ## ## #
# / ##### ## ######/ ### / ### / #
# / ## ##### ##/ ##/ #
# # #
# ## #
# #
# #
# _____ ______ _______ _______ _______ __ _ _______ _______ #
# |_____] |_____/ |______ |______ |______ | \ | | |______ #
# | | \_ |______ ______| |______ | \_| | ______| #
# #
#==============================================================================#
#==============================================================================#
# __ _ _ #
# / _\(_)_ __ ___ _ __ | | ___ #
# \ \ | | '_ ` _ \| '_ \| |/ _ \ #
# _\ \| | | | | | | |_) | | __/ #
# \__/|_|_| |_| |_| .__/|_|\___| #
# ___ _|_| __ _ _ _ ____ #
# / \__ _ _ _ __ _ _ __ __| | /\ \ (_) __ _| |__ | |_ |___ \ #
# / /\ / _` | | | | / _` | '_ \ / _` | / \/ / |/ _` | '_ \| __| __) | #
# / /_// (_| | |_| | | (_| | | | | (_| | / /\ /| | (_| | | | | |_ / __/ #
# /___,' \__,_|\__, | \__,_|_| |_|\__,_| \_\ \/ |_|\__, |_| |_|\__| |_____| #
# |___/ |___/ #
# #
#==============================================================================#
# Simple Day and Night 2 #
# v1.0 – 09.06.09 #
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
# Simuliert ein Tag/Nacht System #
# bzw jedes Zeit-System #
#==============================================================================#
# Created by : hellMinor aka Onkel Hell #
# Do NOT redistribute without my permission #
# www.rpgvx.net #
# hellminor.wordpress.com #
#
hellminor@rpgvx.net #
#==============================================================================#
#==============================================================================#
# Tutorial-Video von Kyoshiro #
#------------------------------------------------------------------------------#
# http://www.youtube.com/watch?v=_XZo5pMNp_A #
#==============================================================================#
#==============================================================================#
# Zyklus Config #
#------------------------------------------------------------------------------#
# Hier werden die maximalen werte für die einzelnen Zyklen eingestellt. #
# Standardwerte sind hier am echten Leben angepasst. #
#==============================================================================#
MAX_SEKUNDEN = 60
MAX_MINUTEN = 60
MAX_STUNDEN = 24
MAX_TAGE = 7
MAX_MONATE = 12
#==============================================================================#
# String Config #
#------------------------------------------------------------------------------#
# Hier können namen für die einzelnen Zyklen festgelegt werden. #
#==============================================================================#
TAGESNAMEN = ["Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag",
"Samstag",
"Sonntag"
]
#------------------------------------------------------------------------------#
MONATSNAMEN = ["Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember"
]
#==============================================================================#
# Start Config #
#------------------------------------------------------------------------------#
# Hier werden die Startwerte für die einzelnen Variablen festgelegt. #
#==============================================================================#
MINUTEN_START = 30
STUNDEN_START = 5
TAG_START = 0
MONAT_START = 0
JAHR_START = 200
START_SET = 0
#==============================================================================#
# Präfix config #
#------------------------------------------------------------------------------#
# Hier können einzelne Mapnamen Präfixe festgelegt werden. Das entsprechende #
# Präfix wird als erstes in den Mapnamen geschrieben. Maps mit einem Präfix #
# ignorieren die Tageszeiten und nehmen stattdessen den ihnen zugewiesenen #
# Screentone. #
#==============================================================================#
PREFIX = [
#[prefix, screentone(r,g,b,grau)]
#------------------------------------------------------------------------------#
["[int]", Tone.new(0, 0, 0, 0)] ,
["[dint]", Tone.new(-136, -102,-17, 51)]
#------------------------------------------------------------------------------#
]
#==============================================================================#
# Tageszeiten config #
#------------------------------------------------------------------------------#
# Hier wird festgelegt welche einzelnen Tageszeiten an einem Tag durchlaufen #
# werden. Sobald die entsprechende Uhrzeit ist, wird der Screentone #
# automatisch auf den eingestellten gewechselt. #
# Die Tageszeiten sollten sortiert von 0 bis MAX_STUNDEN sein. #
# Es ist möglich mehrere Tageszeiten-Sets zu haben. Die Sets werden von oben #
# nach unten durch nummeriert beginned mit 0. Das Timeset kann jederzeit #
# gewechselt werden mit : zeit_set(nummer des sets) #
#==============================================================================#
ZEITEN = [
#[zeit,"name",screentone(r,g,b,grau)]
#------------------------------------------------------------------------------#
# Set 0 #
#------------------------------------------------------------------------------#
[ [6 , "Aufgang", Tone.new(-20, -51, -68, 0)] ,
[8 ,"Mittag", Tone.new(0, 0, 0, 0)] ,
[19 , "Untergang", Tone.new(-68, -51, -9, 25)] ,
[21 ,"Nacht", Tone.new(-136, -102, -17, 51)]
], # Ein Komma für ein weiteres Set
#------------------------------------------------------------------------------#
# Set 1 #
#------------------------------------------------------------------------------#
[ [6, "Morgenrot", Tone.new(-20, -51, -68, 0)] ,
[8 ,"Mittag", Tone.new(0, 0, 0, 0)] ,
[19, "Abend", Tone.new(-68, -51, -9, 25)] ,
[21 ,"Grau", Tone.new(-136, -102, -17, 51)]
] # Kein Komma für das letzte Set
#------------------------------------------------------------------------------#
]
#------------------------------------------------------------------------------#
#==============================================================================#
# Zeitsystem config #
#------------------------------------------------------------------------------#
# Die fadingtime bestimmt wieviel sekunden der Übergang von einer Tageszeit #
# bis zur nächsten läuft. #
# per_second bestimmt wieviele minuten im Spiel einer sekunde echter Zeit #
# entsprechen. #
# z.B. $per_second = 2 -> 1 Stunde im spiel entspricht 30 sekunden #
#==============================================================================#
$fadingtime = 3
$per_second = 15
#==============================================================================#
# Interpreter Commands #
#------------------------------------------------------------------------------#
#============ Get-Commands ============##============ Set-Commands ============#
################################################################################
# zeit_set ## zeit_set(set nummer) #
#--------------------------------------##--------------------------------------#
# Gibt die Nummer des aktuellen ## Setzt das Zeit-Set auf die #
# Zeit-Sets zurück ## angegebene nummer #
################################################################################
# ## zeit_an? #
#--------------------------------------##--------------------------------------#
# ## Gibt den aktuellen Status des #
# ## Zeit-Systems zurück #
################################################################################
# ## zeit_stop #
#--------------------------------------##--------------------------------------#
# ## Stoppt das Zeit-System #
################################################################################
# ## zeit_start #
#--------------------------------------##--------------------------------------#
# ## Startet das Zeit-System wieder #
################################################################################
# minute ## minute(x) #
#--------------------------------------##--------------------------------------#
# Gibt die aktuelle minute zurück ## Setzt die aktuelle Minute auf x #
################################################################################
# stunde ## stunde(x) #
#--------------------------------------##--------------------------------------#
# Gibt die aktuelle stunde zurück ## Setzt die aktuelle Stunde auf x #
################################################################################
# tag ## tag(x) #
#--------------------------------------##--------------------------------------#
# Gibt den Namen des aktuellen ## Setzt den aktuellen Tag auf x #
# Tages zurück ## #
################################################################################
# monat ## monat(x) #
#--------------------------------------##--------------------------------------#
# Gibt den namen des aktuellen ## Setzt den aktuellen Monat auf x #
# Monats zurück ## #
################################################################################
# jahr ## jahr(x) #
#--------------------------------------##--------------------------------------#
# Gibt das aktuellen Jahr zurück ## Setzt das aktuelle Jahr auf x #
# Monats zurück ## #
################################################################################
# tageszeit ## tageszeit("x") #
#--------------------------------------##--------------------------------------#
# Gibt die aktuelle Tageszeit zurück ## Setzt die aktuelle Tageszeit auf x #
#==============================================================================#
#==============================================================================#
# --------------------------- :: script start :: ----------------------------- #
#==============================================================================#
#==============================================================================#
class DayAndNight
#==============================================================================#
attr_accessor :minute
attr_accessor :stunde
attr_accessor :tag
attr_accessor :monat
attr_accessor :jahr
attr_accessor :time_stop
attr_accessor :current_daytime
attr_accessor :timeset
#------------------------------------------------------------------------------#
def initialize
@minute = MINUTEN_START
@stunde = STUNDEN_START
@tage = TAG_START
@monat = MONAT_START
@jahr = JAHR_START
@timeset = START_SET
@current_daytime = ""
@time_stop = false
end
#------------------------------------------------------------------------------#
def update
if (Graphics.frame_count / (Graphics.frame_rate / 60)) % 60 == 0
@minute += $per_second unless @time_stop
if @minute >= MAX_MINUTEN
@minute -= MAX_MINUTEN
@stunde += 1
set_daytime_tone unless mapname_has_prefix?
end
if @stunde >= MAX_STUNDEN
@stunde -= MAX_STUNDEN
@tage += 1
end
if @tage >= MAX_TAGE
@tage -= MAX_TAGE
@monat += 1
end
if @monat >= MAX_MONATE
@monat -= MAX_MONATE
@jahr += 1
end
end
end
#------------------------------------------------------------------------------#
def mapname_has_prefix?(get_prefix = false)
for set in PREFIX
if $game_map.name.to_s.index(set[0]) != nil
if get_prefix
return set[0]
else
return true
end
end
end
return false
end
#------------------------------------------------------------------------------#
def set_prefix_tone
for set in PREFIX
if $game_map.name.to_s.index(set[0]) != nil
$game_map.screen.start_tone_change(set[1],1)
return
end
end
end
#------------------------------------------------------------------------------#
def set_daytime_tone(instant = false)
for set in ZEITEN[@timeset]
if instant
if mapname_has_prefix?
set_prefix_tone
return
end
if set[1] == @current_daytime
$game_map.screen.start_tone_change(set[2],1)
return
end
else
if set[0] == @stunde
$game_map.screen.start_tone_change(set[2],$fadingtime*60)
@current_daytime = set[1]
return
end
end
end
end
#------------------------------------------------------------------------------#
def set_daytime
for i in 0..ZEITEN[@timeset].length - 1
if i == ZEITEN[@timeset].length - 1
if @stunde >= ZEITEN[@timeset]
[0] or
@stunde < ZEITEN[@timeset][0][0]
@current_daytime = ZEITEN[@timeset][1]
set_daytime_tone(true)
return
end
else
if @stunde >= ZEITEN[@timeset][0] and
@stunde < ZEITEN[@timeset][i+1][0]
@current_daytime = ZEITEN[@timeset][1]
set_daytime_tone(true)
return
end
end
end
end
#------------------------------------------------------------------------------#
end
#==============================================================================#
# adds für einfachere call script befehle für den user #
#==============================================================================#
class Game_Interpreter
#==============================================================================#
def zeit_set(set = nil)
if set == nil
return $time.timeset
else
$time.timeset = set
$time.set_daytime
end
end
#------------------------------------------------------------------------------#
def zeit_stop
$time.time_stop = true if $time.time_stop == false
end
#------------------------------------------------------------------------------#
def zeit_start
$time.time_stop = false if $time.time_stop
end
#------------------------------------------------------------------------------#
def zeit_an?
return $time.time_stop
end
#------------------------------------------------------------------------------#
def stunde(std = nil)
if std == nil
return $time.stunde
else
$time.stunde = std
$time.set_daytime
end
end
#------------------------------------------------------------------------------#
def minute(min = nil)
if min == nil
return $time.minute
else
$time.minute = min
end
end
#------------------------------------------------------------------------------#
def tag(t = nil)
if t == nil
return TAGESNAMEN[($time.tag % TAGESNAMEN.length) - 1]
else
$time.tag = t
end
end
#------------------------------------------------------------------------------#
def monat(m = nil)
if m == nil
return MONATSNAMEN[($time.monat % MONATSNAMEN.length) - 1]
else
$time.monat = m
end
end
#------------------------------------------------------------------------------#
def jahr(j = nil)
if j == nil
return $time.jahr
else
$time.jahr = j
end
end
#------------------------------------------------------------------------------#
def tageszeit(zeit = nil)
if zeit == nil
return $time.current_daytime
else
for set in ZEITEN[$time.timeset]
if set[1] == zeit
stunde(set[0])
break
end
end
end
end
#------------------------------------------------------------------------------#
end
#==============================================================================#
# adds zum auslesen des Mapnamens #
#==============================================================================#
class Game_Map
#==============================================================================#
def name
$data_mapinfos[@map_id]
end
#------------------------------------------------------------------------------#
end
#==============================================================================#
# adds zur zeitberechnung und darstellung #
#==============================================================================#
class Scene_Map
#==============================================================================#
alias update_dayandnight_adds update
def update
update_dayandnight_adds
$time.update
end
#------------------------------------------------------------------------------#
alias fadein_dayandnight_adds fadein
def fadein(duration)
$time.set_daytime
fadein_dayandnight_adds(duration)
end
#------------------------------------------------------------------------------#
end
#==============================================================================#
# adds zum speichern und laden der zeit #
#==============================================================================#
class Scene_File
#==============================================================================#
alias write_save_data_dayandnight_adds write_save_data
def write_save_data(file)
write_save_data_dayandnight_adds(file)
Marshal.dump($time,file)
end
#------------------------------------------------------------------------------#
alias read_save_data_dayandnight_adds read_save_data
def read_save_data(file)
read_save_data_dayandnight_adds(file)
$time = Marshal.load(file)
end
#------------------------------------------------------------------------------#
end
#==============================================================================#
# adds zum laden der mapnamen und erstellen der zeit #
#==============================================================================#
class Scene_Title
#==============================================================================#
alias load_database_additions load_database
def load_database
load_database_additions
$data_mapinfos = load_data("Data/MapInfos.rvdata")
for key in $data_mapinfos.keys
$data_mapinfos[key] = $data_mapinfos[key].name
end
end
#------------------------------------------------------------------------------#
alias command_new_game_additions command_new_game
def command_new_game
command_new_game_additions
$time = DayAndNight.new
$time.set_daytime
end
#------------------------------------------------------------------------------#
end
#==============================================================================#
#----------------------------- :: script end :: -------------------------------#
#==============================================================================#
#--------------------------------------------------------------------------
class Scene_Menu < Scene_Base
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
@daynight_window = Window_DayNight.new(0, 176)
end
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@daynight_window.dispose
end
end
class Window_DayNight < Window_Base
def initialize(x, y)
super(x, y, 160, 80)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 24, WLH, $time.stunde)
self.contents.draw_text(24, 0, 8, WLH, ":")
self.contents.draw_text(32, 0, 24, WLH, $time.minute)
case $time.tag
when 0
self.contents.draw_text(60, 0, 60, WLH, "Montag")
when 1
self.contents.draw_text(60, 0, 60, WLH, "Dienstag")
when 2
self.contents.draw_text(60, 0, 60, WLH, "Mittwoch")
when 3
self.contents.draw_text(60, 0, 60, WLH, "Donnerstag")
when 4
self.contents.draw_text(60, 0, 60, WLH, "Freitag")
when 5
self.contents.draw_text(60, 0, 60, WLH, "Samstag")
when 6
else
self.contents.draw_text(60, 0, 60, WLH, "Sonntag")
end
case $time.monat
when 0
self.contents.draw_text(0, 24, 78, WLH, "Jan")
when 1
self.contents.draw_text(0, 24, 78, WLH, "Feb")
when 2
self.contents.draw_text(0, 24, 78, WLH, "März")
when 3
self.contents.draw_text(0, 24, 78, WLH, "April")
when 4
self.contents.draw_text(0, 24, 78, WLH, "Mai")
when 5
self.contents.draw_text(0, 24, 78, WLH, "Juni")
when 6
self.contents.draw_text(0, 24, 78, WLH, "Juli")
when 7
self.contents.draw_text(0, 24, 78, WLH, "Aug")
when 8
self.contents.draw_text(0, 24, 78, WLH, "Sep")
when 9
self.contents.draw_text(0, 24, 78, WLH, "Okt")
when 10
self.contents.draw_text(0, 24, 78, WLH, "Nov")
when 11
else
self.contents.draw_text(0, 24, 78, WLH, "Dez")
end
self.contents.draw_text(82, 24, 40, WLH, $time.jahr)
end
end