Arkadaslar benim su lr plugine bunny kapatma atabilirmi

Kod:
#include <amxmodx>#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <engine> 


#define PLUGIN "Jailbreak Last Request"
#define VERSION "1.7"
#define AUTHOR "nefret007"


/*================================================================================
Variables | bools | Cvars		
=================================================================================*/


new g_maxPlayers, g_msgSayText, beacon_sprite


new cvar_granadas_bpammo, cvar_scout_bpammo, cvar_effect


new bool:touch_weapons[33], bool:once[33], bool:player_challenged[33], bool:duel_active,bool:death_effect = false,
bool:knife_duel[33] ,bool:deagle_duel[33], bool:grenade_duel[33], bool:scout_duel[33],bool:m3_duel[33]


new tag[] = "[JailBreak]"


/*================================================================================
Init n' precache		
=================================================================================*/


public plugin_precache() 
{	
	beacon_sprite = precache_model("sprites/shockwave.spr")
}


public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	
	RegisterHam(Ham_Touch, "weaponbox", "fw_touch_weapon")
	RegisterHam(Ham_Touch, "armoury_entity", "fw_touch_weapon")
	RegisterHam(Ham_Touch, "weapon_shield", "fw_touch_weapon")
	RegisterHam(Ham_Spawn, "player", "fw_player_respawn", 1)
	RegisterHam(Ham_Killed, "player", "fw_player_killed")	
	register_event("CurWeapon", 	"Event_Change_Weapon", "be", "1=1");
	
	// Client Commands - Versus
	register_clcmd("say /vs", "duel_menu")
	register_clcmd("say !vs", "duel_menu")
	register_clcmd("say_team /vs", "duel_menu")
	register_clcmd("say_team !vs", "duel_menu")
	
	// Cvars
	cvar_granadas_bpammo = register_cvar("jb_grenade_bpammo","10") // amount bpammo grenade | cantidad de granadas
	cvar_scout_bpammo = register_cvar("jb_scout_bpammo", "10") // amount bpammo scout | cantidad de balas pa' la scout
	cvar_effect = register_cvar("jb_effect", "3") // 0 = glow , 1 = beacon ,2 = death_effect 3 = glow n' beacon 'n death_effect
	
	g_maxPlayers = get_maxplayers()
	
	g_msgSayText = get_user_msgid("SayText")
	
	register_dictionary("jailbreak_last_request.txt")
}


/*================================================================================
Round Start				
=================================================================================*/


public event_round_start()
{
	duel_active = false
}


/*================================================================================
forwards				
=================================================================================*/


public fw_player_respawn(id)
{
	if(!is_user_alive(id) || !cs_get_user_team(id))
		return
	
	set_user_rendering(id)
	remove_task(id)
	touch_weapons[id] = false 
	once[id] = false 
	knife_duel[id] = false
	deagle_duel[id] = false
	grenade_duel[id] = false
	scout_duel[id] = false	
	m3_duel[id] = false
	player_challenged[id] = false
}


public fw_touch_weapon(weapon, id)
{
	if (!is_user_connected(id))
		return HAM_IGNORED;
	
	new players[32], pnum, tempid;
	get_players(players, pnum, "a");
	for( new i; i<pnum; i++ )
	{        
		tempid = players[i];
	}
	
	if (touch_weapons[id] || touch_weapons[tempid])
		return HAM_SUPERCEDE;
	
	return HAM_IGNORED;
}
public fw_player_killed(victim, attacker, shouldgib)
{
	new name[32]
	get_user_name(attacker, name, 31)
	
	if(duel_active)
	{
		if(death_effect)
		{
			static Float:FOrigin3[3] 
			pev(victim, pev_origin, FOrigin3)
			
			engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin3, 0)
			write_byte(TE_IMPLOSION)
			engfunc(EngFunc_WriteCoord, FOrigin3[0])
			engfunc(EngFunc_WriteCoord, FOrigin3[1])
			engfunc(EngFunc_WriteCoord, FOrigin3[2])
			write_byte(200)
			write_byte(100)
			write_byte(5)  
			message_end()
			
			engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin3, 0)
			write_byte(TE_PARTICLEBURST) // TE id
			engfunc(EngFunc_WriteCoord, FOrigin3[0]) // x
			engfunc(EngFunc_WriteCoord, FOrigin3[1]) // y
			engfunc(EngFunc_WriteCoord, FOrigin3[2]) // z
			write_short(50) // radius
			write_byte(72) // color
			write_byte(6) // duration (will be randomized a bit)
			message_end()
		}
		if(cs_get_user_team(victim) == CS_TEAM_CT && player_challenged[victim])
		{
			knife_duel[attacker] = false
			deagle_duel[attacker] = false
			m3_duel[attacker] = false
			grenade_duel[attacker] = false
			scout_duel[attacker] = false
			once[attacker] = false
			strip_user_weapons(attacker)
			give_item(attacker, "weapon_knife")
			set_user_rendering(attacker)
			duel_menu(attacker)
		}
		else if(cs_get_user_team(victim) == CS_TEAM_CT && !player_challenged[victim])
		{
			set_task(0.4, "kill_player", attacker)
			set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
			show_hudmessage(0, "%L", LANG_PLAYER,"DUEL_DOWN", name)
			
		}
	}
	remove_task(attacker)
	remove_task(victim)
}


