Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Cerberos

Simple Clock script

Recommended Posts

Hi again guys, im in my vacation againg, so im back in my project.

 

came with a request, I have a system of Time/daynight  that works with : events, common events and variables in the data base.

So while i was testing some scripts I found this little watch or clock that appear/disapear with a switch,I tried to make it work with "my system" but  I'm not a scripter so I had a hard time trying to make it work, and it didn't at the end.

If someone can help me with this xD, i appreciate it.

 

this is the script where i found the watch

 

 

=begin
---------------------------------------------
DAY_NIGHT_LIGHT_SYSTEM
---------------------------------------------
by
- Brewmeister
- Gubid
- Star
---------------------------------------------
=end


#-----------------------------------
# Editing of the Script
#-----------------------------------


# How many real time minutes does it take for a whole gameday to go by?
# Normal time would be 24 minutes so a minute in game goes by every second.
#-----------------------------------

=begin
#GAME_DAY_IN_REAL_MINUTES = 24


# Current_Game_Day is the variable of the current day
#-----------------------------------
CURRENT_GAME_DAY = 23

# Day you want Game_Day to start at.
#-----------------------------------
#INTIALIZE_GAME_DAY = 1


# If Flickercolon is true the : in the 00:00 flashes every second
#-----------------------------------
#FLICKERCOLON = true

# Hour_variable is the variable of the current hour
#-----------------------------------
HOUR_VARIABLE = 22

# Inside_Switch is the switch set to make insides darker, not meant for caves
#-----------------------------------
#INSIDE_SWITCH = 9

# Inside_Opacity is the opacity set to increase when entering insides
#-----------------------------------
#INSIDE_OPACITY = 10

# Cave_Switch is the switch set meant for caves
#-----------------------------------
#CAVE_SWITCH = 10

# Cave_Opacity is the total opacity you want when entering caves.  Generally
# Should be set higher than the highest darkness.
#-----------------------------------
#CAVE_OPACITY = 220

# if AM_AND_PM is true, everything is not in military time
#-----------------------------------
AM_AND_PM = true

# Starthour is the hour the game starts at
#-----------------------------------
#STARTHOUR = 6

# New_hour is the variable that changes the current hour.  You must use this in
# order to change the hour.  It will not tell you the current hour, only
# Hour_variable can tell the current hour.
#-----------------------------------
NEW_HOUR = 20

# Set this switch to on in order to hide the clock
#-----------------------------------
INVISIBLE_TIMER_SWITCH = 32


#=begin
#---------------------------------------------
#Bitmap
#---------------------------------------------
class Bitmap
  def sub(ox,oy,light)
    ox -= (light.width / 2)
    oy -= (light.height / 2)
    for x in 0...light.width
      for y in 0...light.height
        lt_color = light.get_pixel(x,y)
        ds_color = self.get_pixel(x + ox,y + oy)
        ds_color.alpha -= lt_color.alpha
        self.set_pixel(x + ox,y + oy,ds_color)
      end
    end
  end
end

#---------------------------------------------
#end Bitmap
#---------------------------------------------

#=begin
#---------------------------------------------
#Game_System
#---------------------------------------------
class Game_System  
  alias init_gme_sys initialize
  def initialize
    init_gme_sys
    @timer_working = true
    @timer_remember = 0
    @timer = STARTHOUR * 2400
  end
def update
    # reduce timer by 1
    if @timer_working
      if @timer > 57600
        @timer = 0
         $game_variables[CURRENT_GAME_DAY] += 1
      else
          if @timer_remember != 0 and @timer != @timer_remember
          @timer = @timer_remember
          @timer_remember = 0
          else
          @timer += (1 * (24/GAME_DAY_IN_REAL_MINUTES))
          end
      end
    elsif @timer_remember != @timer and @timer_working == false
      @timer_remember = @timer
    end
  end
end

#---------------------------------------------
#end Game_System
#---------------------------------------------




#---------------------------------------------
#Sprite_Timer
#---------------------------------------------
class Sprite_Timer < Sprite
  def initialize
    super
    self.bitmap = Bitmap.new(120, 20)
    self.bitmap.font.name = "Arial"
    self.bitmap.font.size = 15
    self.x = 620 - self.bitmap.width
    self.y = 0
    self.z = 2000
    @flicker = true
    
    #REMOVIDO para probar las variables y su prioridad
    
   if $game_variables[CURRENT_GAME_DAY] < INTIALIZE_GAME_DAY
      $game_variables[CURRENT_GAME_DAY] = INTIALIZE_GAME_DAY
      end
    update
  end
  def update
    super
    # Set timer to visible if working
    if $game_switches[iNVISIBLE_TIMER_SWITCH] == true
    self.visible = false
  else
    self.visible = true
  end
 
  #REMOVIDO parece que funciona con la variable que no uso
        if $game_variables[NEW_HOUR] != 0 and
           $game_variables[NEW_HOUR] != $game_variables[HOUR_VARIABLE]
      $game_system.timer = $game_variables[NEW_HOUR] * 2400
      if  $game_system.timer > 57600
        $game_system.timer % 57600
        $game_variables[CURRENT_GAME_DAY] += 1
      end
      $game_variables[NEW_HOUR] = 0
      end
    # If timer needs to be redrawn
      if $game_system.timer / Graphics.frame_rate != @total_sec and $game_system.timer_working
      # Clear window contents
      self.bitmap.clear
      # Calculate total number of seconds
      @total_sec = $game_system.timer / Graphics.frame_rate
      # Make a string for displaying the timer
      case $game_variables[HOUR_VARIABLE]
      when 0,1,2,3,4,5,18,19,20,21,22,23,24
      moon_and_sun = RPG::Cache.picture("Moon")
      cw = moon_and_sun.width
      ch = moon_and_sun.height
      rect = Rect.new(0, 0, cw, ch)
      when 6,7,8,9,10,11,12,13,14,15,16,17
      moon_and_sun = RPG::Cache.picture("Sun")
      cw = moon_and_sun.width
      ch = moon_and_sun.height
      rect = Rect.new(0, 0, cw, ch)
    end
      if $game_variables[HOUR_VARIABLE] > 24
      moon_and_sun = RPG::Cache.picture("Moon")
      cw = moon_and_sun.width
      ch = moon_and_sun.height
      rect = Rect.new(0, 0, cw, ch)
      end
      if AM_AND_PM == true
        if $game_variables[HOUR_VARIABLE] > 12
          min = (@total_sec - 720) / 60
          sec = @total_sec % 60
        else
          min = @total_sec / 60
          sec = @total_sec % 60
        end
            if $game_variables[HOUR_VARIABLE] > 11 and $game_variables[HOUR_VARIABLE] != 24
              setting = "PM"
            else
              setting = "AM"
            end
            if FLICKERCOLON == true and @flicker == false
            text = sprintf("%02d %02d " + setting, min, sec)
             @flicker = true
          else
            text = sprintf("%02d:%02d " + setting, min, sec)
            if FLICKERCOLON == true
              @flicker = false
            end
          end
      else
        min = @total_sec / 60
        sec = @total_sec % 60
        text = sprintf("%02d:%02d", min, sec)
        end
      if $game_variables[HOUR_VARIABLE] > 12 and AM_AND_PM == true
      $game_variables[HOUR_VARIABLE] = min + 12
      else
      $game_variables[HOUR_VARIABLE] = min
      end
      $sec = sec
      # Draw timer
      rect2 = Rect.new(1, 1, 120, 20)
      self.bitmap.font.color.set(0, 0, 0)
      self.bitmap.draw_text(rect2, text, 1)
      self.bitmap.font.color.set(255, 255, 255)
      self.bitmap.draw_text(self.bitmap.rect, text, 1)
      self.bitmap.blt(90, 0, moon_and_sun, rect)
      end
  end
end

#---------------------------------------------
#end Sprite_Timer
#---------------------------------------------
#=begin
#---------------------------------------------
#Game_Event
#---------------------------------------------
class Game_Event < Game_Character
  attr_reader :erased
  attr_accessor :is_light
  alias init_gm_evnt_lights initialize
  def initialize(*args)
    init_gm_evnt_lights(*args)
    @is_light = false
  end
  alias refresh_gm_evnt_lights refresh
  def refresh
    tmp_page = @page
    refresh_gm_evnt_lights
    if tmp_page != @page
      @is_light = false
    end
  end
