diff --git a/core/logic/smn_core.cpp b/core/logic/smn_core.cpp index 490a6a00da..3b0fdf8a28 100644 --- a/core/logic/smn_core.cpp +++ b/core/logic/smn_core.cpp @@ -260,8 +260,17 @@ static cell_t FormatTime(IPluginContext *pContext, const cell_t *params) #ifdef PLATFORM_WINDOWS InvalidParameterHandler p; #endif - t = (params[4] == -1) ? g_pSM->GetAdjustedTime() : (time_t)params[4]; - written = strftime(buffer, params[2], format, localtime(&t)); + // Older plugins dont have param[5] + if (params[0] < 5 || params[5]) + { + t = (params[4] == -1) ? g_pSM->GetAdjustedTime() : (time_t)params[4]; + written = strftime(buffer, params[2], format, localtime(&t)); + } + else + { + t = (params[4] == -1) ? time(NULL) : (time_t)params[4]; + written = strftime(buffer, params[2], format, gmtime(&t)); + } } if (params[2] && format[0] != '\0' && !written) diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc index 1a704bd933..80b7613c0d 100644 --- a/plugins/include/sourcemod.inc +++ b/plugins/include/sourcemod.inc @@ -407,9 +407,11 @@ native int GetTime(int bigStamp[2]={0,0}); * @param maxlength Maximum length of output string buffer. * @param format Formatting rules (passing NULL_STRING will use the rules defined in sm_datetime_format). * @param stamp Optional time stamp. + * @param adjust If true, formatting will adjust for the local timezone and sm_time_adjustment value. + * If false, the time will be formatted for UTC/GMT. * @error Buffer too small or invalid time format. */ -native void FormatTime(char[] buffer, int maxlength, const char[] format, int stamp=-1); +native void FormatTime(char[] buffer, int maxlength, const char[] format, int stamp=-1, bool adjust=true); /** * Loads a game config file.