PHP- Kodu:
//#define engine 

#include <amxmodx> 
#include <amxmisc> 
#include <fun> 
#if defined engine 
#include <engine> 
#else 
#include <fakemeta> 
#endif 

#define ADMIN_LEVEL_Q    ADMIN_LEVEL_C 

//Used for Grab 
new maxplayers 
new grab[33
new 
Float:grab_totaldis[33
new 
grab_speed_cvar 
new grab_enabled_cvar 
new bool:has_grab[33

//Used for Hook 
new bool:hook[33
new 
hook_to[33][3
new 
hook_speed_cvar 
new hook_enabled_cvar 
new bool:has_hook[33

//Used for Rope 
new bool:rope[33
new 
rope_to[33][3
new 
Float:rope_totaldis[33
new 
rope_speed_cvar 
new rope_enabled_cvar 
new bool:has_rope[33

//Used for All 
new beamsprite 


/**************************** 
Register Commands and CVARs 
****************************/ 

public plugin_init() 

    
register_plugin("Grab + Hook + Rope","1.0","GHW_Chronic"
    
register_concmd("+grab","grab_on",ADMIN_MENU," - Use: bind key +grab"
    
register_concmd("-grab","grab_off"
    
register_concmd("grab_toggle","grab_toggle",ADMIN_MENU,"Toggles your grab on and off"
    
register_concmd("+hook","hook_on",ADMIN_LEVEL_E," - Use: bind key +hook"
    
register_concmd("-hook","hook_off"
    
register_concmd("hook_toggle","hook_toggle",ADMIN_LEVEL_E,"Toggles your hook on and off"
    
register_concmd("+rope","rope_on",ADMIN_LEVEL_G," - Use: bind key +rope"
    
register_concmd("-rope","rope_off"
    
register_concmd("rope_toggle","rope_toggle",ADMIN_LEVEL_G,"Toggles your rope on and off"
    
    
register_concmd("amx_give_grab","cmd_givetake",ADMIN_LEVEL_Q,"Give a player the ability to grab <nick>"
    
register_concmd("amx_give_hook","cmd_givetake",ADMIN_LEVEL_Q,"Give a player the ability to hook <nick>"
    
register_concmd("amx_give_rope","cmd_givetake",ADMIN_LEVEL_Q,"Give a player the ability to rope <nick>"
    
    
register_concmd("amx_take_grab","cmd_givetake",ADMIN_LEVEL_Q,"Take a player's ability to grab <nick>"
    
register_concmd("amx_take_hook","cmd_givetake",ADMIN_LEVEL_Q,"Take a player's ability to hook <nick>"
    
register_concmd("amx_take_rope","cmd_givetake",ADMIN_LEVEL_Q,"Take a player's ability to rope <nick>"
    
    
register_concmd("amx_ghr_menu","menu_cmd",ADMIN_LEVEL_Q,"Shows a menu that allows you to turn on/off non-admin use of grab, hook, or rope"
    
    
register_menucmd(register_menuid("ghr_menu"),(1<<0)|(1<<1)|(1<<2)|(1<<9), "Pressedghr"
    
    
grab_speed_cvar register_cvar("grab_speed","5"
    
grab_enabled_cvar register_cvar("grab_enabled","0"
    
    
hook_speed_cvar register_cvar("hook_speed","5"
    
hook_enabled_cvar register_cvar("hook_enabled","0"
    
    
rope_speed_cvar register_cvar("rope_speed","5"
    
rope_enabled_cvar register_cvar("rope_enabled","0"
    
    
maxplayers get_maxplayers() 
    
    
//CVAR that is only used for tracking servers that use this plugin. 
    
register_cvar("GHW_GHW","1",FCVAR_SERVER



/********************************** 
Register beam sprite + Hook Sound 
**********************************/ 

public plugin_precache() 

    
beamsprite precache_model("sprites/dot.spr"
    
precache_sound("weapons/xbow_hit2.wav"
    
precache_sound("weapons/xbow_fire1.wav"



/***************************** 
Reset VARs on client connect 
*****************************/ 

public client_putinserver(id

    
has_grab[id]=false 
    has_hook
[id]=false 
    has_rope
[id]=false 



/***** 
Menu 
*****/ 

public menu_cmd(id,level,cid

    if(
cmd_access(id,level,cid,1)) 
    { 
        
show_ghr(id
        
console_print(id,"[AMXX] Menu launched."
    } 


public 
show_ghr(id

    static 
aaa[32
    static 
bbb[32
    static 
ccc[32
    if(
get_pcvar_num(grab_enabled_cvar)==0format(aaa,31,"No"
    else 
format(aaa,31,"Yes"
    if(
get_pcvar_num(hook_enabled_cvar)==0format(bbb,31,"No"
    else 
format(bbb,31,"Yes"
    if(
get_pcvar_num(rope_enabled_cvar)==0format(ccc,31,"No"
    else 
format(ccc,31,"Yes"
    
    new 
menuBody[576
    
    if(
colored_menus()) 
    { 
        new 
len format(menuBody,575,"\bAllow Players To Use:^n^n"
        
len += format(menuBody[len],575-len"\w1. Grab\R\w%s^n",aaa
        
len += format(menuBody[len],575-len"\w2. Hook\R\w%s^n",bbb
        
len += format(menuBody[len],575-len"\w3. Rope\R\w%s^n",ccc
        
len += format(menuBody[len],575-len"\r0. Exit"
    } 
    else 
    { 
        new 
len format(menuBody,575,"Allow Players To Use:^n^n"
        
len += format(menuBody[len],575-len"1. Grab\R%s^n",aaa
        
len += format(menuBody[len],575-len"2. Hook\R%s^n",bbb
        
len += format(menuBody[len],575-len"3. Rope\R%s^n",ccc
        
len += format(menuBody[len],575-len"0. Exit"
    } 
    
show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<9),menuBody,-1,"ghr_menu"
    
    return 
PLUGIN_CONTINUE 


public 
Pressedghr(id,key

    switch(
key
    { 
        case 
0
        { 
            if(
get_pcvar_num(grab_enabled_cvar)==0
            { 
                
set_pcvar_num(grab_enabled_cvar,1
                
client_print(0,print_chat,"[AMXX] Admin has enabled Grab for all clients. Use: bind key +grab"
            } 
            else 
            { 
                
set_pcvar_num(grab_enabled_cvar,0
                
client_print(0,print_chat,"[AMXX] Admin has disabled Grab for all non-admins."
            } 
            
show_ghr(id
        } 
        case 
1
        { 
            if(
get_pcvar_num(hook_enabled_cvar)==0
            { 
                
set_pcvar_num(hook_enabled_cvar,1
                
client_print(0,print_chat,"[AMXX] Admin has enabled Hook for all clients. Use: bind key +hook"
            } 
            else 
            { 
                
set_pcvar_num(hook_enabled_cvar,0
                
client_print(0,print_chat,"[AMXX] Admin has disabled Hook for all non-admins."
            } 
            
show_ghr(id
        } 
        case 
2
        { 
            if(
get_pcvar_num(rope_enabled_cvar)==0
            { 
                
set_pcvar_num(rope_enabled_cvar,1
                
client_print(0,print_chat,"[AMXX] Admin has enabled Rope for all clients. Use: bind key +rope"
            } 
            else 
            { 
                
set_pcvar_num(rope_enabled_cvar,0
                
client_print(0,print_chat,"[AMXX] Admin has disabled Rope for all non-admins."
            } 
            
show_ghr(id
        } 
    } 



/**************** 
Handle Commands 
****************/ 

public cmd_givetake(id,level,cid

    if(!
cmd_access(id,level,cid,2)) 
    { 
        return 
PLUGIN_HANDLED 
    

    
    new 
arg1[32
    
read_argv(1,arg1,31
    
    new 
target cmd_target(id,arg1,9
    if(!
target
    { 
        return 
PLUGIN_HANDLED 
    

    
    new 
name[32
    
get_user_name(target,name,31
    if(
get_user_flags(target) & ADMIN_LEVEL_Q
    { 
        
console_print(id,"[AMXX] Cannot give/take grab/hook/rope from admin %s.",name
        return 
PLUGIN_HANDLED 
    

    
    new 
arg0[32
    
read_argv(0,arg0,31
    if(
containi(arg0,"give")!=-1
    { 
        if(
containi(arg0,"grab")!=-1
        { 
            if(
has_grab[target]) 
            { 
                
console_print(id,"[AMXX] %s already has grab",name
            } 
            else 
            { 
                
has_grab[target]=true 
                console_print
(id,"[AMXX] %s has been given grab",name
                
client_print(target,print_chat,"[AMXX] An admin has given you grab. Use: bind key +grab"
            } 
        } 
        else if(
containi(arg0,"hook")!=-1
        { 
            if(
has_hook[target]) 
            { 
                
console_print(id,"[AMXX] %s already has hook",name
            } 
            else 
            { 
                
has_hook[target]=true 
                console_print
(id,"[AMXX] %s has been given hook",name
                
client_print(target,print_chat,"[AMXX] An admin has given you hook. Use: bind key +hook"
            } 
        } 
        else if(
containi(arg0,"rope")!=-1
        { 
            if(
has_rope[target]) 
            { 
                
console_print(id,"[AMXX] %s already has rope",name
            } 
            else 
            { 
                
has_rope[target]=true 
                console_print
(id,"[AMXX] %s has been given rope",name
                
client_print(target,print_chat,"[AMXX] An admin has given you hook. Use: bind key +rope"
            } 
        } 
    } 
    if(
containi(arg0,"take")!=-1
    { 
        if(
containi(arg0,"grab")!=-1
        { 
            if(!
has_grab[target]) 
            { 
                
console_print(id,"[AMXX] %s doesn't have grab",name
            } 
            else 
            { 
                
has_grab[target]=false 
                console_print
(id,"[AMXX] %s's grab has been taken away.",name
                
client_print(target,print_chat,"[AMXX] An admin has taken your grab away."
            } 
        } 
        if(
containi(arg0,"hook")!=-1
        { 
            if(!
has_hook[target]) 
            { 
                
console_print(id,"[AMXX] %s doesn't have hook",name
            } 
            else 
            { 
                
has_hook[target]=false 
                console_print
(id,"[AMXX] %s's hook has been taken away.",name
                
client_print(target,print_chat,"[AMXX] An admin has taken your hook away."
            } 
        } 
        if(
containi(arg0,"rope")!=-1
        { 
            if(!
has_rope[target]) 
            { 
                
console_print(id,"[AMXX] %s doesn't have rope",name
            } 
            else 
            { 
                
has_rope[target]=false 
                console_print
(id,"[AMXX] %s's rope has been taken away.",name
                
client_print(target,print_chat,"[AMXX] An admin has taken your rope away."
            } 
        } 
    } 
    return 
PLUGIN_HANDLED 



/***** 
Grab 
*****/ 

public grab_toggle(id,level,cid

    if(
grab[id]) grab_off(id
    else 
grab_on(id,level,cid
    return 
PLUGIN_HANDLED 


public 
grab_on(id,level,cid

    if(!
has_grab[id] && !get_pcvar_num(grab_enabled_cvar) && !cmd_access(id,level,cid,1)) 
    { 
        return 
PLUGIN_HANDLED 
    

    if(
grab[id]) 
    { 
        return 
PLUGIN_HANDLED 
    

    
grab[id]=-
    
static targettrash 
    target
=
    get_user_aiming
(id,target,trash
    if(
target && is_valid_ent2(target) && target!=id
    { 
        if(
target<=maxplayers
        { 
            if(
is_user_alive(target) && !(get_user_flags(target) & ADMIN_IMMUNITY)) 
            { 
                
client_print(id,print_chat,"[AMXX] Found Target"
                
grabem(id,target
            } 
        } 
        else if(
get_solidity(target)!=4
        { 
            
client_print(id,print_chat,"[AMXX] Found Target"
            
grabem(id,target
        } 
    } 
    else 
    { 
        
client_print(id,print_chat,"[AMXX] Searching for Target"
        
set_task(0.1,"grab_on2",id
    } 
    return 
PLUGIN_HANDLED 


public 
grab_on2(id

    if(
is_user_connected(id)) 
    { 
        static 
targettrash 
        target
=
        get_user_aiming
(id,target,trash
        if(
target && is_valid_ent2(target) && target!=id
        { 
            if(
target<=maxplayers
            { 
                if(
is_user_alive(target) && !(get_user_flags(target) & ADMIN_IMMUNITY)) 
                { 
                    
client_print(id,print_chat,"[AMXX] Found Target"
                    
grabem(id,target
                } 
            } 
            else if(
get_solidity(target)!=4
            { 
                
client_print(id,print_chat,"[AMXX] Found Target"
                
grabem(id,target
            } 
        } 
        else 
        { 
            
set_task(0.1,"grab_on2",id
        } 
    } 


public 
grabem(id,target

    
grab[id]=target 
    set_rendering2
(target,kRenderFxGlowShell,255,0,0,kRenderTransAlpha,70
    if(
target<=maxplayersset_user_gravity(target,0.0
    
grab_totaldis[id] = 0.0 
    set_task
(0.1,"grab_prethink",id+1000,"",0,"b"
    
grab_prethink(id+1000
    
emit_sound(id,CHAN_VOICE,"weapons/xbow_fire1.wav"1.0ATTN_NORM0PITCH_NORM


public 
grab_off(id

    if(
is_user_connected(id)) 
    { 
        if(
grab[id]==-1
        { 
            
client_print(id,print_chat,"[AMXX] No Target Found"
            
grab[id]=
        

        else if(
grab[id]) 
        { 
            
client_print(id,print_chat,"[AMXX] Target Released"
            
set_rendering2(grab[id]) 
            if(
grab[id]<=maxplayers && is_user_alive(grab[id])) set_user_gravity(grab[id],1.0
            
grab[id]=
        

    } 
    return 
PLUGIN_HANDLED 


public 
grab_prethink(id

    
id -= 1000 
    
if(!is_user_connected(id) && grab[id]>0
    { 
        
set_rendering2(grab[id]) 
        if(
grab[id]<=maxplayers && is_user_alive(grab[id])) set_user_gravity(grab[id],1.0
        
grab[id]=
    

    if(!
grab[id] || grab[id]==-1
    { 
        
remove_task(id+1000
        return 
PLUGIN_HANDLED 
    

    
    
//Get Id's, target's, and Where Id is looking's origins 
    
static origin1[3
    
get_user_origin(id,origin1
    static 
Float:origin2_F[3], origin2[3
    
get_origin(grab[id],origin2_F
    
origin2[0] = floatround(origin2_F[0]) 
    
origin2[1] = floatround(origin2_F[1]) 
    
origin2[2] = floatround(origin2_F[2]) 
    static 
origin3[3
    
get_user_origin(id,origin3,3
    
    
//Create red beam 
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY
    
write_byte(1)        //TE_BEAMENTPOINT 
    
write_short(id)        // start entity 
    
write_coord(origin2[0]) 
    
write_coord(origin2[1]) 
    
write_coord(origin2[2]) 
    
write_short(beamsprite
    
write_byte(1)        // framestart 
    
write_byte(1)        // framerate 
    
write_byte(1)        // life in 0.1's 
    
write_byte(5)        // width 
    
write_byte(0)        // noise 
    
write_byte(255)        // red 
    
write_byte(0)        // green 
    
write_byte(0)        // blue 
    
write_byte(200)        // brightness 
    
write_byte(0)        // speed 
    
message_end() 
    
    
//Convert to floats for calculation 
    
static Float:origin1_F[3
    static 
Float:origin3_F[3
    
origin1_F[0] = float(origin1[0]) 
    
origin1_F[1] = float(origin1[1]) 
    
origin1_F[2] = float(origin1[2]) 
    
origin3_F[0] = float(origin3[0]) 
    
origin3_F[1] = float(origin3[1]) 
    
origin3_F[2] = float(origin3[2]) 
    
    
//Calculate target's new velocity 
    
static Float:distance[3
    
    if(!
grab_totaldis[id]) 
    { 
        
distance[0] = floatabs(origin1_F[0] - origin2_F[0]) 
        
distance[1] = floatabs(origin1_F[1] - origin2_F[1]) 
        
distance[2] = floatabs(origin1_F[2] - origin2_F[2]) 
        
grab_totaldis[id] = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2]) 
    } 
    
distance[0] = origin3_F[0] - origin1_F[0
    
distance[1] = origin3_F[1] - origin1_F[1
    
distance[2] = origin3_F[2] - origin1_F[2
    
    static 
Float:grab_totaldis2 
    grab_totaldis2 
floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2]) 
    
    static 
Float:que 
    que 
grab_totaldis[id] / grab_totaldis2 
    
    
static Float:origin4[3
    
origin4[0] = ( distance[0] * que ) + origin1_F[0
    
origin4[1] = ( distance[1] * que ) + origin1_F[1
    
origin4[2] = ( distance[2] * que ) + origin1_F[2
    
    static 
Float:velocity[3
    
velocity[0] = (origin4[0] - origin2_F[0]) * (get_pcvar_float(grab_speed_cvar) / 1.666667
    
velocity[1] = (origin4[1] - origin2_F[1]) * (get_pcvar_float(grab_speed_cvar) / 1.666667
    
velocity[2] = (origin4[2] - origin2_F[2]) * (get_pcvar_float(grab_speed_cvar) / 1.666667
    
    
set_velo(grab[id],velocity
    
    return 
PLUGIN_CONTINUE 



/***** 
Hook 
*****/ 

public hook_toggle(id,level,cid

    if(
hook[id]) hook_off(id
    else 
hook_on(id,level,cid
    return 
PLUGIN_HANDLED 


public 
hook_on(id,level,cid

    if(!
has_hook[id] && !get_pcvar_num(hook_enabled_cvar) && !cmd_access(id,level,cid,1)) 
    { 
        return 
PLUGIN_HANDLED 
    

    if(
hook[id]) 
    { 
        return 
PLUGIN_HANDLED 
    

    
set_user_gravity(id,0.0
    
set_task(0.1,"hook_prethink",id+10000,"",0,"b"
    
hook[id]=true 
    hook_to
[id][0]=999999 
    hook_prethink
(id+10000
    
emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav"1.0ATTN_NORM0PITCH_NORM
    return 
PLUGIN_HANDLED 


public 
hook_off(id

    if(
is_user_alive(id)) set_user_gravity(id
    
hook[id]=false 
    
return PLUGIN_HANDLED 


public 
hook_prethink(id

    
id -= 10000 
    
if(!is_user_alive(id)) 
    { 
        
hook[id]=false 
    

    if(!
hook[id]) 
    { 
        
remove_task(id+10000
        return 
PLUGIN_HANDLED 
    

    
    
//Get Id's origin 
    
static origin1[3
    
get_user_origin(id,origin1
    
    if(
hook_to[id][0]==999999
    { 
        static 
origin2[3
        
get_user_origin(id,origin2,3
        
hook_to[id][0]=origin2[0
        
hook_to[id][1]=origin2[1
        
hook_to[id][2]=origin2[2
    } 
    
    
//Create blue beam 
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY
    
write_byte(1)        //TE_BEAMENTPOINT 
    
write_short(id)        // start entity 
    
write_coord(hook_to[id][0]) 
    
write_coord(hook_to[id][1]) 
    
write_coord(hook_to[id][2]) 
    
write_short(beamsprite
    
write_byte(1)        // framestart 
    
write_byte(1)        // framerate 
    
write_byte(2)        // life in 0.1's 
    
write_byte(5)        // width 
    
write_byte(0)        // noise 
    
write_byte(0)        // red 
    
write_byte(0)        // green 
    
write_byte(255)        // blue 
    
write_byte(200)        // brightness 
    
write_byte(0)        // speed 
    
message_end() 
    
    
//Calculate Velocity 
    
static Float:velocity[3
    
velocity[0] = (float(hook_to[id][0]) - float(origin1[0])) * 3.0 
    velocity
[1] = (float(hook_to[id][1]) - float(origin1[1])) * 3.0 
    velocity
[2] = (float(hook_to[id][2]) - float(origin1[2])) * 3.0 
    
    
static Float:
    y 
velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2
    
    static 
Float:
    x 
= (get_pcvar_float(hook_speed_cvar) * 120.0) / floatsqroot(y
    
    
velocity[0] *= 
    velocity
[1] *= 
    velocity
[2] *= 
    
    set_velo
(id,velocity
    
    return 
PLUGIN_CONTINUE 



/***** 
Rope 
*****/ 

public rope_toggle(id,level,cid

    if(
rope[id]) rope_off(id
    else 
rope_on(id,level,cid
    return 
PLUGIN_HANDLED 


public 
rope_on(id,level,cid

    if(!
has_rope[id] && !get_pcvar_num(rope_enabled_cvar) && !cmd_access(id,level,cid,1)) 
    { 
        return 
PLUGIN_HANDLED 
    

    if(
rope[id]) 
    { 
        return 
PLUGIN_HANDLED 
    

    
set_task(0.1,"rope_prethink",id+100000,"",0,"b"
    
rope[id]=true 
    rope_to
[id][0]=999999 
    rope_prethink
(id+100000
    
emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav"1.0ATTN_NORM0PITCH_NORM
    return 
PLUGIN_HANDLED 


public 
rope_off(id

    
rope[id]=false 
    
return PLUGIN_HANDLED 


public 
rope_prethink(id

    
id -= 100000 
    
if(!is_user_alive(id)) 
    { 
        
rope[id]=false 
    

    if(!
rope[id]) 
    { 
        
remove_task(id+100000
        return 
PLUGIN_HANDLED 
    

    
    
//Get Id's origin 
    
static origin1[3
    
get_user_origin(id,origin1
    
    static 
Float:origin1_F[3
    
origin1_F[0] = float(origin1[0]) 
    
origin1_F[1] = float(origin1[1]) 
    
origin1_F[2] = float(origin1[2]) 
    
    
//Check to see if this is the first time prethink is being run 
    
if(rope_to[id][0]==999999
    { 
        static 
origin2[3
        
get_user_origin(id,origin2,3
        
rope_to[id][0]=origin2[0
        
rope_to[id][1]=origin2[1
        
rope_to[id][2]=origin2[2
        
        static 
Float:origin2_F[3
        
origin2_F[0] = float(origin2[0]) 
        
origin2_F[1] = float(origin2[1]) 
        
origin2_F[2] = float(origin2[2]) 
        
        static 
Float:distance[3
        
distance[0] = floatabs(origin1_F[0] - origin2_F[0]) 
        
distance[1] = floatabs(origin1_F[1] - origin2_F[1]) 
        
distance[2] = floatabs(origin1_F[2] - origin2_F[2]) 
        
rope_totaldis[id] = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2]) 
    } 
    
    
//Create green beam 
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY
    
write_byte(1)        //TE_BEAMENTPOINT 
    
write_short(id)        // start entity 
    
write_coord(rope_to[id][0]) 
    
write_coord(rope_to[id][1]) 
    
write_coord(rope_to[id][2]) 
    
write_short(beamsprite
    
write_byte(1)        // framestart 
    
write_byte(1)        // framerate 
    
write_byte(1)        // life in 0.1's 
    
write_byte(5)        // width 
    
write_byte(0)        // noise 
    
write_byte(0)        // red 
    
write_byte(255)        // green 
    
write_byte(0)        // blue 
    
write_byte(200)        // brightness 
    
write_byte(0)        // speed 
    
message_end() 
    
    
//Calculate Velocity 
    
static Float:velocity[3
    
get_velo(id,velocity
    
    static 
Float:velocity2[3
    
velocity2[0] = (rope_to[id][0] - origin1_F[0]) * 3.0 
    velocity2
[1] = (rope_to[id][1] - origin1_F[1]) * 3.0 
    
    
static Float:
    y 
velocity2[0]*velocity2[0] + velocity2[1]*velocity2[1
    
    static 
Float:
    x 
= (get_pcvar_float(rope_speed_cvar) * 20.0) / floatsqroot(y
    
    
velocity[0] += velocity2[0]*
    velocity
[1] += velocity2[1]*
    
    
if(rope_to[id][2] - origin1_F[2] >= rope_totaldis[id] && velocity[2]<0.0velocity[2] *= -
    
    set_velo
(id,velocity
    
    return 
PLUGIN_CONTINUE 


public 
get_origin(ent,Float:origin[3]) 

    
#if defined engine 
    
return entity_get_vector(id,EV_VEC_origin,origin
    
#else 
    
return pev(ent,pev_origin,origin
    
#endif 


public 
set_velo(id,Float:velocity[3]) 

    
#if defined engine 
    
return set_user_velocity(id,velocity
    
#else 
    
return set_pev(id,pev_velocity,velocity
    
#endif 


public 
get_velo(id,Float:velocity[3]) 

    
#if defined engine 
    
return get_user_velocity(id,velocity
    
#else 
    
return pev(id,pev_velocity,velocity
    
#endif 


public 
is_valid_ent2(ent

    
#if defined engine 
    
return is_valid_ent(ent
    
#else 
    
return pev_valid(ent
    
#endif 


public 
get_solidity(ent

    
#if defined engine 
    
return entity_get_int(ent,EV_INT_solid
    
#else 
    
return pev(ent,pev_solid
    
#endif 


stock set_rendering2(indexfx=kRenderFxNoner=255g=255b=255render=kRenderNormalamount=16

    
#if defined engine 
    
return set_rendering(index,fx,r,g,b,render,amount
    
#else 
    
set_pev(indexpev_renderfxfx); 
    new 
Float:RenderColor[3]; 
    
RenderColor[0] = float(r); 
    
RenderColor[1] = float(g); 
    
RenderColor[2] = float(b); 
    
set_pev(indexpev_rendercolorRenderColor); 
    
set_pev(indexpev_rendermoderender); 
    
set_pev(indexpev_renderamtfloat(amount)); 
    return 
1
    
#endif 

Hook = q
Grab = u
Rope = s

yaptım