Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

ATS: Setting Specific Time

I am using the Advanced Time System by Near Fantastica/Dubealex.
Here is the script with my customizations:
Code:
#===================================================

# ■ ATS - Advanced Time System

#===================================================

# Rewiten by Near Fantastica

# Date: 23.07.05

# Version: 1

#

# Written by Dubealex

# Date: 26.11.04

#

# Thanks to Satana_81 for the test tilesets

#===================================================

 

#===================================================

# ▼ CLASS Advanced_Time Begins

#===================================================

class Advanced_Time

  

    attr_reader :define_start_sec

    attr_reader :weather_type

    attr_reader :weather_strength

 

   def initialize

     @weather_pattern = []

     @cycle_period=[]

     @tint_period=[]

     @cycle_season=[]

     @name_period=[]

     @name_season=[]

     @name_month=[]

     @name_day=[]

     @start_clock=[]

     @start_date=[]

 

=begin -----------------------------------------------------------------------------------------------------

      ■ Advanced Time System Settings:

      ---------------------------------------------------------------------------------------------------------

      ▼ Day Night System Transitioning :

      

      The DNS is built in to the time system and therefore any map you want to have the DNS

      active on place a "*" in the name of the map.

      ---------------------------------------------------------------------------------------------------------

      ▼ Method of Season Transitioning :

       

      ●  Titleset Transitioning = The tileset its replaced

          When Titleset Transitioning is set the script will pull the tileset and autotiles used 

          set to the season ID. For exmaple "Plains 1" for tileset or "Water 1" for autotiles. 

          The script will then automaticly change the 1 to the season ID which will load the 

          new tileset. Maps that the developer wishes to have the tileset changing place 

          a "~" in the name. 

          

      ●  Map Transitioning = The Map is replaced

          When Map Transitioning is set the script changes the whole map. It will transport the

          player to the same x,y on a map with the same name and the matching season ID.

          For example "Town [1]". The script will then automaticaly change the 1 to the 

          season ID which will load the new map. Maps that the developer wishes to have 

          the map changing place "[Season ID]"  in the map name where Season ID is the ID 

          of the season of that map.

=end #----------------------------------------------------------------------------------------------------

 

=begin -----------------------------------------------------------------------------------------------------

      ■ Advanced Weather System Settings:

      ---------------------------------------------------------------------------------------------------------

      ▼ Weather Patterns :

      

      With the Advanced Weather System by Ccoa the Advanced Time System and keep track

      and change weather depending on season. The flag $aws must be set true if the weather

      script is to be used.

      

      1 - rain                    5 - rain with thunder and lightning

      2 - storm                 6 - falling leaves (autumn)

      3 - snow                  7 - blowing leaves (autumn)

      4 - hail                    8 - swirling leaves (autumn)

      

      The script randomly picks bettween having weather and no weather.

      Then the script randomly picks the weather if there is going to be weather.

      If the same weather is added more then once it will add to % chnage that weather 

      will be picked. If the same weather is picked again its power is inceased. The

      range of power is 10 - 40. @weather_cycle is the % of weather for the game.

      0 = very little and 10 = a lot of weather. @weather_period is the amount 

      of time in mintues till the next weather cycle range  = 1-59. @bgs_control is 

      a flag that tells the script to inculde BGS with Dynamic Weather 

=end #----------------------------------------------------------------------------------------------------

 

      @aws = false

      @bgs_control = false

      @active_weather = false

      @weather_type = 0

      @weather_strength = 10

      @weather_cycle = 10

      @weather_period = 40

      @weather_pattern[1] = [3]

      @weather_pattern[2] = [1,1,2,3]

      @weather_pattern[3] = [1,1,2,5]

      @weather_pattern[4] = [1,2,4,5]

      @weather_pattern[5] = [1,1,2,6]

      @weather_pattern[5] = [1,1,3,7,8]

 

=begin -----------------------------------------------------------------------------------------------------

      ■ ATS Settings Configuration:

      ---------------------------------------------------------------------------------------------------------

      ▼ LENGTH AND SPEED OF TIME:

       

      Those variables defines the speed and length of every aspect of the ATS.

      @time_speed define how fast a seconds last. Setting it to 0 makes a real time system.

      Below 0 is a slower time than normal, and higher than 0 will accelerate the time.

      The length value are used to customize the length of every component of the ATS.

      Remember that since it is the SPEED setting that defines how fast the time goes,

      you don't have to say that a minute last 30 sec to make it faster. You can leave it

      as real-time, and just accelerate the length of a second with @time_speed !

