From 4532b8a38d28ff792cddf01ab2f3e0c46a51ad42 Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Mon, 23 Jun 2014 16:23:49 -0400 Subject: [PATCH] Update TF2_IsHolidayActive native to virtually call gamerules IsHolidayActive. --- extensions/tf2/natives.cpp | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/extensions/tf2/natives.cpp b/extensions/tf2/natives.cpp index 0f2a7133..36d808d9 100644 --- a/extensions/tf2/natives.cpp +++ b/extensions/tf2/natives.cpp @@ -555,19 +555,27 @@ cell_t TF2_IsHolidayActive(IPluginContext *pContext, const cell_t *params) { static ICallWrapper *pWrapper = NULL; - // UTIL_IsHolidayActive(int) + // CTFGameRules::IsHolidayActive(int) if (!pWrapper) { - REGISTER_NATIVE_ADDR("IsHolidayActive", - PassInfo pass[1]; \ - pass[0].flags = PASSFLAG_BYVAL; \ - pass[0].size = sizeof(int); \ - pass[0].type = PassType_Basic; \ - PassInfo ret; \ - ret.flags = PASSFLAG_BYVAL; \ - ret.size = sizeof(bool); \ - ret.type = PassType_Basic; \ - pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &ret, pass, 1)) + int offset; + if (!g_pGameConf->GetOffset("IsHolidayActive", &offset)) + { + return pContext->ThrowNativeError("Failed to locate function"); + } + + PassInfo pass[1]; + pass[0].flags = PASSFLAG_BYVAL; + pass[0].size = sizeof(int); + pass[0].type = PassType_Basic; + PassInfo ret; + ret.flags = PASSFLAG_BYVAL; + ret.size = sizeof(bool); + ret.type = PassType_Basic; + + pWrapper = g_pBinTools->CreateVCall(offset, 0, 0, &ret, pass, 1); + + g_RegNatives.Register(pWrapper); } unsigned char vstk[sizeof(int)];