GetGameHoure is reliable, the game clock graphical display my not get updated but the internal clock is accurate.
If it was not delayed commands would not even work.
But i see no reason to update an integer every hour, just store a time stamp for your starting hour and check it against the current hour to see if 60 hours have passed.
ie.
Store a stamp for the current hour.
int GetHourStamp()
{
return GetTimeHour() + GetCalendarDay()*24 + GetCalendarYear()* 8064;
}
void main()
{
//Set a hour stamp on the module
SetLocalInt(GetModule(), "HourStart" , GetHourStamp());
}
Then you just need to check the current time against the stamp.
int GetHourStamp()
{
return GetTimeHour() + GetCalendarDay()*24 + GetCalendarYear()* 8064;
}
void main()
{
//Pull the hour start from the module.
int nHourStart=GetLocalInt(GetModule(), "HourStart");
if ( GetHourStamp()-nHourStart >60)
{
// code for event happening every 60 hours.
}
}