From 0d3969ba552d8b8b797a8d25e936ad952033678b Mon Sep 17 00:00:00 2001 From: Dr!fter Date: Fri, 13 Nov 2015 16:26:05 -0500 Subject: [PATCH] Fix raw hooks not hooking and a bunch of other bugs with them. Fix Object vectors not being able to be set. --- buildbot/product.version | 2 +- natives.cpp | 9 ++++----- product.version | 2 +- sdk/smsdk_config.h | 2 +- version.h | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/buildbot/product.version b/buildbot/product.version index 6acdb44..26e3379 100644 --- a/buildbot/product.version +++ b/buildbot/product.version @@ -1 +1 @@ -2.0.3 \ No newline at end of file +2.0.4 \ No newline at end of file diff --git a/natives.cpp b/natives.cpp index a8dbed3..0aa95ef 100644 --- a/natives.cpp +++ b/natives.cpp @@ -197,24 +197,23 @@ cell_t Native_HookRaw(IPluginContext *pContext, const cell_t *params) } bool post = params[2] != 0; + void *iface = (void *)(params[3]); for(int i = g_pHooks.size() -1; i >= 0; i--) { DHooksManager *manager = g_pHooks.at(i); - if(manager->callback->hookType == HookType_Raw && manager->callback->offset == setup->offset && manager->callback->post == post && manager->remove_callback == pContext->GetFunctionById(params[3]) && manager->callback->plugin_callback == setup->callback) + if(manager->callback->hookType == HookType_Raw && manager->addr == (intptr_t)iface && manager->callback->offset == setup->offset && manager->callback->post == post && manager->remove_callback == pContext->GetFunctionById(params[4]) && manager->callback->plugin_callback == setup->callback) { return manager->hookid; } } - void *iface = (void *)(params[3]); - if(!iface) { return pContext->ThrowNativeError("Invalid address passed"); } - DHooksManager *manager = new DHooksManager(setup, iface, pContext->GetFunctionById(params[3]), post); + DHooksManager *manager = new DHooksManager(setup, iface, pContext->GetFunctionById(params[4]), post); if(!manager->hookid) { @@ -869,7 +868,7 @@ cell_t Native_SetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t cell_t *buffer; pContext->LocalToPhysAddr(params[5], &buffer); - if((ObjectValueType)params[4] == ObjectValueType_VectorPtr) + if((ObjectValueType)params[4] == ObjectValueType_VectorPtr || (ObjectValueType)params[4] == ObjectValueType_Vector) { Vector *vec; diff --git a/product.version b/product.version index 0c38796..dfccc99 100644 --- a/product.version +++ b/product.version @@ -1 +1 @@ -2.0.3-dev +2.0.4-dev diff --git a/sdk/smsdk_config.h b/sdk/smsdk_config.h index 458401f..ff2f79b 100644 --- a/sdk/smsdk_config.h +++ b/sdk/smsdk_config.h @@ -40,7 +40,7 @@ /* Basic information exposed publicly */ #define SMEXT_CONF_NAME "DHooks" #define SMEXT_CONF_DESCRIPTION "Dynamic Hooks" -#define SMEXT_CONF_VERSION "2.0.3" +#define SMEXT_CONF_VERSION "2.0.4" #define SMEXT_CONF_AUTHOR "AlliedModders" #define SMEXT_CONF_URL "http://www.sourcemod.net/" #define SMEXT_CONF_LOGTAG "DHOOKS" diff --git a/version.h b/version.h index 89f3592..96606cd 100644 --- a/version.h +++ b/version.h @@ -18,7 +18,7 @@ #define SM_BUILD_TAG "-manual" #define SM_BUILD_UNIQUEID "[MANUAL BUILD]" -#define SM_VERSION "2.0.3" +#define SM_VERSION "2.0.4" #define SM_FULL_VERSION SM_VERSION SM_BUILD_TAG #define SM_FILE_VERSION 1,0,0,0