I Need Some Help With V.M of D.T's Time System

Neo_Kum0rius_6000

Not Your Ordinary Guy!
Member
Joined
Nov 8, 2017
Messages
190
Reaction score
347
First Language
english
Primarily Uses
RMVXA
So I've had a time system in my game for quite sometime now.
I added time based events at the begging of the game

Example: At Night Time The Foe's Get Stronger.
And During The Night You Can Go Into Inns and skip to day I've also had
a system were all shops are closed at night and opened during the day...

I've had these systems but there poorly implemented due to my lack of understanding of the script
I'am using. This Script Here
Code:
#Basic Game Time + Night/Day v1.6.2b
#----------#
#Features: Provides a series of functions to set and recall current game time
#          as well customizable tints based on current game time to give the
#          appearance of night and day.
#
#Usage:   Script calls:
#           GameTime::minute?   - returns the current minute
#           GameTime::hour?     - returns the current hour
#           GameTime::set(time) - sets the game time to time, in frames (max:1440)
#           GameTime::change(time) - increments the game time! (can be negative)
#           GameTime::pause_time(set) - stops time for events and stuff, true or false
#           GameTime::pause_tint(set) - time runs, but tints do not update
#           GameTime::clock(set) - sets whether clock is visible or not
#       
#Customization: Set below, in comments.
#
#Examples: GameTime::set(360)
#
#----------#
#-- Script by: V.M of D.T
#
#- Questions or comments can be:
#    given by email: sumptuaryspade@live.ca
#    provided on facebook: http://www.facebook.com/DaimoniousTailsGames
#   All my other scripts and projects can be found here: http://daimonioustails.weebly.com/
#
#--- Free to use in any project, commercial or non-commercial, with credit given
# - - Though a donation's always a nice way to say thank you~ (I also accept actual thank you's)
 
#---Game Clock---#
#USE_CLOCK to true to display game time clock
#CLOCK_POSITION for position of clock
#  1 = topleft, 2 = topright, 3 = bottomleft, 4 = bottomright
#CLOCK_TOGGLE is any input button available, see the INPUT help file for options
#------#
USE_CLOCK       = true
CLOCK_POSITION  = 4
CLOCK_TOGGLE    = :SHIFT
 
