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.

Blizzard's Hud + Advance Time System[Solved]

I'm using Blizzard's Hud from the Tons of Addons pack and I'm also using the Advance Time System script by Dubealex and rewriten by Near Fantastica. I found where I can plug in the 'clock' from the ATS script but I can't get it to live update for me.

Blizzard's Hud
Code:
 

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

# Blizz-Art lagless HUD by Blizzard

# Version: 1.3b

# Date: 16.12.2006

# Date v1.1b: 12.1.2007

# Date v1.2b: 11.3.2007

# Date v1.3b: 7.7.2007

# 

# 

# IMPORTANT:

# 

# The "not simple" method of using this add-on REQUIRES Blizz-Art Gradient

# styler for HP/SP/EXP bars.

# 

# 

# Instructions:

# 

# This add-on will add a HUD into your game. Configure the part below. The

# meanings of the variables are:

# 

# SIMPLE       - set this to false to use Blizz-Art Gradient styler instead of

#                the normal bars

# FULL_DISPLAY - set to true to show the stats of all party members in the

#                display (otherwise hold D and press Q/W to cycle through the

#                actors)

# TOP          - set this value to false and the HUD will appear on the bottom

# 

# Side-Note:

# 

# This add-on comes BELOW the Gradient Styler. This HUD was made for 1, 2, 3 or

# 4 characters. More than 4 characters are not displayed.

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

 

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# Start HUD Configuration

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

SIMPLE = true

FULL_DISPLAY = false

TOP = true

HUD_TYPE = 0 # 0, 1 or 2

 

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# End HUD Configuration

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

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

# Game_System

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

 

class Game_System

  

  attr_accessor :index

  attr_accessor :bar_style unless FULL_DISPLAY

  attr_reader   :bar_opacity

  

  alias init_blizzart_hud_later initialize

  def initialize

    init_blizzart_hud_later

    @index = 0 unless FULL_DISPLAY

    unless $Blizz_Art

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# START Configuration

# 

# Configure this part manually if you have no "Options" controller for the

# styles and the opacity. (style: 0~5, opacity: 0~256) (256 is the same as 255)

# Note that this WILL be overriden if you use Blizz-Art Gradient styler.

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      @bar_style = 0

      self.bar_opacity = 255

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# END Configuration

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    end

  end

  

  def bar_opacity=(alpha)

    @bar_opacity = [[alpha, 0].max, 255].max

  end

  

end

 

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

# Bitmap

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

 

class Bitmap

  

  def gradient_bar_simple(x, y, w, color1, color2, rate)

    w = w / 8 * 8

    alpha = $game_system.bar_opacity

    case HUD_TYPE

    when 0

      fill_rect(x + 1, y, w + 2, 14, Color.new(255, 255, 255, 192))

    when 1

      fill_rect(x + 1, y, w + 2, 14, Color.new(255, 255, 255, 0))

    end

    for i in 1..6

      color = Color.new(color2.red*i/6, color2.green*i/6, color2.blue*i/6, alpha)

      fill_rect(x + 2, y + i, w, 14 - i * 2, color)

      color = Color.new(color1.red*i/6, color1.green*i/6, color1.blue*i/6, alpha)

      fill_rect(x + 2, y + i, w * rate, 14 - i * 2, color)

    end

  end

  

  unless $Blizz_Art

  alias draw_text_shaded_text_later draw_text

  def draw_text(x2, y2, w2 = 0, h2 = 0, text2 = "", a2 = 0)

    if x2.is_a?(Rect)

      x, y, w, h, text, a = x2.x, x2.y, x2.width, x2.height, y2, w2

    else

      x, y, w, h, text, a = x2, y2, w2, h2, text2, a2

    end

    save_color = self.font.color.clone

    self.font.color = Color.new(0, 0, 0, 255)

    draw_text_shaded_text_later(x+1, y+1, w, h, text, a)

    self.font.color = save_color

    draw_text_shaded_text_later(x, y, w, h, text, a)

  end

  end

 

  def draw_text_full(x2, y2, w2 = 0, h2 = 0, text2 = "", a2 = 0)

    if x2.is_a?(Rect)

      x, y, w, h, text, a = x2.x, x2.y, x2.width, x2.height, y2, w2

    else

      x, y, w, h, text, a = x2, y2, w2, h2, text2, a2

    end

    save_color = self.font.color.clone

    self.font.color = Color.new(0, 0, 0, 255)

    draw_text_shaded_text_later(x+1, y+1, w, h, text, a)

    draw_text_shaded_text_later(x-1, y+1, w, h, text, a)

    draw_text_shaded_text_later(x-1, y-1, w, h, text, a)

    draw_text_shaded_text_later(x+1, y-1, w, h, text, a)

    self.font.color = save_color

    draw_text_shaded_text_later(x, y, w, h, text, a)

  end

  

