diff --git a/include/core.h b/include/core.h index 1ced32f..ef9f421 100644 --- a/include/core.h +++ b/include/core.h @@ -140,15 +140,16 @@ public: return m_ptr; } - void *GetFunctionAddr (const char *functionName) + + template R GetFuncAddr (const char *function) { if (!IsLoaded ()) return NULL; #ifdef PLATFORM_WIN32 - return GetProcAddress ((HMODULE) m_ptr, functionName); + return reinterpret_cast (GetProcAddress (static_cast (m_ptr), function)); #else - return dlsym (m_ptr, functionName); + return reinterpret_cast (dlsym (m_ptr, function)); #endif } diff --git a/source/interface.cpp b/source/interface.cpp index 5bfc065..3de3f52 100644 --- a/source/interface.cpp +++ b/source/interface.cpp @@ -3105,10 +3105,10 @@ DLL_GIVEFNPTRSTODLL GiveFnptrsToDll (enginefuncs_t *functionTable, globalvars_t else AddLogEntry (true, LL_FATAL | LL_IGNORE, "Mod that you has started, not supported by this bot (gamedir: %s)", GetModName ()); - g_funcPointers = (FuncPointers_t) g_gameLib->GetFunctionAddr ("GiveFnptrsToDll"); - g_entityAPI = (EntityAPI_t) g_gameLib->GetFunctionAddr ("GetEntityAPI"); - g_getNewEntityAPI = (NewEntityAPI_t) g_gameLib->GetFunctionAddr ("GetNewDLLFunctions"); - g_serverBlendingAPI = (BlendAPI_t) g_gameLib->GetFunctionAddr ("Server_GetBlendingInterface"); + g_funcPointers = g_gameLib->GetFuncAddr ("GiveFnptrsToDll"); + g_entityAPI = g_gameLib->GetFuncAddr ("GetEntityAPI"); + g_getNewEntityAPI = g_gameLib->GetFuncAddr ("GetNewDLLFunctions"); + g_serverBlendingAPI = g_gameLib->GetFuncAddr ("Server_GetBlendingInterface"); if (!g_funcPointers || !g_entityAPI) TerminateOnMalloc (); @@ -3189,7 +3189,7 @@ export void entityFunction (entvars_t *pev) \ static EntityPtr_t entity_addr = NULL; \ \ if (entity_addr == NULL) \ - entity_addr = reinterpret_cast (g_gameLib->GetFunctionAddr (#entityFunction)); \ + entity_addr = g_gameLib->GetFuncAddr (#entityFunction); \ \ if (entity_addr == NULL) \ return; \ diff --git a/source/manager.cpp b/source/manager.cpp index aa349f7..a1f8d5e 100644 --- a/source/manager.cpp +++ b/source/manager.cpp @@ -100,7 +100,7 @@ void BotManager::CallGameEntity (entvars_t *vars) static EntityPtr_t playerFunction = NULL; if (playerFunction == NULL) - playerFunction = (EntityPtr_t) g_gameLib->GetFunctionAddr ("player"); + playerFunction = g_gameLib->GetFuncAddr ("player"); if (playerFunction != NULL) (*playerFunction) (vars);