Main Menu
  • Welcome to The RPG Maker Resource Kit.

clock!

Started by Blacky8, May 09, 2010, 12:36:27 PM

0 Members and 1 Guest are viewing this topic.

Blacky8

HI! I have a script to ask you!  :)
In my game I have this type of menù #===============================================================================
#
# Cozziekuns' Menu System
# Last Date Updated: 4/10/2010
#
# A menu system similar to that of Final Fantasy VII's.
#
#===============================================================================
# Updates
# -----------------------------------------------------------------------------
# o 4/09/10 - Started Script.
# o 4/10/10 - Finished Script.
# o 4/12/10 - Upgraded it so it works with every font, and has a few icons. Also added modules, for
#                  customization.
#===============================================================================
# What's to come?
# -----------------------------------------------------------------------------
# o Even more icons.
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ? Materials but above ? Main. Remember to save. Also,
# feel free to change the icons towards your preference.
#===============================================================================

#BEGIN CUSTOMIZABLE REGION-----------------------------------------------------

module COZZIEKUNS
 module ICONS
  TIME = 188
  GOLD = 205
  LOCATION = 153
 end
end

#END CUSTOMIZABLE REGION-------------------------------------------------------

#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================

class Window_MenuStatus < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     x : window X coordinate
 #     y : window Y coordinate
 #--------------------------------------------------------------------------
 def initialize(x, y)
   super(x, y, 424, 412)
   refresh
   self.active = false
   self.index = -1
 end
 
 #--------------------------------------------------------------------------
 # * Draw TNL (To next level)
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #     width : Width
 #--------------------------------------------------------------------------
 def draw_actor_tnl(actor, x, y, width = 80)
   draw_actor_tnl_gauge(actor, x, y, width)
   self.contents.font.color = system_color
   self.contents.draw_text(x, y - 21, 135, WLH, "To next level")
   self.contents.font.color = hp_color(actor)
   last_font_size = self.contents.font.size
   xr = x + width
   if width < 120
     self.contents.draw_text(xr - 44, y, 44, WLH, actor.next_rest_exp_s, 2)
   else
     self.contents.draw_text(xr - 99, y, 44, WLH, actor.next_rest_exp_s, 2)
     self.contents.font.color = normal_color
     self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
     self.contents.draw_text(xr - 44, y, 44, WLH, actor.next_exp_s, 2)
   end
 end
 #--------------------------------------------------------------------------
 # * Draw TNL gauge
 #     actor : actor
 #     x     : draw spot x-coordinate
 #     y     : draw spot y-coordinate
 #     width : Width
 #--------------------------------------------------------------------------
 def draw_actor_tnl_gauge(actor, x, y, width = 100)
   gw = width * actor.exp_s / actor.next_exp_s
   gc1 = tnl_gauge_colour1
   gc2 = tnl_gauge_colour2
   self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
   self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   @item_max = $game_party.members.size
   for actor in $game_party.members
     draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
     x = 104
     y = actor.index * 96
     draw_actor_name(actor, x + 30, y)
     draw_actor_level(actor, x + 30, y + 21)
     draw_actor_state(actor, x + 150, y)
     draw_actor_hp(actor, x + 30, y + 18 + WLH * 1)
     draw_actor_mp(actor, x + 30, y + 18 + WLH * 2)
     draw_actor_tnl(actor, x + 165, y + 18 + WLH * 1)
   end
 end
 #--------------------------------------------------------------------------
 # * Update cursor
 #--------------------------------------------------------------------------
 def update_cursor
   if @index < 0               # No cursor
     self.cursor_rect.empty
   elsif @index < @item_max    # Normal
     self.cursor_rect.set(0, @index * 96, contents.width, 96)
   elsif @index >= 100         # Self
     self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
   else                        # All
     self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
   end
 end
end

#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  This is a superclass of all windows in the game.
#==============================================================================

