From 6f16fc77b853cc7b8151d82332d6f0d20b13b4b7 Mon Sep 17 00:00:00 2001 From: Scott Ehlert Date: Tue, 6 Jul 2010 17:32:58 -0500 Subject: [PATCH] Added GetConVarDefault() native (bug 4502, r=dvander). --- core/smn_console.cpp | 19 +++++++++++++++++++ plugins/include/console.inc | 11 +++++++++++ 2 files changed, 30 insertions(+) diff --git a/core/smn_console.cpp b/core/smn_console.cpp index 186a2a0c..9e9e458f 100644 --- a/core/smn_console.cpp +++ b/core/smn_console.cpp @@ -509,6 +509,24 @@ static cell_t sm_ResetConVar(IPluginContext *pContext, const cell_t *params) return 1; } +static cell_t GetConVarDefault(IPluginContext *pContext, const cell_t *params) +{ + Handle_t hndl = static_cast(params[1]); + HandleError err; + ConVar *pConVar; + + if ((err=g_ConVarManager.ReadConVarHandle(hndl, &pConVar)) + != HandleError_None) + { + return pContext->ThrowNativeError("Invalid convar handle %x (error %d)", hndl, err); + } + + size_t bytes; + pContext->StringToLocalUTF8(params[2], params[3], pConVar->GetDefault(), &bytes); + + return bytes; +} + static cell_t sm_GetConVarFlags(IPluginContext *pContext, const cell_t *params) { Handle_t hndl = static_cast(params[1]); @@ -1406,6 +1424,7 @@ REGISTER_NATIVES(consoleNatives) {"GetConVarBounds", sm_GetConVarBounds}, {"SetConVarBounds", sm_SetConVarBounds}, {"QueryClientConVar", sm_QueryClientConVar}, + {"GetConVarDefault", GetConVarDefault}, {"RegServerCmd", sm_RegServerCmd}, {"RegConsoleCmd", sm_RegConsoleCmd}, {"GetCmdArgString", sm_GetCmdArgString}, diff --git a/plugins/include/console.inc b/plugins/include/console.inc index 9e8b9138..b5dddc31 100644 --- a/plugins/include/console.inc +++ b/plugins/include/console.inc @@ -593,6 +593,17 @@ native SetConVarString(Handle:convar, const String:value[], bool:replicate=false */ native ResetConVar(Handle:convar, bool:replicate=false, bool:notify=false); +/** + * Retrieves the default string value of a console variable. + * + * @param convar Handle to the convar. + * @param default Buffer to store the default value of the convar. + * @param maxlength Maximum length of string buffer. + * @return Number of bytes written to the buffer (UTF-8 safe). + * @error Invalid or corrupt Handle. + */ +native GetConVarDefault(Handle:convar, String:default[], maxlength); + /** * Returns the bitstring of flags on a console variable. *