=end #----------------------------------------------------------------------------------------------------

      

      @ats_time_speed = 40             # 0 is a Real Time System

      @minutes_length = 60               # Seconds

      @hour_length = 60                    # Minutes

      @day_length = 24                     # Hours

      @week_length = 7                     # Days

      @month_length = 22                # Days

      @year_length = 12                   # Months

      @decade_length = 10                # Years

      @century_length = 100              # Years

      @millenium_length = 1000        # Years

      

=begin ----------------------------------------------------------------------------------------------------

       ▼ GAME DEFAULT START-UP VALUES:

      

       Here you can define the default start-up values for each components. The data

       you enter here will be taken into consideration at each new game started. So if you want

       your game to begin at 2:12 pm, you can adjust all that in here. You can also set some

       basic default options you have, like trigger the AM/PM time format ON/OFF.

       You don't have to set the start-up season and period, since it will be set automatically

       with the date and the clock.

=end #-----------------------------------------------------------------------------------------------------

      

    @clock_mode = 1               # 1= 24 hours format / 2= AM/PM flag format

     @start_clock   = [4,50,10]     # [hour, min, sec] -> Write in 24 hours format.

     @start_date    = [3,12,198] # [month, day, year]  

      

      

=begin -----------------------------------------------------------------------------------------------------

       ▼ ATS PERIODS CYCLE SETTINGS:

      

      An ATS Period works just as my old NDS Period.

      Periods defines a 24 hours loop - Example: Morning>Day>Evening>Night

      Here you can defines what is the cycle (in hours) for each periods.

      You can have as much period as you desire, I created the 4 main one, as shown

      in the example above. To add period, simply copy a line and replace the ID of the

      period by the next in line. DO NOT skip numbers.

      Syntax: @cycle_period[ID] --> Don't use ID0. (You can name them later).

      Example: @cycle_period[1] = (5..11) Will make the period ID#1  begins at 5am

      and ends at 11am. Use the 24 hours clock format to defines the period length.

=end #-----------------------------------------------------------------------------------------------------

      

      @cycle_period[1] = (5..11)  #Defined as (start_hour..end_hour)

      @cycle_period[2] = (12..18)

      @cycle_period[3] = (19..22)

      @cycle_period[4] = (23..24)

      @cycle_period[5] = (0..4)

 

=begin ----------------------------------------------------------------------------------------------------

      ▼ ATS PERIODS COLOR TONE (TINT) SETTINGS:

      

      Here you can define what will be the color tone used for each periods.

      Use the same period ID defined above. Example: @tint_period[1] is the tint used

      with the @cycle_period[1] settings.

      Syntax: @tint_period[1] = [red, green, blue, gray, transition_time]  

      To know the number you want for your tint, simply opens a RPG Maker Project, and

      create an event, choose "Tint Screen" and test the values you want, then enter them

      in here.

=end #-----------------------------------------------------------------------------------------------------

      

      @tint_period[1] = [0, -40, -60, 50, 600]

      @tint_period[2] = [0, 0, 0, 0, 600]

      @tint_period[3] = [-68, -85, -34, 120, 600]

      @tint_period[4] = [-150, -100, -50, 180, 600]  

      @tint_period[5] = [-95, -78, -44, 180, 600]

      

=begin -----------------------------------------------------------------------------------------------------

      ▼ SEASONS CYCLE SETTINGS:

      

      Here you can define how much time last every season. This is an "optional" feature.

      You can just leave it alone if you aren't using it. This work as the periods, but seasons

      are defined using months instead of hours. To know how it works, read the periods comments.

      Example: @cycle_season[1] = (6..8) Will make the season ID#1  begins on the

      6th month of the year, and end on the last day of the 8th month of the year.

=end #-----------------------------------------------------------------------------------------------------

       

      @cycle_season[1] = (1..3) #Defined as (start_month..end_month)

      @cycle_season[2] = (4..6)

      @cycle_season[3] = (7..9)

      @cycle_season[4] = (10..12)

      

      

