Raised This Month: $ Target: $400
 0% 

How to move an entity?


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
danielkza
AMX Mod X Plugin Approver
Join Date: May 2007
Location: São Paulo - Brasil
Old 08-22-2008 , 13:25   Re: How to move an entity?
Reply With Quote #5

Partial code from my KZ plugin:
PHP Code:
new bool:iPlayerGrab_On[33]

new 
iPlayerGrab_Target[33]
new 
iPlayerGrab_Grabber[33]

new 
Float:fPlayerGrab_ChokeTime[33]
new 
Float:fPlayerGrab_Distance[33]

public 
fwGrabPlayerPreThink(id,iButtons)
{
    new 
entTarget iPlayerGrab_Target[id]

    if( !
entTarget || !is_user_alive(id) )
        return 
FMRES_IGNORED

    
if( iButtons IN_GRAB_CHOKE)
    {
        new 
Float:fNow get_gametime()
        
        if( 
fNow fPlayerGrab_ChokeTime[id] >= GRAB_CHOKE_INTERVAL)
        {
            
ExecuteHamB(Ham_TakeDamageentTarget00GRAB_CHOKE_DMGDMG_ALWAYSGIB)
            
fPlayerGrab_ChokeTime[id] = fNow

            
return
        }
    }
    
    static 
Float:vVelocity[3]
    if( 
iButtons IN_GRAB_THROW)
    {
        
velocity_by_aim(id1000vVelocity)
        
set_pev(entTargetpev_velocityvVelocity)

        
GrabEndCommand(id)

        return
    }

    if( 
iButtons IN_GRAB_PUSH)
        
fPlayerGrab_Distance[id] = floatmax(fPlayerGrab_Distance[id] - 7.0GRAB_MIN_DISTANCE)
    if( 
iButtons IN_GRAB_PULL)
        
fPlayerGrab_Distance[id] += 7.0

    
static Float:vPlayerOrigin[3], Float:vGrabbedOrigin[3]
    
pev(idpev_originvPlayerOrigin)
    
pev(entTargetpev_originvGrabbedOrigin)

    static 
Float:vAimVector[3]
    
pev(idpev_view_ofsvAimVector)
    
xs_vec_add(vPlayerOriginvAimVectorvPlayerOrigin)

    
pev(idpev_v_anglevAimVector)
    
angle_vector(vAimVector,1,vAimVector)
    
    
xs_vec_mul_scalar(vAimVectorfPlayerGrab_Distance[id], vAimVector);
    
xs_vec_add(vPlayerOriginvAimVectorvPlayerOrigin)

    
vVelocity[0] = (vPlayerOrigin[0] - vGrabbedOrigin[0]) * 8
    vVelocity
[1] = (vPlayerOrigin[1] - vGrabbedOrigin[1]) * 8
    vVelocity
[2] = (vPlayerOrigin[2] - vGrabbedOrigin[2]) * 8
    set_pev
(entTargetpev_velocityvVelocity)
}


public 
GrabStartCommand(id,level)
{
    if( (!
iPlayerGrab_On[id] && !access(idlevel) ) || !is_user_alive(id) )
    {
        return 
PLUGIN_HANDLED
    
}

    new 
Float:vAimOrigin[3]
    
fm_get_aim_origin(idvAimOrigin)

    new 
entTarget
    
if( !(entTarget engfunc(EngFunc_FindEntityInSphere0vAimOrigin32.0) )
        || 
entTarget == id
        
|| !is_user_alive(entTarget)
        || 
access(entTargetADMIN_IMMUNITY) && !access(id,ADMIN_IMMUNITY)
    )
    {
        return 
PLUGIN_HANDLED
    
}

    new 
Float:vPlayerOrigin[3], Float:vViewOfs[3]
    
pev(idpev_originvPlayerOrigin)
    
pev(idpev_view_ofsvViewOfs)
    
xs_vec_add(vPlayerOriginvViewOfsvPlayerOrigin)

    new 
Float:vTargetOrigin[3]
    
pev(entTargetpev_originvTargetOrigin)

    
fPlayerGrab_Distance[id] = vector_distance(vPlayerOriginvTargetOrigin)

    
iPlayerGrab_Target[id] = entTarget
    iPlayerGrab_Grabber
[entTarget] = id
    
    BeamEnts
(id 0x1000entTargetiBeamSprite)

    return 
PLUGIN_HANDLED
}


public 
GrabEndCommand(id)
{
    new 
entTarget iPlayerGrab_Target[id]
    if(
entTarget)
    {
        
iPlayerGrab_Grabber[entTarget] = 0
        iPlayerGrab_Target
[id] = 0
        fPlayerGrab_ChokeTime
[id] = 0.0

        BeamKill
(id 0x1000)
    }

danielkza is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:10.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode