Skip to content

Commit

Permalink
Merge pull request #314 from alliedmodders/tfconds-reducks
Browse files Browse the repository at this point in the history
Pass a handle instead of entptr to ProcessCondChange for stability.
  • Loading branch information
psychonic committed Apr 2, 2015
2 parents 91302da + 38817bd commit ea7d5ad
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions extensions/tf2/conditions.cpp
Expand Up @@ -37,7 +37,7 @@ IForward *g_removeCondForward = NULL;

struct CondChangeData_t
{
CBaseEntity *pPlayer;
CBaseHandle hPlayer;
PlayerConditionsMgr::CondVar var;
int newConds;
};
Expand All @@ -51,10 +51,12 @@ static void HandleCondChange(void *pData)

void PlayerConditionsMgr::ProcessCondChange(CondChangeData_t *pCondData)
{
int client = gamehelpers->EntityToBCompatRef(pCondData->pPlayer);
if (!playerhelpers->GetGamePlayer(client)->IsInGame())
auto *pEdict = gamehelpers->GetHandleEntity(pCondData->hPlayer);
auto *pPlayer = playerhelpers->GetGamePlayer(pEdict);
if (!pPlayer || !pPlayer->IsInGame())
return;

int client = pCondData->hPlayer.GetEntryIndex();
int newConds = 0;
int prevConds = 0;
CondVar var = pCondData->var;
Expand Down Expand Up @@ -109,7 +111,7 @@ static void OnPlayerCondChange(const SendProp *pProp, const void *pStructBase, c
void PlayerConditionsMgr::OnConVarChange(CondVar var, const SendProp *pProp, const void *pStructBase, const void *pData, DVariant *pOut, int iElement, int objectID)
{
auto pCondData = new CondChangeData_t;
pCondData->pPlayer = (CBaseEntity *)((intp)pData - GetPropOffs(var));
pCondData->hPlayer = ((IHandleEntity *)((intp)pData - GetPropOffs(var)))->GetRefEHandle();
pCondData->var = var;
pCondData->newConds = *(int *)pData;

Expand Down

0 comments on commit ea7d5ad

Please sign in to comment.