=begin ----------------------------------------------------------------------------------------------------

      ▼ ATS COMPONENT'S NAMES SETTINGS:

      

      Here you can choose the name tagged to every relevant component of the ATS.

      The words you defined here will be used in window and menus in your game.

      It make it easy to configure and customize that way. You can also refer to those variables

      names if you need to access any component's names. That way, if you make a mistake or 

      want to change something in the middle of your development, you can easily do it.

      If you added/deleted periods/seasons, just adjust this section too. So if you created a season

      ID#6, you can copy a line from here and add the 6 where it belongs. (Between [ ])

      This is also were you define all your Months and Days name. It work the same way.

      @name_month[1] will refer to the first month of your year. By default, it's January.

=end #----------------------------------------------------------------------------------------------------

      

      @name_period[1] = "Morning"

      @name_period[2] = "Day"

      @name_period[3] = "Evening"

      @name_period[4] = "Night"

      @name_period[5] = "Late Night"

      

      @name_season[1] = "Growth"

      @name_season[2] = "Prosperity"

      @name_season[3] = "Hollow"

      @name_season[4] = "Dream"

      

      @name_month[1]  = "Reku"

      @name_month[2]  = "Rela"

      @name_month[3]  = "Ray"

      @name_month[4]  = "Aomi"

      @name_month[5]  = "Aoma"

      @name_month[6]  = "Ava"

      @name_month[7]  = "Dala"

      @name_month[8]  = "Deta"

      @name_month[9]  = "Dawn"

      @name_month[10]= "Slea"

      @name_month[11]= "Sloa"

      @name_month[12]= "Sleep"

      

      @name_day[1] = "Awnday"

      @name_day[2] = "Belday"

      @name_day[3] = "Cyrday"

      @name_day[4] = "Desday"

      @name_day[5] = "Emiday"

      @name_day[6] = "Iliaday"

      @name_day[7] = "Ilioday"      

      

#--- ■ END OF SETTINGS (No Need To Edit Further)-------------------------------------------

           

      @speed_restore = 0

      if @ats_time_speed >= Graphics.frame_rate

         @ats_time_speed=Graphics.frame_rate-1

       end

      @year_length+=1 

      @month_length+=1

      if @start_clock[0] >= 12 : @am=false else @am=true end

      define_start_sec_in_hours= @start_clock[0] * @minutes_length * @hour_length

      define_start_sec_in_min= @start_clock[1] * @minutes_length

      @define_start_sec= define_start_sec_in_hours+define_start_sec_in_min+@start_clock[2] 

   end

 

# ■ WRITE ATTRIBUTE (Modify ATS Data) (No Need To Edit)----------------------------------  

  def sec(sec=0)

    @define_start_sec+=sec

  end

 

#--------------------------------------------------------------------------------------------------------

  def min(min=0)

    @define_start_sec+=min*@minutes_length

  end

 

#--------------------------------------------------------------------------------------------------------

  def hours(hours=0)

    @define_start_sec+=hours*@minutes_length*@hour_length

  end  

  

#--------------------------------------------------------------------------------------------------------  

  def days(days=0)

    if days<0 : @rewind=true end

    @define_start_sec+=days*@minutes_length*@hour_length*@day_length

  end  

  

#--------------------------------------------------------------------------------------------------------  

  def months(months=0)

     if months<0 : @rewind=true end

    @define_start_sec+=months*@minutes_length*@hour_length*@day_length*@month_length

  end 

  

#--------------------------------------------------------------------------------------------------------     

  def speed(speed=0)

    @speed_restore = @ats_time_speed

    @ats_time_speed = speed

  end

 

#--------------------------------------------------------------------------------------------------------     

  def speed_restore

    @ats_time_speed = @speed_restore

  end 

    

# ■ READ ATTRIBUTE (Fetch ATS Data) (No Need To Edit)-------------------------------------  

  def full_date

    day_name=@name_day[week_day_is]

    month_name=@name_month[months_is] 

    month_day=month_day_is

    year= total_years_is

    full_date= day_name + ", " + month_name + " " + month_day.to_s  + " " +  year.to_s

    return full_date

  end

 

#--------------------------------------------------------------------------------------------------------     

  def speed_is

    return @ats_time_speed

  end 

  

