View Single Post
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 08-09-2017 , 05:50   Re: See if it is pointed at a gun on the ground
Reply With Quote #3

Quote:
Originally Posted by Natsheh View Post
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(idpev_originPlayerOrigin)
    
pev(idpev_view_ofsPlayerViewOffset)
    
xs_vec_add(PlayerOriginPlayerViewOffsetPlayerOrigin)
    
    new 
Float:PlayerViewAngle[3]
    
pev(idpev_v_anglePlayerViewAngle)
    
engfunc(EngFunc_MakeVectorsPlayerViewAngle)
    
global_get(glb_v_forwardPlayerViewAngle)
    
    new 
Float:EndOrigin[3], Float:TraceEndOrigin[3]
    
xs_vec_mul_scalar(PlayerViewAngle9999.0PlayerViewAngle)
    
xs_vec_add(PlayerOriginPlayerViewAngleEndOrigin)

    new 
TraceLineHandle create_tr2()
    
engfunc(EngFunc_TraceLinePlayerOriginEndOriginIGNORE_MONSTERSidTraceLineHandle)
    
get_tr2(TraceLineHandleTR_vecEndPosTraceEndOrigin)
    
free_tr2(TraceLineHandle)
    
    new 
Target FM_NULLENTEntityClassName[32], TraceModelHandlepHit
    
while((Target find_ent_in_sphere(TargetTraceEndOrigin25.0)))
    {
        
pev(Targetpev_classnameEntityClassNamecharsmax(EntityClassName))
        if(
equal(EntityClassName"weaponbox"))
        {
            
TraceModelHandle create_tr2()
            
engfunc(EngFunc_TraceModelPlayerOriginTraceEndOriginHULL_POINTTargetTraceModelHandle)
            
pHit get_tr2(TraceModelHandleTR_pHit)
            
free_tr2(TraceModelHandle)
            
            if(
pev_valid(pHit))
            {
                if(
pHit == Target)
                {
                                        
//add your code here
                    
client_print(idprint_chat"Aiming at a dropped weapon")
                    break
                }
            }  
        }
    }

__________________

Last edited by HamletEagle; 08-09-2017 at 06:42.
HamletEagle is offline