RMXP and RMVX has a built-in Time function that allows the display of the current date and time (based on the system clock). I found this by accident while sifting through the Help file - actually while searching for Bitmap and Sprite management - and after some experimentation discovered how to place it in windows.
To use it, there are two functions to be aware of:
Time.now
This reads the current time and date from the system clock.
strftime("%I:%M:%S %p")
This converts the time into a string, using the time of day (in 12-hour format), minutes and seconds, as well as showing AM/PM.
So to add the time and date, we can add the following:
t = Time.now
time = t.strftime("%I:%M:%S %p")
date = t.strftime("%a, %d %b, %Y")
What this will do is store the time/date stamp format into variables and convert them to strings so that they can then be "drawn" in a window.
In RMXP, the following script can be used to replace the default. In RMVX, create a new script called
Window_PlayTime:
#==============================================================================
# ** Window_PlayTime
#------------------------------------------------------------------------------
# This window displays play time on the menu screen.
#==============================================================================
class Window_PlayTime < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 16
t = Time.now
time = t.strftime("%I:%M:%S %p")
date = t.strftime("%a, %d %b, %Y")
self.contents.font.color = normal_color
self.contents.draw_text(0, -2, 140, WLH, date, 1)
self.contents.draw_text(0, 14, 140, WLH, time, 1)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
RMXP will display the replacement time/date in the default "Play Time" window on the menu status.
To make this work in RMVX, add the following to
Scene_Menu:
In the
start definition routine, add
@window_playtime = Window_PlayTime.new
@window_playtime.x = X
@window_playtime.y = Y
where
X and
Y are the x- and y-coordinates for the window placement.
Add the following to the
terminate definition routine:
@window_playtime.dispose
This is to ensure that the window doesn't stay onscreen when the status menu has been exited.
And finally, add the following to the
update definition routine:
@window_playtime.update
This is to ensure that the time refreshes every second while on the status menu.
The resultant "Play Time" window should now contain the current time and date, thus:
Tue, 19 May, 2009
12:33:22 PM
And that's it, but the
strftime element does have a number of different format options, which I'll detail in the next entry.