#--------------------------------------------------------------------------------------------------------     

   def total_sec_is

     ats_total_sec = (Graphics.frame_count / (Graphics.frame_rate-@ats_time_speed))+@define_start_sec

     return ats_total_sec

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def total_years_is

      total_years=(total_months_is / @year_length) + @start_date[2] 

     return total_years

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def total_months_is

     total_months=(total_days_is / @month_length) + @start_date[0] 

     return total_months

   end 

 

#--------------------------------------------------------------------------------------------------------       

   def total_decades_is

     total_decades=total_years_is / @decade_length

     return total_decades

   end 

 

#--------------------------------------------------------------------------------------------------------       

   def total_centuries_is

     total_centuries=total_years_is / @century_length

     return total_centuries

   end 

 

#--------------------------------------------------------------------------------------------------------       

   def total_millenium_is

      total_millenium=total_years_is/@millenium_length

     return total_millenium

   end 

      

#--------------------------------------------------------------------------------------------------------       

   def total_weeks_is

     total_weeks= total_days_is / @week_length

     return total_weeks

   end 

        

#--------------------------------------------------------------------------------------------------------        

   def total_hours_is

     total_hours= total_sec_is / @minutes_length / @hour_length

     return total_hours

   end 

   

#--------------------------------------------------------------------------------------------------------        

   def total_min_is

     total_min = total_sec_is / @minutes_length

     return total_min

   end   

   

#--------------------------------------------------------------------------------------------------------     

   def date

     month=months_is

     month_day=month_day_is

     year=total_years_is

     date=sprintf("%02d/%02d/%04d", month, month_day, year)

     return date

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def clock

     

     hour=hours_is

     min=min_is

     sec=secs_is

     

     if @clock_mode == 1

        clock=sprintf("%02d:%02d:%02d", hour, min, sec)

        return clock

      else

        if @am==true : am_pm="AM" else am_pm="PM" end

        clock=sprintf("%02d:%02d:%02d %s", hour, min, sec, am_pm)

        return clock

    end

   end

    

#--------------------------------------------------------------------------------------------------------      

   def hours_is

     hour=real_hour=real_hours

      if @clock_mode == 2

        if @am==false and real_hour !=12 : hour-=(@day_length/2) end

        hour %= (@day_length/2)+1

        if real_hour < (@day_length/2) : @am=true else @am=false end

         if hour==0 : hour=1 end

         if real_hour==0 : hour=12 end

         end   

     return hour

   end

   

#--------------------------------------------------------------------------------------------------------      

   def real_hours

     real_hour = total_sec_is / @minutes_length / @hour_length % @day_length

     return real_hour

   end 

   

#--------------------------------------------------------------------------------------------------------     

   def secs_is

     sec = total_sec_is % @minutes_length

     return sec

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def min_is

     mins = total_sec_is / @minutes_length % @hour_length

     return mins

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def total_days_is

     total_days = (total_sec_is / @minutes_length / @hour_length / @day_length) + @start_date[1] 

     return total_days

   end 

    

#--------------------------------------------------------------------------------------------------------     

   def week_day_is

     week_day= total_days_is % @week_length 

     if week_day==0 : week_day=@week_length end

     return week_day

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def week_name

     return @name_day[week_day_is]

   end 

    

#--------------------------------------------------------------------------------------------------------     

   def month_name

     return @name_month[months_is] 

   end 

 

#--------------------------------------------------------------------------------------------------------     

    def months_is

       month=total_months_is % @year_length

       if @rewind==true

        if month==0 : months(-1) end

          @rewind=false  

      else

        if month==0 : months(1) end

      end    

      return month

    end 

 

#--------------------------------------------------------------------------------------------------------     

   def month_day_is

     month_day=total_days_is % @month_length

     if @rewind==true

       if month_day==0 : days(-1) end

         @rewind=false  

     else

       if month_day==0 : days(1) end

     end    

     return month_day

   end 

       

#--------------------------------------------------------------------------------------------------------     

   def period_id

     for i in 1...@cycle_period.size

       if @cycle_period[i] === $ats.real_hours

        return i

        break

       end  

     end  

   end 

   

#--------------------------------------------------------------------------------------------------------     

   def period

     for i in 1...@cycle_period.size

       if @cycle_period[i] === real_hours

        if i==0 : i=1 end

        return @name_period[i]

        break

       end  

     end  

   end 

 

#--------------------------------------------------------------------------------------------------------   