public kill_player(id)
{
	user_kill(id)
}


/*================================================================================
Main Menu				
=================================================================================*/


public duel_menu(id)
{	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	if (!once[id])
	{
		if(cs_get_user_team(id) == CS_TEAM_T)
		{
			new cts[32], ts[32], ctsnum, tsnum 
			
			for (new id=1; id <= g_maxPlayers; id++)
			{
				if (!is_user_connected(id) || !is_user_alive(id)) 
				{ 
					continue 
				} 
				
				if (cs_get_user_team(id) == CS_TEAM_T) 
				{ 
					ts[tsnum++] = id
				} 
				else if (cs_get_user_team(id) == CS_TEAM_CT) 
				{ 
					cts[ctsnum++] = id
				} 
			} 
			if (tsnum == 1 && ctsnum >= 1) 
			{  
				
				static opcion[64]
				
				formatex(opcion, charsmax(opcion),"\y%L:", id, "CHOOSE_DUEL")
				new iMenu = menu_create(opcion, "sub_duel_menu")
				
				formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_1")
				menu_additem(iMenu, opcion, "1")	
				
				formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_2")
				menu_additem(iMenu, opcion, "2")
				
				formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_3")
				menu_additem(iMenu, opcion, "3")	
				
				formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_4")
				menu_additem(iMenu, opcion, "4")
				
				formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_5")
				menu_additem(iMenu, opcion, "5")
				
				
				menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL)
				menu_display(id, iMenu, 0)
				
			}
			else if	(tsnum == 1 && ctsnum < 1)
			{
				ChatColor(id, "%L", LANG_PLAYER,"NOT_CTS", tag) 
			}
			else if	(tsnum > 1)
			{
				ChatColor(id, "%L", LANG_PLAYER,"ONLY_LAST", tag)
			}
		}
		else
		{
			ChatColor(id, "%L", LANG_PLAYER,"ONLY_TTS", tag) 
		}
	}
	else
	{
		ChatColor(id, "%L", LANG_PLAYER,"KILL_CHALLENGED", tag) 
	}
	return PLUGIN_HANDLED
}


public sub_duel_menu(id, menu, item)
{
	
	if (item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback)
	
	new Key = str_to_num(Data)
	
	switch (Key)
	{
		case 1:
		{	
			knife_duel[id] = true
			choose_enemy(id)
		}
		case 2: 
		{
			deagle_duel[id] = true
			choose_enemy(id)
		}
		case 3: 
		{
			grenade_duel[id] = true
			choose_enemy(id)
		}
		case 4: 
		{
			scout_duel[id] = true
			choose_enemy(id)
		}
		case 5:
		{
			m3_duel[id] = true
			choose_enemy(id)
		}
	}
	
	menu_destroy(menu)	
	return PLUGIN_HANDLED
}


/*================================================================================
Menu of challenges				
=================================================================================*/


public choose_enemy(id)
{
	static opcion[64]
	
	formatex(opcion, charsmax(opcion),"\y%L:", id, "CHOOSE_ENEMY")
	new iMenu = menu_create(opcion, "sub_choose_enemy")
	
	new players[32], pnum, tempid
	new szName[32], szTempid[10]
	
	get_players(players, pnum, "a")
	
	for( new i; i<pnum; i++ )
	{
		tempid = players[i]
		
		if (cs_get_user_team(tempid) != CS_TEAM_CT)
		{
			continue
		}
		
		get_user_name(tempid, szName, 31)
		num_to_str(tempid, szTempid, 9)
		menu_additem(iMenu, szName, szTempid, 0)
	}
	
	menu_display(id, iMenu)
	return PLUGIN_HANDLED
}


