diff -r 5579fb7db416 -r ca0e525dcf86 extensions/sdktools/vglobals.cpp --- a/extensions/sdktools/vglobals.cpp Mon Apr 04 13:37:29 2011 -0400 +++ b/extensions/sdktools/vglobals.cpp Mon Apr 04 13:44:19 2011 -0400 @@ -39,29 +39,28 @@ { g_EntList = gamehelpers->GetGlobalEntityList(); - char *addr; + /* + * g_pGameRules + * + * First try to lookup pointer directly for platforms with symbols. + * If symbols aren't present (Windows or stripped Linux/Mac), + * attempt find via CreateGameRulesObject + offset + */ -#ifdef PLATFORM_WINDOWS - /* g_pGameRules */ - if (!g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) || !addr) - { - return; - } - - int offset; - if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset) + char *addr; + if (g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) && addr) { - return; + g_pGameRules = reinterpret_cast(addr); } - g_pGameRules = *reinterpret_cast(addr + offset); -#elif defined PLATFORM_LINUX || defined PLATFORM_APPLE - /* g_pGameRules */ - if (!g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) || !addr) + else if (g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) && addr) { - return; + int offset; + if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset) + { + return; + } + g_pGameRules = *reinterpret_cast(addr + offset); } - g_pGameRules = reinterpret_cast(addr); -#endif } size_t UTIL_StringToSignature(const char *str, char buffer[], size_t maxlength)