def period_tint

     for i in 1...@cycle_period.size

       if @cycle_period[i] === real_hours

        return [-50, -50, -50, 50, 100] if i == 2 and $game_screen.weather_type != 0

        return @tint_period[i]

        break

       end  

     end  

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def season

     for i in 1...@cycle_season.size

       if @cycle_season[i] === months_is

        return @name_season[i]

        break

       end  

     end  

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def season_id

     for i in 1...@cycle_season.size

       if @cycle_season[i] === months_is

        if i==0 : i=1 end

        return i

        break

       end  

     end  

   end 

 

#--------------------------------------------------------------------------------------------------------     

   def start_seconds

     return @define_start_sec

   end

   

#--------------------------------------------------------------------------------------------------------     

  def weather_active(flag)

    @aws = flag

  end

  

#--------------------------------------------------------------------------------------------------------     

  def weather_bgs(flag)

    @bgs_control = flag

  end

 

#--------------------------------------------------------------------------------------------------------     

  def stop_weather

    $game_screen.weather(0, 0, 0)

    set_weather_bgs(0)

  end

  

#--------------------------------------------------------------------------------------------------------     

  def weather_is

    case $game_screen.weather_type

    when 0

      return "Clear"

    when 1

      return "Rain"

    when 2

      return "Storm"

    when 3

      return "Snow"

    when 4..5

      return "Gale"

    when 6..8

      return "Windy"

    end

  end

  

#--------------------------------------------------------------------------------------------------------     

  def set_weather_bgs(type)

    return if @bgs_control == false

    bgs = BGS.new

    bgs.volume = 80

    bgs.pitch = 100

    case type

    when 0

      $game_system.bgs_fade(10)

    when 1

      bgs.name = "005-Rain01"

      $game_system.bgs_play(bgs)

    when 2

      bgs.name = "006-Rain02"

      $game_system.bgs_play(bgs)

    when 3

      $game_system.bgs_fade(10)

    when 4..5

      bgs.name = "007-Rain03"

      $game_system.bgs_play(bgs)

    when 6

      bgs.name = "001-Wind01"

      $game_system.bgs_play(bgs)

    when 7

      bgs.name = "002-Wind02"

      $game_system.bgs_play(bgs)

    when 8

      bgs.name = "003-Wind03"

      $game_system.bgs_play(bgs)

    end

  end

  

#--------------------------------------------------------------------------------------------------------     

  def weather

    return if @aws == false

    return if $game_map.weather_active == false

    if min_is % @weather_period == 0 and @active_weather == false

      @active_weather = true

      if rand(10).between?(0, @weather_cycle)

        pattern = @weather_pattern[season_id]

        size = pattern.size - 1

        type = pattern[rand(size).to_i]

        if @weather_type == type

          if @weather_strength.between?(0, 40)

            @weather_strength += 10 

            else

            @weather_strength = 40

          end

        else

          @weather_strength = 10

        end

        @weather_type = type

        $game_screen.weather(@weather_type, @weather_strength, 0)

        set_weather_bgs(@weather_type)

      else

        @active_weather = true

        @weather_strength = 0

        $game_screen.weather(0, 0, 0)

        set_weather_bgs(0)

      end

    else

      @active_weather = false if min_is % @weather_period != 0

    end

  end

   

end

#===================================================

# ▲ CLASS Advanced_Time Ends

#===================================================

 

 

#===================================================

# ▼ CLASS Scene_Map Additional Code Begins

#===================================================

class Scene_Map

 

alias ats_scene_map_main main

alias ats_scene_map_update update

   

   def main

     if $game_map.dns_active

       tone = $ats.period_tint

       $game_screen.start_tone_change(Tone.new(tone[0],tone[1],tone[2],tone[3]),0)

     end

     #@alex_ats_window = ATS_TimeTest_Window.new

     ats_scene_map_main

     #@alex_ats_window.dispose

   end

   

   def update

     ats_scene_map_update

     #@alex_ats_window.update

     $ats.weather

     if $game_map.dns_active

       tone = $ats.period_tint

       $game_screen.start_tone_change(Tone.new(tone[0],tone[1],tone[2],tone[3]),tone[4])

     end

   end  

   

end

#===================================================

# ▲ CLASS Scene_Map Additional Code Ends

#===================================================

 

 

#===================================================

