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
Edycja Pluginu

Przerobie pluginu na magiczny marker

edycja pluginu

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

#1 anon

    Zaawansowany

  • Użytkownik

Reputacja: -1
Nowy

  • Postów:77
Offline

Napisano 02.07.2014 14:33

Witam 

mam serwer JB i chciałbym aby tylko CT (bez wyjątku) mogło używać tego markera bo mam nieogar z tym.

 

Ten plugin jest już tak zroiony że vipy i admini i CT mogą używać tego markera a ja bym chciał żeby tylko CT mogło uzywać.

 

Przy okazji chciałbym aby zablokować używanie markera na SPEC bo tam też się czasami buguje nawet jak się nie żyje.

#include <amxmodx>

#include <amxmisc>

#include <fakemeta>

#include <xs>



#define PLUGIN "Magic Marker"

#define VERSION "3.0"

#define AUTHOR "stupok69"



#define MAX_PLAYERS 32

#define USAGE_LEVEL ADMIN_KICK



new Float:origin[MAX_PLAYERS+1][3]

new prethink_counter[MAX_PLAYERS+1]

new bool:is_drawing[MAX_PLAYERS+1]

new bool:is_holding[MAX_PLAYERS+1]



new spriteid



public plugin_init()

{

	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_clcmd("+paint", "paint_handler", 0, "Paint on the walls!")

	register_clcmd("-paint", "paint_handler", 0, "Paint on the walls!")

	register_forward(FM_PlayerPreThink, "forward_FM_PlayerPreThink", 0)

}



public plugin_precache()

{

	spriteid = precache_model("sprites/lgtning.spr")

}



public paint_handler(id)

{

	if(is_user_admin(id) || get_user_team(id) == 2) // Tylko admin badz CT

	{

		if(!is_user_alive(id))

		{

			client_print(id, print_chat, "* Nie mozesz uzywac markera , kiedy nie zyjesz.")

			return PLUGIN_HANDLED

		}

		

		static cmd[2]

		read_argv(0, cmd, 1)

		

		switch(cmd[0])

		{

			case '+': is_drawing[id] = true

			case '-': is_drawing[id] = false

		}

	}

	return PLUGIN_HANDLED

}



public forward_FM_PlayerPreThink(id)

{

	if(prethink_counter[id]++ > 5)

	{

		if(is_drawing[id] && !is_aiming_at_sky(id))

		{

			static Float:cur_origin[3], Float:distance



			cur_origin = origin[id]

			

			if(!is_holding[id])

			{

				fm_get_aim_origin(id, origin[id])

				move_toward_client(id, origin[id])

				is_holding[id] = true

				return FMRES_IGNORED

			}

			

			fm_get_aim_origin(id, origin[id])

			move_toward_client(id, origin[id])

			

			distance = get_distance_f(origin[id], cur_origin)

			

			if(distance > 2)

			{

				draw_line(origin[id], cur_origin)

			}

		}

		else

		{

			is_holding[id] = false

		}

		prethink_counter[id] = 0

	}

	

	return FMRES_IGNORED

}



stock draw_line(Float:origin1[3], Float:origin2[3])

{

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

	write_byte(TE_BEAMPOINTS)

	engfunc(EngFunc_WriteCoord, origin1[0])

	engfunc(EngFunc_WriteCoord, origin1[1])

	engfunc(EngFunc_WriteCoord, origin1[2])

	engfunc(EngFunc_WriteCoord, origin2[0])

	engfunc(EngFunc_WriteCoord, origin2[1])

	engfunc(EngFunc_WriteCoord, origin2[2])

	write_short(spriteid)

	write_byte(0)

	write_byte(10)

	write_byte(255)

	write_byte(50)

	write_byte(0)

	write_byte(random(255))

	write_byte(random(255))

	write_byte(random(255))

	write_byte(255)

	write_byte(0)

	message_end()

}



//from fakemeta_util.inc

stock fm_get_aim_origin(index, Float:origin[3])

{

	static Float:start[3], Float:view_ofs[3]

	pev(index, pev_origin, start)

	pev(index, pev_view_ofs, view_ofs)

	xs_vec_add(start, view_ofs, start)

	

	static Float:dest[3]

	pev(index, pev_v_angle, dest)

	engfunc(EngFunc_MakeVectors, dest)

	global_get(glb_v_forward, dest)

	xs_vec_mul_scalar(dest, 9999.0, dest)

	xs_vec_add(start, dest, dest)

	

	engfunc(EngFunc_TraceLine, start, dest, 0, index, 0)

	get_tr2(0, TR_vecEndPos, origin)

	

	return 1

}



stock move_toward_client(id, Float:origin[3])

{		

	static Float:player_origin[3]

	

	pev(id, pev_origin, player_origin)

	

	origin[0] += (player_origin[0] > origin[0]) ? 1.0 : -1.0

	origin[1] += (player_origin[1] > origin[1]) ? 1.0 : -1.0

	origin[2] += (player_origin[2] > origin[2]) ? 1.0 : -1.0

}

//Thanks Alka!

stock bool:is_aiming_at_sky(index)

