AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   code of grab = bug (push instead of grab) (https://forums.alliedmods.net/showthread.php?t=76330)

steve139 08-22-2008 12:43

code of grab = bug (push instead of grab)
 
1 Attachment(s)
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")



atomen 08-22-2008 12:55

Re: code if grab = bug (push instead of grab)
 
I did the same attempt, tried with nearly the exact same natives.
But it just didn't work with amxmodx for some reason.

http://forums.alliedmods.net/showthread.php?t=71893

steve139 08-22-2008 14:16

Re: code of grab = bug (push instead of grab)
 
:o thanks for awnser and it s working perfectly on some ent witch i wanted to move ^.^ thank you again

just dont work with func_pushable :( but .... thanks


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

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