Try something like this to identify specifically what is not returning as expected
Code:
public Zombie_Think(ent)
{
....
pev(g_PlayerID, pev_origin, fVicOrigin)
pev(ent, pev_origin, fOrigin)
new szName[ 32 ]
get_user_name( g_PlayerID , szName , charsmax( szName ) );
server_print( "Is running? %d" , bRunning )
server_print( "Is %s visible to ent %d? %d" , szName , ent , fm_is_visible(ent, fVicOrigin) )
server_print( "Is %s in ent %d's viewcone? %d" , szName , ent , fm_is_in_viewcone(ent, fVicOrigin) )
server_print( "Is wall between ent %d origin and %s? %d" , ent , szName , is_wall_between_points(fOrigin, fVicOrigin, 0) )
server_print( "" )
if(bRunning)
{
if(distance < 270.0)
set_pev(ent, pev_iuser1, STATE_ATTACK)
}
else
{
if(fm_is_visible(ent, fVicOrigin) && fm_is_in_viewcone(ent, fVicOrigin) && !is_wall_between_points(fOrigin, fVicOrigin, 0))
client_print(0, print_center, "Detected")
}
...
}