Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem z pluginem Linka dla CT (hook)


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 MrBoNiFacy

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:3
  • Steam:steam
  • Imię:Grzegorz
  • Lokalizacja:Internet
Offline

Napisano 17.10.2022 08:09

Witam mam problem z pluginem Linka dla CT. Otóż chciałem aby ta linka była dostępna dla flagi "q" (ADMIN_LEVEL_E), oraz tylko w CT. Problem jest taki, że tej linki może używać każda osoba. Czy mógłby ktoś powiedzieć co tutaj jest nie tak?

 

P.S. Osoba bez flagi "q" która używa tej linki, co chwile "buguje" sie w ścianie i nie może sie ruszyć, nie wiem co tu jest nie tak :D


 

/**************************************************************************************************

**** 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>
	#include <ColorChat>

	new gModName[32] = "AMX"
#else
	#include <amxmodx>
	#include <amxmisc>
	#include <fun>
	#include <engine>
	#include <ColorChat>
	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_E,"<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_team(id)==2 )) {
            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{
            ColorChat(id, GREEN, "[JailBreak]^x01 Linka dostepna tylko dla CT")
            return 1
        }
    }else{
        ColorChat(id, GREEN, "[JailBreak]^x01 Linka jest aktualnie wylaczona")
    }
    return 1
}

public hook_off(id)
{
	if (gAllowedHook[id] || (get_user_flags(id)&ADMIN_LEVEL_E)) {
		if (gIsHooked[id])
		{
			RopeRelease(id)
		}
	}else{
		ColorChat(id, GREEN, "[JailBreak]^x01 Linka niedostepna. Kup juz teraz: ^x03/sklepsms")
		return 1
	}
	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

  • +
  • -
  • 0

#2 N1K1Cz

    Zaawansowany

  • Użytkownik

Reputacja: 44
Pomocny

  • Postów:138
  • GG:
  • Steam:steam
  • Imię:/\^-^/\
Offline

Napisano 17.10.2022 16:32

Spróbuj w public hook_on i off w warunku: gAllowedHook[id] || (get_user_team(id)==2 )
zmień || na && (przy sprawdzaniu flagi też to samo zmień w public hook off)
  • +
  • -
  • 0

Potrzebujesz pomocy z serwerem/paczką? Napisz do mnie! Chętnie pomogę  ^D^ 

- Discord: N1K1Cz#0751

- GG: 70679564

- Steam: https://steamcommunity.com/id/N1K1Cz/

 





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych