Fix incorrect assignment in SDKHook_TakeDamage + cleanup (bug 5911, r=psychonic).
This commit is contained in:
parent
cb128162e6
commit
3308f0644c
@ -116,7 +116,7 @@ cell_t Native_TakeDamage(IPluginContext *pContext, const cell_t *params)
|
|||||||
if (!pInflictor)
|
if (!pInflictor)
|
||||||
return pContext->ThrowNativeError("Invalid entity index %d for inflictor", params[2]);
|
return pContext->ThrowNativeError("Invalid entity index %d for inflictor", params[2]);
|
||||||
|
|
||||||
CBaseEntity *pAttacker = NULL;
|
CBaseEntity *pAttacker;
|
||||||
if (params[3] != -1)
|
if (params[3] != -1)
|
||||||
{
|
{
|
||||||
pAttacker = UTIL_GetCBaseEntity(params[3]);
|
pAttacker = UTIL_GetCBaseEntity(params[3]);
|
||||||
@ -125,21 +125,28 @@ cell_t Native_TakeDamage(IPluginContext *pContext, const cell_t *params)
|
|||||||
return pContext->ThrowNativeError("Invalid entity index %d for attackerr", params[3]);
|
return pContext->ThrowNativeError("Invalid entity index %d for attackerr", params[3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pAttacker = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
float flDamage = sp_ctof(params[4]);
|
float flDamage = sp_ctof(params[4]);
|
||||||
int iDamageType = params[5];
|
int iDamageType = params[5];
|
||||||
|
|
||||||
CBaseEntity *pWeapon = NULL;
|
CBaseEntity *pWeapon;
|
||||||
if (params[6] != -1)
|
if (params[6] != -1)
|
||||||
{
|
{
|
||||||
pAttacker = UTIL_GetCBaseEntity(params[6]);
|
pWeapon = UTIL_GetCBaseEntity(params[6]);
|
||||||
if (!pAttacker)
|
if (!pWeapon)
|
||||||
{
|
{
|
||||||
return pContext->ThrowNativeError("Invalid entity index %d for weapon", params[6]);
|
return pContext->ThrowNativeError("Invalid entity index %d for weapon", params[6]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pWeapon = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Vector vecDamageForce = Vector(0.0f, 0.0f, 0.0f);
|
|
||||||
cell_t *addr;
|
cell_t *addr;
|
||||||
int err;
|
int err;
|
||||||
if ((err = pContext->LocalToPhysAddr(params[7], &addr)) != SP_ERROR_NONE)
|
if ((err = pContext->LocalToPhysAddr(params[7], &addr)) != SP_ERROR_NONE)
|
||||||
@ -147,26 +154,29 @@ cell_t Native_TakeDamage(IPluginContext *pContext, const cell_t *params)
|
|||||||
return pContext->ThrowNativeError("Could not read damageForce vector");
|
return pContext->ThrowNativeError("Could not read damageForce vector");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector vecDamageForce;
|
||||||
if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
|
if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
|
||||||
{
|
{
|
||||||
vecDamageForce = Vector(
|
vecDamageForce.Init(sp_ctof(addr[0]), sp_ctof(addr[1]), sp_ctof(addr[2]));
|
||||||
sp_ctof(addr[0]),
|
}
|
||||||
sp_ctof(addr[1]),
|
else
|
||||||
sp_ctof(addr[2]));
|
{
|
||||||
|
vecDamageForce.Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector vecDamagePosition = vec3_origin;
|
|
||||||
if ((err = pContext->LocalToPhysAddr(params[8], &addr)) != SP_ERROR_NONE)
|
if ((err = pContext->LocalToPhysAddr(params[8], &addr)) != SP_ERROR_NONE)
|
||||||
{
|
{
|
||||||
return pContext->ThrowNativeError("Could not read damagePosition vector");
|
return pContext->ThrowNativeError("Could not read damagePosition vector");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector vecDamagePosition;
|
||||||
if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
|
if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
|
||||||
{
|
{
|
||||||
vecDamagePosition = Vector(
|
vecDamagePosition.Init(sp_ctof(addr[0]), sp_ctof(addr[1]), sp_ctof(addr[2]));
|
||||||
sp_ctof(addr[0]),
|
}
|
||||||
sp_ctof(addr[1]),
|
else
|
||||||
sp_ctof(addr[2]));
|
{
|
||||||
|
vecDamagePosition = vec3_origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
CTakeDamageInfoHack info(pInflictor, pAttacker, flDamage, iDamageType, pWeapon, vecDamageForce, vecDamagePosition);
|
CTakeDamageInfoHack info(pInflictor, pAttacker, flDamage, iDamageType, pWeapon, vecDamageForce, vecDamagePosition);
|
||||||
|
Loading…
Reference in New Issue
Block a user