Lore archive · Warcraft Wiki, 2023 dump
GameTime:Get
Last wiki revision 2008-08-02
This is an ultra-lite library for retrieving server time in second + millisecond precision. It will stay at hour+minute precision for the first minute played, but will be accurate after that.
hour, minute, second = <PREFIX>_GameTime:Get
- hour, minute, second
- hour : Integer number 0-59
- minute : Integer number 0-59
- second : Floating-point number with (theoretically) millisecond precision.
Note that the actual precision is limited by your framerate. With 50FPS, the precision will be 1/50=0,02.
- The code creates an invisible frame that measures when GetGameTime moves into a new minute in an <OnUpdate> handler, and uses GetTime to offset seconds/milliseconds from when it last happened. Obviously, it cannot return second precision until this has happened the first time.
<PREFIX>_GameTime = { --- -- function <PREFIX>_GameTime:Get -- -- Return game time as (h,m,s) where s has 3 decimals of -- precision (though it's only likely to be precise down -- to ~20th of seconds since we're dependent on frame -- refreshrate). -- -- During the first minute of play, the seconds will -- consistenly be "00", since we haven't observed any -- minute changes yet. -- -- Get = function(self) if(self.LastMinuteTimer == nil) then local h,m = GetGameTime; return h,m,0; end local s = GetTime - self.LastMinuteTimer; if(s>59.999) then s=59.999; end return self.LastGameHour, self.LastGameMinute, s; end, --- -- function <PREFIX>_GameTime:OnUpdate -- -- Called by: Private frame <OnUpdate> handler -- -- Construct high precision server time by polling for -- server minute changes and remembering GetTime when it -- last did -- OnUpdate = function(self) local h,m = GetGameTime; if(self.LastGameMinute == nil) then self.LastGameHour = h; self.LastGameMinute = m; return; end if(self.LastGameMinute == m) then return; end self.LastGameHour = h; self.LastGameMinute = m; self.LastMinuteTimer = GetTime; end, --- -- function <PREFIX>_GameTime:Initialize -- -- Create frame to pulse OnUpdate for us -- Initialize = function(self) self.Frame = CreateFrame("Frame"); self.Frame:SetScript("OnUpdate", function self:OnUpdate; end); end } <PREFIX>_GameTime:Initialize;
Categories
- User defined functions
Source
https://warcraft.wiki.gg/wiki/GameTime:Get · retrieved 2023-11-13 · CC BY-SA 4.0
Converted from wikitext with templates, tables and images removed, so some sentences may be missing values.
This archive predates WoW: Forever. For collected gameplay facts see the Forever database. Search the archive.