end

 

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

# Window_Base

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

 

class Window_Base < Window

 

  def draw_actor_exp_alt(actor, x, y)

    self.contents.font.color = system_color

    self.contents.draw_text(x, y, 64, 32, "next")

    self.contents.font.color = normal_color

    self.contents.draw_text(x + 56, y, 84, 32, actor.next_rest_exp_s, 2)

  end

  

  alias draw_actor_exp_alt_blizzart_hud_later draw_actor_exp_alt

  def draw_actor_exp_alt(actor, x, y, w = 148)

    w -= 12

    rate = (actor.next_exp != 0 ? actor.now_exp.to_f / actor.next_exp : 1)

    if rate < 0.5

      color1 = Color.new(20 * rate, 60, 80, 192)

      color2 = Color.new(60 * rate, 180, 240, 192)

    elsif rate >= 0.5

      color1 = Color.new(20 + 120 * (rate-0.5), 60 + 40 * (rate-0.5), 80, 192)

      color2 = Color.new(60 + 360 * (rate-0.5), 180 + 120 * (rate-0.5), 240, 192)

    end

    color3 = Color.new(80, 80, 80, 192)

    self.contents.gradient_bar(x, y, w, color1, color2, color3, rate)

    draw_actor_exp_alt_blizzart_hud_later(actor, x, y)

  end

 

  def draw_actor_hp_hud(actor, x, y, w = 148)

    rate = (actor.maxhp > 0 ? actor.hp.to_f / actor.maxhp : 0)

    if rate > 0.6

      color1 = Color.new(240 - 450 * (rate-0.6), 240, 150 * (rate-0.6), 192) 

    elsif rate > 0.2 and rate <= 0.6

      color1 = Color.new(240, 600 * (rate-0.2), 0, 192) 

    elsif rate <= 0.2

      color1 = Color.new(240, 0, 0, 192)

    end

    color2 = Color.new(0, 80, 0, 192)

    self.contents.gradient_bar_simple(x + 32, y, w - 48, color1, color2, rate)

    y -= 9

    self.contents.font.color = system_color

    self.contents.draw_text_full(x, y, 32, 32, $data_system.words.hp)

    hp_x = x + w - 122

    self.contents.font.color = actor.hp == 0 ? knockout_color :

      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color

    self.contents.draw_text_full(hp_x, y, 48, 32, actor.hp.to_s, 2)

    self.contents.font.color = normal_color

    self.contents.draw_text_full(hp_x + 48, y, 12, 32, "/", 1)

    self.contents.draw_text_full(hp_x + 60, y, 48, 32, actor.maxhp.to_s)

    self.contents.font.color.alpha = 255

  end

  

  def draw_actor_sp_hud(actor, x, y, w = 148)

    rate = (actor.maxsp > 0 ? actor.sp.to_f / actor.maxsp : 0)

    if rate > 0.4

      color1 = Color.new(180 - 200 * (rate-0.4), 60, 240, 192) 

    elsif rate <= 0.4

      color1 = Color.new(60 + 300 * rate, 150 * rate, 80 + 400 * rate, 192) 

    end

    color2 = Color.new(0, 0, 80, 192) 

    self.contents.gradient_bar_simple(x + 32, y, w - 48, color1, color2, rate)

    y -= 9

    self.contents.font.color = system_color

    self.contents.draw_text_full(x, y, 32, 32, $data_system.words.sp)

    sp_x = x + w - 122

    self.contents.font.color = actor.sp == 0 ? knockout_color :

      actor.sp <= actor.maxhp / 4 ? crisis_color : normal_color

    self.contents.draw_text_full(sp_x, y, 48, 32, actor.sp.to_s, 2)

    self.contents.font.color = normal_color

    self.contents.draw_text_full(sp_x + 48, y, 12, 32, "/", 1)

    self.contents.draw_text_full(sp_x + 60, y, 48, 32, actor.maxsp.to_s)

  end

  

  def draw_actor_exp_hud(actor, x, y, w = 148)

    rate = (actor.next_exp != 0 ? actor.now_exp.to_f / actor.next_exp : 1)

    if rate < 0.5

      color1 = Color.new(60 * rate, 180, 240, 192) 

    elsif rate >= 0.5

      color1 = Color.new(60 + 360 * (rate-0.5), 180 + 120 * (rate-0.5), 240, 192) 

    end

    color2 = Color.new(80, 80, 80, 192)

    self.contents.gradient_bar_simple(x + 32, y, w - 48, color1, color2, rate)

    y -= 9

    self.contents.font.color = system_color

    self.contents.draw_text_full(x, y, 80, 32, "next")

    self.contents.font.color = normal_color

    self.contents.draw_text_full(x + 56, y, 84, 32, actor.next_rest_exp_s, 2)

    self.contents.font.color.alpha = 255

  end

  

