diff options
Diffstat (limited to 'src/kvsys.c')
| -rw-r--r-- | src/kvsys.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/kvsys.c b/src/kvsys.c index 25a6672..32e9906 100644 --- a/src/kvsys.c +++ b/src/kvsys.c @@ -70,8 +70,9 @@ void kvsys_free(struct KeyValues *kv) { // We can suppress this by catching the message string that's passed from // engine.dll to gameui.dll through KeyValuesSystem in vstdlib.dll and just // replacing it with some other arbitrary string that gameui won't match. -static GetStringForSymbol_func orig_GetStringForSymbol = 0; -static const char *VCALLCONV hook_GetStringForSymbol(void *this, int s) { +DEF_VTABLE_HOOK(GetStringForSymbol_func, GetStringForSymbol) +static const char *VCALLCONV hookdest_GetStringForSymbol( + struct IKeyValuesSystem *this, int s) { const char *ret = orig_GetStringForSymbol(this, s); if (!strcmp(ret, "OnClientPluginWarning")) ret = "sstBlockedThisEvent"; return ret; @@ -108,9 +109,8 @@ INIT { errmsg_note("won't be able to prevent any nag messages"); } else { - orig_GetStringForSymbol = (GetStringForSymbol_func)hook_vtable( - vtable, vtidx_GetStringForSymbol, - (void *)hook_GetStringForSymbol); + hook_GetStringForSymbol(vtable, vtidx_GetStringForSymbol, + &hookdest_GetStringForSymbol); } } return FEAT_OK; @@ -118,8 +118,7 @@ INIT { END { if (orig_GetStringForSymbol) { - unhook_vtable(kvs->vtable, vtidx_GetStringForSymbol, - (void *)orig_GetStringForSymbol); + unhook_GetStringForSymbol(kvs->vtable, vtidx_GetStringForSymbol); } } |