module GameTime
  #---Game Time Details---#
  #Number of frames in a game minute, 60 frames = 1 second
  TIME_COUNT      = 1
  #Sets whether to tint screen based on game time
  USE_TINT        = true
 
  #Switch to denote day or night time
  USE_SWITCH = false
  NIGHT_DAY_SWITCH = 308
  DAY_TIME_START = 310
  NIGHT_TIME_START = 309
 
  #True to pause time while not in map or while during a message
  PAUSE_IN_COMBAT  = true
  PAUSE_NOT_IN_MAP = true
  PAUSE_IN_MESSAGE = true
 
  #Sets time frames of tints by minute count, one day is 1440 minutes
  # 0 = 12am, 360 = 6am, 720 = 12pm, 1080 = 6pm  etc...
  PRESUNRISE_TIME = 240
  SUNRISE_TIME    = 360
  NOONSTART_TIME  = 660
  NOONEND_TIME    = 900
  PRESUNSET_TIME  = 1080
  SUNSET_TIME     = 1260
  MIDNIGHT_TIME   = 60  #Must be greater than 0
 
  #Sets custome tints
  PRESUNRISE_TONE = Tone.new(-75,-75,0,50)
  SUNRISE_TONE    = Tone.new(0,0,0,0)
  NOONSTART_TONE  = Tone.new(45,45,0,-25)
  NOONEND_TONE    = Tone.new(0,0,0,0)
  PRESUNSET_TONE  = Tone.new(-50,-50,0,25)
  SUNSET_TONE     = Tone.new(-75,-100,0,75)
  MIDNIGHT_TONE   = Tone.new(-125,-125,0,125)
 
  #Include the ids of any maps not to be tinted based on time
  # Usually reserved for indoor maps
  NOTINTMAPS = [67,68,3,1,5,7,6,12,10,18,28,30,31,32,33,34,29,100,101,102,104,107,115,99,114,116,117,118,119,122,103,105,113,106,112,23,24,45,46,72,38,123,42,43,44,58,59,60,48,51,55,52,53,66,85,84,74,75,76,77,78,79,80,81,82,83,90,89,88,70,36,63,93,94,95,125,127,128,132,136,137,145,144,143,147,148,149,154,157,159,160,162,163,164,165,166,167,168,175,172,171,176,177,178,179]
 
  #Store current time in a variable?
  USE_VARIABLE = false
  TIME_VARIABLE = 90
 
  #---END---#
 
  def self.init
    $game_time = 0
    $game_time_pause_time = false
    $game_time_pause_tint = false
  end
  def self.update
    old_time = $game_time
    if $game_time_pause_time then return else end
    case SceneManager::scene_is?(Scene_Map)
    when true
      if $game_message.visible == true && PAUSE_IN_MESSAGE then else
      $game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
    when false
 
      if !PAUSE_NOT_IN_MAP and !SceneManager::scene_is?(Scene_Battle)
        $game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
      if SceneManager::scene_is?(Scene_Battle) && PAUSE_IN_COMBAT != true
      $game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
    end
    if $game_time == 1440 then $game_time = 0 end
    $game_variables[TIME_VARIABLE] = $game_time if USE_VARIABLE
    update_night_switch if USE_SWITCH
    GameTime::tint if $game_time_pause_tint != true
    if old_time != $game_time then $game_map.need_refresh = true end
  end
  def self.update_night_switch
    if hour? > DAY_TIME_START and hour? < NIGHT_TIME_START
      $game_switches[NIGHT_DAY_SWITCH] = true unless $game_switches[NIGHT_DAY_SWITCH] == true
    else
      $game_switches[NIGHT_DAY_SWITCH] = false unless $game_switches[NIGHT_DAY_SWITCH] == false
    end
  end
  def self.hour?
    return $game_time / 60
  end
  def self.minute?
    return $game_time % 60
  end
  def self.time?
    meri = "AM"
    hour = GameTime::hour?
    minute = GameTime::minute?
    if hour > 11 then meri = "PM" end
    if hour == 0 then hour = 12; meri = "AM" end
    if hour > 12 then hour -= 12 end
    if hour < 10 then hour = " " + hour.to_s else hour.to_s end
    if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
    return hour.to_s + ":" + minute.to_s + " " + meri
  end
  def self.set(number)
    $game_time = number if number < 1440
    GameTime::tint(0) if $game_time_pause_tint != true
  end
  def self.change(number)
    $game_time += number
    $game_time -= 1440 if $game_time > 1440
    $game_time += 1440 if $game_time < 0
    GameTime::tint(0) if $game_time_pause_tint != true
  end
  def self.tint(tint = 60)
    if USE_TINT != true then return end
    for i in NOTINTMAPS
      if $game_map.map_id == i
        $game_map.screen.start_tone_change(Tone.new(0,0,0,0),0)
        return
      end
    end
    if SceneManager::scene_is?(Scene_Map) then else return end
    case $game_time
    when PRESUNRISE_TIME .. SUNRISE_TIME
      $game_map.screen.start_tone_change(PRESUNRISE_TONE, tint)
    when SUNRISE_TIME .. NOONSTART_TIME
      $game_map.screen.start_tone_change(SUNRISE_TONE, tint)
    when NOONSTART_TIME .. NOONEND_TIME
      $game_map.screen.start_tone_change(NOONSTART_TONE, tint)
    when NOONEND_TIME .. PRESUNSET_TIME
      $game_map.screen.start_tone_change(NOONEND_TONE, tint)
    when PRESUNSET_TIME .. SUNSET_TIME
      $game_map.screen.start_tone_change(PRESUNSET_TONE, tint)
    when SUNSET_TIME .. 1440
      $game_map.screen.start_tone_change(SUNSET_TONE, tint)
    when 0 .. MIDNIGHT_TIME
      $game_map.screen.start_tone_change(SUNSET_TONE, tint)
    when MIDNIGHT_TIME .. PRESUNRISE_TIME
      $game_map.screen.start_tone_change(MIDNIGHT_TONE, tint)
    end
  end
  def self.pause_time(set)
    $game_time_pause_time = set
  end
  def self.pause_tint(set)
    $game_time_pause_tint = set
  end
  def self.clock(set)
    return unless SceneManager.scene.is_a?(Scene_Map)
    SceneManager.scene.clock_visible?(set)
  end
 
  class Window_Clock < Window_Base
    def initialize
      case CLOCK_POSITION
      when 1
        super(0,0,115,56)
      when 2
        super(Graphics.width-115,0,115,56)
      when 3
        super(0,Graphics.height-56,115,56)
      when 4
        super(Graphics.width-115,Graphics.height-56,115,56)
      end
      self.visible = $game_time_clock_visibility unless $game_time_clock_visibility.nil?
    end
    def update
      self.contents.clear
      self.contents.draw_text(0,0,100,24,GameTime::time?)
      $game_time_clock_visibility = self.visible
    end
  end
 
