Plugin amxx - counter strike

Fermé
DARsKater Messages postés 747 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 août 2020 - 27 juin 2009 à 17:52
Bonjour,
Mon problème est que j'ai téléchargé un plugin amxx pour mon serveur cs 1.6,
Tout est fonctionnel, mais uniquement pour les admins amx, je voudrais que tout le monde puisse utiliser les commandes +hook et +rope sans qu'il y est besoin de modifier une cvar.
Si vous pouviez m'aider sa me serait grandement utile
je vous fournis ci-dessous le code source du plugin que j'ai trouvé :








/***********************************************************­***************************************

**** CVARS (FEATURES) ****
sv_adminhook = Turn Plugin On/off
**** ADMIN COMMANDS ****
ADMIN_LEVEL_A (flag="m")
Granting Hook/Rope = amx_granthook <authid, nick, @team, @all or #userid> <on/off>

ADMIN_LEVEL_E (flag="q") || Granted by admin
Ninja Rope by Spacedude (slightly modified) & Hook thingy
Attaching Rope = +rope
Deattaching Rope = -rope
Attaching Hook = +hook
Deattaching Hook = -hook

**************************************************************************************************/
#define USING_AMX 0 // 1 = Using AMX \ 0 = Useing AMXX

#if USING_AMX
#include <amxmod>
#include <amxmisc>
#include <VexdUM>
#include <fun>
new gModName[32] = "AMX"
#else
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>
new gModName[32] = "AMXX"
#endif

#define TE_BEAMENTPOINT 1
#define TE_KILLBEAM 99
#define DELTA_T 0.1 // seconds
#define BEAMLIFE 100 // deciseconds
#define MOVEACCELERATION 150 // units per second^2
#define REELSPEED 300 // units per second

/* Hook Stuff */
new gHookLocation[33][3]
new gHookLenght[33]
new bool:gIsHooked[33]
new gAllowedHook[33]
new Float:gBeamIsCreated[33]
new global_gravity
new beam

/************************************************************************************************************************/
public plugin_init() //Called on plugin start
{
// Plugin Info
register_plugin("Admin Hook","1.0","AssKicR")

//CVARS
register_cvar("sv_adminhook", "1" )

//ADMIN CMDS
register_concmd("amx_granthook","AdminGrantHook",ADMIN_LEVEL_A,"<authid, nick, @team, @all or #userid> <on/off>")

//USER COMMANDS
register_clcmd("+rope", "hook_on",ADMIN_LEVEL_E)
register_clcmd("-rope", "hook_off",ADMIN_LEVEL_E)
register_clcmd("+hook", "hook_on",ADMIN_LEVEL_E)
register_clcmd("-hook", "hook_off",ADMIN_LEVEL_E)

//HOOKED EVENTS
register_event("ResetHUD", "ResetHUD", "b")
}
/************************************************************************************************************************/
public plugin_precache()
{
beam = precache_model("sprites/zbeam4.spr")
precache_sound("weapons/xbow_hit2.wav")
}
/*************************************************************************************************************************/
/************************************************** USP/SCOUT REMOVE *****************************************************/
/*************************************************************************************************************************/

/*************************************************************************************************************************/
/**************************************************** HOOKED EVENTS ******************************************************/
/*************************************************************************************************************************/
public ResetHUD(id) {
//Check if he is hooked to something
if (gIsHooked[id]) RopeRelease(id)
}
/************************************************************************************************************************/
stock kz_velocity_set(id,vel[3]) {
//Set Their Velocity to 0 so that they they fall straight down from
new Float:Ivel[3]
Ivel[0]=float(vel[0])
Ivel[1]=float(vel[1])
Ivel[2]=float(vel[2])
entity_set_vector(id, EV_VEC_velocity, Ivel)
}

stock kz_velocity_get(id,vel[3]) {
//Set Their Velocity to 0 so that they they fall straight down from
new Float:Ivel[3]

entity_get_vector(id, EV_VEC_velocity, Ivel)
vel[0]=floatround(Ivel[0])
vel[1]=floatround(Ivel[1])
vel[2]=floatround(Ivel[2])
}