# ▼ CLASS ATS_TimeTest_Window Begins

#===================================================

class ATS_TimeTest_Window < Window_Base

  

  def initialize

    super(0,0,250,400)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.contents.font.name = "Tekton Pro Cond"

    self.contents.font.size =14

    self.opacity = 100

    update   

  end  

  

  def refresh

  #def update #testing and debugging window

    return if Graphics.frame_count % 10 != 0

    self.contents.clear

    self.contents.font.color = text_color(0) 

    self.contents.draw_text(0, 0, 400, 32, "Current Full Clock: " +$ats.clock)

    self.contents.draw_text(0, 16, 400, 32, "Small Date: " +$ats.date)

    self.contents.draw_text(0, 32, 400, 32, "Full Date: " +$ats.full_date)

    self.contents.draw_text(0, 60, 400, 32, "Week ID#: " + $ats.week_day_is.to_s)

 

    self.contents.draw_text(0, 80, 400, 32, "Period: " + $ats.period)

    self.contents.draw_text(0, 100, 400, 32, "Season: " + $ats.season)

    self.contents.draw_text(0, 120, 400, 32, "Month ID#: " + $ats.months_is.to_s)

    self.contents.draw_text(0, 140, 400, 32, "Map Name#: " + $game_map.map_name)

    self.contents.draw_text(0, 160, 400, 32, "Weather: " + $ats.weather_is)

  end

end 

#===================================================

# ▲ CLASS ATS_TimeTest_Window Ends

#===================================================

 

#===================================================

# ▼ CLASS Scene_Title Additional Code Begins

#===================================================

class Scene_Title

  $ats=Advanced_Time.new

end  

#===================================================

# ▲ CLASS Scene_Title Additional Code Ends

#===================================================

 

 

#===================================================

# ▼ CLASS Game_Map Additional Code Begins

#===================================================

class Game_Map

 

  attr_accessor :tileset_refresh

  attr_accessor :tileset_transition

  attr_accessor :map_transition

  attr_accessor :dns_active

  attr_accessor :weather_active

  attr_accessor :lights_refresh

  attr_accessor :shadows_refresh

  attr_accessor :shadows_redraw

 

  alias ats_game_map_update update

  alias ats_game_map_setup setup

  alias ats_game_map_initialize initialize

 

  def initialize

    ats_game_map_initialize

    @tileset_refresh = false

    @season = $ats.season_id

    @tileset_transition = false

    @map_transition = false

    @dns_active = false

    @weather_active = false

    @lights_refresh = false

    @shadows_refresh = false

    @shadows_redraw = false

    @map_transition_id = 0

  end

 

  def setup(map_id)

    ats_game_map_setup(map_id)

    # Setup

    @dns_active = false

    @weather_active = false

    @tileset_transition = false

    @map_transition = false

    

    map_infos = load_data("Data/MapInfos.rxdata")

    # DNS

    if map_infos[map_id].name.include?("*")

      map_infos[map_id].name.delete!("*")

      @dns_active = true

      tone = $ats.period_tint

      $game_screen.start_tone_change(Tone.new(tone[0],tone[1],tone[2],tone[3]),0)

    else

      $game_screen.start_tone_change(Tone.new(0,0,0,0),0)

    end

    # Dynamic Weather

    if map_infos[map_id].name.include?("^")

      map_infos[map_id].name.delete!("^")

      @weather_active = true

      $game_screen.weather($ats.weather_type, $ats.weather_strength, 0)

      $ats.set_weather_bgs($ats.weather_type)

    else

      $game_screen.weather(0, 0, 0)

      $ats.set_weather_bgs(0)

    end

    # Tileset Transition

    if map_infos[map_id].name.include?("&")

      map_infos[map_id].name.delete!("&")

      @tileset_transition = true

    end

    # Map Transition

    if map_infos[map_id].name.include?("[") and map_infos[map_id].name.include?("]")

      index = map_infos[map_id].name.index("[")

      temp = map_infos[map_id].name[index+1].chr

      map_infos[map_id].name.delete!(temp)

      map_infos[map_id].name.delete!("[")

      map_infos[map_id].name.delete!("]")

      @map_transition = true

    end

    @map_name = map_infos[map_id].name

    # Tileset Transition

    if @tileset_transition

      name = $game_map.tileset_name.split

      @tileset_name = name[0] + " " + $ats.season_id.to_s

      for i in 0..6

        autotile_name = @autotile_names[i].split

        next if autotile_name[0] == nil

        if autotile_name[1] == nil

          @autotile_names[i] = autotile_name[0]

        else

          @autotile_names[i] = autotile_name[0] + " " + $ats.season_id.to_s

        end

      end

    end

  end

 

  def map_name

    return @map_name

  end

 

  def update

    # Map Transition

    if @map_transition

      transition_id = "["+$ats.season_id.to_s+"]"

      map_infos = load_data("Data/MapInfos.rxdata")

      for key in map_infos.keys

        if map_infos[key].name.include?(@map_name) and map_infos[key].name.include?(transition_id)

          next if key == @map_id

          setup(key)

          @tileset_refresh = true

          return

        end

      end

    end

    # Tileset Transition

    if @tileset_transition

      if @season != $ats.season_id

        @tileset_refresh = true

        @season = $ats.season_id

        tileset_name = $game_map.tileset_name.split

        @tileset_name = tileset_name[0] + " " + $ats.season_id.to_s

        for i in 0..6

          autotile_name = $game_map.autotile_names[i].split

          next if autotile_name[0] == nil

          if autotile_name[1] == nil

            @autotile_names[i] = autotile_name[0]

          else

            @autotile_names[i] = autotile_name[0] + " " + $ats.season_id.to_s

          end

        end

      end

    end

    $game_map.need_refresh = true

    ats_game_map_update

  end

  

