for some reason i cant get hook to work... heres the code please help..
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#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
//Checkpoint Stuff
new oldpoint[33][3]
new newpoint[33][3]
new distance[33]
//Hook Stuff
new gHookLocation[33][3]
new gHookLenght[33]
new bool:gIsHooked[33]
new Float:gBeamIsCreated[33]
new global_gravity
new beam
public plugin_init() {
register_plugin("Kz Mod", "1.0", "Fire")
// Cvars
register_cvar("kz_mod", "0")
register_cvar("kz_respawn", "0")
register_cvar("kz_checkpoints", "0")
register_cvar("kz_godmode", "0")
register_cvar("kz_noclip", "0")
register_cvar("kz_hook", "0")
register_cvar("kz_scout", "0")
//Client Commands
register_clcmd("say /respawn","respawn_client")
register_clcmd("say /checkpoint","add_checkpoint")
register_clcmd("say /gocheck","goto_checkpoint")
register_clcmd("say /stuck","stuck")
register_clcmd("say /god","godmode")
register_clcmd("say /clip","noclip")
register_clcmd("+hook", "hook_on")
register_clcmd("-hook", "hook_off")
//Events
register_event("DeathMsg","respawn_client","a")
register_event("ResetHUD","give_scout","b")
}
public respawn_client() {
if(get_cvar_num("kz_mod") == 0) {
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_respawn") == 0) {
return PLUGIN_HANDLED
}
new victim_id = read_data(2)
new param[1]
param[0]=victim_id
set_task(0.9,"player_spawn",72,param,1)
set_task(0.5,"player_spawn",72,param,1)
return PLUGIN_CONTINUE
}
public player_spawn(parm[1])
{
spawn(parm[0])
}
public add_checkpoint(id) {
if(get_cvar_num("kz_mod") == 0) {
client_print(id,print_chat,"[Kz Mod] This Plugin Is Off")
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_checkpoints") == 0) {
client_print(id,print_chat,"[Kz Mod] Checkpoints Are Off")
return PLUGIN_HANDLED
}
if(!(oldpoint[id][0])) {
get_user_origin(id,oldpoint[id],0)
client_print(id,print_chat,"[Kz Mod] Checkpoint Recorded, Please Record One More Checkpoint To Teleport Freely")
return PLUGIN_HANDLED
}
if(!(newpoint[id][0])) {
get_user_origin(id,newpoint[id],0)
client_print(id,print_chat,"[Kz Mod] Second Checkpoint Recorded, You May Now Teleport Freely")
return PLUGIN_HANDLED
}
oldpoint = newpoint
get_user_origin(id,newpoint[id],0)
distance[id] = get_distance(oldpoint[id],newpoint[id])
client_print(id,print_chat,"[Kz Mod] Point Saved, You are %i Units From Your Last Checkpoint",distance[id])
return PLUGIN_HANDLED
}
public goto_checkpoint(id) {
if(get_cvar_num("kz_mod") == 0) {
client_print(id,print_chat,"[Kz Mod] This Plugin Is Off")
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_checkpoints") == 0) {
client_print(id,print_chat,"[Kz Mod] Checkpoints Are Off")
return PLUGIN_HANDLED
}
if(!(oldpoint[id][0])) {
client_print(id,print_chat,"[Kz Mod] You Have To Add a Checkpoint Before You Can Teleport")
return PLUGIN_HANDLED
}
if(!(newpoint[id][0])) {
client_print(id,print_chat,"[Kz Mod] You Should Register More Than One Checkpoint Before Teleporting")
set_user_origin(id,oldpoint[id])
return PLUGIN_HANDLED
}
set_user_origin(id,newpoint[id])
client_print(id,print_chat,"[Kz Mod] You Have Been Teleported, If You Are Stuck, Say /stuck Or Say /respawn")
return PLUGIN_HANDLED
}
public stuck(id) {
if(get_cvar_num("kz_mod") == 0) {
client_print(id,print_chat,"[Kz Mod] This Plugin Is Off")
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_checkpoints") == 0) {
client_print(id,print_chat,"[Kz Mod] Checkpoints Are Off")
return PLUGIN_HANDLED
}
if(!(newpoint[id][0])) {
client_print(id,print_chat,"[Kz Mod] You Only Have One Checkpoint Recorded, Unable To Move")
return PLUGIN_HANDLED
}
set_user_origin(id,oldpoint[id])
client_print(id,print_chat,"[Kz Mod] You Have Been Teleported Back To Your Old Checkpoint")
return PLUGIN_HANDLED
}
public godmode(id) {
if(get_cvar_num("kz_mod") == 0) {
client_print(id,print_chat,"[Kz Mod] This Plugin Is Off")
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_godmode") == 0) {
client_print(id,print_chat,"[Kz Mod] Godmode Is Off")
return PLUGIN_HANDLED
}
new name[33]
get_user_name(id,name,32)
if(get_user_godmode(id) == 0) {
set_user_godmode(id,1)
client_print(id,print_center,"[Kz Mod] You Now Have Godmode Set")
client_print(0,print_chat,"[Kz Mod] %s Now Has Godmode On",name)
return PLUGIN_HANDLED
}
if(get_user_godmode(id) == 1) {
set_user_godmode(id,0)
client_print(id,print_center,"[Kz Mod] You No Longer Have Godmode Set")
client_print(0,print_chat,"[Kz Mod] %s Now Has Godmode Off",name)
return PLUGIN_HANDLED
}
client_print(0,print_chat,"[Kz Mod] Error...Godmode Wasn't On Or Off? Inaccurate Statement")
return PLUGIN_HANDLED
}
public noclip(id) {
if(get_cvar_num("kz_mod") == 0) {
client_print(id,print_chat,"[Kz Mod] This Plugin Is Off")
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_noclip") == 0) {
client_print(id,print_chat,"[Kz Mod] Noclip Is Off")
return PLUGIN_HANDLED
}
new name[33]
get_user_name(id,name,32)
if(get_user_noclip(id) == 0) {
set_user_noclip(id,1)
client_print(id,print_center,"[Kz Mod] You Now Have Noclip On")
client_print(0,print_chat,"[Kz Mod %s Now Has Noclip On",name)
return PLUGIN_HANDLED
}
if(get_user_noclip(id) == 1) {
set_user_noclip(id,0)
client_print(id,print_center,"[Kz Mod] You No Longer Have NoClip On")
client_print(0,print_chat,"[Kz Mod] %s Now Has Noclip Off",name)
return PLUGIN_HANDLED
}
client_print(0,print_chat,"[Kz Mod] Error...Noclip Wasn't On Or Off? Inaccurate Statement")
return PLUGIN_HANDLED
}
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])
}
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("kz_mod") == 0) {
client_print(id,print_chat,"[Kz Mod] This Plugin Is Off")
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_hook") == 0) {
client_print(id,print_chat,"[Kz Mod] Hook Is Off")
return PLUGIN_HANDLED
}
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)
}
return PLUGIN_HANDLED
}
public hook_off(id) {
if (gIsHooked[id]) {
RopeRelease(id)
}
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()
}
public give_scout(id) {
if(get_cvar_num("kz_mod") == 0) {
return PLUGIN_HANDLED
}
if(get_cvar_num("kz_scout") == 0) {
return PLUGIN_HANDLED
}
give_item(id, "weapon_scout")
return PLUGIN_CONTINUE
}
*THIS CODE IS ONLY FOR MY USE... SOME CODE
BEEN TAKEN FROM OTHER PLUGINS... I DO