RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Jet's Time System

0 Members and 1 Guest are viewing this topic.

**
Rep:
Level 82
Jet's Time System
By Jet (Obviously)


Introduction

Spoiler for:
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. =)

Features

Spoiler for:
This is the Jet Engine, an add-on for all my scripts to check if they are up-to date.

Code: [Select]
#===============================================================================
# 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 for:
Code: [Select]
#===============================================================================
# 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
#===============================================================================

Script/Demo

 Download Demo Here (Might be outdated)

Script:
Spoiler for:
Code: [Select]
#===============================================================================
# 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  

FAQ

Spoiler for:
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.

Credit

Jet10985/Jet
Mr. Anonymous
bulletxt if used with Thomas Edison VX
Kylock
« Last Edit: April 14, 2010, 04:10:23 AM by jet10985 »



*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Most Mature Member2010 Favourite Staff Member
Looks pretty neat. Great job jet!

****
Rep:
Level 83
You have come a long way Jet. Have you ever got that durability script to work?

**
Rep:
Level 82
@MA: Tahnks, that means a lot coming from you =)

@redyugi: Nope.



****
Rep:
Level 83
Why not? If you can do this, you could do a durability script. We have faith in you. Good luck :)

**
Rep:
Level 82
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...



**
Rep:
Level 81
?????????????
;D ;D ;D GOOD SCRIPT... ;D ;D ;D
遠い銀河からのスーパー戦士。
本は、セバスチャンです。
これは強力で、手に負えない。
彼の物理レベルのスキルは驚嘆です。[/b]

*
Rep: +0/-0Level 81
I think this script is very helpful  :)

**
Rep: +0/-0Level 80
RMRK Junior
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?
« Last Edit: May 29, 2010, 02:43:28 PM by Skyselarke »
If you add me to Yahoo, make sure you mention who you are or expect hell!
-------

****
Rep:
Level 83
He hasnt' updated on here in a while. rpgmakervx.net is where he is frequently. Check there

**
Rep:
Level 75
what am i supposed to put here oh no im almost out
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...

****
Rep:
Level 83
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.
#===============================================================================

**
Rep:
Level 75
what am i supposed to put here oh no im almost out
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!

***
Rep:
Level 77
RMRK Junior
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.
« Last Edit: September 20, 2010, 02:48:38 AM by Wiimeiser »

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Most Mature Member2010 Favourite Staff Member
Try changing the line that says:
Code: [Select]
THOMAS_EDISON_COMPATABILITY = true

to:

Code: [Select]
THOMAS_EDISON_COMPATABILITY = false

See what that does for you.

***
Rep:
Level 77
RMRK Junior
That worked, thanks


Edit: How would I pause time and make custom interior lighting?
« Last Edit: September 20, 2010, 05:03:22 AM by Wiimeiser »

**
Rep:
Level 84
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.

*
Rep: +0/-0Level 74
RMRK Junior
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!
 :'(

**
Rep: +0/-0Level 72
RMRK Junior
Try putting Edison before Jet's Time System. That's what worked for me, I had the same problem.

**
Rep: +0/-0Level 72
Phoenix King
Can you put up a new demo link please?

I am but a humble student of life. Come, let me show you what I've learned!