end

#===================================================

# ▲ CLASS Game_Map Additional Code Ends

#===================================================

 

 

#===================================================

# ▼ CLASS Spriteset_Map Additional Code Begins

#===================================================

class Spriteset_Map

 

  alias ats_spriteset_map_update update

 

  def update

    if $game_map.tileset_refresh

      $game_map.tileset_refresh = false

      Graphics.freeze

      dispose

      initialize

      Graphics.transition(20)

    end

    ats_spriteset_map_update

  end

  

end

#===================================================

# ▲ CLASS Spriteset_Map Additional Code Ends

#===================================================

 

 

#===================================================

# ▼ CLASS BGS Additional Code Begins

#===================================================

 

class BGS

  #--------------------------------------------------------------------------

  attr_accessor :name

  attr_accessor :volume

  attr_accessor :pitch

  #--------------------------------------------------------------------------

  def initialize

    @name = ""

    @volume = 80

    @pitch = 100

  end

end

#===================================================

# ▲ CLASS BGS Additional Code Ends

#===================================================

I know zip about coding, just learned what I can from the demo and some help from the community. My question is similar to one I have asked before, but don't quite have any idea how to do it after some trial & error.

I would like to know how to set the current active time to a set time.
For instance .. $ats.hours_is >= 6 and $ats.hours_is <= 20
I would like to wake up at a set time ... say, 2200.
I know how to ADD hours via: $ats.hours(#) but since the range of time between 6am and 8pm is long, I can't control when they sleep in between that period and rather not have to make 14 different conditional branches.
So I tried things like .. $ats.hours_is(#), $ats.hours = 3, and other random string of code I could muster up.

Any help or info would be greatly appreciated. :]
 
Could you have the time stored as a variable that every x frames increases then have it preform an operation where it would take the current time (which would be the variable) and subtract that from 24 then store the answer as a new variable then have the game add the second variable? if that makes any sense, i'm bad at coding but here's a mock up

t = current time (w/e that may be)
(24hours -t hours) + 8hours = s
current time add s hours

or someting along those lines? idk like i said i'm bad at codingi think that that should put you at 8 am every time... you'd have to check my math

if you don't care for equations you could do a tone of if then so when the player chooses to sleep it would do something like this

if current time == 1am
sleep for 7 hours
elsif current time == 2am
sleep 6 hours
eslif current time ==3am
sleep 5 hours
...

something like that would work in theory... else if you only be one conditional branch... with like a ton of different options... once again though like i said i'm bad with scripting and i'm kinda a noob at it... the second option would be more work and coding but should be a sure fire way to get it done

also you could tweek these so the char wakes up sooner or later... if you want them up sooner subtract if you want them up later add

hope that helps some, also what exactly are you trying to do in your game? it might be easier to offer more specific help if we knew
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top