From a0dff2c8ed70af1754f58d2fc38a51f32ff4a1c6 Mon Sep 17 00:00:00 2001 From: sirdigbot Date: Thu, 11 Aug 2022 15:59:49 +1000 Subject: [PATCH 1/2] Add utc option to FormatTime --- core/logic/smn_core.cpp | 12 ++++++++++-- plugins/include/sourcemod.inc | 4 +++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/logic/smn_core.cpp b/core/logic/smn_core.cpp index 490a6a00da..03ef688508 100644 --- a/core/logic/smn_core.cpp +++ b/core/logic/smn_core.cpp @@ -260,8 +260,16 @@ 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)); + if (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. From 5ef3a3c964c49cd34064ae740ccb0d264109c33c Mon Sep 17 00:00:00 2001 From: sirdigbot Date: Mon, 10 Apr 2023 13:29:10 +1000 Subject: [PATCH 2/2] Fix old plugin compatibility --- core/logic/smn_core.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/logic/smn_core.cpp b/core/logic/smn_core.cpp index 03ef688508..3b0fdf8a28 100644 --- a/core/logic/smn_core.cpp +++ b/core/logic/smn_core.cpp @@ -260,7 +260,8 @@ static cell_t FormatTime(IPluginContext *pContext, const cell_t *params) #ifdef PLATFORM_WINDOWS InvalidParameterHandler p; #endif - if (params[5]) + // 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));