本文整理汇总了C++中CBaseMonster::Remember方法的典型用法代码示例。如果您正苦于以下问题:C++ CBaseMonster::Remember方法的具体用法?C++ CBaseMonster::Remember怎么用?C++ CBaseMonster::Remember使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBaseMonster
的用法示例。
在下文中一共展示了CBaseMonster::Remember方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleAnimEvent
//=========================================================
// HandleAnimEvent - catches the monster-specific messages
// that occur when tagged animation frames are played.
//
// Returns number of events handled, 0 if none.
//=========================================================
void CAGrunt :: HandleAnimEvent( MonsterEvent_t *pEvent )
{
switch( pEvent->event )
{
case AGRUNT_AE_HORNET1:
case AGRUNT_AE_HORNET2:
case AGRUNT_AE_HORNET3:
case AGRUNT_AE_HORNET4:
case AGRUNT_AE_HORNET5:
{
// m_vecEnemyLKP should be center of enemy body
Vector vecArmPos, vecArmDir;
Vector vecDirToEnemy;
Vector angDir;
if (HasConditions( bits_COND_SEE_ENEMY))
{
vecDirToEnemy = ( ( m_vecEnemyLKP ) - pev->origin );
angDir = UTIL_VecToAngles( vecDirToEnemy );
vecDirToEnemy = vecDirToEnemy.Normalize();
}
else
{
angDir = pev->angles;
UTIL_MakeAimVectors( angDir );
vecDirToEnemy = gpGlobals->v_forward;
}
pev->effects = EF_MUZZLEFLASH;
// make angles +-180
if (angDir.x > 180)
{
angDir.x = angDir.x - 360;
}
SetBlending( 0, angDir.x );
GetAttachment( 0, vecArmPos, vecArmDir );
vecArmPos = vecArmPos + vecDirToEnemy * 32;
MESSAGE_BEGIN( MSG_PVS, gmsgTempEntity, vecArmPos );
WRITE_BYTE( TE_SPRITE );
WRITE_COORD( vecArmPos.x ); // pos
WRITE_COORD( vecArmPos.y );
WRITE_COORD( vecArmPos.z );
WRITE_SHORT( iAgruntMuzzleFlash ); // model
WRITE_BYTE( 6 ); // size * 10
WRITE_BYTE( 128 ); // brightness
MESSAGE_END();
CBaseEntity *pHornet = CBaseEntity::Create( "hornet", vecArmPos, UTIL_VecToAngles( vecDirToEnemy ), edict() );
UTIL_MakeVectors ( pHornet->pev->angles );
pHornet->pev->velocity = gpGlobals->v_forward * 300;
CBaseMonster *pHornetMonster = pHornet->MyMonsterPointer();
//LRC - hornets have the same allegiance as their creators
pHornetMonster->m_iPlayerReact = m_iPlayerReact;
pHornetMonster->m_iClass = m_iClass;
if (m_afMemory & bits_MEMORY_PROVOKED) // if I'm mad at the player, so are my hornets
pHornetMonster->Remember(bits_MEMORY_PROVOKED);
if ( pHornetMonster )
{
if (m_pCine && m_pCine->PreciseAttack()) //LRC- are we doing a scripted action?
pHornetMonster->m_hEnemy = m_hTargetEnt;
else
pHornetMonster->m_hEnemy = m_hEnemy;
}
}
break;
case AGRUNT_AE_LEFT_FOOT:
switch (RANDOM_LONG(0,1))
{
// left foot
case 0: EMIT_SOUND_DYN ( ENT(pev), CHAN_BODY, "player/pl_ladder2.wav", 1, ATTN_NORM, 0, 70 ); break;
case 1: EMIT_SOUND_DYN ( ENT(pev), CHAN_BODY, "player/pl_ladder4.wav", 1, ATTN_NORM, 0, 70 ); break;
}
break;
case AGRUNT_AE_RIGHT_FOOT:
// right foot
switch (RANDOM_LONG(0,1))
{
case 0: EMIT_SOUND_DYN ( ENT(pev), CHAN_BODY, "player/pl_ladder1.wav", 1, ATTN_NORM, 0, 70 ); break;
case 1: EMIT_SOUND_DYN ( ENT(pev), CHAN_BODY, "player/pl_ladder3.wav", 1, ATTN_NORM, 0 ,70); break;
}
break;
case AGRUNT_AE_LEFT_PUNCH:
{
CBaseEntity *pHurt = CheckTraceHullAttack( AGRUNT_MELEE_DIST, gSkillData.agruntDmgPunch, DMG_CLUB );
if ( pHurt )
//.........这里部分代码省略.........