-           
-         /************************************************************************************************** 
-           
-         **** 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") 
-            register_clcmd("-rope", "hook_off") 
-            register_clcmd("+hook", "hook_on") 
-            register_clcmd("-hook", "hook_off") 
-       
-     register_logevent( "addhook", 2, "1=Round_Start" ); 
-           
-            //HOOKED EVENTS 
-            register_event("ResetHUD", "ResetHUD", "b") 
-         } 
-         /************************************************************************************************************************/ 
-     public client_putinserver(id) 
-     { 
-             new name[33] 
-             get_user_name(id, name, 31) 
-             server_cmd("amx_granthook %s", name) 
-     } 
-         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) 
-               { 
-                 server_cmd("amx_granthook @all") 
-               if (gAllowedHook[id]) { 
-                  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] Nincs elerhetoseged hozza",gModName) 
-                  return PLUGIN_HANDLED 
-               } 
-            }else{ 
-               client_print(id,print_chat,"[%s] Ez a parancs ki van kapcsolva",gModName) 
-            } 
-            return PLUGIN_HANDLED 
-         } 
-           
-         public hook_off(id) 
-         { 
-            if (gAllowedHook[id]) { 
-               if (gIsHooked[id]) 
-               { 
-                  RopeRelease(id) 
-               } 
-            }else{ 
-               client_print(id,print_chat,"[%s] Nincs elerhetoseged hozza",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 
-