Quote:
Originally Posted by Natsheh
pev(weaponent, pev_flags) & FL_ONGROUND
|
Dropped weapons are weaponbox entities which are SOLID_TRIGGER. Traceline will ignore this entities, which means you can't know directly when a player is aiming at one. Don't believe? Try get_user_aiming and you'll see.
@OP, do you want to know when a player aims at a dropped weapon? Then try this:
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <xs>
#include <engine>
public plugin_init()
{
register_clcmd("test", "ClientCommand_Test")
}
public ClientCommand_Test(id)
{
new Float:PlayerOrigin[3], Float:PlayerViewOffset[3]
pev(id, pev_origin, PlayerOrigin)
pev(id, pev_view_ofs, PlayerViewOffset)
xs_vec_add(PlayerOrigin, PlayerViewOffset, PlayerOrigin)
new Float:PlayerViewAngle[3]
pev(id, pev_v_angle, PlayerViewAngle)
engfunc(EngFunc_MakeVectors, PlayerViewAngle)
global_get(glb_v_forward, PlayerViewAngle)
new Float:EndOrigin[3], Float:TraceEndOrigin[3]
xs_vec_mul_scalar(PlayerViewAngle, 9999.0, PlayerViewAngle)
xs_vec_add(PlayerOrigin, PlayerViewAngle, EndOrigin)
new TraceLineHandle = create_tr2()
engfunc(EngFunc_TraceLine, PlayerOrigin, EndOrigin, IGNORE_MONSTERS, id, TraceLineHandle)
get_tr2(TraceLineHandle, TR_vecEndPos, TraceEndOrigin)
free_tr2(TraceLineHandle)
new Target = FM_NULLENT, EntityClassName[32], TraceModelHandle, pHit
while((Target = find_ent_in_sphere(Target, TraceEndOrigin, 25.0)))
{
pev(Target, pev_classname, EntityClassName, charsmax(EntityClassName))
if(equal(EntityClassName, "weaponbox"))
{
TraceModelHandle = create_tr2()
engfunc(EngFunc_TraceModel, PlayerOrigin, TraceEndOrigin, HULL_POINT, Target, TraceModelHandle)
pHit = get_tr2(TraceModelHandle, TR_pHit)
free_tr2(TraceModelHandle)
if(pev_valid(pHit))
{
if(pHit == Target)
{
//add your code here
client_print(id, print_chat, "Aiming at a dropped weapon")
break
}
}
}
}
}
__________________