Jet's Time System
By Jet (Obviously)
Introduction
[spoiler]This is my time system. It has a whole lot of features and customization options. I have obtained opinions from users like you to know what they want in a time system. This has all the features of the time system you may already use, PLUS MORE! Enjoy. =)[/spoiler]
Features
[spoiler]
This is the Jet Engine, an add-on for all my scripts to check if they are up-to date.
#===============================================================================
# The Jet Engine
# By Jet10985 (Jet)
# Help by: Yanfly, OriginalWij, BigEd781
#===============================================================================
# This is my handy module i use to hold my regularly used methods. It also
# Stores which of my scripts people are using. I release this to help people
# write patches for my snippets if needed or they just want my methods.
#===============================================================================
# The Jet Engine now checks all of my scripts that you are using and tells you
# if any of them are outdated.
#===============================================================================
=begin
New Methods:
active - adds a script to the hash of my scripts being used by the user
check_note_tags - checks the obj's notebox for a RegExp word. Returns true or false.
show_char - Shows a walking character sprite.
script_active? - Checks if 1 of my scripts is active in the editor.
check_tag_number - Checks the obj's notebox for a RegExp word and number. Returns the number.
=end
module JetEngine
$engine_scripts = {}
def self.active(name, version = true)
$engine_scripts[name] = version unless $engine_scripts.include?(name)
end
def self.check_note_tags(obj, tag)
obj.note.each_line { |notetag|
case notetag
when tag
return true
end
}
return false
end
def self.show_char(x, y, actor_id)
@char = Game_Character.new
@char.set_graphic(actor_id.character_name, actor_id.character_index)
@char.step_anime = true
@char.moveto(x, y)
@sprite = Sprite_Character.new(nil, @char)
end
def self.script_active?(name)
if $engine_scripts.include?(name)
return true
else
return false
end
end
def self.check_tag_number(obj, tag)
obj.note.split(/[\r\n]+/).each { |notetag|
case notetag
when tag
@result = $1.to_i
end }
return @result
end
def self.check_current_version
$outdated_scripts = []
for i in 0...$engine_scripts.keys.size - 1
case $engine_scripts.keys[i]
when "Run/Guard Hotkey"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Run/Guard Hotkey")
end
when "Run/Guard Hotkey ATB"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Run/Guard Hotkey ATB")
end
when "Disable Battle Commands"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Disable Battle Commands")
end
when "Break States"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Break States")
end
when "Immortal States"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Immortal States")
end
when "Percentage of Damage"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Percentage of Damage")
end
when "Blue Magic"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Blue Magic")
end
when "Remove Dead Actors"
if $engine_scripts.values[i] != "v1.2"
$outdated_scripts.push("Remove Dead Actors")
end
when "Change Actor Options"
if $engine_scripts.values[i] != "v2"
$outdated_scripts.push("Change Actor Options")
end
when "Set Actor Max Level"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Set Actor Max Level")
end
when "Singular EXP"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Singular EXP")
end
when "No Actor EXP"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("No Actor EXP")
end
when "If Party Has Equipped"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("If Party Has Equipped")
end
when "If Party Has Skill"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("If Party Has Skill")
end
when "Level Up Items"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Level Up Items")
end
when "Learn A Skill Items"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Learn A Skill Items")
end
when "Parameter Icons"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Parameter Icons")
end
when "Windowskin Snippet"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Windowskin Snippet")
end
when "Hide Text Box"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Hide Text Box")
end
when "Change Windowskin"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Change Windowskin")
end
when "Diagonal Map Scroll"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Diagonal Map Scroll")
end
when "Item SE"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Item SE")
end
when "Screensaver"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Screensaver")
end
when "Pause Menu"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Pause Menu")
end
when "Change GameOver"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Change GameOver")
end
when "Aliased Load Menu Option"
if $engine_scripts.values[i] != "v2"
$outdated_scripts.push("Aliased Load Menu Option")
end
when "Success Bar"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Success Bar")
end
when "Speed Save"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Speed Save")
end
when "Extra Window"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Extra Window")
end
when "Records Window"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Records Window")
end
when "Level Up Effects"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Level Up Effects")
end
when "Alignment System"
if $engine_scripts.values[i] != "v1.5"
$outdated_scripts.push("Alignment System")
end
when "DayNight System"
if $engine_scripts.values[i] != "v1.2.1"
$outdated_scripts.push("DayNight System")
end
when "Cheat System"
if $engine_scripts.values[i] != "v1.1"
$outdated_scripts.push("Cheat System")
end
when "Stamina System"
if $engine_scripts.values[i] != "v1"
$outdated_scripts.push("Stamina System")
end
end
end
end
end
class Scene_Map
alias jet2011_start start
def start
jet2011_start
if $BTEST
JetEngine.check_current_version
p $outdated_scripts unless $outdated_scripts = []
end
end
end[/spoiler]
[spoiler]#===============================================================================
# Features
#===============================================================================
# CHECK means the script has the feature
# WIP means it is a future feature
#-------------------------------------------------------------------------------
# Thomas Edison Compat. CHECK
# Auto-Tint CHECK
# Auto-Weather CHECK
# Auto-Season CHECK
# Time to variable/switch CHECK
# Weather to switch CHECK
# Changable Days/Months CHECK
# Military time CHECK
# Real time option CHECK
# Resting CHECK
# Map/Menu Windows CHECK
# Changable map encounters WIP
# Map labels CHECK
# Alignment System compat. CHECK
# Tile set Changes WIP
# Skill damage differences depending on time of day. WIP
# Update only on Map feature. CHECK
#===============================================================================
[/spoiler]
Script/Demo
Download Demo Here (Might be outdated) (http://www.mediafire.com/?htzlywtj3qj)
Script:
[spoiler]
#===============================================================================
# Time System
# By Jet10985 (Jet)
# Slight Help by: Mr. Anonymous
#===============================================================================
# This script is my time system. Time System: A system of tracking in-game "time"
# which in-turn contain more systems relating to time. Used for visual effects,
# the novelty, and eventing purposes. My Time System: see Time system +
# see ultimate.
# This script has: 50 customization option.
#===============================================================================
#===============================================================================
# Features
#===============================================================================
# CHECK means the script has the feature
# WIP means it is a future feature
#-------------------------------------------------------------------------------
# Thomas Edison Compat. CHECK
# Auto-Tint CHECK
# Auto-Weather CHECK
# Auto-Season CHECK
# Time to variable/switch CHECK
# Weather to switch CHECK
# Changable Days/Months CHECK
# Military time CHECK
# Real time option CHECK
# Resting CHECK
# Map/Menu Windows CHECK
# Changable map encounters WIP
# Map labels CHECK
# Alignment System compat. CHECK
# Tile set Changes WIP
# Skill damage differences depending on time of day. WIP
# Update only on Map feature. CHECK
#===============================================================================
=begin
Disable auto-tint and auto-weather on maps:
In the map name ex. MAP001, add [JDN] in the name. Like so
MAP001 [JDN]
Built-in script commands:
freeze_time(option) <--------------- Script-time command only
option = true/false. true freeze's time, false unfreeze's it.
add_time(type, amount) <------------------- Script-time command only
type = "minute", "hour", "day", "month", "year" according to what you want to add
amount = amount of that time you want to add.
jump_to_hour(hour) <-------------------------- Script-time command only
hour = the hour you want to jump to. Be below 25 and above 0.
--------------------------------------------------------------------------------
Compatability Instructions:
If you want compatability with Jet's Alignment system and/or Thomas Edison VX,
place this script below both of them and toggle the configuration for them below
=end
#===============================================================================
# BEGIN CONFIGURATION
#===============================================================================
module Jet_DayNight # Don't Touch.
#===============================================================================
# Detail Configuration
#===============================================================================
# Use computer time or script time? false is script, true is computer.
REAL_TIME = false
# This switch will turn the script into a real time script while on.
REAL_TIME_SWITCH = 61
# Hour script time will start at.
STARTING_HOUR = 1
# Minute script time will start at.
STARTING_MINUTE = 0
# Day script time will start at.
STARTING_DAY = 0
# Year script time will start at.
STARTING_YEAR = 2010
# This is how many frames it takes for a Script time minute to pass.
# 60 frames = 1 Real life second. So 120 would be 2 real life seconds, etc.
MINUTE_LENGTH = 120
# Military time or AM/PM time? false is AM/PM, true is military.
MILITARY_TIME = false
# Should time only update on the map, and no where else?
UPDATE_ONLY_ON_MAP = true
# Automaticly change seasons? (This is auto-weather as well)
AUTO_SEASONS = true
# Automaticly tint according to time of day/weather?
AUTO_TINT = true
# Allows resting? Resting is the ability to call a scene that will allow
# the player to "rest" for a certain amount of hours. Script time only.
ALLOW_REST = true
# The button to call the resting menu.
REST_BUTTON = Input::F5
# Include a window showing time of day, month, and day name in the menu?
MENU_TIME_WINDOW = true
# Include a window showing time of day and day name on the map?
MAP_TIME_WINDOW = true
# These are the X and Y coordinates of the map time window if you choose to
# display the window on the map.
MAP_TIME_WINDOW_COORDS = [384, 360]
# This will add compatability with Thomas Edison VX the same as if you were
# using KGC's day/night.
# Meaning, lights will be on during night and off during day.
THOMAS_EDISON_COMPATABILITY = true
# This will add Jet's Alignment System compatability. Meaning, if you
# have negative alignment, dusk and night will give bonus stats, and
# vice versa for dawn and day if you're good.
ALIGNMENT_SYSTEM_COMPATABILITY = false
# This is the positive alignment bonus in dawn/day. These are in decimals.
# By default, all bonuses are 1.2, meaning 20% bonus.
# ATK DEF SPI AGI
GOOD_BONUSES = [1.2, 1.2, 1.2, 1.2]
# This is the negative alignment bonus in dusk/night. These are in decimals.
# By default, all bonuses are 1.2, meaning 20% bonus.
# ATK DEF SPI AGI
BAD_BONUSES = [1.2, 1.2, 1.2, 1.2]
#===============================================================================
# Calendar Configuration (Script time only)
#===============================================================================
# These are the months in a 3-4 letter form that will be used.
MONTHS = {
0 => ["Jan", 31], # month number => ["Month name", days in month],
1 => ["Feb", 28], # month number => ["Month name", days in month],
2 => ["Mar", 31], # month number => ["Month name", days in month],
3 => ["Apr", 30],
4 => ["May", 31],
5 => ["June", 30],
6 => ["July", 31],
7 => ["Aug", 31],
8 => ["Sept", 30],
9 => ["Oct", 31],
10 => ["Nov", 30],
11 => ["Dec", 31] }
# These are the days in the month in a 3-4 letter form for window space.
DAYS = {
0 => "Sun", # day number => day name
1 => "Mon", # day number => day name
2 => "Tues", # day number => day name
3 => "Wed",
4 => "Thu",
5 => "Fri",
6 => "Sat" }
#===============================================================================
# Switches Configuration (Script time and Real time)
#===============================================================================
# The switch that will turn on when it is Autumn.
AUTUMN_SWITCH = 50
# The switch that will turn on when it is Winter.
WINTER_SWITCH = 51
# The switch that will turn on when it is Summer.
SUMMER_SWITCH = 52
# The switch that will turn on when it is Spring.
SPRING_SWITCH = 53
# The switch that will turn on when it is Raining.
RAIN_SWITCH = 54
# The switch that will turn on when it is Snowing.
SNOW_SWITCH = 55
# The switch that will turn on when it is Stormy.
STORM_SWITCH = 56
# The switch that will turn on when it is Night.
NIGHT_SWITCH = 57
# The switch that will turn on when it is Dawn.
DAWN_SWITCH = 58
# The switch that will turn on when it is Day.
DAY_SWITCH = 59
# The switch that will turn on when it is Dusk.
DUSK_SWITCH = 60
#===============================================================================
# Variable Configuration (Script time and Real time)
#===============================================================================
# Variable hour will be stored in.
HOUR_VARIABLE = 50
# Variable minute will be stored in.
MINUTE_VARIABLE = 51
# Variable day will be stored in.
DAY_VARIABLE = 52
# Variable month will be stored in.
MONTH_VARIABLE = 53
# Variable year will be stored in.
YEAR_VARIABLE = 54
#===============================================================================
# Weather Configuration (Script time and Real time)
#-------------------------------------------------------------------------------
# Seasonal Numbers:
# 0 = Winter
# 1 = Autumn
# 2 = Summer
# 3 = Spring
#===============================================================================
# Seasons that rain will occur in randomly.
RAIN_SEASONS = [0, 1, 3]
# Seasons that snow will occur in randomly.
SNOW_SEASONS = [0, 1]
# Seasons that storms will occur in randomly.
STORM_SEASONS = [0, 1, 3]
#===============================================================================
# Season Configuration (Script time only)
#===============================================================================
# These months will be in the summer season.
SUMMER_MONTHS = [5, 6, 7]
# These months will be in the summer season.
WINTER_MONTHS = [11, 0, 1]
# These months will be in the summer season.
AUTUMN_MONTHS = [8, 9, 10]
# These months will be in the summer season.
SPRING_MONTHS = [2, 3, 4]
#===============================================================================
# Tint Configuration (Hours config for Script time only, tint for both.)
#===============================================================================
# These hours will be considered dusk.
DUSK_HOURS = [18, 19, 20, 21]
# These hours will be considered night.
NIGHT_HOURS = [22, 23, 24, 1, 2, 3]
# These hours are considered dawn.
DAWN_HOURS = [4, 5, 6, 7]
# These hours are considered day.
DAY_HOURS = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
# This is the tint that will be applied for dusk.
DUSK_TINT = Tone.new(17, -51, -102, 0)
# This is the tint that will be applied for night.
NIGHT_TINT = Tone.new(-187, -119, -17, 68)
# This is the tint that will be applied for dawn.
DAWN_TINT = Tone.new(17, -51, -102, 0)
# This is the tint that will be applied for day.
DAY_TINT = Tone.new(0, 0, 0, 0)
# This is the amount of time it takes for tone to change from one to another.
FADE_LENGTH = 240
end
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
class RPG::MapInfo
def name
return @name.gsub(/\[.*\]/) {""}
end
def indoors?
return @name.scan(/\[JDN\]/).size > 0
end
end
class Game_Time
include Jet_DayNight
attr_accessor :day
attr_accessor :day_name
attr_accessor :days_passed
attr_accessor :month
attr_accessor :month_name
attr_accessor :month_day
attr_accessor :hour
attr_accessor :minute
attr_accessor :second
attr_accessor :minute_length
attr_accessor :year
attr_accessor :frozen_time
attr_accessor :map_infos
def initialize
if REAL_TIME
@day = Time.now.strftime("%j").to_i
@day_name = Time.now.strftime('%a')
@month = Time.now.strftime("%m").to_i
@month_name = Time.now.strftime("%b")
@month_day = Time.now.strftime("%d")
@hour = Time.now.hour
@minute = Time.now.min
@year = Time.now.strftime("%Y").to_i
else
@day = STARTING_DAY % DAYS.keys.size
@day_name = DAYS[@day]
@days_passed = STARTING_DAY
@hour = STARTING_HOUR
@month = 0
@minute = STARTING_MINUTE
@second = 0
@year = STARTING_YEAR
end
@frozen_time = false
@map_infos = load_data("Data/MapInfos.rvdata")
@minute_length = 0
end
def screen
if $game_temp.in_battle
return $game_troop.screen
else
return $game_map.screen
end
end
def update_time
@day_name = DAYS[@day]
@map_infos = load_data("Data/MapInfos.rvdata")
time_of_day = get_time_of_day
unless @map_infos[$game_map.map_id].indoors?
case time_of_day
when "Dusk"
if !$instant_tint
screen.start_tone_change(DUSK_TINT, FADE_LENGTH) unless screen.tone == DUSK_TINT || !AUTO_TINT
else
screen.start_tone_change(DUSK_TINT, 0)
end
when "Night"
if !$instant_tint
screen.start_tone_change(NIGHT_TINT, FADE_LENGTH) unless screen.tone == NIGHT_TINT || !AUTO_TINT
else
screen.start_tone_change(NIGHT_TINT, 0)
end
when "Dawn"
if !$instant_tint
screen.start_tone_change(DAWN_TINT, FADE_LENGTH) unless screen.tone == DAWN_TINT || !AUTO_TINT
else
screen.start_tone_change(DAWN_TINT, 0)
end
when "Day"
if !$instant_tint
screen.start_tone_change(DAY_TINT, FADE_LENGTH) unless screen.tone == DAY_TINT || !AUTO_TINT
else
screen.start_tone_change(DAY_TINT, 0)
end
end
get_weather
end
if REAL_TIME || $game_switches[REAL_TIME_SWITCH]
@day = Time.now.strftime("%j").to_i
@day_name = Time.now.strftime('%a')
@month = Time.now.strftime("%m").to_i
@month_name = Time.now.strftime("%b")
@month_day = Time.now.strftime("%d")
@hour = Time.now.hour
@minute = Time.now.min
@second = Time.now.sec
@year = Time.now.strftime("%Y").to_i
else
@second += 1
@minute_length += 1 unless @frozen_time
if @minute_length == MINUTE_LENGTH
@minute += 1
@minute_length = 0
end
if @minute == 60
@hour += 1
@minute = 0
end
if @hour == 25
@day += 1
@hour = 1
end
if @day == DAYS.keys.size
@day = 0
@days_passed += DAYS.keys.size
end
if @days_passed > MONTHS[@month][1]
@month += 1
end
if @month == MONTHS.keys.size
@year += 1
@month = 0
@days_passed = 0
end
end
$game_variables[MINUTE_VARIABLE] = @minute
$game_variables[HOUR_VARIABLE] = @hour
$game_variables[YEAR_VARIABLE] = @year
$game_variables[DAY_VARIABLE] = @day
$game_variables[MONTH_VARIABLE] = @month
get_season
if @seconds == 1000
@seconds = 0
end
end
def get_month_data(type)
case type
when 0
return @month
when 1
return @month_name
when 2
return @month_day
end
end
def get_day_data(type)
case type
when 0
return @day
when 1
return @day_name
end
end
def get_time_data(type)
case type
when 0
return @second
when 1
return @minute
when 2
return @hour
when 3
return @year
end
end
def get_season
if REAL_TIME
if @month == 12 || 1 || 2
$game_switches[AUTUMN_SWITCH] = false
$game_switches[SPRING_SWITCH] = false
$game_switches[SUMMER_SWITCH] = false
$game_switches[WINTER_SWITCH] = true
return "Winter"
elsif @month == 3 || 4 || 5
$game_switches[AUTUMN_SWITCH] = false
$game_switches[SUMMER_SWITCH] = false
$game_switches[WINTER_SWITCH] = false
$game_switches[SPRING_SWITCH] = true
return "Spring"
elsif @month == 6 || 7 || 8
$game_switches[AUTUMN_SWITCH] = false
$game_switches[SPRING_SWITCH] = false
$game_switches[WINTER_SWITCH] = false
$game_switches[SUMMER_SWITCH] = true
return "Summer"
elsif @month == 9 || 10 || 11
$game_switches[SPRING_SWITCH] = false
$game_switches[SUMMER_SWITCH] = false
$game_switches[WINTER_SWITCH] = false
$game_switches[AUTUMN_SWITCH] = true
return "Autumn"
end
else
if SUMMER_MONTHS.include?(@month)
$game_switches[SUMMER_SWITCH] = true
$game_switches[AUTUMN_SWITCH] = false
$game_switches[SPRING_SWITCH] = false
$game_switches[WINTER_SWITCH] = false
return "Summer"
elsif WINTER_MONTHS.include?(@month)
$game_switches[AUTUMN_SWITCH] = false
$game_switches[SPRING_SWITCH] = false
$game_switches[SUMMER_SWITCH] = false
$game_switches[WINTER_SWITCH] = true
return "Winter"
elsif AUTUMN_MONTHS.include?(@month)
$game_switches[SPRING_SWITCH] = false
$game_switches[SUMMER_SWITCH] = false
$game_switches[WINTER_SWITCH] = false
$game_switches[AUTUMN_SWITCH] = true
return "Autumn"
elsif SPRING_MONTHS.include?(@month)
$game_switches[AUTUMN_SWITCH] = false
$game_switches[SUMMER_SWITCH] = false
$game_switches[WINTER_SWITCH] = false
$game_switches[SPRING_SWITCH] = true
return "Spring"
end
end
end
def get_weather
random_weather = get_season
new_weather = []
case random_weather
when "Winter"
new_weather.push("Clear")
if RAIN_SEASONS.include?(0)
new_weather.push("Rain")
end
if SNOW_SEASONS.include?(0)
new_weather.push("Snow")
end
if STORM_SEASONS.include?(0)
new_weather.push("Storm")
end
stuff = rand(new_weather.size - 1)
@more_stuff = new_weather[stuff]
when "Autumn"
new_weather.push("Clear")
if RAIN_SEASONS.include?(1)
new_weather.push("Rain")
end
if SNOW_SEASONS.include?(1)
new_weather.push("Snow")
end
if STORM_SEASONS.include?(1)
new_weather.push("Storm")
end
stuff = rand(new_weather.size - 1)
@more_stuff = new_weather[stuff]
when "Summer"
new_weather.push("Clear")
if RAIN_SEASONS.include?(2)
new_weather.push("Rain")
end
if SNOW_SEASONS.include?(2)
new_weather.push("Snow")
end
if STORM_SEASONS.include?(2)
new_weather.push("Storm")
end
stuff = rand(new_weather.size - 1)
@more_stuff = new_weather[stuff]
when "Spring"
new_weather.push("Clear")
if RAIN_SEASONS.include?(3)
new_weather.push("Rain")
end
if SNOW_SEASONS.include?(3)
new_weather.push("Snow")
end
if STORM_SEASONS.include?(3)
new_weather.push("Storm")
end
stuff = rand(new_weather.size - 1)
@more_stuff = new_weather[stuff]
end
case @more_stuff
when "Clear"
screen.weather(0, 0, 0)
$game_switches[RAIN_SWITCH] = false
$game_switches[STORM_SWITCH] = false
$game_switches[SNOW_SWITCH] = false
when "Rain"
screen.weather(1, 4 || 5, 999)
$game_switches[RAIN_SWITCH] = true
$game_switches[STORM_SWITCH] = false
$game_switches[SNOW_SWITCH] = false
when "Storm"
screen.weather(2, 4 || 5, 999)
$game_switches[RAIN_SWITCH] = false
$game_switches[STORM_SWITCH] = true
$game_switches[SNOW_SWITCH] = false
when "Snow"
screen.weather(3, 4 || 5, 999)
$game_switches[RAIN_SWITCH] = false
$game_switches[STORM_SWITCH] = false
$game_switches[SNOW_SWITCH] = true
end
end
def get_time_of_day
if REAL_TIME
if (18..21) === @hour
$game_switches[DUSK_SWITCH] = true
$game_switches[DAWN_SWITCH] = false
$game_switches[DAY_SWITCH] = false
$game_switches[NIGHT_SWITCH] = false
$light_switch = true
return "Dusk"
elsif (22..24) === @hour || (1..3) === @hour
$game_switches[DUSK_SWITCH] = false
$game_switches[DAWN_SWITCH] = false
$game_switches[DAY_SWITCH] = false
$game_switches[NIGHT_SWITCH] = true
$light_switch = true
return "Night"
elsif (4..7) === @hour
$game_switches[DUSK_SWITCH] = false
$game_switches[DAWN_SWITCH] = true
$game_switches[DAY_SWITCH] = false
$game_switches[NIGHT_SWITCH] = false
$light_switch = false
return "Dawn"
elsif (8..17) === @hour
$game_switches[DUSK_SWITCH] = false
$game_switches[DAWN_SWITCH] = false
$game_switches[DAY_SWITCH] = true
$game_switches[NIGHT_SWITCH] = false
$light_switch = false
return "Day"
end
else
if DUSK_HOURS.include?(@hour)
$game_switches[DUSK_SWITCH] = true
$game_switches[DAWN_SWITCH] = false
$game_switches[DAY_SWITCH] = false
$game_switches[NIGHT_SWITCH] = false
$light_switch = true
return "Dusk"
elsif DAWN_HOURS.include?(@hour)
$game_switches[DUSK_SWITCH] = false
$game_switches[DAWN_SWITCH] = true
$game_switches[DAY_SWITCH] = false
$game_switches[NIGHT_SWITCH] = false
$light_switch = false
return "Dawn"
elsif NIGHT_HOURS.include?(@hour)
$game_switches[DUSK_SWITCH] = false
$game_switches[DAWN_SWITCH] = false
$game_switches[DAY_SWITCH] = false
$game_switches[NIGHT_SWITCH] = true
$light_switch = true
return "Night"
elsif DAY_HOURS.include?(@hour)
$game_switches[DUSK_SWITCH] = false
$game_switches[DAWN_SWITCH] = false
$game_switches[DAY_SWITCH] = true
$game_switches[NIGHT_SWITCH] = false
$light_switch = false
return "Day"
end
end
end
end
$game_time = Game_Time.new
class Window_DayNight < Window_Base
include Jet_DayNight
def initialize
super(0, 360, 160, 56)
refresh
end
def refresh
self.contents.clear
$game_time.update_time unless UPDATE_ONLY_ON_MAP
if MILITARY_TIME
if $game_time.minute < 10
self.contents.draw_text(0, 0, 140, WLH, $game_time.day_name + " " + $game_time.hour.to_s + ":" + 0.to_s + $game_time.minute.to_s)
else
self.contents.draw_text(0, 0, 140, WLH, $game_time.day_name + " " + $game_time.hour.to_s + ":" + $game_time.minute.to_s)
end
else
if $game_time.minute < 10
if $game_time.hour > 12
self.contents.draw_text(0, 0, 140, WLH, $game_time.day_name + " " + ($game_time.hour - 12).to_s + ":" + 0.to_s + $game_time.minute.to_s + " " + "PM")
else
self.contents.draw_text(0, 0, 140, WLH, $game_time.day_name + " " + $game_time.hour.to_s + ":" + 0.to_s + $game_time.minute.to_s + " " + "AM")
end
else
if $game_time.hour > 12
self.contents.draw_text(0, 0, 140, WLH, $game_time.day_name + " " + ($game_time.hour - 12).to_s + ":" + $game_time.minute.to_s + " " + "PM")
else
self.contents.draw_text(0, 0, 140, WLH, $game_time.day_name + " " + $game_time.hour.to_s + ":" + $game_time.minute.to_s + " " + "AM")
end
end
end
end
def update
refresh
end
end
class Scene_Base
include Jet_DayNight
alias jet8922_update update unless $@
def update
jet8922_update
if UPDATE_ONLY_ON_MAP
$game_time.update_time if $scene.is_a?(Scene_Map)
else
$game_time.update_time unless $scene.is_a?(Scene_Title)
end
end
end
class Scene_Menu
alias jet3922_start start unless $@
def start
jet3922_start
@time_window = Window_DayNight.new if MENU_TIME_WINDOW
@time_window.y = 304 if MENU_TIME_WINDOW
end
alias jet3022_terminate terminate unless $@
def terminate
@time_window.dispose if MENU_TIME_WINDOW
jet3022_terminate
end
alias jet3026_update update unless $@
def update
jet3026_update
@time_window.update if MENU_TIME_WINDOW
end
end
class Game_Interpreter
def jump_to_hour(hour)
if hour < 24
if hour > 0
$game_time.hour = hour
else
p "Hour must be above 0 and below 25, please edit the command."
end
else
p "Hour must be above 0 and below 25, please edit the command."
end
end
def add_time(time, amount)
case time
when "minute"
loop do
$game_time.minute += 1
amount -= 1
if amount == 0
break
end
end
when "hour"
loop do
$game_time.hour += 1
amount -= 1
if amount == 0
break
end
end
when "day"
loop do
$game_time.day += 1
amount -= 1
if amount == 0
break
end
end
when "month"
loop do
$game_time.month += 1
amount -= 1
if amount == 0
break
end
end
when "year"
loop do
$game_time.year += 1
amount -= 1
if amount == 0
break
end
end
end
end
def freeze_time(option)
if option == true
$game_time.frozen_time = true
elsif option == false
$game_time.frozen_time = false
elsif
p "The option you chose was neither true or false. Please error check and try again"
end
end
end
class Window_NumberInput
def index=(new_index)
@index = new_index
end
end
class Scene_Rest < Scene_Base
def start
super
create_menu_background
if $game_time.frozen_time
@notification_window = Window_Help.new
@notification_window.y = 188
@notification_window.set_text("Time is frozen, so you may not rest. Press enter to continue.", 1)
else
@number_window = Window_NumberInput.new
@number_window.digits_max = 3
@number_window.x = 210
@number_window.y = 190
@number_window.index = 2
@number_window.active = true
@description_window = Window_Help.new
@description_window.set_text("How many hours would you like to rest?", 1)
@decoration_window = Window_Base.new(210, 190, 120, 56)
end
end
def terminate
super
if $game_time.frozen_time
@notification_window.dispose
dispose_menu_background
else
@number_window.dispose
@description_window.dispose
@decoration_window.dispose
dispose_menu_background
end
end
def update
if $game_time.frozen_time
if Input.trigger?(Input::C)
$scene = Scene_Map.new
end
else
@number_window.update
if Input.trigger?(Input::C)
loop do
$game_time.hour += 1
$game_time.update_time
@number_window.number -= 1
@number_window.update
Graphics.wait(10)
if @number_window.number == 0
break
end
$scene = Scene_Map.new
end
end
if Input.trigger?(Input::B)
$scene = Scene_Map.new
end
end
end
end
class Scene_Map
include Jet_DayNight
alias jet3829_start start unless $@
def start
unless $game_time.map_infos[$game_map.map_id].indoors?
$instant_tint = true
$game_time.get_weather unless $first_weather
$first_weather = true
end
@time_window = Window_DayNight.new if MAP_TIME_WINDOW
@time_window.x = MAP_TIME_WINDOW_COORDS[0] if MAP_TIME_WINDOW
@time_window.y = MAP_TIME_WINDOW_COORDS[1] if MAP_TIME_WINDOW
jet3829_start
end
alias jet3023_update update unless $@
def update
if @message_window.openness > 0 && MAP_TIME_WINDOW
@time_window.visible = false
elsif MAP_TIME_WINDOW
@time_window.visible = true
end
@time_window.update if MAP_TIME_WINDOW
update_rest if ALLOW_REST
jet3023_update
end
alias jet6454_terminate terminate unless $@
def terminate
@time_window.dispose if MAP_TIME_WINDOW
jet6454_terminate
end
def update_rest
if Input.trigger?(REST_BUTTON)
snapshot_for_background
$scene = Scene_Rest.new
end
end
end
class Scene_File
alias jet3890_write_save_data write_save_data unless $@
def write_save_data(file)
jet3890_write_save_data(file)
Marshal.dump($game_time, file)
end
alias jet5935_read_save_data read_save_data unless $@
def read_save_data(file)
jet5935_read_save_data(file)
$game_time = Marshal.load(file)
end
end
class Spriteset_Map
include Jet_DayNight
if THOMAS_EDISON_COMPATABILITY
alias jet3422_update_light_effects update_light_effects unless $@
def update_light_effects
if $light_switch || $game_time.map_infos[$game_map.map_id].indoors?
jet3422_update_light_effects
else
for effect in @light_effects
effect.light.visible = false
end
end
end
end
end
class Game_Battler
include Jet_DayNight
if ALIGNMENT_SYSTEM_COMPATABILITY
def atk
n = [[base_atk + @atk_plus, 1].max, 999].min
for state in states do n *= state.atk_rate / 100.0 end
n = [[Integer(n), 1].max, 999].min
if $game_system.alignment < 0 && $light_switch
n *= BAD_BONUS[0]
elsif $game_system.alignment > 0 && !$light_switch
n *= GOOD_BONUS[0]
end
return n
end
def def
n = [[base_def + @def_plus, 1].max, 999].min
for state in states do n *= state.def_rate / 100.0 end
n = [[Integer(n), 1].max, 999].min
if $game_system.alignment < 0 && $light_switch
n *= BAD_BONUS[1]
elsif $game_system.alignment > 0 && !$light_switch
n *= GOOD_BONUS[1]
end
return n
end
def spi
n = [[base_spi + @spi_plus, 1].max, 999].min
for state in states do n *= state.spi_rate / 100.0 end
n = [[Integer(n), 1].max, 999].min
if $game_system.alignment < 0 && $light_switch
n *= BAD_BONUS[2]
elsif $game_system.alignment > 0 && !$light_switch
n *= GOOD_BONUS[2]
end
return n
end
def agi
n = [[base_agi + @agi_plus, 1].max, 999].min
for state in states do n *= state.agi_rate / 100.0 end
n = [[Integer(n), 1].max, 999].min
if $game_system.alignment < 0 && $light_switch
n *= BAD_BONUS[3]
elsif $game_system.alignment > 0 && !$light_switch
n *= GOOD_BONUS[3]
end
return n
end
end
end
class Game_Map
alias jet5044_setup setup unless $@
def setup(*args)
jet5044_setup(*args)
@map_infos = load_data("Data/MapInfos.rvdata")
if @map_infos[@map_id].indoors?
@screen.start_tone_change(Tone.new(0, 0, 0), 0)
@screen.weather(0, 0, 0)
end
end
end
unless $engine_scripts.nil?
JetEngine.active("DayNight System", "v1.2.1")
end [/spoiler]
FAQ
[spoiler]Q: Where do I put this script?
A: Put this script in the script edition under Materials and above Main
Q: How do i edit ______?
A: Look at the script configurations first! If you are SURE the option is not there, post in this topic.
Q: Can i freeze time?
A: Yes, you can. Look in the script intructions, or download the demo.
Q: What is military time?
A: Military time is when they use a 24-hour clock. Instead of 5 PM, it'd be 17.
Q:What is the difference between real time and script time?
A: Script time is entirely created and help BY the script. Real time draws the time set on your computer.[/spoiler]
Credit
Jet10985/Jet
Mr. Anonymous
bulletxt if used with Thomas Edison VX
Kylock
Looks pretty neat. Great job jet!
You have come a long way Jet. Have you ever got that durability script to work?
@MA: Tahnks, that means a lot coming from you =)
@redyugi: Nope.
Why not? If you can do this, you could do a durability script. We have faith in you. Good luck :)
Thanks redyugi, i appreciate the feedback and support. I really just haven't remembered that i wanted it in the first place O_O
It'll get done eventually...
;D ;D ;D GOOD SCRIPT... ;D ;D ;D
I think this script is very helpful :)
Hey Jet,
I'm new to these forums (stumbled upon them by accident from rpgrevolution.net) and saw yer script. I absolutely love it as it's a lot easier to customize and it adds weather at random. I did however find one glitch that I thought I should mention.
When testing my game, I noticed if I press continue (loading a saved game saved after I installed the script) and for some reason need to go back and do new game, the clock stays at where it was in the saved game. However, if I start NEW without selecting continue, then it starts at the specified time. I don't know if this might be a problem, but I thought I would mention it just in case.
If you come up with a fix let me know as I will be checking these forums a lot more. They're more helpful than the rpgrevolution ones.
Sincerely,
Joshua A.
---- Edit----
Also, is there a way to have a menu option to select whether the person wants the clock displayed on the map or some kind of something?
He hasnt' updated on here in a while. rpgmakervx.net is where he is frequently. Check there
I guess this is the best place to ask.
I'm sure this is REALLY simple, but how do I make events based on certain times? I can't find any information on how to do it in the script files...
The variables and switches you set up in the script. If you didn't set up variables and switches, it means you need to go through the beginning until it says
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
Quote from: redyugi on September 11, 2010, 10:35:02 PM
The variables and switches you set up in the script. If you didn't set up variables and switches, it means you need to go through the beginning until it says
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
Thank you very much!
What does this mean? It's not a compatibility issue because I tried on a new project with no other scripts and got exactly the same error.
Try changing the line that says:
THOMAS_EDISON_COMPATABILITY = true
to:
THOMAS_EDISON_COMPATABILITY = false
See what that does for you.
That worked, thanks
Edit: How would I pause time and make custom interior lighting?
What ever happened to time scripts that used the COMMENT text option to show up instead of requiring variables and such lol.
I really miss them... I do not think I have seen any of them for vx just the one or two on xp but its been so long since I even looked at xp and I lost so many scripts/downloaded/exclusive stuff that no longer seems to exist anymore lol.
Hey, Jet, I get this error (I know that guy posted it before but I MUST USE Thomas Edison): line 966 undefined method 'update_light_effects' for class 'Spriteset_Map'. Please help me... I will be forever grateful!
:'(
Try putting Edison before Jet's Time System. That's what worked for me, I had the same problem.
Can you put up a new demo link please?