Raised This Month: $ Target: $400
 0% 

code of grab = bug (push instead of grab)


Post New Thread Reply   
 
Thread Tools Display Modes
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
atomen
Veteran Member
Join Date: Oct 2006
Location: Stockholm, Sweden
Old 08-22-2008 , 12:55   Re: code if grab = bug (push instead of grab)
Reply With Quote #2

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
__________________
atomen is offline
Send a message via MSN to atomen
steve139
Senior Member
Join Date: May 2007
Location: here
Old 08-22-2008 , 14:16   Re: code of grab = bug (push instead of grab)
Reply With Quote #3

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

Last edited by steve139; 08-22-2008 at 14:22.
steve139 is offline
Reply



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