public sub_choose_enemy(id, menu, item)
{
	if( item == MENU_EXIT )
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback)
	
	new tempid = str_to_num(Data)
	
	new mapname[32], challenger[32], challenged[32], ct_origin[3], te_origin[3]
	
	get_mapname(mapname,31)
	get_user_name(id, challenger, 31)
	get_user_name(tempid, challenged, 31)
	
	// strip weapons
	strip_user_weapons(id)
	strip_user_weapons(tempid)
	
	// health
	set_user_health(id, 100)
	set_user_health(tempid, 100)
	
	// effects
	switch (get_pcvar_num(cvar_effect))
	{
		case 0: // glow
		{
			set_user_rendering(id, kRenderFxGlowShell, 250, 0, 0, kRenderNormal, 20)	
			set_user_rendering(tempid, kRenderFxGlowShell, 0, 0, 250, kRenderNormal, 20)
		}
		case 1: // beacon
		{
			set_task(1.0, "beacon", id)
			set_task(1.0, "beacon", tempid)
		}
		case 2: // death_effect
		{
			death_effect = true
		}
		case 3: // glow n' beacon n' death_effect
		{
			set_user_rendering(id, kRenderFxGlowShell, 250, 0, 0, kRenderNormal, 20)	
			set_task(1.0, "beacon", id)
			set_user_rendering(tempid, kRenderFxGlowShell, 0, 0, 250, kRenderNormal, 20)
			set_task(1.0, "beacon", tempid)
			death_effect = true
		}
	}
	
	// player challenged
	player_challenged[tempid] = true
	
	// lr menu once until he kills the player challenged
	once[id] = true 
	
	// unable pick up weapon (only the 2 players on duel)
	touch_weapons[id] = true
	touch_weapons[tempid] = true
	
	if(knife_duel[id])
	{
		give_item(id, "weapon_knife")
		give_item(tempid, "weapon_knife")
		
		if(equali(mapname,"some1s_jailbreak"))
		{
			ct_origin[0] = -759, ct_origin[1] = 1047, ct_origin[2] = 100
			te_origin[0] = -585, te_origin[1] = 867, te_origin[2] = 100
			set_user_origin(id,te_origin)
			set_user_origin(tempid,ct_origin)
		}
		
		set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
		show_hudmessage(0, "%L",LANG_PLAYER,"KNIFE_DUEL", challenger, challenged)
		
	}
	else if(deagle_duel[id])
	{
		deagle_duel[tempid] = true
		
		cs_set_weapon_ammo(give_item(id, "weapon_deagle"), 1)
		cs_set_weapon_ammo(give_item(tempid, "weapon_deagle"), 1)
		
		if(equali(mapname,"some1s_jailbreak"))
		{
			ct_origin[0] = -1352, ct_origin[1] = 271, ct_origin[2] = 38
			te_origin[0] = -1338, te_origin[1] = -782, te_origin[2] = 38
			set_user_origin(id,te_origin)
			set_user_origin(tempid,ct_origin)
		}
		
		set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
		show_hudmessage(0, "%L", LANG_PLAYER,"DEAGLE_DUEL", challenger, challenged)
	}
	else if(grenade_duel[id])
	{
		give_item(id, "weapon_hegrenade")
		give_item(tempid, "weapon_hegrenade")
		cs_set_user_bpammo(id, CSW_HEGRENADE,get_pcvar_num(cvar_granadas_bpammo))		
		cs_set_user_bpammo(tempid, CSW_HEGRENADE,get_pcvar_num(cvar_granadas_bpammo))
		
		if(equali(mapname,"some1s_jailbreak"))
		{
			ct_origin[0] = -1756, ct_origin[1] = -2526, ct_origin[2] = 36
			te_origin[0] = -3020, te_origin[1] = -2529, te_origin[2] = 36
			set_user_origin(id,te_origin)
			set_user_origin(tempid,ct_origin)
		}
		
		set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
		show_hudmessage(0, "%L", LANG_PLAYER,"GRENADE_DUEL", challenger, challenged)
	}
	else if (m3_duel[id])
	{
		m3_duel[tempid] = true
		
		cs_set_weapon_ammo(give_item(id, "weapon_m3"), 1)
		cs_set_weapon_ammo(give_item(tempid, "weapon_m3"), 1)
		
		if(equali(mapname,"some1s_jailbreak"))
		{
			ct_origin[0] = -1756, ct_origin[1] = -2526, ct_origin[2] = 36
			te_origin[0] = -3020, te_origin[1] = -2529, te_origin[2] = 36
			set_user_origin(id,te_origin)
			set_user_origin(tempid,ct_origin)
		}
		set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
		show_hudmessage(0, "%L", LANG_PLAYER,"M3_DUEL", challenger, challenged)
	}
	else if(scout_duel[id])
	{
		give_item(id, "weapon_scout")
		give_item(tempid, "weapon_scout")
		cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(cvar_scout_bpammo))
		cs_set_user_bpammo(tempid, CSW_SCOUT, get_pcvar_num(cvar_scout_bpammo))
		
		if(equali(mapname,"some1s_jailbreak"))
		{
			ct_origin[0] = -2898, ct_origin[1] = -2040, ct_origin[2] = 37
			te_origin[0] = -2908, te_origin[1] = 905, te_origin[2] = 37
			set_user_origin(id,te_origin)
			set_user_origin(tempid,ct_origin)
		}
		
		set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
		show_hudmessage(0, "%L", LANG_PLAYER,"SCOUT_DUEL", challenger, challenged)
	}
	
	duel_active = true
	
	menu_destroy(menu)
	return PLUGIN_HANDLED
}