end
 
GameTime::init
 
module DataManager
  class << self
  alias gametime_msc make_save_contents
  alias gametime_esc extract_save_contents
  end
  def self.make_save_contents
    contents = gametime_msc
    contents[:gametime] = $game_time
    contents
  end
  def self.extract_save_contents(contents)
    gametime_esc(contents)
    $game_time = contents[:gametime]
  end
end
 
 
class Scene_Map < Scene_Base
  alias gametime_post_transfer post_transfer
  alias gametime_create_all_windows create_all_windows
  alias gametime_update_map update
  def post_transfer
    GameTime::tint(0) if $game_time_pause_tint != true
    gametime_post_transfer
  end
  def create_all_windows
    gametime_create_all_windows
    @gametimeclock = GameTime::Window_Clock.new if USE_CLOCK
  end
  def update
    gametime_update_map
    @gametimeclock.update if @gametimeclock.nil? == false
    if Input.trigger?(CLOCK_TOGGLE) and @gametimeclock.nil? == false
      @gametimeclock.visible ? @gametimeclock.visible = false : @gametimeclock.visible = true
    end
  end
  def clock_visible?(set)
    @gametimeclock.visible = set
  end
end
 
class Scene_Base
  alias gametime_update update
  def update
    gametime_update
    GameTime::update
  end
end
I've toyed around with it for three hours strait and have sadly gotten no were... I was able to get to get an event only happen during the day due to guessing the numbers... The author says to use a 24 hour clock but that strangely doesn't work...
*Well it does work but only for certain times you can't re loop the time to start at night then re loop to the morning...*
24 Hour Clock.png
I'am using this table: I'am trying to get an event to only happen at night that means that in the morning it ends.
I'am currently using a conditional branch... If someone could create two conditional branches and take a screenshot for me: One that covers night and one that covers day...

I know this seem's really petty of me but I'am pulling my hair out trying to work with this script...
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Hey guys how come my new plugin that I programmed so perfectly doesn't work? Oh wait.... I forgot to add it to my game's plugins. :kaoswt:
While I take a break from developing RPGs, I'm thinking of doing something I've never done before: actually playing an RPG released by someone else. Any suggestions?
Good lord this is taking forever, I'm not even out of the opening really and I've still got hours worth of work to do before I get to the main gameplay loop. Orphan of Time will probably be done some time next year, If I'm lucky.
Finally the new pc is working!! But it seems a lost my license to Windows 10 because of the hardware changing :(
Tune in next time for our newest Episode: "PC issues return! Palm uses every swear in the lexicon!"

Forum statistics

Threads
93,567
Messages
913,509
Members
123,096
Latest member
RosyNoodle
Top