|
  |
~[Kylock's Time System VX 1.5]~ |
|
|
|
|
May 8 2008, 11:36 PM
|

Level 6

Group: Member
Posts: 85
Type: Scripter
RM Skill: Advanced

|
This script will track game time as well as automatically tint the screen for a day/night effect. You can make events dependent on time thanks to game variable output support. You can customize how dark you want it to be at what time. You can designate certain maps as "outside" so they are the only ones that are dark at night! (Add [KTS] to map name.) You can choose the speed of your game's clock. Because the entire time system is an object, its possible to instance or have more than one game clock. PM me for details if you really need this functionality. Detailed installation and script usage instructions are included in the script header, just like all my other scripts. The usage is VERY similar to the XP version that I wrote over a year ago - if you are familiar with it at all. To answer a few question before they are asked: - I am not including weeks, months and years because it gets too complicated when you have a different amount of days in each month for example. The primary intention of this script is to allow you to build your events based on hours in the day and time periods throughout the day. (Ex: The time-locked vault can only be opened between 2 and 3. or The guy with the password can only be found drinking in the bar at midnight.) - The [KTS] that you put in your map names remains hidden to other scripts, like Map Name Popups and such. - For script compatibility reasons, if you use a CMS, you might get better results if this script is located ABOVE your CMS. If you have a CMS and want a time window added to it, this is a really easy hack for any scripter, so please make a request in the appropriate Script Requests Forum. - There are no screenshots because that would be pointless. You can define your own screen tones and there is an added window for time right above the gold window in the default menu. That's all there is, I promise! Now, the script itself: CODE #============================================================================== # ■ Kylock's Time System VX 1.5 # 6.3.2008 #------------------------------------------------------------------------------ # Script by: Kylock #============================================================================== # Mostly rewritten since XP version. Cleaner code and less intrusive (more # compatible). This is my comprehensive time and day/night system. This # script adds a new window to the game menu, so if you use a CMS, then place # this script ABOVE it so that it won't mess up your CMS. If you use a custom # script that makes changes to the battle background, place KTS below it so # that you don't get the delayed-tone effect in you battles. Other than that, # there shouldn't be any other script compatibility issues. # I've tried to make this script as customizable as possible, the settings # are found immediately following this header. Although time output to game # variables is optional, I strongly suggest using it so that its easier to # build your events based on the time in the game. #============================================================================== # ● Change Log #------------------------------------------------------------------------------ # 1.0 - Original Release. # 1.1 - Corrected tinting issue at the start of a battle. Place this script # below any battle background scripts if you experience "jumpy tinting" # 1.2 - Corrected the accuracy of $kts.stop and $kts.go # 1.3 - $kts.stop really stops everything now. Also added game switches for # even easier eventing. # 1.4 - Fixed Battle Test compatibility (simulates normal daylight for battle # test instead of darkness). # Now switches and variables will only update when the map loads so that # events don't suddenly dissappear when their time is up. # Added $kts_anti_tone - returns an inverse tone color to allow sprites # to appear normally on a tinted screen. # 1.5 - Rewrote the regexp that finds the [KTS] in the map name. Hopefully # this resolves the wrong maps being tinted problem. #============================================================================== # ● Auto-tone Instructions #------------------------------------------------------------------------------ # Maps designated as outdoors are the only maps to be affected by this # scripts use of auto-toning. To signify a map to be "outdoors", you must # include [KTS] In the name of the map. For example, you world map could be # named "World Map [KTS]" or "[KTS] World Map". Provisions are made later in # the script to remove [KTS] from the map name when it's read by another # script. This means that "[KTS]" won't show up in your Map Name Popup # windows. #============================================================================== # ● Script Function Calls #------------------------------------------------------------------------------ # The following are script commands that can be executed by using the # "Script..." command in your events. # ● $kts.stop - Stops time (can be used for cutscenes) # ● $kts.go - Resumes time (don't forget to use this!) # ● $kts.sec(n) - progresses time forward (n) seconds # ● $kts.min(n) - progresses time forward (n) minutes # ● $kts.hours(n) - progresses time forward (n) hours # ● $kts.days(n) - progresses time forward (n) days # ● $kts.jump_to_hour(n) - progresses time forward TO the specified hour. # Particularly useful in a situation where you # want a certain event to happen at a certain time, # or an Innkeeper who should wake the party up at # a certain hour. This command MAY cause your game # to appear to freeze for a few seconds on slower # computers. #============================================================================== # ● Game Database Setup #------------------------------------------------------------------------------ # This script, by defult, uses the following game variables and switches: # Database Variables: # [1] The Current Time [4] The Current Hour # [2] The Current Second [5] The Current Day # [3] The Current Minute [6] Name of the Current Day # Database Switches # [1] ON during night hours (2200-0400)(10pm-4am) # [2] ON during dawn hours (0500-0800)( 5am-8am) # [3] ON during daytime hours (0900-1800)( 9am-6pm) # [4] ON during sunset hours (1900-2100)( 7pm-9pm) #==============================================================================
#============================================================================== # Stores variables and user defined settings for the time system. #============================================================================== module KTS #----------------------------------------------------------------------- # User Definable Clock Settings #----------------------------------------------------------------------- # Sets the speed multiplier of the clock. 1 is real time. A higher # value will give you a faster clock. Default is 100. SPEED = 100 #AMPM (True: 12-hour clock, False: 24-hour clock) AMPM = false # Sets the time at the start of your game. START_HOUR = 1 START_DAY = 1 #----------------------------------------------------------------------- # If you want custom day names, edit away! #----------------------------------------------------------------------- DAY_NAMES = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] #----------------------------------------------------------------------- # Settings for Time Periods #----------------------------------------------------------------------- T1 = [ 0,5 ] # Night # Sets time periods for tinting effects T2 = [ 6,8 ] # Dawn # [Start Hour, End Hour] for time period T3 = [ 9,18] # Day # Use 24-hour values for time periods T4 = [19,21] # Sunset T5 = [22,24] # Night # <- Ex: Night is between 23:00 and 24:00 #----------------------------------------------------------------------- # Settings for Output to Game Variables option. #----------------------------------------------------------------------- # Set this to true to output the current time to game variables. DATABASE_OUTPUT = true # Game Variable to be used for time output. TIME = 1 #(Time in string format. Ex: "2:48 AM" or "02:48") SECONDS = 2 MINUTES = 3 HOURS = 4 DAYS = 5 DAYNAME = 6 # Game Switches to be used for time output. NIGHT = 1 # This switch is on during night hours (2200-0400)(10pm-4am) DAWN = 2 # This switch is on during dawn hours (0500-0800)( 5am-8am) DAY = 3 # This switch is on during daytime hours (0900-1800)( 9am-6pm) SUNSET = 4 # This switch is on during sunset hours (1900-2100)( 7pm-9pm) #----------------------------------------------------------------------- # Settings for time controlled screen toning #----------------------------------------------------------------------- # True will enable screen toning to be used by the script. USE_TONE = true # Sets the duration of tone changes (in frames) FADE_LENGTH = 120 # Defines tones to be used in the corresponding time periods defined above. # RED, GREEN, BLUE, GREY 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) # Defines anti-tones A1 = Tone.new( 187, 119, 17, -68) A2 = Tone.new( -17, 51, 102, 0) A3 = Tone.new( 0, 0, 0, 0) A4 = Tone.new( 68, 136, 34, 0) A5 = Tone.new( 187, 119, 17, -68) end
#============================================================================== # Core Time System Engine #============================================================================== class Kylock_Time_System # sets instance variables 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 $kts_anti_tone = Tone.new(0,0,0,0) end # Computes current time and updates variables if used 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 $game_variables[KTS::TIME] = getTime end end end
def update_variables $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 #----------------------------------------------------------------------- # Script Command Functions #----------------------------------------------------------------------- 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 #----------------------------------------------------------------------- # Script Support/Misc Functions #----------------------------------------------------------------------- def getDayName weekday = (@days % KTS::DAY_NAMES.length) return KTS::DAY_NAMES[weekday] end
#----------------------------------------------------------------------- # Screen Tone Functions #----------------------------------------------------------------------- def update_tint(duration = KTS::FADE_LENGTH) return if $BTEST 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) $kts_anti_tone = KTS::A1 elsif @hours >= KTS::T2[0] and @hours <= KTS::T2[1] @period = 2 screen.start_tone_change(KTS::C2,duration) $kts_anti_tone = KTS::A2 elsif @hours >= KTS::T3[0] and @hours <= KTS::T3[1] @period = 3 screen.start_tone_change(KTS::C3,duration) $kts_anti_tone = KTS::A3 elsif @hours >= KTS::T4[0] and @hours <= KTS::T4[1] @period = 4 screen.start_tone_change(KTS::C4,duration) $kts_anti_tone = KTS::A4 elsif @hours >= KTS::T5[0] and @hours <= KTS::T5[1] @period = 5 screen.start_tone_change(KTS::C5,duration) $kts_anti_tone = KTS::A5 end else # no tone if indoors 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
class Spriteset_Map #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias kts_initialize initialize def initialize $kts.update_switches if !@kts_stop && KTS::DATABASE_OUTPUT $kts.update_variables if !@kts_stop && KTS::DATABASE_OUTPUT kts_initialize end end
#============================================================================== # Instantly updates screen tone when a new map is loaded. #============================================================================== 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
#============================================================================== # Instantly updates screen tone when a battle starts. #============================================================================== class Spriteset_Battle alias kts_create_battleback create_battleback def create_battleback $kts.update_tint(0) kts_create_battleback end end
#============================================================================== # Temporarily disables auto-toning if an event tints the screen. #============================================================================== class Game_Interpreter alias kts_Interpreter_command_223 command_223 def command_223 $kts_event_tone = true kts_Interpreter_command_223 end end
#============================================================================== # Integrates the Time System into the 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
#============================================================================== # Scans Map Names for Toning #============================================================================== class RPG::MapInfo def name # Definition prevents location scripts from reading anything within return @name.gsub(/\[.*\]/) {""} # brackets, including the brackets end def original_name return @name end def outside_tint? return @name.scan(/\[KTS\]/).size > 0 # old regexp: return @name.scan(/[\KTS]/).size > 0 end end
#============================================================================== # Sets up the time window for the menu. #============================================================================== 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
#============================================================================== # Adds the time window to the 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
#============================================================================== # Saves and Loads game time to/from save game file. #============================================================================== 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 For my example, I'll make a set of events that only exist at night after 9pm and 5am. First, make a common event that looks like this:  You'll notice that Switch 9 has to be on for this event to work, so you need to make sure that you turn it on before any important maps show up. So maybe turn on Switch 9 in your game opening sequence. Now, for any event you want to show up only at night, all you have to do is this:  Piece of cake for any self-proclaimed eventers out there! I am open to requests not covered above. Enjoy, Kylock
This post has been edited by Kylock: Jan 3 2009, 05:51 AM
__________________________
|
|
|
|
|
|
|
|
|
May 9 2008, 12:07 AM
|

Group: Banned
Posts: 0
Type: None
RM Skill: Undisclosed

|
I like this script a lot. Thanks for putting it up!
__________________________
Don't post porn like I did! This Public Safety Announcement is brought to you by the leadership team of RRR.
|
|
|
|
|
|
|
|
|
May 9 2008, 08:26 PM
|
Level 1

Group: Member
Posts: 11
Type: None
RM Skill: Beginner

|
is it possible to make night time with different music?
|
|
|
|
|
|
|
|
|
May 9 2008, 08:38 PM
|

Level 6

Group: Member
Posts: 85
Type: Scripter
RM Skill: Advanced

|
QUOTE (Namio @ May 9 2008, 11:40 PM)  is it possible to make night time with different music? All you would need to do is take the sample event I have in the original post, and where you see "Control Switches: [0010:Night time People] = ON" just replace, or add next to it, a Play BGM command. That's the whole idea here, to be able to make events that can work straight from the clock!
__________________________
|
|
|
|
|
|
|
|
|
May 10 2008, 06:35 AM
|

Sir Jacketh

Group: Revolutionary
Posts: 137
Type: Artist
RM Skill: Undisclosed

|
QUOTE (Kylock @ May 8 2008, 10:50 PM)  Kylock's Time System VX 1.2 by Kylock This script will track game time as well as automatically tint the screen for a day/night effect. You can make events dependent on time thanks to game variable output support. You can customize how dark you want it to be at what time. You can designate certain maps as "outside" so they are the only ones that are dark at night! (Add [KTS] to map name.) You can choose the speed of your game's clock. Because the entire time system is an object, its possible to instance or have more than one game clock. PM me for details if you really need this functionality. Detailed installation and script usage instructions are included in the script header, just like all my other scripts. The usage is VERY similar to the XP version that I wrote over a year ago - if you are familiar with it at all. To answer a few question before they are asked: - I am not including weeks, months and years because it gets too complicated when you have a different amount of days in each month for example. The primary intention of this script is to allow you to build your events based on hours in the day and time periods throughout the day. (Ex: The time-locked vault can only be opened between 2 and 3. or The guy with the password can only be found drinking in the bar at midnight.) - The [KTS] that you put in your map names remains hidden to other scripts, like Map Name Popups and such. - For script compatibility reasons, if you use a CMS, you might get better results if this script is located ABOVE your CMS. If you have a CMS and want a time window added to it, this is a really easy hack for any scripter, so please make a request in the appropriate Script Requests Forum. - There are no screenshots because that would be pointless. You can define your own screen tones and there is an added window for time right above the gold window in the default menu. That's all there is, I promise! Now, the script itself: CODE #============================================================================== # ■ Kylock's Time System VX 1.2 # 9.5.2008 #------------------------------------------------------------------------------ # Script by: Kylock #============================================================================== # Mostly rewritten since XP version. Cleaner code and less intrusive (more # compatible). This is my comprehensive time and day/night system. This # script adds a new window to the game menu, so if you use a CMS, then place # this script ABOVE it so that it won't mess up your CMS. Other than that, # there shouldn't be any other script compatibility issues. # I've tried to make this script as customizable as possible, the settings # are found immediately following this header. Although time output to game # variables is optional, I strongly suggest using it so that its easier to # build your events based on the time in the game. #============================================================================== # ● Change Log # 1.0 - Original Release. # 1.1 - Corrected tinting issue at the start of a battle. Place this script # below any battle background scripts if you experience "jumpy tinting" #============================================================================== # ● Auto-tone Tnstructions #------------------------------------------------------------------------------ # Maps designated as outdoors are the only maps to be affected by this # scripts use of auto-toning. To signify a map to be "outdoors", you must # include [KTS] In the name of the map. For example, you world map could be # named "World Map [KTS]" or "[KTS] World Map". Provisions are made later in # the script to remove [KTS] from the map name when it's read by another # script. This means that "[KTS]" won't show up in your Map Name Popup # windows. #============================================================================== # The following are script commands that can be executed by using the # "Script..." command in your events. # ● $kts.stop - Stops time (can be used for cutscenes) # ● $kts.go - Resumes time (don't forget to use this!) # ● $kts.sec(n) - progresses time forward (n) seconds # ● $kts.min(n) - progresses time forward (n) minutes # ● $kts.hours(n) - progresses time forward (n) hours # ● $kts.days(n) - progresses time forward (n) days # ● $kts.jump_to_hour(n) - progresses time forward TO the specified hour. # Particularly useful in a situation where you # want a certain event to happen at a certain time, # or an Innkeeper who should wake the party up at # a certain hour. This command MAY cause your game # to appear to freeze for a few seconds on slower # computers. #==============================================================================
#============================================================================== # Stores variables and user defined settings for the time system. #============================================================================== module KTS #----------------------------------------------------------------------- # User Definable Clock Settings #----------------------------------------------------------------------- # Sets the speed multiplier of the clock. 1 is real time. A higher # value will give you a faster clock. Default is 100. SPEED = 100 #AMPM (True: 12-hour clock, False: 24-hour clock) AMPM = false # Sets the time at the start of your game. START_HOUR = 0 START_DAY = 1 #----------------------------------------------------------------------- # If you want custom day names, edit away! #----------------------------------------------------------------------- DAY_NAMES = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] #----------------------------------------------------------------------- # Settings for Time Periods #----------------------------------------------------------------------- T1 = [ 0,4 ] # Early Morning # Sets time periods for tinting effects T2 = [ 5,11] # Morning # [Start Hour, End Hour] for time period T3 = [12,18] # Day # Use 24-hour values for time periods T4 = [19,22] # Evening T5 = [23,24] # Night # <- Ex: Night is between 23:00 and 24:00 #----------------------------------------------------------------------- # Settings for Output to Game Variables option. #----------------------------------------------------------------------- # Set this to true to output the current time to game variables. VARIABLES_OUTPUT = true # Defines the Game Variable to be used for time output. TIME = 1 #(Time in string format. Ex: "2:48 AM" or "02:48") SECONDS = 2 MINUTES = 3 HOURS = 4 DAYS = 5 PERIOD = 6 # (Value of 1-5 indicating the current time period) DAYNAME = 7 #----------------------------------------------------------------------- # Settings for time controlled screen toning #----------------------------------------------------------------------- # True will enable screen toning to be used by the script. USE_TONE = true # Sets the duration of tone changes (in frames) FADE_LENGTH = 120 # Defines tones to be used in the corresponding time periods defined above. # RED, GREEN, BLUE, GREY 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
#============================================================================== # Core Time System Engine #============================================================================== class Kylock_Time_System # sets instance variables def initialize $kts_map_data = load_data("Data/MapInfos.rvdata") @event_offset = (KTS::START_HOUR * 3600) + (KTS::START_DAY * 86400) $kts_event_tone = false $kts_battle_tone = true end # Computes current time and updates variables if used def update @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::VARIABLES_OUTPUT $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::PERIOD] = @period $game_variables[KTS::DAYNAME] = getDayName 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 #----------------------------------------------------------------------- # Script Command Functions #----------------------------------------------------------------------- def stop @time_stopped = @total_seconds end def go @event_offset -= (@total_seconds - @time_stopped) 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 #----------------------------------------------------------------------- # Script Support/Misc Functions #----------------------------------------------------------------------- def getDayName weekday = (@days % KTS::DAY_NAMES.length) return KTS::DAY_NAMES[weekday] end
#----------------------------------------------------------------------- # Screen Tone Functions #----------------------------------------------------------------------- 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 # no tone if indoors 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
#============================================================================== # Instantly updates screen tone when a new map is loaded. #============================================================================== 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
#============================================================================== # Instantly updates screen tone when a battle starts. #============================================================================== class Spriteset_Battle alias kts_create_battleback create_battleback def create_battleback $kts.update_tint(0) kts_create_battleback end end
#============================================================================== # Temporarily disables auto-toning if an event tints the screen. #============================================================================== class Game_Interpreter alias kts_Interpreter_command_223 command_223 def command_223 $kts_event_tone = true kts_Interpreter_command_223 end end
#============================================================================== # Integrates the Time System into the 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
#============================================================================== # Scans Map Names for Toning #============================================================================== class RPG::MapInfo def name # Definition prevents location scripts from reading anything within return @name.gsub(/\[.*\]/) {""} # brackets, including the brackets end def original_name return @name end def outside_tint? return @name.scan(/[\KTS]/).size > 0 end end
#============================================================================== # Sets up the time window for the menu. #============================================================================== 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
#============================================================================== # Adds the time window to the 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
#============================================================================== # Saves and Loads game time to/from save game file. #============================================================================== 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 For my example, I'll make a set of events that only exist at night after 9pm and 5am. First, make a common event that looks like this:  You'll notice that Switch 9 has to be on for this event to work, so you need to make sure that you turn it on before any important maps show up. So maybe turn on Switch 9 in your game opening sequence. Now, for any event you want to show up only at night, all you have to do is this:  Piece of cake for any self-proclaimed eventers out there! I am open to requests not covered above. Enjoy, Kylock OMFG MAN! I HAVE ALWAYS NEEDED A SCRIPT LIKE THIS XD Im like so psyched about this lol, Im using it ASAP. Thanks for posting it
__________________________
Hmwut?
|
|
|
|
|
|
|
|
|
May 10 2008, 08:53 AM
|

Level 6

Group: Member
Posts: 85
Type: Scripter
RM Skill: Advanced

|
QUOTE (prinsu kun @ May 10 2008, 08:44 AM)  thanks for the great script
it's possible to make a counting days depend on my computer clock ? for example I was trying to make a school game with 30 days (based on real time) the idea is counting the first time you play (new game date) and give you 30 days based on your computer clock after the 30 days passed you will forcing to enter to the exam The way that this script determines time is fundamentally different than any method that could be used to base time off of the system clock. It counts frames and makes assumptions based on the FPS of RMVX. To make a timer based on the system clock is completely outside the scope of this script and is like requesting a whole different script =p So in short, no, unfortunately you cannot do that with this script. I think the KCG day/night script has a mode for the system clock though.
This post has been edited by Kylock: May 10 2008, 08:55 AM
__________________________
|
|
|
|
|
|
|
|
|
May 10 2008, 11:40 PM
|

Level 6

Group: Member
Posts: 85
Type: Scripter
RM Skill: Advanced

|
QUOTE (matty0828 @ May 11 2008, 01:56 AM)  Great work!!
I was just wondering...
Is it possible to have a HUD thingy with the time, day or phase outside of the menu? And if so, how would I make it disappear when an event is taking place but reappear when it's over? Like as in if I spoke to somebody it wouldn't be on the screen but when I'm just walking around it would? It's possible, but not supported by the script. The time is easily accessible by other scripts, so if you want a custom HUD, then you'll need to make a request for one =p It might be something I add later on, but no time soon.
__________________________
|
|
|
|
|
|
|
|
|
May 11 2008, 12:06 AM
|
Level 1

Group: Member
Posts: 10
Type: None
RM Skill: Undisclosed

|
Kylock, a question... Is possible to create a event to slow or speed up the "fictional" time in the game? Like the Breath of fire itens, to call the night or the sun?
|
|
|
|
|
|
|
|
|
May 16 2008, 01:35 PM
|

Group: Member
Posts: 1
Type: Event Designer
RM Skill: Skilled

|
where i place your script because everywhere i put it the script doesn't work
|
|
|
|
|
|
|
|
|
May 16 2008, 11:46 PM
|

Level 6

Group: Member
Posts: 85
Type: Scripter
RM Skill: Advanced

|
QUOTE (wii19 @ May 16 2008, 04:49 PM)  where i place your script because everywhere i put it the script doesn't work Below battle backgrounds if you have them, and above your CMS if you have one. If you don't see the time, then you'll need to modify your CMS to have a time window. You can print the time using $kts.getTime Even if you don't see anything, it IS still working. Hit F9 in your game to look at the variables and switches to test.
__________________________
|
|
|
|
|
|
|
|
|
May 17 2008, 02:41 AM
|
Level 12

Group: Revolutionary
Posts: 203
Type: None
RM Skill: Undisclosed

|
this is really a cool system!
|
|
|
|
|
|
|
|
|
May 18 2008, 08:42 AM
|
Level 1

Group: Member
Posts: 5
Type: None
RM Skill: Skilled

|
When I load a saved game I get this message:
"Script 'Kylock's Time System VX 1.3' line 408: EOFError occured:
End of file reached"
Also, is it possible to edit when the time starts so it doesn't always start at night for a new game?
One more thing, whenever I open and close the menu after an autorun event, the event starts over.
This post has been edited by vavalar: May 18 2008, 08:52 AM
|
|
|
|
|
|
|
|
|
May 18 2008, 11:50 AM
|


Group: Member
Posts: 4
Type: Event Designer
RM Skill: Intermediate

|
I'm sure this script works amazingly, though i can't get mine to operate. I get an error every time i try to test play. I don't think i'm putting it in the right place... you said that i would have to put it after battle backgrounds, and before CMS. i don't think i have either, or i'm not looking in the right places. So, i tried to put it in the script editor, under game objects. and i named it Game_Time (see SS). maybe a little help here?
|
|
|
|
|
|
|
|
|
May 19 2008, 05:37 PM
|

Level 6

Group: Member
Posts: 85
Type: Scripter
RM Skill: Advanced

|
QUOTE (vavalar @ May 18 2008, 11:56 AM)  When I load a saved game I get this message:
"Script 'Kylock's Time System VX 1.3' line 408: EOFError occured:
End of file reached"
Also, is it possible to edit when the time starts so it doesn't always start at night for a new game?
One more thing, whenever I open and close the menu after an autorun event, the event starts over. The time is saved with your game. If you saved game was created before you installed the time system, then it doesn't have time. If that makes sense. Basically, only games started AFTER you added this script will work. The settings for the time of day when the game starts is in the script. Look for: CODE START_HOUR = 0 I will look into the autorun thing. QUOTE (slayerofman @ May 18 2008, 03:04 PM)  I'm sure this script works amazingly, though i can't get mine to operate. I get an error every time i try to test play. I don't think i'm putting it in the right place... you said that i would have to put it after battle backgrounds, and before CMS. i don't think i have either, or i'm not looking in the right places. So, i tried to put it in the script editor, under game objects. and i named it Game_Time (see SS). maybe a little help here? Put it after materials and above main. ANY script you add should be in this place. What you call it is only for your own reference, so Game_Time or whatever, that part won't matter.
This post has been edited by Kylock: May 19 2008, 05:38 PM
__________________________
|
|
|
|
|
|
|
|
  |
4 User(s) are reading this topic (4 Guests and 0 Anonymous Users)
0 Members:
RPG RPG Revolution is an Privacy
Policy and Legal
|
|