end

 

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

# Game_Actor 

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

 

class Game_Actor < Game_Battler 

  

  def now_exp

    return @exp - @exp_list[@level] 

  end 

  

  def next_exp

    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 

  end

  

end

 

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

# Hud

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

 

class Hud < Window_Base

  def initialize

    super(448, 367, 176, 112)

    self.contents = Bitmap.new(140,80)

    self.contents.font.name = "pix Chicago"

    self.contents.font.color = normal_color

    self.contents.font.bold = false

    self.opacity = 255

    self.z = 9000

    update

  end

=begin  

  def initialize

    super(0, -12, 192, 112)

    self.opacity = 0

    unless TOP

      self.y += 400

      self.y -= 16 unless SIMPLE

    end

    self.height += 32 unless SIMPLE

    self.z = 9001

    refresh

  end

=end  

  def refresh

    self.contents.clear if self.contents != nil

    self.width = FULL_DISPLAY ? 32 + 160 * $game_party.actors.size : 192

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

    self.contents.font.name = "pix Chicago"

    self.contents.font.size = 16

    self.contents.font.bold = false

    @names, @levels, @hps, @sps, @exps = [], [], [], [], []

    for i in 0...$game_party.actors.size

      actor = $game_party.actors[(FULL_DISPLAY ? i : $game_system.index)]

      self.contents.font.italic = true

      self.contents.font.size += 2

      self.contents.font.color = system_color

      self.contents.draw_text(i*160, -8, 152, 32, actor.name, 1)

      self.contents.font.italic = false

      if SIMPLE

        self.contents.font.size -= 2

        draw_actor_hp_hud(actor, i*160, 16, 160)

        draw_actor_sp_hud(actor, i*160, 32, 160)

        draw_actor_exp_hud(actor, i*160, 48, 160)

      else

        draw_actor_hp(actor, i*160, 8, 160)

        draw_actor_sp(actor, i*160, 32, 160)

        draw_actor_exp_alt(actor, i*160, 56, 160)

        self.contents.font.size -= 2

      end

    end

    text = "#{$data_system.words.gold}: #{$game_party.gold}"

    self.contents.font.color = Color.new(255, 255, 0)

    self.contents.draw_text(0, (SIMPLE ? 56 : 84), 152, 32, text)

    self.contents.draw_text(70 ,40, 152, 64, "҉   " +$ats.clock.to_s, 1)

    for actor in $game_party.actors

      @names.push(actor.name)

      @levels.push(actor.level)

      @hps.push(actor.hp)

      @sps.push(actor.sp)

      @exps.push(actor.exp)

    end

    @gold = $game_party.gold

  end

  

  def test_changes

    return true if $game_party.gold != @gold

    if FULL_DISPLAY

      for i in 0...$game_party.actors.size

        actor = $game_party.actors[i]

        if actor.name != @names[i] or actor.level != @levels[i] or

            actor.hp != @hps[i] or actor.sp != @sps[i]

          return true

        end

      end

    else

      actor = $game_party.actors[$game_system.index]

      if actor.name != @names[$game_system.index] or

          actor.level != @levels[$game_system.index] or

          actor.hp != @hps[$game_system.index] or

          actor.sp != @sps[$game_system.index]

        return true

      end

    end

    return false

  end

end

 

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

# Scene_Map

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

 

class Scene_Map

  

  alias main_blizzart_hud_later main

  def main

    if $BlizzABS != true or BlizzABS::Static::VERSION < 1.001

      @hud = Hud.new if $game_system.HUD

    end

    main_blizzart_hud_later

    @hud.dispose if @hud != nil

  end

  

  alias upd_blizzart_hud_later update

  def update

    if $BlizzABS != true or BlizzABS::Static::VERSION < 1.001

      if $game_system.HUD

        @hud = Hud.new if @hud == nil

      else

        @hud.dispose if @hud != nil

        @hud = nil

      end

      if @hud != nil

        if Input.press?(Input::Z) and Input.trigger?(Input::L)

          $game_system.index += $game_party.actors.size - 1

          $game_system.index %= $game_party.actors.size

          @hud.refresh

        elsif Input.press?(Input::Z) and Input.trigger?(Input::R)

          $game_system.index += 1

          $game_system.index %= $game_party.actors.size

          @hud.refresh

          elsif @hud.test_changes

          @hud.refresh

        end

      end

    end

    upd_blizzart_hud_later

  end

  

end

 
Line 308 is where I plugged in the clock.


ATS
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 = true

      @bgs_control = true

      @active_weather = true

      @weather_type = 8

      @weather_strength = 3

      @weather_cycle = 5

      @weather_period = 30

      @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 = 120             # 0 is a Real Time System

      @minutes_length = 60               # Seconds

      @hour_length = 60                    # Minutes

      @day_length = 24                     # Hours

      @week_length = 7                     # Days

      @month_length = 30                # Days

      @year_length = 12                   # Months

      @decade_length = 10                # Years

      @century_length = 100              # Years

      @millenium_length = 1000        # Years

      @hour_var = 3                    #Variable for Hours

      

=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 = 2               # 1= 24 hours format / 2= AM/PM flag format

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

     @start_date    = [10,07,1785] # [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..2) #Defined as (start_month..end_month)

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

      @cycle_season[3] = (5..6)

      @cycle_season[4] = (7..8)

      @cycle_season[5] = (9..10)

      @cycle_season[6] = (11..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] = "Night"

      

      @name_season[1] = "Winter"

      @name_season[2] = "Spring"

      @name_season[3] = "Summer"

      @name_season[4] = "Summer"

      @name_season[5] = "Autumn"

      @name_season[6] = "Autumn"

      

      @name_month[1]  = "January"

      @name_month[2]  = "February"

      @name_month[3]  = "March"

      @name_month[4]  = "April"

      @name_month[5]  = "May"

      @name_month[6]  = "June"

      @name_month[7]  = "July"

      @name_month[8]  = "August"

      @name_month[9]  = "September"

      @name_month[10]= "October"

      @name_month[11]= "November"

      @name_month[12]= "December"

      

      @name_day[1] = "Monday"

      @name_day[2] = "Tuesday"

      @name_day[3] = "Wednesday"

      @name_day[4] = "Thursday"

      @name_day[5] = "Friday"

      @name_day[6] = "Saturday"

      @name_day[7] = "Sunday"      

      

#--- ■ 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", hour, min)

        return clock

      else

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

        clock=sprintf("%02d:%02d %s", hour, min, 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

#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 = "pix Chicago"

    self.contents.font.size =6

    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

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

 

Can anyone tell me how I can get the clock in the hud to update without having to go into and out of the menu?
 
Looks like the HUD only updates when "test_changes" returns true. Right now it only does so when the gold quantity or player stats change. Under line 320, you could add:
return true if @old_time != $ats.clock.to_s


And insert the following line (setting the variable) above line 338 (return false):
@old_time = $ats.clock.to_s


Let me know if that does the trick.
 

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