/************************************************************************************************************************/
/**************************************************** ADMIN COMMANDS ****************************************************/
/************************************************************************************************************************/
public AdminGrantHook(id,level,cid)
{
if ( !cmd_access(id,level,cid,1) )
return PLUGIN_HANDLED

new arg1[32],arg2[32]
read_argv(1,arg1,31)
read_argv(2,arg2,31)
new onoff = str_to_num(arg2)

if ( equali(arg1,"@all") )
{
new plist[32],pnum
get_players(plist,pnum,"a")
if (pnum==0)
{
console_print(id,"[%s] There are no clients",gModName)
return PLUGIN_HANDLED
}
for (new i=0; i<pnum; i++) {
gAllowedHook[plist[i]]=onoff
if (gIsHooked[plist[i]]==true && onoff==0)
{
RopeRelease(plist[i])
}
}

console_print(id,"[%s] %s all players access to hook/rope",gModName,onoff ? "Gave":"Removed")
}
else if ( arg1[0]=='@' )
{
new plist[32],pnum
get_players(plist,pnum,"ae",arg1[1])
if ( pnum==0 )
{
console_print(id,"[%s] No clients in such team",gModName)
return PLUGIN_HANDLED
}
for (new i=0; i<pnum; i++) {
gAllowedHook[plist[i]]=onoff
if (gIsHooked[plist[i]]==true && onoff==0)
{
RopeRelease(plist[i])
}
}
console_print(id,"[%s] %s all %ss access to hook/rope",onoff ? "Gave":"Removed",arg1[1])
}
else
{
new pName[32]
new player = cmd_target(id,arg1,6)
if (!player) return PLUGIN_HANDLED

gAllowedHook[player]=onoff
if (gAllowedHook[player]==0 && onoff==0)
{
RopeRelease(player)
}


get_user_name(player,pName,31)
console_print(id,"[%s] %s ^"%s^" access to hook/rope",onoff ? "Gave":"Removed",pName)
}

return PLUGIN_HANDLED
}

/************************************************************************************************************************/
/****************************************************** NINJAROPE *******************************************************/
/************************************************************************************************************************/

public ropetask(parm[])
{
new id = parm[0]
new user_origin[3], user_look[3], user_direction[3], move_direction[3]
new A[3], D[3], buttonadjust[3]
new acceleration, velocity_towards_A, desired_velocity_towards_A
new velocity[3], null[3]

if (!is_user_alive(id))
{
RopeRelease(id)
return
}

if (gBeamIsCreated[id] + BEAMLIFE/10 <= get_gametime())
{
beamentpoint(id)
}

null[0] = 0
null[1] = 0
null[2] = 0

get_user_origin(id, user_origin)
get_user_origin(id, user_look,2)
kz_velocity_get(id, velocity)

buttonadjust[0]=0
buttonadjust[1]=0

if (get_user_button(id)&IN_FORWARD) buttonadjust[0]+=1
if (get_user_button(id)&IN_BACK) buttonadjust[0]-=1
if (get_user_button(id)&IN_MOVERIGHT) buttonadjust[1]+=1
if (get_user_button(id)&IN_MOVELEFT) buttonadjust[1]-=1
if (get_user_button(id)&IN_JUMP) buttonadjust[2]+=1
if (get_user_button(id)&IN_DUCK) buttonadjust[2]-=1

if (buttonadjust[0] || buttonadjust[1])
{
user_direction[0] = user_look[0] - user_origin[0]
user_direction[1] = user_look[1] - user_origin[1]

move_direction[0] = buttonadjust[0]*user_direction[0] + user_direction[1]*buttonadjust[1]
move_direction[1] = buttonadjust[0]*user_direction[1] - user_direction[0]*buttonadjust[1]
move_direction[2] = 0

velocity[0] += floatround(move_direction[0] * MOVEACCELERATION * DELTA_T / get_distance(null,move_direction))
velocity[1] += floatround(move_direction[1] * MOVEACCELERATION * DELTA_T / get_distance(null,move_direction))
}

if (buttonadjust[2]) gHookLenght[id] -= floatround(buttonadjust[2] * REELSPEED * DELTA_T)
if (gHookLenght[id] < 100) gHookLenght[id] = 100

A[0] = gHookLocation[id][0] - user_origin[0]
A[1] = gHookLocation[id][1] - user_origin[1]
A[2] = gHookLocation[id][2] - user_origin[2]

D[0] = A[0]*A[2] / get_distance(null,A)
D[1] = A[1]*A[2] / get_distance(null,A)
D[2] = -(A[1]*A[1] + A[0]*A[0]) / get_distance(null,A)

acceleration = - global_gravity * D[2] / get_distance(null,D)

velocity_towards_A = (velocity[0] * A[0] + velocity[1] * A[1] + velocity[2] * A[2]) / get_distance(null,A)
desired_velocity_towards_A = (get_distance(user_origin,gHookLocation[id]) - gHookLenght[id] /*- 10*/) * 4

if (get_distance(null,D)>10)
{
velocity[0] += floatround((acceleration * DELTA_T * D[0]) / get_distance(null,D))
velocity[1] += floatround((acceleration * DELTA_T * D[1]) / get_distance(null,D))
velocity[2] += floatround((acceleration * DELTA_T * D[2]) / get_distance(null,D))
}

velocity[0] += ((desired_velocity_towards_A - velocity_towards_A) * A[0]) / get_distance(null,A)
velocity[1] += ((desired_velocity_towards_A - velocity_towards_A) * A[1]) / get_distance(null,A)
velocity[2] += ((desired_velocity_towards_A - velocity_towards_A) * A[2]) / get_distance(null,A)

kz_velocity_set(id, velocity)
}

