Use EHANDLE

This commit is contained in:
mittorn 2016-03-23 16:11:21 +06:00
parent 66762b3ac4
commit 846b9e94cf
1 changed files with 32 additions and 30 deletions

View File

@ -96,8 +96,8 @@ public:
virtual void Killed(entvars_t *pevAttacker, int iGib);
virtual CBaseEntity * TouchGravGun( CBaseEntity *attacker )
{
m_owner2 = attacker->edict();
m_attacker = attacker->edict();
m_owner2 = attacker;
m_attacker = attacker;
return attacker;
}
void CheckRotate();
@ -138,13 +138,13 @@ public:
Vector spawnOrigin;
Vector spawnAngles;
edict_t *m_owner2;
edict_t *m_attacker;
EHANDLE m_owner2;
EHANDLE m_attacker;
float m_flNextAttack;
float m_flRespawnTime;
PropShape m_shape;
PropShape m_oldshape;
CBasePlayer *m_pHolstered;
EHANDLE m_pHolstered;
float m_flSpawnHealth;
int m_idShard;
float m_angle;
@ -570,8 +570,8 @@ void CProp::Die( void )
if ( Explodable() && (m_attacker != NULL) )
{
ExplosionCreate( pev->origin, pev->angles, m_attacker, ExplosionMagnitude(), FALSE );
RadiusDamage ( pev->origin, pev, VARS(m_attacker), ExplosionMagnitude(), ExplosionMagnitude() * 2.5 , CLASS_NONE, DMG_BLAST );
ExplosionCreate( pev->origin, pev->angles, m_attacker->edict(), ExplosionMagnitude(), FALSE );
RadiusDamage ( pev->origin, pev, m_attacker->pev, ExplosionMagnitude(), ExplosionMagnitude() * 2.5 , CLASS_NONE, DMG_BLAST );
}
UTIL_SetSize(pev, Vector( 0, 0, 0), Vector(0, 0, 0) );
}
@ -592,24 +592,25 @@ void CProp::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType,
{
if( pev->health <= 0)
return;
if (m_owner2 != pActivator->edict())
if (m_owner2 != pActivator)
{
if (pev->velocity.Length() < 100 && pActivator->IsPlayer())
{
m_owner2 = m_attacker = pActivator->edict();
m_owner2 = m_attacker = pActivator;
}
else
return;
}
if( pActivator->IsPlayer() )
{
m_pHolstered = (CBasePlayer *) pActivator;
if( m_pHolstered )
m_pHolstered = pActivator;
CBasePlayer *player = (CBasePlayer*)pActivator;
if( player )
{
if ( m_pHolstered->m_pActiveItem )
if ( player->m_pActiveItem )
{
CBasePlayerWeapon *weapon = (CBasePlayerWeapon *) m_pHolstered->m_pActiveItem->GetWeaponPtr();
CBasePlayerWeapon *weapon = (CBasePlayerWeapon *) player->m_pActiveItem->GetWeaponPtr();
//m_Holstered->m_pActiveItem->Holster(); // strange bug here. ValveWHY?
@ -620,18 +621,18 @@ void CProp::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType,
weapon->m_flNextPrimaryAttack += 0.1;
weapon->m_flNextSecondaryAttack += 0.1;
}
m_pHolstered->m_iHideHUD |= HIDEHUD_WEAPONS;
m_pHolstered->pev->weaponmodel = 0;
m_pHolstered->pev->viewmodel = 0;
player->m_iHideHUD |= HIDEHUD_WEAPONS;
player->pev->weaponmodel = 0;
player->pev->viewmodel = 0;
}
SetThink( &CProp::DeployThink );
pev->nextthink = gpGlobals->time + 0.2;
}
}
Vector target = pActivator->pev->origin + UTIL_GetAimVector(m_owner2, 1000) * 50;
Vector target = pActivator->pev->origin + UTIL_GetAimVector(m_owner2->edict(), 1000) * 50;
target.z = target.z + 32;
pev->velocity = (target - VecBModelOrigin(pev)) * 10;
Vector atarget = UTIL_VecToAngles(UTIL_GetAimVector(m_owner2, 1000));
Vector atarget = UTIL_VecToAngles(UTIL_GetAimVector(m_owner2->edict(), 1000));
pev->angles.x = UTIL_AngleMod(pev->angles.x);
pev->angles.y = UTIL_AngleMod(pev->angles.y);
pev->angles.z = UTIL_AngleMod(pev->angles.z);
@ -644,7 +645,7 @@ void CProp::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType,
//pev->angles.z += (0 - pev->angles.z) * 0.06;
if ((pActivator->pev->button & (IN_ATTACK)))
{
pev->velocity = UTIL_GetAimVector(m_owner2, 1000) * 1000;
pev->velocity = UTIL_GetAimVector(m_owner2->edict(), 1000) * 1000;
pev->avelocity.y = pev->avelocity.y*1.5 + RANDOM_FLOAT(100, -100);
pev->avelocity.x = pev->avelocity.x*1.5 + RANDOM_FLOAT(100, -100);
//pev->avelocity.z = pev->avelocity.z*0.5 + RANDOM_FLOAT ( 100, -100 );
@ -663,17 +664,17 @@ void CProp::Force(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useTyp
{
if( pev->health <= 0 )
return;
if (m_owner2 != pActivator->edict())
if (m_owner2 != pActivator)
{
if (pev->velocity.Length() < 100 && pActivator->IsPlayer())
m_attacker = pActivator->edict();
m_attacker = pActivator;
else
return;
}
if ((pActivator->pev->button & (IN_ATTACK)))
{
pev->velocity = UTIL_GetAimVector(m_owner2, 3000) * 1000;
pev->velocity = UTIL_GetAimVector(m_owner2->edict(), 3000) * 1000;
pev->avelocity.y = pev->avelocity.y*1.5 + RANDOM_FLOAT(100, -100);
pev->avelocity.x = pev->avelocity.x*1.5 + RANDOM_FLOAT(100, -100);
//pev->avelocity.z = pev->avelocity.z*0.5 + RANDOM_FLOAT ( 100, -100 );
@ -745,17 +746,18 @@ void CProp::DeployThink( void )
{
if( m_pHolstered )
{
if( m_pHolstered->m_pActiveItem )
CBasePlayer *player = (CBasePlayer *)(CBaseEntity*)m_pHolstered;
if( player->m_pActiveItem )
{
m_pHolstered->m_pActiveItem->Deploy();
CBasePlayerWeapon *weapon = (CBasePlayerWeapon *) m_pHolstered->m_pActiveItem->GetWeaponPtr();
player->m_pActiveItem->Deploy();
CBasePlayerWeapon *weapon = (CBasePlayerWeapon *) player->m_pActiveItem->GetWeaponPtr();
if( weapon )
{
weapon->m_flNextPrimaryAttack = 0;
weapon->m_flNextSecondaryAttack = 0;
}
}
m_pHolstered ->m_iHideHUD &= ~HIDEHUD_WEAPONS;
player ->m_iHideHUD &= ~HIDEHUD_WEAPONS;
m_pHolstered = NULL;
}
if( m_pfnThink == &CProp::DeployThink )
@ -775,11 +777,11 @@ void CProp::BounceTouch(CBaseEntity *pOther)
if ( m_flNextAttack < gpGlobals->time && pev->velocity.Length() > 300)
{
entvars_t *pevOwner = VARS(m_attacker);
entvars_t *pevOwner = m_attacker->pev;
if (pevOwner)
{
float dmg = 50 + pev->velocity.Length() / 40;
if (pOther->edict() == m_owner2)
if (pOther == m_owner2)
{
dmg = 5;
if (pOther->pev->button & (IN_USE))
@ -794,7 +796,7 @@ void CProp::BounceTouch(CBaseEntity *pOther)
}
m_flNextAttack = gpGlobals->time + 1.0; // debounce
}
if( (pOther->edict() != m_owner2) && (pev->spawnflags & SF_PROP_BREAKABLE) && (pev->velocity.Length() > 900) )
if( (pOther != m_owner2) && (pev->spawnflags & SF_PROP_BREAKABLE) && (pev->velocity.Length() > 900) )
{
pev->nextthink = gpGlobals->time + 0.1;
SetThink( &CProp::DieThink );
@ -1064,7 +1066,7 @@ int CProp::TakeDamage(entvars_t* pevInflictor, entvars_t* pevAttacker, float flD
if ( (!m_attacker
|| (pev->velocity.Length() < 700))
&& ((CBaseEntity*)GET_PRIVATE(ENT(pevAttacker)))->IsPlayer())
m_attacker = ENT(pevAttacker);
m_attacker.Set(ENT(pevAttacker));
DeployThink();
pev->velocity = r * flDamage / -7;