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.

[Resolved]Advanced Time System: Dubealex/Near Fantastica

Here is the script if needed:
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,29,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]  = "Rifa"

      @name_month[3]  = "Ray"

      @name_month[4]  = "Aoemi"

      @name_month[5]  = "Atoma"

      @name_month[6]  = "Ava"

      @name_month[7]  = "Dayla"

      @name_month[8]  = "Detoa"

      @name_month[9]  = "Dawn"

      @name_month[10]= "Sleema"

      @name_month[11]= "Sloa"

      @name_month[12]= "Sleep"

      

      @name_day[1] = "Awnday"

      @name_day[2] = "Belday"

      @name_day[3] = "Corday"

      @name_day[4] = "Dyaday"

      @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 haven't seen this script used around much, but I'm hoping someone can help me out. xP I know 'no' amount of scripting so all I get is what is commented on. I just wanna know if something is possible and if so, how to do it.

From Near's test bed, I gathered that you could check what time it is and use it as a condition via Call Script. I've been using this to give NPCs a daily routine but I've come across something I'm not quite sure about.

To check the time, I use
$ats.hours_is >= 1 and $ats.hours_is <= 24

Which I'm sure you figured out that the current time is between 1 am to midnight. I make it more specific to give NPCs a more believable hours awake/asleep.
$ats.hours_is >= 6 and $ats.hours_is <= 14

The problem is simple, I can't figure out how to check for the time past 14 but before 6.
$ats.hours_is >= 14 and $ats.hours_is <= 6
Apparently would not/does not work.

Alternately, I tried this:
s3.jpg
But that doesn't seem to work either.

Any help on this issue is greatly appreciated. =)
 
You're problem is simple. Either it is after 2:00 pm, or it is before 6:00 am. It can't be both. So, change it to this:

Code:
$ats.hours_is >= 14 || $ats.hours_is <= 6

That checks to see if it is before 6:01 am or after 1:59 pm. (Your were using and, instead)
 
Kaleidx":tukk1ku7 said:
Aha!
I should certainly learn the basics of scripting so I don't ask such silly questions in the future.
It worked great, thank you. =]

In this case, it wasn't really scripting that was the probelm. You've got to think back to your lessons in math during high school. Specifically, you've got to think about algebra and algebra II. The script stores the hour as a number that is between 1 and 24, and you have to look for a number that is either less than or equal to 6, or greater than or equal to 14. You can't have a number that is both, so it has to be one or the other. Whenever you need something like this, it always helps to graph it on a number line. If the area you need is contained within a certain set of points, you need and (or &&), and if it is two lines going off in opposite directions, you need or (or ||).
 

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