Found it.
Code:
#define _IsPlayer(%1) (1<=%1<=g_max_players)
new g_max_players
public plugin_init()
{
g_max_players = get_maxplayers()
}
public bool: CanPlant( iPlayer ) {
static Float: flOrigin[ 3 ];
entity_get_vector( iPlayer, EV_VEC_origin, flOrigin);
static Float: flTraceDirection[ 3 ], Float: flTraceEnd[ 3 ], Float: flTraceResult[ 3 ], Float: flNormal[ 3 ];
velocity_by_aim( iPlayer, 64, flTraceDirection);
flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];
static Float: flFraction, iTr;
iTr = 0;
engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr);
get_tr2( iTr, TR_vecEndPos, flTraceResult);
get_tr2( iTr, TR_vecPlaneNormal, flNormal);
get_tr2( iTr, TR_flFraction, flFraction);
static target, body;
get_user_aiming(iPlayer, target, body)
if( flFraction >= 1.0 || _IsPlayer(target)) {
zp_colored_print(iPlayer, 0, "** %L You must plant the TripMine on a Wall **", iPlayer, "MINE_WALL")
return false;
}
return true;
}