Eliminate need for FindEntityByClassname gamedata on sdk2013 and soon css/dods/hl2dm (already on tf2).

This commit is contained in:
Nicholas Hastings 2014-10-30 19:25:26 -04:00
parent 749701014d
commit f0dd129344

View File

@ -714,7 +714,7 @@ static cell_t GetClientEyeAngles(IPluginContext *pContext, const cell_t *params)
return got_angles ? 1 : 0;
}
#if SOURCE_ENGINE >= SE_ORANGEBOX && SOURCE_ENGINE != SE_TF2
#if SOURCE_ENGINE >= SE_ORANGEBOX
static cell_t NativeFindEntityByClassname(IPluginContext *pContext, const cell_t *params)
{
char *searchname;
@ -793,25 +793,35 @@ static cell_t NativeFindEntityByClassname(IPluginContext *pContext, const cell_t
static cell_t FindEntityByClassname(IPluginContext *pContext, const cell_t *params)
{
#if SOURCE_ENGINE == SE_TF2
CBaseEntity *pStartEnt = NULL;
if (params[1] != -1)
#if SOURCE_ENGINE == SE_TF2 \
|| SOURCE_ENGINE == SE_DODS \
|| SOURCE_ENGINE == SE_HL2DM \
|| SOURCE_ENGINE == SE_CSS \
|| SOURCE_ENGINE == SE_SDK2013
static bool bHasServerTools3 = !!g_SMAPI->GetServerFactory(false)("VSERVERTOOLS003", nullptr);
if (bHasServerTools3)
{
pStartEnt = gamehelpers->ReferenceToEntity(params[1]);
if (!pStartEnt)
CBaseEntity *pStartEnt = NULL;
if (params[1] != -1)
{
return pContext->ThrowNativeError("Entity %d (%d) is invalid",
gamehelpers->ReferenceToIndex(params[1]),
params[1]);
pStartEnt = gamehelpers->ReferenceToEntity(params[1]);
if (!pStartEnt)
{
return pContext->ThrowNativeError("Entity %d (%d) is invalid",
gamehelpers->ReferenceToIndex(params[1]),
params[1]);
}
}
char *searchname;
pContext->LocalToString(params[2], &searchname);
CBaseEntity *pEntity = servertools->FindEntityByClassname(pStartEnt, searchname);
return gamehelpers->EntityToBCompatRef(pEntity);
}
#endif
char *searchname;
pContext->LocalToString(params[2], &searchname);
CBaseEntity *pEntity = servertools->FindEntityByClassname(pStartEnt, searchname);
return gamehelpers->EntityToBCompatRef(pEntity);
#else
static ValveCall *pCall = NULL;
static bool bProbablyNoFEBC = false;
@ -869,7 +879,6 @@ static cell_t FindEntityByClassname(IPluginContext *pContext, const cell_t *para
FINISH_CALL_SIMPLE(&pEntity);
return gamehelpers->EntityToBCompatRef(pEntity);
#endif // == TF2
}
#if SOURCE_ENGINE >= SE_ORANGEBOX