PHP Code:
ZombieAttack( const iZombie ) {
new Float:flFraction, Float:vStart[ 3 ], Float:vEnd[ 3 ], Float:vForward[ 3 ], iTr = create_tr2( );
new Float:vEndPos[ 3 ], pHit;
entity_get_vector( iZombie, EV_VEC_origin, vStart );
entity_get_vector( iZombie, EV_VEC_angles, vForward );
engfunc( EngFunc_MakeVectors, vForward );
get_tr2( iTr, TR_flFraction, flFraction );
vStart[ 2 ] += 28.0;
vEnd[ 0 ] = vStart[ 0 ] + vForward[ 0 ] * 32.0;
vEnd[ 1 ] = vStart[ 1 ] + vForward[ 1 ] * 32.0;
vEnd[ 2 ] = vStart[ 2 ];
engfunc( EngFunc_TraceLine, vStart, vEnd, DONT_IGNORE_MONSTERS, iZombie, iTr );
get_tr2( iTr, TR_flFraction, flFraction );
new bool:bFindHull;
if( flFraction >= 1 ) {
engfunc( EngFunc_TraceHull, vStart, vEnd, DONT_IGNORE_MONSTERS, HULL_HEAD, iZombie, iTr );
get_tr2( iTr, TR_flFraction, flFraction );
if( flFraction < 1 ) {
pHit = get_tr2( iTr, TR_pHit );
if( !pHit ) {
bFindHull = true;
}
}
} else
pHit = get_tr2( iTr, TR_pHit );
get_tr2( iTr, TR_vecEndPos, vEndPos );
free_tr2( iTr );
if( flFraction >= 1.0 || !IsPlayer( pHit ) ) {
client_print( 0, print_chat, "[ Zombie: %i ] Missed. %s", iZombie, bFindHull ? "FindHullIntersection!" : "" );