public hooktask(parm[])
{
new id = parm[0]
new velocity[3]

if ( !gIsHooked[id] ) return

new user_origin[3],oldvelocity[3]
parm[0] = id

if (!is_user_alive(id))
{
RopeRelease(id)
return
}

if (gBeamIsCreated[id] + BEAMLIFE/10 <= get_gametime())
{
beamentpoint(id)
}

get_user_origin(id, user_origin)
kz_velocity_get(id, oldvelocity)
new distance=get_distance( gHookLocation[id], user_origin )
if ( distance > 10 )
{
velocity[0] = floatround( (gHookLocation[id][0] - user_origin[0]) * ( 2.0 * REELSPEED / distance ) )
velocity[1] = floatround( (gHookLocation[id][1] - user_origin[1]) * ( 2.0 * REELSPEED / distance ) )
velocity[2] = floatround( (gHookLocation[id][2] - user_origin[2]) * ( 2.0 * REELSPEED / distance ) )
}
else
{
velocity[0]=0
velocity[1]=0
velocity[2]=0
}

kz_velocity_set(id, velocity)

}

public hook_on(id)
{
if (get_cvar_num("sv_adminhook")==1)
{
if (gAllowedHook[id] || (get_user_flags(id)&ADMIN_LEVEL_E)) {
if (!gIsHooked[id] && is_user_alive(id))
{
new cmd[32]
read_argv(0,cmd,31)
if(equal(cmd,"+rope")) RopeAttach(id,0)
if(equal(cmd,"+hook")) RopeAttach(id,1)
}
}else{
client_print(id,print_chat,"[%s] You have no access to that command",gModName)
return PLUGIN_HANDLED
}
}else{
client_print(id,print_chat,"[%s] This command is deativated",gModName)
}
return PLUGIN_HANDLED
}

public hook_off(id)
{
if (gAllowedHook[id] || (get_user_flags(id)&ADMIN_LEVEL_E)) {
if (gIsHooked[id])
{
RopeRelease(id)
}
}else{
client_print(id,print_chat,"[%s] You have no access to that command",gModName)
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}

public RopeAttach(id,hook)
{
new parm[1], user_origin[3]
parm[0] = id
gIsHooked[id] = true
get_user_origin(id,user_origin)
get_user_origin(id,gHookLocation[id], 3)
gHookLenght[id] = get_distance(gHookLocation[id],user_origin)
global_gravity = get_cvar_num("sv_gravity")
set_user_gravity(id,0.001)
beamentpoint(id)
emit_sound(id, CHAN_STATIC, "weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if (hook) set_task(DELTA_T, "hooktask", 200+id, parm, 1, "b")
else set_task(DELTA_T, "ropetask", 200+id, parm, 1, "b")
}

public RopeRelease(id)
{
gIsHooked[id] = false
killbeam(id)
set_user_gravity(id)
remove_task(200+id)
}

public beamentpoint(id)
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_BEAMENTPOINT )
write_short( id )
write_coord( gHookLocation[id][0] )
write_coord( gHookLocation[id][1] )
write_coord( gHookLocation[id][2] )
write_short( beam ) // sprite index
write_byte( 0 ) // start frame
write_byte( 0 ) // framerate
write_byte( BEAMLIFE ) // life
write_byte( 10 ) // width
write_byte( 0 ) // noise
if (get_user_team(id)==1) // Terrorist
{
write_byte( 255 ) // r, g, b
write_byte( 0 ) // r, g, b
write_byte( 0 ) // r, g, b
}
else // Counter-Terrorist
{
write_byte( 0 ) // r, g, b
write_byte( 0 ) // r, g, b
write_byte( 255 ) // r, g, b
}
write_byte( 150 ) // brightness
write_byte( 0 ) // speed
message_end( )
gBeamIsCreated[id] = get_gametime()
}

public killbeam(id)
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_KILLBEAM )
write_short( id )
message_end()
}

/************************************************************************************************************************/
/******************************************************* FORWARDS *******************************************************/
/************************************************************************************************************************/

public client_disconnect(id) {
gAllowedHook[id]=0
}

/************************************************************************************************************************/
/************************************************** AMXX -> AMX funcs ***************************************************/
/************************************************************************************************************************/
#if USING_AMX
stock get_user_button(id) return entity_get_int(id, EV_INT_button)
#endif








Merci d'avance a tous ceux qui m'apporteront de l'aide =)