class Window_Base < Window
 
 #--------------------------------------------------------------------------
 # * To Next Level gauge colour 1
 #--------------------------------------------------------------------------
 def tnl_gauge_colour1
   return text_color(3)
 end
 #--------------------------------------------------------------------------
 # * To Next Level gauge colour 2
 #--------------------------------------------------------------------------
  def tnl_gauge_colour2
   return text_color(11)
 end
 #--------------------------------------------------------------------------
 # * Currency Value
 #--------------------------------------------------------------------------
 def draw_currency_value(value, x, y, width)
 cx = contents.text_size(Vocab::gold).width
 self.contents.font.color = normal_color
 self.contents.draw_text(x, y, width, WLH, value, 2)
 self.contents.font.color = system_color
 draw_icon(COZZIEKUNS::ICONS::GOLD, 0, 28)
end
end
#==============================================================================
# ** Window_Location
#------------------------------------------------------------------------------
#  This window displays the location.
#==============================================================================

class Window_Location < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize (x, y)
   super (x, y, 240, WLH + 26)
   refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   text = load_data ("Data/MapInfos.rvdata")[$game_map.map_id].name
   self.contents.draw_text(4, -4, 200, WLH, text, 2)
   draw_icon(COZZIEKUNS::ICONS::LOCATION, 0, -4)
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   super
   if Graphics.frame_count / Graphics.frame_rate != @total_sec
     refresh
   end
 end
end


#==============================================================================
# ** Window_Gold + Time
#------------------------------------------------------------------------------
#  This window displays the amount of gold and playtime.
#==============================================================================

class Window_Gold < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     x : window X coordinate
 #     y : window Y coordinate
 #--------------------------------------------------------------------------
 def initialize(x, y)
   super(x, y, 160, WLH + 56)
   refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   draw_currency_value($game_party.gold, 4, 28, 120)
   @total_sec = Graphics.frame_count / Graphics.frame_rate
   hour = @total_sec / 60 / 60
   min = @total_sec / 60 % 60
   sec = @total_sec % 60
   text = sprintf("%02d:%02d:%02d", hour, min, sec)
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 0, 120, WLH, text, 2)
   self.contents.font.color = system_color
   draw_icon(COZZIEKUNS::ICONS::TIME, 0, 0)
 end
   
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   if Graphics.frame_count / Graphics.frame_rate != @total_sec
     refresh
   end
 end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     menu_index : command cursor's initial position
 #--------------------------------------------------------------------------
 def initialize(menu_index = 0)
   @menu_index = menu_index
 end
 #--------------------------------------------------------------------------
 # * Start processing
 #--------------------------------------------------------------------------
 def start
   super
   create_menu_background
   @status_window = Window_MenuStatus.new(0, 2)
   create_command_window
   @gold_window = Window_Gold.new(384, 289)
   @location_window = Window_Location.new(304, 368)
