Posts: 121
Threads: 5
Joined: Apr 2012
Reputation:
0
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
Posts: 2,027
Threads: 43
Joined: Jun 2012
Reputation:
0
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.
Posts: 121
Threads: 5
Joined: Apr 2012
Reputation:
0
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
Posts: 2,027
Threads: 43
Joined: Jun 2012
Reputation:
0
GHR pluginini [PHP] tagı arasında paylaş
Posts: 121
Threads: 5
Joined: Apr 2012
Reputation:
0
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)==0) format(aaa,31,"No") else format(aaa,31,"Yes") if(get_pcvar_num(hook_enabled_cvar)==0) format(bbb,31,"No") else format(bbb,31,"Yes") if(get_pcvar_num(rope_enabled_cvar)==0) format(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 target, trash 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 target, trash 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<=maxplayers) set_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.0, ATTN_NORM, 0, PITCH_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.0, ATTN_NORM, 0, PITCH_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.0, ATTN_NORM, 0, PITCH_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.0) velocity[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(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16) { #if defined engine return set_rendering(index,fx,r,g,b,render,amount) #else set_pev(index, pev_renderfx, fx); new Float:RenderColor[3]; RenderColor[0] = float(r); RenderColor[1] = float(g); RenderColor[2] = float(b); set_pev(index, pev_rendercolor, RenderColor); set_pev(index, pev_rendermode, render); set_pev(index, pev_renderamt, float(amount)); return 1; #endif }
Posts: 2,027
Threads: 43
Joined: Jun 2012
Reputation:
0
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)==0) format(aaa,31,"No") else format(aaa,31,"Yes") if(get_pcvar_num(hook_enabled_cvar)==0) format(bbb,31,"No") else format(bbb,31,"Yes") if(get_pcvar_num(rope_enabled_cvar)==0) format(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 target, trash 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 target, trash 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<=maxplayers) set_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.0, ATTN_NORM, 0, PITCH_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.0, ATTN_NORM, 0, PITCH_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.0, ATTN_NORM, 0, PITCH_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.0) velocity[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(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16) { #if defined engine return set_rendering(index,fx,r,g,b,render,amount) #else set_pev(index, pev_renderfx, fx); new Float:RenderColor[3]; RenderColor[0] = float(r); RenderColor[1] = float(g); RenderColor[2] = float(b); set_pev(index, pev_rendercolor, RenderColor); set_pev(index, pev_rendermode, render); set_pev(index, pev_renderamt, float(amount)); return 1; #endif }
Hook = q
Grab = u
Rope = s
yaptım
Posts: 121
Threads: 5
Joined: Apr 2012
Reputation:
0
Çok Teşekkürler Ropeyi T Yapsan Daha Güzel Olurdu. Yinede Teşekkürler
Posts: 2,027
Threads: 43
Joined: Jun 2012
Reputation:
0
Çözülmüş İsteklere taşındı.
|