1.1 --- a/core/smn_convar.cpp Sun Feb 11 00:17:54 2007 +0000
1.2 +++ b/core/smn_convar.cpp Sun Feb 11 11:09:38 2007 +0000
1.3 @@ -25,8 +25,7 @@
1.4 // While the engine seems to accept a blank convar name, it causes a crash upon server quit
1.5 if (name == NULL || strcmp(name, "") == 0)
1.6 {
1.7 - pContext->ThrowNativeError("Null or blank convar name is not allowed.");
1.8 - return BAD_HANDLE;
1.9 + return pContext->ThrowNativeError("Null or blank convar name is not allowed.");
1.10 }
1.11
1.12 pContext->LocalToString(params[2], &defaultVal);
1.13 @@ -55,6 +54,40 @@
1.14 return g_ConVarManager.FindConVar(name);
1.15 }
1.16
1.17 +static cell_t sm_HookConVarChange(IPluginContext *pContext, const cell_t *params)
1.18 +{
1.19 + Handle_t hndl = static_cast<Handle_t>(params[1]);
1.20 + HandleError err;
1.21 + ConVar *cvar;
1.22 +
1.23 + if ((err=g_HandleSys.ReadHandle(hndl, g_ConVarManager.GetHandleType(), NULL, (void **)&cvar))
1.24 + != HandleError_None)
1.25 + {
1.26 + return pContext->ThrowNativeError("Invalid ConVar Handle %x (error %d)", hndl, err);
1.27 + }
1.28 +
1.29 + g_ConVarManager.HookConVarChange(pContext, cvar, static_cast<funcid_t>(params[2]));
1.30 +
1.31 + return 1;
1.32 +}
1.33 +
1.34 +static cell_t sm_UnhookConVarChange(IPluginContext *pContext, const cell_t *params)
1.35 +{
1.36 + Handle_t hndl = static_cast<Handle_t>(params[1]);
1.37 + HandleError err;
1.38 + ConVar *cvar;
1.39 +
1.40 + if ((err=g_HandleSys.ReadHandle(hndl, g_ConVarManager.GetHandleType(), NULL, (void **)&cvar))
1.41 + != HandleError_None)
1.42 + {
1.43 + return pContext->ThrowNativeError("Invalid ConVar Handle %x (error %d)", hndl, err);
1.44 + }
1.45 +
1.46 + g_ConVarManager.UnhookConVarChange(pContext, cvar, static_cast<funcid_t>(params[2]));
1.47 +
1.48 + return 1;
1.49 +}
1.50 +
1.51 static cell_t sm_GetConVarBool(IPluginContext *pContext, const cell_t *params)
1.52 {
1.53 Handle_t hndl = static_cast<Handle_t>(params[1]);
1.54 @@ -255,6 +288,23 @@
1.55 return hasMax;
1.56 }
1.57
1.58 +static cell_t sm_GetConVarName(IPluginContext *pContext, const cell_t *params)
1.59 +{
1.60 + Handle_t hndl = static_cast<Handle_t>(params[1]);
1.61 + HandleError err;
1.62 + ConVar *cvar;
1.63 +
1.64 + if ((err=g_HandleSys.ReadHandle(hndl, g_ConVarManager.GetHandleType(), NULL, (void **)&cvar))
1.65 + != HandleError_None)
1.66 + {
1.67 + return pContext->ThrowNativeError("Invalid ConVar Handle %x (error %d)", hndl, err);
1.68 + }
1.69 +
1.70 + pContext->StringToLocalUTF8(params[2], params[3], cvar->GetName(), NULL);
1.71 +
1.72 + return 1;
1.73 +}
1.74 +
1.75 static cell_t sm_ResetConVar(IPluginContext *pContext, const cell_t *params)
1.76 {
1.77 Handle_t hndl = static_cast<Handle_t>(params[1]);
1.78 @@ -274,20 +324,23 @@
1.79
1.80 REGISTER_NATIVES(convarNatives)
1.81 {
1.82 - {"CreateConVar", sm_CreateConVar},
1.83 - {"FindConVar", sm_FindConVar},
1.84 - {"GetConVarBool", sm_GetConVarBool},
1.85 - {"SetConVarBool", sm_SetConVarNum},
1.86 - {"GetConVarInt", sm_GetConVarInt},
1.87 - {"SetConVarInt", sm_SetConVarNum},
1.88 - {"GetConVarFloat", sm_GetConVarFloat},
1.89 - {"SetConVarFloat", sm_SetConVarFloat},
1.90 - {"GetConVarString", sm_GetConVarString},
1.91 - {"SetConVarString", sm_SetConVarString},
1.92 - {"GetConVarFlags", sm_GetConVarFlags},
1.93 - {"SetConVarFlags", sm_SetConVarFlags},
1.94 - {"GetConVarMin", sm_GetConVarMin},
1.95 - {"GetConVarMax", sm_GetConVarMax},
1.96 - {"ResetConVar", sm_ResetConVar},
1.97 - {NULL, NULL}
1.98 + {"CreateConVar", sm_CreateConVar},
1.99 + {"FindConVar", sm_FindConVar},
1.100 + {"HookConVarChange", sm_HookConVarChange},
1.101 + {"UnhookConVarChange", sm_UnhookConVarChange},
1.102 + {"GetConVarBool", sm_GetConVarBool},
1.103 + {"SetConVarBool", sm_SetConVarNum},
1.104 + {"GetConVarInt", sm_GetConVarInt},
1.105 + {"SetConVarInt", sm_SetConVarNum},
1.106 + {"GetConVarFloat", sm_GetConVarFloat},
1.107 + {"SetConVarFloat", sm_SetConVarFloat},
1.108 + {"GetConVarString", sm_GetConVarString},
1.109 + {"SetConVarString", sm_SetConVarString},
1.110 + {"GetConVarFlags", sm_GetConVarFlags},
1.111 + {"SetConVarFlags", sm_SetConVarFlags},
1.112 + {"GetConVarName", sm_GetConVarName},
1.113 + {"GetConVarMin", sm_GetConVarMin},
1.114 + {"GetConVarMax", sm_GetConVarMax},
1.115 + {"ResetConVar", sm_ResetConVar},
1.116 + {NULL, NULL}
1.117 };