Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
+rope plugini degisik istek AkcaliBerk Bak Bi
#1
Mesela ben slotlara sadece rope vermek istiyorum . fakat hepsi ayrı yetki olsun istiyorum grab ayrı rope ayrı hook ayrı ama ghw_ghr plugininde hepsi aynı yetkide malesef onu nasıl yapabiliriz hepsini ayrı yetkide bir plugin yapabilirmisin

rica etsem kodu az bir yetkilerde olabilirmi çünkü mesela o yetkisi weriosun hook rope grab dışında bir sürü yetkileri oluo yani cok az kodu olan bir yetkiye yapsak lütfen
Reply
#2
Komutlara atanılan yetkiler her serverda farklılık gösterebilir. Bu yüzden o boş yetkileri kendiniz tespit edip belirtin ve ilgili pluginin sma sını paylaşın. Ayrıca başlık için kendinizi bu kadar zorlamanıza gerek yok. "GHR Plugini Yetki Düzenlemesi" gibi basit bir şekilde de yapabilirdiniz.


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#3
Akcaliberk Kardesim Sence En Bos Yetkiler Nedir ? Ghw_Ghr de hani her şey tek yetkide ya hepsi ayrı olsun hook q yetkisi grab u yetkisi rope sen karar ver
Reply
#4
GHR pluginini [PHP] tagı arasında paylaş


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#5
PHP Code:
//#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_LEVEL_Q," - Use: bind key +grab")
    
register_concmd("-grab","grab_off")
    
register_concmd("grab_toggle","grab_toggle",ADMIN_LEVEL_Q,"Toggles your grab on and off")
    
register_concmd("+hook","hook_on",ADMIN_LEVEL_Q," - Use: bind key +hook")
    
register_concmd("-hook","hook_off")
    
register_concmd("hook_toggle","hook_toggle",ADMIN_LEVEL_Q,"Toggles your hook on and off")
    
register_concmd("+rope","rope_on",ADMIN_LEVEL_Q," - Use: bind key +rope")
    
register_concmd("-rope","rope_off")
    
register_concmd("rope_toggle","rope_toggle",ADMIN_LEVEL_Q,"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]=-1
    
static targettrash
    target
=0
    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
=0
        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]=0
        
}
        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]=0
        
}
    }
    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]=0
    
}
    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
    y 
velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2]

    static 
Float:x
    x 
= (get_pcvar_float(hook_speed_cvar) * 120.0) / floatsqroot(y)

    
velocity[0] *= x
    velocity
[1] *= x
    velocity
[2] *= x

    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
    y 
velocity2[0]*velocity2[0] + velocity2[1]*velocity2[1]

    static 
Float:x
    x 
= (get_pcvar_float(rope_speed_cvar) * 20.0) / floatsqroot(y)

    
velocity[0] += velocity2[0]*x
    velocity
[1] += velocity2[1]*x

    
if(rope_to[id][2] - origin1_F[2] >= rope_totaldis[id] && velocity[2]<0.0velocity[2] *= -1

    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

Reply
#6
PHP Code:
//#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


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#7
Çok Teşekkürler Ropeyi T Yapsan Daha Güzel Olurdu. Yinede Teşekkürler
Reply
#8
Çözülmüş İsteklere taşındı.


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Mapa Göre Cvar plugini melof 8 9,378 16-11-20, 02:00
Last Post: es_Dark_Es
  Time 15 Plugini fenerbahce07 24 12,131 23-09-18, 03:19
Last Post: qalatas06
  toplantı plugini bihterr 22 10,684 08-10-17, 14:21
Last Post: kronossbey
  Hosgeldin Plugini hpph1294 9 6,847 03-09-17, 18:08
Last Post: tahayasin
  Jailbreak Banka Plugini sefatokgoz 8 8,134 03-09-17, 18:06
Last Post: tahayasin
  [İSTEK]Jb Verme Plugini (/mg) NorDan 8 12,915 03-09-17, 18:06
Last Post: tahayasin
  250 Hp Plugini Sadece R Yetkisinde Olsun GurkanCounter 8 10,875 03-09-17, 18:04
Last Post: tahayasin
  [JB] CT Özel Hook Grab Rope Plugini Nobb 21 10,719 03-09-17, 18:03
Last Post: tahayasin
  [ İSTEK ] Belirli Yetki Hariç 3 Raund Weapon Engel excellenT 15 6,336 21-07-17, 03:49
Last Post: SINCAPP
  [İSTEK] CT MAVi - T Kırmızı ışık yanan Plugin + Video Çektim ademcan36 9 10,458 26-04-17, 16:15
Last Post: h4m4s

Foruma Atla:


Users browsing this thread: