Raised This Month: $ Target: $400
 0% 

code of grab = bug (push instead of grab)


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
steve139
Senior Member
Join Date: May 2007
Location: here
Old 08-22-2008 , 12:43   code of grab = bug (push instead of grab)
Reply With Quote #1

hello at all
I customized the plugin "jedi force grab" to can also move entity
but the problems the plugin dont work proprely
instead of grab , it s pushing the entity or the player


if someone can help this is the code(+.sma attached if you prefeert)
PHP Code:
#include <amxmodx>
#include <fun>
#include <engine>
#include <fakemeta>


new grabbed[1024]
new 
grablength[1024]
new 
bool:grabmodeon[33]
new 
velocity_multiplier

public grabtask(parm[])
{
    new 
id parm[0]
    new 
targetidbody
    
if (!grabbed[id])
    {
        
get_user_aiming(idtargetidbody)
        if (
targetid)
        {
            
set_grabbed(idtargetid)
        }
    }
    if (
grabbed[id])
    {
        new 
origin[3], look[3], direction[3], moveto[3], grabbedorigin[3], Float:f_grabbedorigin[3], velocity[3], length

        
if(is_user_connected(grabbed[id])) {
            if (!
is_user_alive(grabbed[id])) {
                
release(id)
                return
            }
        }
        
get_user_origin(idorigin1)
        
get_user_origin(idlook3)
        
pev(id,pev_origin,f_grabbedorigin,2)
        for (new 
i=0;i<3;i++){
            
grabbedorigin[i] = floatround(f_grabbedorigin[i])
        }
        
        
//get_user_origin(grabbed[id], grabbedorigin)

        
direction[0]=look[0]-origin[0]
        
direction[1]=look[1]-origin[1]
        
direction[2]=look[2]-origin[2]
        
length get_distance(look,origin)
        if (!
lengthlength=1                // avoid division by 0

        
moveto[0]=origin[0]+direction[0]*grablength[id]/length
        moveto
[1]=origin[1]+direction[1]*grablength[id]/length
        moveto
[2]=origin[2]+direction[2]*grablength[id]/length

        velocity
[0]=(moveto[0]-grabbedorigin[0])*velocity_multiplier
        velocity
[1]=(moveto[1]-grabbedorigin[1])*velocity_multiplier
        velocity
[2]=(moveto[2]-grabbedorigin[2])*velocity_multiplier

        
new Float:vector[3]
        
IVecFVec(velocityvector)
        
entity_set_vector(grabbed[id], EV_VEC_velocityvector)
    }
}

public 
grab_toggle(id)
{
    if (
grabmodeon[id])
        
release(id)
    else
        
grab(id)
    return 
PLUGIN_HANDLED
}

public 
grab(id)
{
    if ((
get_user_flags(id)&ADMIN_SLAY)) {
        if (!
grabmodeon[id])
        {
            new 
targetidbody
            
new parm[1]
            
parm[0] = id
            velocity_multiplier 
get_cvar_num("sv_grabforce")
            
grabmodeon[id]=true
            set_task
(0.1"grabtask"100+idparm1"b")
            
get_user_aiming(idtargetidbody)
            if (
targetid)
            {
                
set_grabbed(idtargetid)
            }
            else
            {
            }
        }
    }
    else if ((
get_cvar_num("sv_force") == 1)) {
        if (!
grabmodeon[id])
        {
            new 
targetidbody
            
new parm[1]
            
parm[0] = id
            velocity_multiplier 
get_cvar_num("sv_grabforce")
            
grabmodeon[id]=true
            set_task
(0.1"grabtask"100+idparm1"b")
            
get_user_aiming(idtargetidbody)
            if (
targetid)
            {
                
set_grabbed(idtargetid)
            }
            else
            {
            }
        }
    }
    return 
PLUGIN_HANDLED
}

public 
release(id)
{
    if (
grabmodeon[id])
    {
        
grabmodeon[id]=false
        
if (grabbed[id])
        {
            
pev(grabbed[id],pev_gravity,1)

        }
        else
        {
        }
        
grabbed[id]=0
        remove_task
(100+id)
    }
    return 
PLUGIN_HANDLED
}

public 
spec_event(id)
{
    new 
targetid read_data(2)

    if (
targetid || targetid 32)
        return 
PLUGIN_CONTINUE

    
if (grabmodeon[id] && !grabbed[id])
    {
        
set_grabbed(idtargetid)
    }
    return 
PLUGIN_CONTINUE
}

public 
set_grabbed(idtargetid)
{
    new 
origin1[3], origin2[3]
    new 
Float:f_origin1[3], Float:f_origin2[3]
    
pev(id,pev_origin,f_origin1,2)
    
pev(targetid,pev_origin,f_origin2,2)
    for (new 
i=0;i<3;i++){
        
origin1[i] = floatround(f_origin1[i])
        
origin2[i] = floatround(f_origin2[i])
    }
    
//get_user_origin(id, origin1)
    //get_user_origin(targetid, origin2)
    
grabbed[id]=targetid
    grablength
[id]=get_distance(origin1,origin2)
    
pev(targetid,pev_gravity,0.001)
    
//set_user_gravity(targetid,0.001)
}


public 
plugin_init()
{
    
register_plugin("Jedi Force Grab","2.1","SpaceDude")
    
register_cvar("sv_grabforce","8")
    
register_cvar("sv_force","0")
    
register_clcmd("+force","grab",ADMIN_SLAY,"bind a key to +grab")
    
register_clcmd("-force","release",ADMIN_SLAY)
    
register_event("StatusValue","spec_event","be","1=2")

Attached Files
File Type: sma Get Plugin or Get Source (force_plugin_v2.sma - 640 views - 3.7 KB)

Last edited by steve139; 08-22-2008 at 13:36.
steve139 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:13.


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