public beacon(id)
{
	if(cs_get_user_team(id) == CS_TEAM_CT)
	{
		static origin[3]
		get_user_origin(id, origin)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_BEAMCYLINDER)	// TE id
		write_coord(origin[0])	 	// x
		write_coord(origin[1])		// y
		write_coord(origin[2]-20)	// z
		write_coord(origin[0])    	// x axis
		write_coord(origin[1])    	// y axis
		write_coord(origin[2]+200)	// z axis
		write_short(beacon_sprite)	// sprite
		write_byte(0)			// startframe   
		write_byte(1)			// framerate   
		write_byte(6)			// life
		write_byte(2)  			// width
		write_byte(1)   			// noise    
		write_byte(0)  			// red  
		write_byte(0)   			// green 
		write_byte(250) 		// blue
		write_byte(200)			// brightness
		write_byte(0)			// speed
		message_end()
	}
	else
	{
		static origin[3]
		get_user_origin(id, origin)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_BEAMCYLINDER)	// TE id
		write_coord(origin[0])	 	// x
		write_coord(origin[1])		// y
		write_coord(origin[2]-20)	// z
		write_coord(origin[0])    	// x axis
		write_coord(origin[1])    	// y axis
		write_coord(origin[2]+200)	// z axis
		write_short(beacon_sprite)	// sprite
		write_byte(0)			// startframe   
		write_byte(1)			// framerate   
		write_byte(6)			// life
		write_byte(2)  			// width
		write_byte(1)   			// noise    
		write_byte(250)			// red  
		write_byte(0)   			// green 
		write_byte(0) 			// blue
		write_byte(200)			// brightness
		write_byte(0)			// speed
		message_end()
	}
	set_task(1.0, "beacon", id)
	
}
public Event_Change_Weapon(id)
{
	new iwpn, wclip, wammo
	iwpn = get_user_weapon(id, wclip, wammo)
	get_user_ammo(id, iwpn, wammo, wclip)
	
	if(duel_active)
	{
		if(deagle_duel[id])
		{
			cs_set_user_bpammo(id, CSW_DEAGLE, 1)
		}
		if(wammo == 0)
		{
			if(m3_duel[id])
			{
				cs_set_user_bpammo(id,CSW_M3,1)
			}
			
		}
	}
}
/*================================================================================
Stocks					
=================================================================================*/


stock ChatColor(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4") // Green Color
	replace_all(msg, 190, "!y", "^1") // Default Color
	replace_all(msg, 190, "!team", "^3") // Team Color
	
	if (id) players[0] = id
	else get_players(players, count, "ch")
	for (new i = 0; i < count; i++)
	{
		if (is_user_connected(players[i]))
		{
			message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
			write_byte(players[i])
			write_string(msg)
			message_end()
		}
	}
}