end
 #--------------------------------------------------------------------------
 # * Termination Processing
 #--------------------------------------------------------------------------
 def terminate
   super
   dispose_menu_background
   @command_window.dispose
   @gold_window.dispose
   @location_window.dispose
   @status_window.dispose
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   super
   update_menu_background
   @command_window.update
   @gold_window.update
   @status_window.update
   @location_window.update
   if @command_window.active
     update_command_selection
   elsif @status_window.active
     update_actor_selection
   end
 end
 #--------------------------------------------------------------------------
 # * Create Command Window
 #--------------------------------------------------------------------------
 def create_command_window
   s1 = Vocab::item
   s2 = Vocab::skill
   s3 = Vocab::equip
   s4 = Vocab::status
   s5 = Vocab::save
   s6 = Vocab::game_end
   @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
   @command_window.index = @menu_index
   @command_window.x = 384
   if $game_party.members.size == 0          # If number of party members is 0
     @command_window.draw_item(0, false)     # Disable item
     @command_window.draw_item(1, false)     # Disable skill
     @command_window.draw_item(2, false)     # Disable equipment
     @command_window.draw_item(3, false)     # Disable status
   end
   if $game_system.save_disabled             # If save is forbidden
     @command_window.draw_item(4, false)     # Disable save
   end
 end
 #--------------------------------------------------------------------------
 # * Update Command Selection
 #--------------------------------------------------------------------------
 def update_command_selection
   if Input.trigger?(Input::B)
     Sound.play_cancel
     $scene = Scene_Map.new
   elsif Input.trigger?(Input::C)
     if $game_party.members.size == 0 and @command_window.index < 4
       Sound.play_buzzer
       return
     elsif $game_system.save_disabled and @command_window.index == 4
       Sound.play_buzzer
       return
     end
     Sound.play_decision
     case @command_window.index
     when 0      # Item
       $scene = Scene_Item.new
     when 1,2,3  # Skill, equipment, status
       start_actor_selection
     when 4      # Save
       $scene = Scene_File.new(true, false, false)
     when 5      # End Game
       $scene = Scene_End.new
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Start Actor Selection
 #--------------------------------------------------------------------------
 def start_actor_selection
   @command_window.active = false
   @status_window.active = true
   if $game_party.last_actor_index < @status_window.item_max
     @status_window.index = $game_party.last_actor_index
   else
     @status_window.index = 0
   end
 end
 #--------------------------------------------------------------------------
 # * End Actor Selection
 #--------------------------------------------------------------------------
 def end_actor_selection
   @command_window.active = true
   @status_window.active = false
   @status_window.index = -1
 end
 #--------------------------------------------------------------------------
 # * Update Actor Selection
 #--------------------------------------------------------------------------
 def update_actor_selection
   if Input.trigger?(Input::B)
     Sound.play_cancel
     end_actor_selection
   elsif Input.trigger?(Input::C)
     $game_party.last_actor_index = @status_window.index
     Sound.play_decision
     case @command_window.index
     when 1  # skill
       $scene = Scene_Skill.new(@status_window.index)
     when 2  # equipment
       $scene = Scene_Equip.new(@status_window.index)
     when 3  # status
       $scene = Scene_Status.new(@status_window.index)
     end
   end
 end
end


(copy this script in a game to understand the layout of my menu...)
In the game that I'm doing there's only one character and I would put in the free space a clock syncronised with London's hour.
How can I put it there? Maybe with a script?
(THX) :)






Zylos

Hm... well, I know how to put in a clock synchronized to your computer's system clock, but not quite sure how to synchronize it to another timezone if you're not already in London. Or does this not matter?




Grafikal

I don't think it would matter.

Deity

Hay,
you have 2 possibilitys which I know.
1. You "connect" to an daytimeserver which is placed in london or give londons time.
2. You research the time difference between your country and london. Then just take the time of the PC and add or sub the diference.

Deity
Greetings
DigiDeity


├Work┤
├Contact┤


cozziekuns

Quote from: Deity on May 09, 2010, 05:17:29 PM
Hay,
you have 2 possibilitys which I know.
1. You "connect" to an daytimeserver which is placed in london or give londons time.
2. You research the time difference between your country and london. Then just take the time of the PC and add or sub the diference.

Deity

People live in different time zones Deity, so I'm afraid option 2 probably wouldn't work if it was going to be released publicly to the world.

Deity

Hay.
You're right cozziekuns but it's still a possibility which would work. ^^
If you would publish the game in some "countrys" you could just ask at the beginning of the game the country and take the specific time diference. It's just much more work. :P

Deity
Greetings
DigiDeity


├Work┤
├Contact┤


cozziekuns

Quote from: Deity on May 09, 2010, 06:15:39 PM
Hay.
You're right cozziekuns but it's still a possibility which would work. ^^
If you would publish the game in some "countrys" you could just ask at the beginning of the game the country and take the specific time diference. It's just much more work. :P

Deity

Wow, never thought of it that way.

Also Blacky, I have a question. Analog or digital?