{

	static target, temp

	

	get_user_aiming(index, target, temp)

	

	if(engfunc(EngFunc_PointContents,target) == CONTENTS_SKY)

		return true

	

	return false

}

  • +
  • -
  • 0

#2 k4x4z5

    Wszechwidzący

  • Użytkownik

Reputacja: 84
Zaawansowany

  • Postów:257
  • Imię:Marcin
  • Lokalizacja:zDaleka
Offline

Napisano 02.07.2014 15:36

Lap tylko dla ct:

#include <amxmodx>

#include <amxmisc>

#include <fakemeta>

#include <xs>



#define PLUGIN "Magic Marker"

#define VERSION "3.0"

#define AUTHOR "stupok69"



#define MAX_PLAYERS 32

#define USAGE_LEVEL ADMIN_KICK



new Float:origin[MAX_PLAYERS+1][3]

new prethink_counter[MAX_PLAYERS+1]

new bool:is_drawing[MAX_PLAYERS+1]

new bool:is_holding[MAX_PLAYERS+1]



new spriteid



public plugin_init()

{

	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_clcmd("+paint", "paint_handler", 0, "Paint on the walls!")

	register_clcmd("-paint", "paint_handler", 0, "Paint on the walls!")

	register_forward(FM_PlayerPreThink, "forward_FM_PlayerPreThink", 0)

}



public plugin_precache()

{

	spriteid = precache_model("sprites/lgtning.spr")

}



public paint_handler(id)

{

	if(get_user_team(id) == 2) 

	{

		if(!is_user_alive(id))
		{

			client_print(id, print_chat, "* Nie mozesz uzywac markera , kiedy nie zyjesz.")

			return PLUGIN_HANDLED

		}

		

		static cmd[2]

		read_argv(0, cmd, 1)

		

		switch(cmd[0])

		{

			case '+': is_drawing[id] = true

			case '-': is_drawing[id] = false

		}

	}

	return PLUGIN_HANDLED

}



public forward_FM_PlayerPreThink(id)

{

	if(prethink_counter[id]++ > 5)

	{

		if(is_drawing[id] && !is_aiming_at_sky(id))

		{

			static Float:cur_origin[3], Float:distance



			cur_origin = origin[id]

			

			if(!is_holding[id])

			{

				fm_get_aim_origin(id, origin[id])

				move_toward_client(id, origin[id])

				is_holding[id] = true

				return FMRES_IGNORED

			}

			

			fm_get_aim_origin(id, origin[id])

			move_toward_client(id, origin[id])

			

			distance = get_distance_f(origin[id], cur_origin)

			

			if(distance > 2)

			{

				draw_line(origin[id], cur_origin)

			}

		}

		else

		{

			is_holding[id] = false

		}

		prethink_counter[id] = 0

	}

	

	return FMRES_IGNORED

}



stock draw_line(Float:origin1[3], Float:origin2[3])

{

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

	write_byte(TE_BEAMPOINTS)

	engfunc(EngFunc_WriteCoord, origin1[0])

	engfunc(EngFunc_WriteCoord, origin1[1])

	engfunc(EngFunc_WriteCoord, origin1[2])

	engfunc(EngFunc_WriteCoord, origin2[0])

	engfunc(EngFunc_WriteCoord, origin2[1])

	engfunc(EngFunc_WriteCoord, origin2[2])

	write_short(spriteid)

	write_byte(0)

	write_byte(10)

	write_byte(255)

	write_byte(50)

	write_byte(0)

	write_byte(random(255))

	write_byte(random(255))

	write_byte(random(255))

	write_byte(255)

	write_byte(0)

	message_end()

}



//from fakemeta_util.inc

stock fm_get_aim_origin(index, Float:origin[3])

{

	static Float:start[3], Float:view_ofs[3]

	pev(index, pev_origin, start)

	pev(index, pev_view_ofs, view_ofs)

	xs_vec_add(start, view_ofs, start)

	

	static Float:dest[3]

	pev(index, pev_v_angle, dest)

	engfunc(EngFunc_MakeVectors, dest)

	global_get(glb_v_forward, dest)

	xs_vec_mul_scalar(dest, 9999.0, dest)

	xs_vec_add(start, dest, dest)

	

	engfunc(EngFunc_TraceLine, start, dest, 0, index, 0)

	get_tr2(0, TR_vecEndPos, origin)

	

	return 1

}



stock move_toward_client(id, Float:origin[3])

{		

	static Float:player_origin[3]

	

	pev(id, pev_origin, player_origin)

	

	origin[0] += (player_origin[0] > origin[0]) ? 1.0 : -1.0

	origin[1] += (player_origin[1] > origin[1]) ? 1.0 : -1.0

	origin[2] += (player_origin[2] > origin[2]) ? 1.0 : -1.0

}

//Thanks Alka!

stock bool:is_aiming_at_sky(index)

{

	static target, temp

	

	get_user_aiming(index, target, temp)

	

	if(engfunc(EngFunc_PointContents,target) == CONTENTS_SKY)

		return true

	

	return false

}

  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: edycja pluginu

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

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