end

#---------------------------------------------
#end Game_Event
#---------------------------------------------
#=begin
#---------------------------------------------
#Sprite_Nighttime
#---------------------------------------------

class Nighttime < Sprite
  def initialize(x,y)
    super()
    @width = $game_map.width * 32
    @height = $game_map.height * 32
    @lights = {}
    self.x = x
    self.y = y
    self.bitmap = Bitmap.new(@width, @height)
    self.bitmap.clear
    fillnight
  end
  def refresh
    self.bitmap.clear
    create_lights
    fillnight
  end
 
  def create_lights
    for event in $game_map.events.values
      for i in 0...event.list.size     #            incompatibilidad conmenu luego de abrir cajones?
        if event.list.code == 108 #comment
          if event.erased and event.list.parameters[0].include?("light")
            @lights.delete(event)
            next
          elsif event.list.parameters[0].include?("light")
            size = event.list.parameters[0].delete("light").to_i #convert text to interger
            @lights[event] = Light.new(event, size) unless @lights.keys.include?(event)
            event.is_light = true
            next
          end
        end
      end
      #in the event page is changed and it is no longer a light.. remove it.
      if @lights[event] != nil and event.is_light == false
        @lights.delete(event)
       end
    end
  end
  def fillnight
    if $sec == nil
      $sec = 0
    end
    if $game_switches[iNSIDE_SWITCH] == true
      extralpha = INSIDE_OPACITY
    else
      extralpha = 0
      end
     case $game_variables[HOUR_VARIABLE]
    when 0, 1, 23
    startop = 210 - extralpha
    when 2
    startop = 210 - ($sec / 2) + extralpha
    when 3
    startop = 180 - ($sec / 2) + extralpha
    when 4
    startop = 150 - ($sec / 2) + extralpha
    when 5
    startop = 120 - ($sec / 2) + extralpha
    when 6
    startop = 90 - ($sec / 2) + extralpha
    when 7
    startop = 60 - ($sec / 2) + extralpha
    when 8
    startop = 30 - ($sec / 2) + extralpha
    when 9, 10, 11, 12, 13, 14, 15
    startop = 0 + extralpha
    when 16
    startop = 0 + ($sec / 2) + extralpha
    when 17
    startop = 30 + ($sec / 2) + extralpha
    when 18
    startop = 60 + ($sec / 2) + extralpha
    when 19
    startop = 90 + ($sec / 2) + extralpha
    when 20
    startop = 120 + ($sec / 2) + extralpha
    when 21
    startop = 150 + ($sec / 2) + extralpha
    when 22
    startop = 180 + ($sec / 2) + extralpha
  end
  if $game_switches[CAVE_SWITCH] == true
    startop = CAVE_OPACITY
    end
    
    self.bitmap.fill_rect(0, 0, @width, @height, Color.new(0,0,0,255))
    self.opacity = startop
    # Now subtract out the lights
    # Testing with a single light at tile 7,11
    apply_lights
  end
  def apply_lights
    applied_space = []
    for light in @lights.values
      image_sub = RPG::Cache.picture("LightSUB").clone
      image_blt = RPG::Cache.picture("LightBLT").clone
      base_rect = image_sub.rect
      overlapLights = []
      size = (light.size/100.0)
      lwidth = base_rect.width*size
      light_rect = Rect.new(light.x-(lwidth/2), light.y-(lwidth/2), lwidth, lwidth)
      for applied_rect in applied_space
        if light_rect.overlap?(applied_rect)
          overlapLights << light_rect.area_in_overlap(applied_rect)
        end
      end
      #now draw it
      if overlapLights.size == 0 #no overlap detected.. then just BLT it into the image
        self.bitmap.fill_rect(light_rect, Color.new(0,0,0,0))
        self.bitmap.stretch_blt(light_rect, image_blt, base_rect)
      else
        self.bitmap.sub(light.x,light.y,image_sub)
      end
      applied_space << light_rect
      image_sub.dispose
      image_blt.dispose
    end
  end
  def update
    if $game_switches[iNSIDE_SWITCH] == true
      extralpha = INSIDE_OPACITY
    else
      extralpha = 0
      end
    case $game_variables[HOUR_VARIABLE]
    when 0, 1, 23
    self.opacity = 210 - extralpha
    when 2
    self.opacity = 210 - ($sec / 2) + extralpha
    when 3
    self.opacity = 180 - ($sec / 2) + extralpha
    when 4
    self.opacity = 150 - ($sec / 2) + extralpha
    when 5
    self.opacity = 120 - ($sec / 2) + extralpha
    when 6
    self.opacity = 90 - ($sec / 2) + extralpha
    when 7
    self.opacity = 60 - ($sec / 2) + extralpha
    when 8
    self.opacity = 30 - ($sec / 2) + extralpha
    when 9, 10, 11, 12, 13, 14, 15
    self.opacity = 0 + extralpha
    when 16
    self.opacity = 0 + ($sec / 2) + extralpha
    when 17
    self.opacity = 30 + ($sec / 2) + extralpha
    when 18
    self.opacity = 60 + ($sec / 2) + extralpha
    when 19
    self.opacity = 90 + ($sec / 2) + extralpha
    when 20
    self.opacity = 120 + ($sec / 2) + extralpha
    when 21
    self.opacity = 150 + ($sec / 2) + extralpha
    when 22
    self.opacity = 180 + ($sec / 2) + extralpha
    end
      if $game_switches[CAVE_SWITCH] == true
    startop = CAVE_OPACITY
    end
    end
end
class Rect
  def overlap?(rect)
    corners = []
    corners << [rect.x, rect.y] #UL
    corners << [rect.x+rect.width, rect.y] #UR
    corners << [rect.x+rect.width, rect.y+height] #LR
    corners << [rect.x, rect.y+height] #LL
    for corner in corners
      if corner[0].between?(self.x, self.x+width) and corner[1].between?(self.y, self.y+height)
        return true
      end
    end
    return false
  end
  def area_in_overlap(rect)
    return rect
  end
end
class Light
  def initialize(event, size)
    @event = event
    @size = size
  end
  def size
    return @size
  end
  def x
    return @event.real_x/4 + 16
  end
  def y
    return @event.real_y/4 + 16
  end
end
 

#---------------------------------------------
#end Sprite_Nighttime
#---------------------------------------------
#=begin
#---------------------------------------------
#Spriteset_Map
#---------------------------------------------
class Spriteset_Map
  alias init_spr_map_lights initialize
  def initialize
    # Make nighttime sprite
    @nighttime = Nighttime.new(0,0)
    @nighttime.z = 2000
    init_spr_map_lights
    @nighttime.refresh
    @map_idd = $game_map.map_id
  end
   alias dns_dispose dispose
   def dispose
     dns_dispose
     @nighttime.dispose
   end
  alias upd_spr_map_lights update
  def update
    upd_spr_map_lights
    # Update nighttime sprite
    @nighttime.ox = $game_map.display_x / 4
    @nighttime.oy = $game_map.display_y / 4
    if @hour_day != $game_variables[HOUR_VARIABLE]
      $game_map.refresh
      @hour_day = $game_variables[HOUR_VARIABLE]
      end
    if @map_idd != $game_map.map_id
      @nighttime.refresh
      @map_idd = $game_map.map_id
      end
    @nighttime.update
  end
end
#---------------------------------------------
#end Spriteset_Map
#---------------------------------------------
=end

 

 

Edited by Cerberos

Share this post


Link to post
Share on other sites

Soo, does it occur to you that the entire script you are giving me is commented out? That means it's basically a disabled script.

And what exactly seems to be the problem? I had no problems running it aside from having to uncomment the code.

Did you not manage to run it or is there something else wrong?

Share this post


Link to post
Share on other sites

LOL, I know the script is disabled by =begin/=end, what I mean is => did you se the clock ?, I want something like that.

You can think "why he doesn't simply use the script?". I dont use that script because I don't know how to edit it, change opacity of night effect, or make it count Months and years.

Share this post


Link to post
Share on other sites

Well I'm not particularly interested in investing my limited time in this script. Especially since it depends so heavily on game variables. Sim brothel uses a system like that, you might want to have a look over there.(Hint: it's in my signature.)

Then again, it may not be all that hard to do, but yeah, go have a look and if it doesn't work for you I may try to think of something.

Edited by Saltome

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...