Modificare DUEL

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
DeViLllll
Membru, skill 0
Membru, skill 0
Posts: 40
Joined: 13 Sep 2020, 12:30
Detinator Steam: Nu
CS Status: Hlewllel
Fond eXtream: 0
Has thanked: 4 times
Been thanked: 1 time

30 Nov 2020, 16:45

Vreau sa fie doar
Deagle
Awp
Cutite
Si meniul sa nu mai fie in rusa cand scriu /duel
si sa inceapa direct duelul, ca trebuie sa astept putin dupa aia inca 3 sec

Code: Select all

/*
	[DeathRun] Duel (CT Choose ONLY)

	Plugin by Shidla [SGC]

	Idea & Pay (xD):
	DarkNill	|	ICQ: 555-995-004	(zombie-mod.ru)

	Credits:
	xPaw
	DJ_WEST


	Shidla [SGC] | 2010 | ICQ: 312-298-513

	1.3 [Final Version] | 23/11/2010

	http://Shidla.Gm-Project.NET/
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#define OFFSET_RELOAD	54
#define LINUX_DIFF		4

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))


/*========================================================================================================
===========================================[ Customizations ]=============================================
========================================================================================================*/

new const BOT_NAME[] = "DRM Fake Player"	// InGame Bot Name (in DeathrunManager!)

new const g_ChatPrefix[] = "[DeathRun Duel]"

new const CT_Aura[] = { 0, 0, 250 }
new const T_Aura[] = { 250, 0, 0 }

new const s_StartDuel[][] = { "vox/bizwarn.wav" }			// Duel starting sounds

/*========================================================================================================
=========================================[ Customizations End ]===========================================
========================================================================================================*/


new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33],
	g_OneShot, g_ScoutBPAmmo, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite,
	CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable

new const TASK_CONT = 1352	// CountDown task

public plugin_init()
{
	register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla")
	register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY)

	register_clcmd("say /duel", "StartDuel")
	register_clcmd("say_team /duel", "StartDuel")
	register_clcmd("drop", "Drop_Cmd")

	g_ScoutBPAmmo	= register_cvar("dr_duel_scout_bpammo",		"200")
	g_DeagleBPAmmo	= register_cvar("dr_duel_deagle_bpammo",	"50")
	g_AWPBPAmmo		= register_cvar("dr_duel_awp_bpammo",		"100")
	g_PlayerHP		= register_cvar("dr_duel_player_hp",		"100")
	g_DuelTimeOut	= register_cvar("dr_duel_timeout",			"5")
	g_OneShot		= register_cvar("dr_duel_one_shot", 		"1")	// 1 - one clip bullet (ONLY!); 0 - disable
	g_ButtonsDisable = register_cvar("dr_duel_buttons_disable",	"1")

	register_event("DeathMsg", "Event_Death", "a")
	register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" )
	register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin")
	register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin")
	register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw")
	register_event("CurWeapon","Event_CurWeapon","b")

	register_forward(FM_CmdStart, "fw_CmdStart",1)

	RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
	RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
	RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
	RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1)
	RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1)
	RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1)
	RegisterHam(Ham_Use, "func_button", "fw_Use")

	SayText = get_user_msgid("SayText")
	g_MsgCurWeapon = get_user_msgid("CurWeapon")
	g_MsgSync = CreateHudSyncObj()
	g_Maxplayers = get_maxplayers()

	register_dictionary("dr_duel.txt")
}

public plugin_precache()
{
	RingSprite = precache_model("sprites/zbeam5.spr")

	static i
	for(i = 0; i < sizeof s_StartDuel; i++)
		precache_sound(s_StartDuel[i])
}


public client_putinserver(id)
{
	g_Weapon[id] = 0
	g_WeaponClip[id] = 0
}

public StartDuel(id)
{
	if(!is_user_alive(id))
	{
		new t_Cant_Dead[600 char]
		formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead)
		return PLUGIN_CONTINUE
	}

	if(g_Round_Ended)
	{
		new t_Cant_Round_End[600 char]
		formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End)
		return PLUGIN_CONTINUE
	}

	if(cs_get_user_team(id) == CS_TEAM_T)
	{
		new t_Cant_Ter[600 char]
		formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter)
		return PLUGIN_CONTINUE
	}

	if(g_DuelStarted)
	{
		new t_Cant_Started[600 char]
		formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started)
		return PLUGIN_CONTINUE
	}

	for(new i = 1; i <= g_Maxplayers; i++)
	{
		new Name[32]
		get_user_name(i, Name, 31)

		if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
		{
			g_Num_CT++
			if(g_Num_CT == 1)
				CT_Player = i
			else
				CT_Player = 0
		}

		if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME))
			T_Player = i
	}

	if(g_Num_CT == 1)
	{
		new TextTitle[ 200 char ]
		formatex(TextTitle, charsmax(TextTitle), "\rВыберите оружие для дуэли:")
		new WeapScout[ 200 char ]
		formatex(WeapScout, charsmax(WeapScout), "\yМуха [Scout]")
		new WeapDeagle[ 200 char ]
		formatex(WeapDeagle, charsmax(WeapDeagle), "\yДигл [Deagle]")
		new WeapAWP[ 200 char ]
		formatex(WeapAWP, charsmax(WeapAWP), "\yСлон [AWP]")
		new WeapKNife[ 200 char ]
		formatex(WeapKNife, charsmax(WeapKNife), "\yНож [KNife]")

		new i_Menu = menu_create(TextTitle, "WeaponMenu")
		menu_additem(i_Menu, WeapScout, "1", 0)
		menu_additem(i_Menu, WeapDeagle, "2", 0)
		menu_additem(i_Menu, WeapAWP, "3", 0)
		menu_additem(i_Menu, WeapKNife, "4", 0)

		g_DuelStarted = true
		g_New_Round = false

		fm_strip_user_weapons(CT_Player)
		fm_strip_user_weapons(T_Player)

		set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP)))	// Set CT HP
		set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP)))		// Set T HP

		if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
		{
			fm_set_user_godmode(CT_Player, 1)
			set_task(0.5, "Show_Ring", CT_Player)
		}

		if(is_user_alive(T_Player) && is_user_connected(T_Player))
		{
			fm_set_user_godmode(T_Player, 1)
			set_task(0.5, "Show_Ring", T_Player)
		}

		menu_display(CT_Player, i_Menu, 0)
	}
	else
	{
		new t_Cant_Too_Many[600 char]
		formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
	}

	g_Num_CT = 0

	return PLUGIN_CONTINUE
}

public WeaponMenu(id, menu, item)
{
	new s_Data[4], s_Name[64], i_Access, i_Callback

	menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
	new i_Key = str_to_num(s_Data)

	switch(i_Key)
	{
		case 1:
		{
			Give_Scout(CT_Player)
			Give_Scout(T_Player)
		}

		case 2:
		{
			Give_Deagle(CT_Player)
			Give_Deagle(T_Player)
		}

		case 3:
		{
			Give_AWP(CT_Player)
			Give_AWP(T_Player)
		}

		case 4:
		{
			fm_give_item(CT_Player, "weapon_knife")
			fm_give_item(T_Player, "weapon_knife")
		}
	}

	menu_destroy(menu)

	if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
		fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20)

	if(is_user_alive(T_Player) && is_user_connected(T_Player))
		fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20)

	CountDown_Timer = get_pcvar_num(g_DuelTimeOut)
	set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT)

	return PLUGIN_HANDLED
}

public Event_Death()
{
	new CT_Count, CT_Last_Player

	for(new i = 1; i <= g_Maxplayers; i++)
	{
		new Name[32]
		get_user_name(i, Name, 31)

		if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
		{
			CT_Count++
			if(CT_Count == 1)
				CT_Last_Player = i
			else
				CT_Last_Player = 0
		}
	}

	if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player))
	{
		new t_Can_Start[600 char]
		formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START")
		print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start)
	}

	CT_Count = 0
}

public Event_Round_Start()
{
	g_DuelStarted = false
	g_Round_Ended = false
	g_New_Round = true

	g_Num_CT = 0
	CT_Player = 0
	T_Player = 0

	remove_task(TASK_CONT)

	for(new id = 1; id <= g_Maxplayers; id++)
		fm_set_rendering(id)
}

public Event_Round_End()
{
	g_Round_Ended = true

	CT_Player = 0
	T_Player = 0
}

public Event_CurWeapon(id)
{
	g_Weapon[id] = read_data(2)
	g_WeaponClip[id] = read_data(3)

	if(g_DuelStarted)
	{
		if(g_WeaponClip[id] > 1)
		{
			if(g_Weapon[id] == CSW_SCOUT)
				Weapon_ReChek(id, CSW_SCOUT)

			else if(g_Weapon[id] == CSW_DEAGLE)
				Weapon_ReChek(id, CSW_DEAGLE)

			else if(g_Weapon[id] == CSW_AWP)
				Weapon_ReChek(id, CSW_AWP)
		}
	}
}

public fw_CmdStart(id, handle, seed)
{
	if(!is_user_alive(id) || !g_DuelStarted)
		return FMRES_IGNORED

	if((g_Weapon[id] == CSW_SCOUT || g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot))
	{
		//if(pev(id, pev_button) & IN_RELOAD)
		if(get_uc(handle, UC_Buttons) & IN_RELOAD)
		{
			set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD)
			return FMRES_HANDLED
		}
	}

	return FMRES_IGNORED
}

public Drop_Cmd(id)
{
	if(g_DuelStarted)
	{
		new t_Cant_Drop[600 char]
		formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
		return PLUGIN_HANDLED
	}

	return PLUGIN_CONTINUE
}

public fw_TouchWeapon(weapon, id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED

	if(g_DuelStarted)
		return HAM_SUPERCEDE

	return HAM_IGNORED
}

public fw_Reload_Post(Weap)
{
	if(!g_DuelStarted && !get_pcvar_num(g_OneShot))
		return FMRES_IGNORED

	if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
	{
		if(g_Weapon[CT_Player] == CSW_SCOUT)
			cs_set_user_bpammo(CT_Player, CSW_SCOUT, cs_get_user_bpammo(CT_Player, CSW_SCOUT) + 9)
		else if(g_Weapon[CT_Player] == CSW_DEAGLE)
			cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6)
		else if(g_Weapon[CT_Player] == CSW_AWP)
			cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9)
	}

	if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
	{
		if(g_Weapon[T_Player] == CSW_SCOUT)
			cs_set_user_bpammo(T_Player, CSW_SCOUT, cs_get_user_bpammo(T_Player, CSW_SCOUT) + 9)
		else if(g_Weapon[T_Player] == CSW_DEAGLE)
			cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6)
		else if(g_Weapon[T_Player] == CSW_AWP)
			cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9)
	}

	return FMRES_IGNORED
}

public fw_Use(ent, idcaller, idactivator, use_type, Float:value)
{
	if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T)
	{
		new t_Cant_Drop[600 char]
		formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE")
		print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
		return HAM_SUPERCEDE
	}

	return HAM_IGNORED
}

public Duel_Informer()
{
	if(CountDown_Timer > 1)
	{
		set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1)

		if(CountDown_Timer != 1)
		{
			for(new id = 1; id <= g_Maxplayers; id++)
			{
				new t_Time_Delay[600 char]
				formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1)
				ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay)
			}
		}
	}
	--CountDown_Timer

	if(CountDown_Timer >= 1)
		set_task(1.0, "Duel_Informer", TASK_CONT)
	else
	{
		client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)])

		if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
			fm_set_user_godmode(CT_Player, 0)

		if(is_user_alive(T_Player) && is_user_connected(T_Player))
			fm_set_user_godmode(T_Player, 0)

		remove_task(TASK_CONT)
	}
}

public Show_Ring(id)
{
	if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round)
	{
		static Float:origin[3]
		pev(id, pev_origin, origin)

		if(id == CT_Player)
			Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2])
		else if(id == T_Player)
			Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2])

		set_task(0.5, "Show_Ring", id)
	}
	else
		remove_task(id)
}


/*========================================================================================================
===============================================[ Stocks ]=================================================
========================================================================================================*/
stock fm_give_item(index, const item[])
{
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0

	new ent = fm_create_entity(item)
	if (!pev_valid(ent))
		return 0

	new Float:origin[3]
	pev(index, pev_origin, origin)
	set_pev(ent, pev_origin, origin)
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
	dllfunc(DLLFunc_Spawn, ent)

	new save = pev(ent, pev_solid)
	dllfunc(DLLFunc_Touch, ent, index)
	if (pev(ent, pev_solid) != save)
		return ent

	engfunc(EngFunc_RemoveEntity, ent)

	return -1
}

stock fm_strip_user_weapons(index)
{
	new ent = fm_create_entity("player_weaponstrip")
	if (!pev_valid(ent))
		return 0

	dllfunc(DLLFunc_Spawn, ent)
	dllfunc(DLLFunc_Use, ent, index)
	engfunc(EngFunc_RemoveEntity, ent)

	return 1
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
	new Float:RenderColor[3]
	RenderColor[0] = float(r)
	RenderColor[1] = float(g)
	RenderColor[2] = float(b)

	set_pev(entity, pev_renderfx, fx)
	set_pev(entity, pev_rendercolor, RenderColor)
	set_pev(entity, pev_rendermode, render)
	set_pev(entity, pev_renderamt, float(amount))

	return 1
}

stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
	// who knows what wpnName will be
	static newName[32]

	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,31)

	// go with what we were told
	else formatex(newName,31,"%s",wpnName)

	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,31,"weapon_%s",newName)

	new ent
	while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}

	return ent
}

stock fm_set_user_godmode(index, godmode = 0)
{
	set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)

	return 1
}

stock print_col_chat(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 (Yellow)
	replace_all(msg, 190, "!t", "^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, SayText, _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}

UpDate_HUD(id, csw_weapon)
{
	message_begin(MSG_ONE, g_MsgCurWeapon, _, id)
	write_byte(1)
	write_byte(csw_weapon)	//CSW_weapon
	write_byte(1)	// MaxClip
	message_end()
}

Give_Scout(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		fm_give_item(id, "weapon_scout")

		new wEnt = get_weapon_ent(id, CSW_SCOUT)

		if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
			cs_set_weapon_ammo(wEnt, 1)

		cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(g_ScoutBPAmmo))
		UpDate_HUD(id, wEnt)
	}

}

Give_Deagle(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		fm_give_item(id, "weapon_deagle")

		new wEnt = get_weapon_ent(id, CSW_DEAGLE)

		if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
			cs_set_weapon_ammo(wEnt, 1)

		cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo))
		UpDate_HUD(id, wEnt)
	}
}

Give_AWP(id)
{
	if(is_user_alive(id) && is_user_connected(id))
	{
		fm_give_item(id, "weapon_awp")

		new wEnt = get_weapon_ent(id, CSW_AWP)

		if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
			cs_set_weapon_ammo(wEnt, 1)

		cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo))
		UpDate_HUD(id, wEnt)
	}
}

Weapon_ReChek(id, Weap)
{
	if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id))
	{
		new wEnt = get_weapon_ent(id, Weap)
		if(pev_valid(wEnt))
		{
			cs_set_weapon_ammo(wEnt, 1)
			UpDate_HUD(id, wEnt)
		}
	}
}

Ring(const Float:origin[3], R, G, B)
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_BEAMCYLINDER) // TE id
	engfunc(EngFunc_WriteCoord, origin[0]) // x	10
	engfunc(EngFunc_WriteCoord, origin[1]) // y
	engfunc(EngFunc_WriteCoord, origin[2]) // z
	engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis
	engfunc(EngFunc_WriteCoord, origin[1]) // y axis
	engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis
	write_short(RingSprite) // sprite
	write_byte(0) // startframe
	write_byte(0) // framerate
	write_byte(5) // life
	write_byte(5) // width
	write_byte(0) // noise
	write_byte(R) // red
	write_byte(G) // green
	write_byte(B) // blue
	write_byte(200) // brightness
	write_byte(0) // speed
	message_end()
}
Last edited by Madross on 01 Dec 2020, 00:15, edited 1 time in total.
Reason: Cod adăugat . Topic modificat .
RoyalServer 2
Aneimar
Membru, skill 0
Membru, skill 0
Posts: 90
Joined: 07 Apr 2016, 00:16
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 1 time
Contact:

30 Nov 2020, 17:17

meniul il modifici usor daca stii sa cauti
| Afiseaza codul
formatex(TextTitle, charsmax(TextTitle), "\rВыберите оружие для дуэли:")
new WeapScout[ 200 char ]
formatex(WeapScout, charsmax(WeapScout), "\yМуха [Scout]")
new WeapDeagle[ 200 char ]
formatex(WeapDeagle, charsmax(WeapDeagle), "\yДигл [Deagle]")
new WeapAWP[ 200 char ]
formatex(WeapAWP, charsmax(WeapAWP), "\yСлон [AWP]")
new WeapKNife[ 200 char ]
formatex(WeapKNife, charsmax(WeapKNife), "\yНож [KNife]")

new i_Menu = menu_create(TextTitle, "WeaponMenu")
New:
| Afiseaza codul
formatex(TextTitle, charsmax(TextTitle), "\Meniu duel deathrun:")
new WeapScout[ 200 char ]
formatex(WeapScout, charsmax(WeapScout), "\y[Scout]")
new WeapDeagle[ 200 char ]
formatex(WeapDeagle, charsmax(WeapDeagle), "\y[Deagle]")
new WeapAWP[ 200 char ]
formatex(WeapAWP, charsmax(WeapAWP), "\y[AWP]")
new WeapKNife[ 200 char ]
formatex(WeapKNife, charsmax(WeapKNife), "\y[KNife]")

new i_Menu = menu_create(TextTitle, "WeaponMenu")

"Vreau sa fie doar : Deagle, Awp, Cutite"
| Afiseaza codul
formatex(TextTitle, charsmax(TextTitle), "\Meniu duel deathrun:")
new WeapDeagle[ 200 char ]
formatex(WeapDeagle, charsmax(WeapDeagle), "\y[Deagle]")
new WeapAWP[ 200 char ]
formatex(WeapAWP, charsmax(WeapAWP), "\y[AWP]")
new WeapKNife[ 200 char ]
formatex(WeapKNife, charsmax(WeapKNife), "\y[KNife]")
new i_Menu = menu_create(TextTitle, "WeaponMenu")
menu_additem(i_Menu, WeapDeagle, "1", 0)
menu_additem(i_Menu, WeapAWP, "2", 0)
menu_additem(i_Menu, WeapKNife, "3", 0)

g_DuelStarted = true
g_New_Round = false

fm_strip_user_weapons(CT_Player)
fm_strip_user_weapons(T_Player)

set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP
set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP

if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
{
fm_set_user_godmode(CT_Player, 1)
set_task(0.5, "Show_Ring", CT_Player)
}

if(is_user_alive(T_Player) && is_user_connected(T_Player))
{
fm_set_user_godmode(T_Player, 1)
set_task(0.5, "Show_Ring", T_Player)
}

menu_display(CT_Player, i_Menu, 0)
}
else
{
new t_Cant_Too_Many[600 char]
formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
}

g_Num_CT = 0

return PLUGIN_CONTINUE
}

public WeaponMenu(id, menu, item)
{
new s_Data[4], s_Name[64], i_Access, i_Callback

menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)

switch(i_Key)
{

case 1:
{
Give_Deagle(CT_Player)
Give_Deagle(T_Player)
}

case 2:
{
Give_AWP(CT_Player)
Give_AWP(T_Player)
}

case 3:
{
fm_give_item(CT_Player, "weapon_knife")
fm_give_item(T_Player, "weapon_knife")
}
}

menu_destroy(menu)
User avatar
DeViLllll
Membru, skill 0
Membru, skill 0
Posts: 40
Joined: 13 Sep 2020, 12:30
Detinator Steam: Nu
CS Status: Hlewllel
Fond eXtream: 0
Has thanked: 4 times
Been thanked: 1 time

30 Nov 2020, 20:06

Salut, am pus ultimul tau script editat peste si imi da erorile aste a la compilare
am gresit eu ceva? sau tu? :)) :D
Image

Code: Select all

[*]/*
[DeathRun] Duel (CT Choose ONLY)

Plugin by Shidla [SGC]

Idea & Pay (xD):
DarkNill | ICQ: 555-995-004 (zombie-mod.ru)

Credits:
xPaw
DJ_WEST


Shidla [SGC] | 2010 | ICQ: 312-298-513

1.3 [Final Version] | 23/11/2010

http://Shidla.Gm-Project.NET/
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#define OFFSET_RELOAD 54
#define LINUX_DIFF 4

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))


/*========================================================================================================
===========================================[ Customizations ]=============================================
========================================================================================================*/

new const BOT_NAME[] = "DRM Fake Player" // InGame Bot Name (in DeathrunManager!)

new const g_ChatPrefix[] = "[DeathRun Duel]"

new const CT_Aura[] = { 0, 0, 250 }
new const T_Aura[] = { 250, 0, 0 }

new const s_StartDuel[][] = { "vox/bizwarn.wav" } // Duel starting sounds

/*========================================================================================================
=========================================[ Customizations End ]===========================================
========================================================================================================*/


new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33],
g_OneShot, g_ScoutBPAmmo, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite,
CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable

new const TASK_CONT = 1352 // CountDown task

public plugin_init()
{
register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla")
register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY)

register_clcmd("say /duel", "StartDuel")
register_clcmd("say_team /duel", "StartDuel")
register_clcmd("drop", "Drop_Cmd")

g_ScoutBPAmmo = register_cvar("dr_duel_scout_bpammo", "200")
g_DeagleBPAmmo = register_cvar("dr_duel_deagle_bpammo", "50")
g_AWPBPAmmo = register_cvar("dr_duel_awp_bpammo", "100")
g_PlayerHP = register_cvar("dr_duel_player_hp", "100")
g_DuelTimeOut = register_cvar("dr_duel_timeout", "5")
g_OneShot = register_cvar("dr_duel_one_shot", "1") // 1 - one clip bullet (ONLY!); 0 - disable
g_ButtonsDisable = register_cvar("dr_duel_buttons_disable", "1")

register_event("DeathMsg", "Event_Death", "a")
register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" )
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin")
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw")
register_event("CurWeapon","Event_CurWeapon","b")

register_forward(FM_CmdStart, "fw_CmdStart",1)

RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1)
RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1)
RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1)
RegisterHam(Ham_Use, "func_button", "fw_Use")

SayText = get_user_msgid("SayText")
g_MsgCurWeapon = get_user_msgid("CurWeapon")
g_MsgSync = CreateHudSyncObj()
g_Maxplayers = get_maxplayers()

register_dictionary("dr_duel.txt")
}

public plugin_precache()
{
RingSprite = precache_model("sprites/zbeam5.spr")

static i
for(i = 0; i < sizeof s_StartDuel; i++)
precache_sound(s_StartDuel)
}


public client_putinserver(id)
{
g_Weapon[id] = 0
g_WeaponClip[id] = 0
}

public StartDuel(id)
{
if(!is_user_alive(id))
{
new t_Cant_Dead[600 char]
formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead)
return PLUGIN_CONTINUE
}

if(g_Round_Ended)
{
new t_Cant_Round_End[600 char]
formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End)
return PLUGIN_CONTINUE
}

if(cs_get_user_team(id) == CS_TEAM_T)
{
new t_Cant_Ter[600 char]
formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter)
return PLUGIN_CONTINUE
}

if(g_DuelStarted)
{
new t_Cant_Started[600 char]
formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started)
return PLUGIN_CONTINUE
}

for(new i = 1; i <= g_Maxplayers; i++)
{
new Name[32]
get_user_name(i, Name, 31)

if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
{
g_Num_CT++
if(g_Num_CT == 1)
CT_Player = i
else
CT_Player = 0
}

if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME))
T_Player = i
}

if(g_Num_CT == 1)
{
new TextTitle[ 200 char ]
formatex(TextTitle, charsmax(TextTitle), "\Meniu duel deathrun:")
new WeapDeagle[ 200 char ]
formatex(WeapDeagle, charsmax(WeapDeagle), "\y[Deagle]")
new WeapAWP[ 200 char ]
formatex(WeapAWP, charsmax(WeapAWP), "\y[AWP]")
new WeapKNife[ 200 char ]
formatex(WeapKNife, charsmax(WeapKNife), "\y[KNife]")
new i_Menu = menu_create(TextTitle, "WeaponMenu")
menu_additem(i_Menu, WeapDeagle, "1", 0)
menu_additem(i_Menu, WeapAWP, "2", 0)
menu_additem(i_Menu, WeapKNife, "3", 0)

g_DuelStarted = true
g_New_Round = false

fm_strip_user_weapons(CT_Player)
fm_strip_user_weapons(T_Player)

set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP
set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP

if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
{
fm_set_user_godmode(CT_Player, 1)
set_task(0.5, "Show_Ring", CT_Player)
}

if(is_user_alive(T_Player) && is_user_connected(T_Player))
{
fm_set_user_godmode(T_Player, 1)
set_task(0.5, "Show_Ring", T_Player)
}

menu_display(CT_Player, i_Menu, 0)
}
else
{
new t_Cant_Too_Many[600 char]
formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
}

g_Num_CT = 0

return PLUGIN_CONTINUE
}

public WeaponMenu(id, menu, item)
{
new s_Data[4], s_Name[64], i_Access, i_Callback

menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)

switch(i_Key)
{

case 1:
{
Give_Deagle(CT_Player)
Give_Deagle(T_Player)
}

case 2:
{
Give_AWP(CT_Player)
Give_AWP(T_Player)
}

case 3:
{
fm_give_item(CT_Player, "weapon_knife")
fm_give_item(T_Player, "weapon_knife")
}
}

menu_destroy(menu)

if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20)

if(is_user_alive(T_Player) && is_user_connected(T_Player))
fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20)

CountDown_Timer = get_pcvar_num(g_DuelTimeOut)
set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT)

return PLUGIN_HANDLED
}

public Event_Death()
{
new CT_Count, CT_Last_Player

for(new i = 1; i <= g_Maxplayers; i++)
{
new Name[32]
get_user_name(i, Name, 31)

if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
{
CT_Count++
if(CT_Count == 1)
CT_Last_Player = i
else
CT_Last_Player = 0
}
}

if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player))
{
new t_Can_Start[600 char]
formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START")
print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start)
}

CT_Count = 0
}

public Event_Round_Start()
{
g_DuelStarted = false
g_Round_Ended = false
g_New_Round = true

g_Num_CT = 0
CT_Player = 0
T_Player = 0

remove_task(TASK_CONT)

for(new id = 1; id <= g_Maxplayers; id++)
fm_set_rendering(id)
}

public Event_Round_End()
{
g_Round_Ended = true

CT_Player = 0
T_Player = 0
}

public Event_CurWeapon(id)
{
g_Weapon[id] = read_data(2)
g_WeaponClip[id] = read_data(3)

if(g_DuelStarted)
{
if(g_WeaponClip[id] > 1)
{
if(g_Weapon[id] == CSW_SCOUT)
Weapon_ReChek(id, CSW_SCOUT)

else if(g_Weapon[id] == CSW_DEAGLE)
Weapon_ReChek(id, CSW_DEAGLE)

else if(g_Weapon[id] == CSW_AWP)
Weapon_ReChek(id, CSW_AWP)
}
}
}

public fw_CmdStart(id, handle, seed)
{
if(!is_user_alive(id) || !g_DuelStarted)
return FMRES_IGNORED

if((g_Weapon[id] == CSW_SCOUT || g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot))
{
//if(pev(id, pev_button) & IN_RELOAD)
if(get_uc(handle, UC_Buttons) & IN_RELOAD)
{
set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD)
return FMRES_HANDLED
}
}

return FMRES_IGNORED
}

public Drop_Cmd(id)
{
if(g_DuelStarted)
{
new t_Cant_Drop[600 char]
formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}

public fw_TouchWeapon(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED

if(g_DuelStarted)
return HAM_SUPERCEDE

return HAM_IGNORED
}

public fw_Reload_Post(Weap)
{
if(!g_DuelStarted && !get_pcvar_num(g_OneShot))
return FMRES_IGNORED

if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
{
if(g_Weapon[CT_Player] == CSW_SCOUT)
cs_set_user_bpammo(CT_Player, CSW_SCOUT, cs_get_user_bpammo(CT_Player, CSW_SCOUT) + 9)
else if(g_Weapon[CT_Player] == CSW_DEAGLE)
cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6)
else if(g_Weapon[CT_Player] == CSW_AWP)
cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9)
}

if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
{
if(g_Weapon[T_Player] == CSW_SCOUT)
cs_set_user_bpammo(T_Player, CSW_SCOUT, cs_get_user_bpammo(T_Player, CSW_SCOUT) + 9)
else if(g_Weapon[T_Player] == CSW_DEAGLE)
cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6)
else if(g_Weapon[T_Player] == CSW_AWP)
cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9)
}

return FMRES_IGNORED
}

public fw_Use(ent, idcaller, idactivator, use_type, Float:value)
{
if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T)
{
new t_Cant_Drop[600 char]
formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE")
print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
return HAM_SUPERCEDE
}

return HAM_IGNORED
}

public Duel_Informer()
{
if(CountDown_Timer > 1)
{
set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1)

if(CountDown_Timer != 1)
{
for(new id = 1; id <= g_Maxplayers; id++)
{
new t_Time_Delay[600 char]
formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1)
ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay)
}
}
}
--CountDown_Timer

if(CountDown_Timer >= 1)
set_task(1.0, "Duel_Informer", TASK_CONT)
else
{
client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)])

if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
fm_set_user_godmode(CT_Player, 0)

if(is_user_alive(T_Player) && is_user_connected(T_Player))
fm_set_user_godmode(T_Player, 0)

remove_task(TASK_CONT)
}
}

public Show_Ring(id)
{
if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round)
{
static Float:origin[3]
pev(id, pev_origin, origin)

if(id == CT_Player)
Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2])
else if(id == T_Player)
Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2])

set_task(0.5, "Show_Ring", id)
}
else
remove_task(id)
}


/*========================================================================================================
===============================================[ Stocks ]=================================================
========================================================================================================*/
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0

new ent = fm_create_entity(item)
if (!pev_valid(ent))
return 0

new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)

new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent

engfunc(EngFunc_RemoveEntity, ent)

return -1
}

stock fm_strip_user_weapons(index)
{
new ent = fm_create_entity("player_weaponstrip")
if (!pev_valid(ent))
return 0

dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, index)
engfunc(EngFunc_RemoveEntity, ent)

return 1
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
new Float:RenderColor[3]
RenderColor[0] = float(r)
RenderColor[1] = float(g)
RenderColor[2] = float(b)

set_pev(entity, pev_renderfx, fx)
set_pev(entity, pev_rendercolor, RenderColor)
set_pev(entity, pev_rendermode, render)
set_pev(entity, pev_renderamt, float(amount))

return 1
}

stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
// who knows what wpnName will be
static newName[32]

// need to find the name
if(wpnid) get_weaponname(wpnid,newName,31)

// go with what we were told
else formatex(newName,31,"%s",wpnName)

// prefix it if we need to
if(!equal(newName,"weapon_",7))
format(newName,31,"weapon_%s",newName)

new ent
while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}

return ent
}

stock fm_set_user_godmode(index, godmode = 0)
{
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)

return 1
}

stock print_col_chat(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 (Yellow)
replace_all(msg, 190, "!t", "^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) )
{
message_begin(MSG_ONE_UNRELIABLE, SayText, _, players)
write_byte(players)
write_string(msg)
message_end()
}
}
}
}

UpDate_HUD(id, csw_weapon)
{
message_begin(MSG_ONE, g_MsgCurWeapon, _, id)
write_byte(1)
write_byte(csw_weapon) //CSW_weapon
write_byte(1) // MaxClip
message_end()
}

Give_Scout(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_scout")

new wEnt = get_weapon_ent(id, CSW_SCOUT)

if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)

cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(g_ScoutBPAmmo))
UpDate_HUD(id, wEnt)
}

}

Give_Deagle(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_deagle")

new wEnt = get_weapon_ent(id, CSW_DEAGLE)

if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)

cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo))
UpDate_HUD(id, wEnt)
}
}

Give_AWP(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_awp")

new wEnt = get_weapon_ent(id, CSW_AWP)

if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)

cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo))
UpDate_HUD(id, wEnt)
}
}

Weapon_ReChek(id, Weap)
{
if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id))
{
new wEnt = get_weapon_ent(id, Weap)
if(pev_valid(wEnt))
{
cs_set_weapon_ammo(wEnt, 1)
UpDate_HUD(id, wEnt)
}
}
}

Ring(const Float:origin[3], R, G, B)
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, origin[0]) // x 10
engfunc(EngFunc_WriteCoord, origin[1]) // y
engfunc(EngFunc_WriteCoord, origin[2]) // z
engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis
engfunc(EngFunc_WriteCoord, origin[1]) // y axis
engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis
write_short(RingSprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(5) // life
write_byte(5) // width
write_byte(0) // noise
write_byte(R) // red
write_byte(G) // green
write_byte(B) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}
User avatar
Madross
Moderator
Moderator
Posts: 3839
Joined: 06 Dec 2011, 21:31
Detinator Steam: Da
Detinator server CS: CS.eXtreamCS.com
SteamID: madross6
Reputatie: Moderator
Fost Membru Club eXtreamCS (4 luni)
Location: France
Has thanked: 314 times
Been thanked: 146 times
Contact:

01 Dec 2020, 00:17

Topic modificat .
Te rog data viitoare folosește [ cod e][/code]când postezi o sursa .
www.madross.ro
REGULI GENERALE : Afișează regulile forumului
1. Utilizati corect limba romana (folositi cuvinte intregi, virgula, punctul si cratima). NU FOLOSITI limbaj de chat!
2. Raspundeti concret! Fara offtopic, fara mesaje scurte, inutile sau deja postate!
* offtopic = reprezinta devierea de la subiectul care se discuta
3. Folosirea cuvintelor sau inregistrarea cu nume obscene/jignitoare duce la restrictionarea accesului, stergerea contului, etc.
4. Este interzis orice atac la persoana. Discutati ideea, nu persoana !
5. Restrictii reclame :
a) Reclama este permisa in subiecte atat timp cat ele au legatura cu idea care se discuta.
b) In semnatura este permisa o singura reclama SIMPLA de tip TEXT cu dimensiunea fontului setat pe NORMAL
c) Reclama nu este permisa in campurile personale gen: Locatie, CS Status.
d) Nu aveti voie sa deschideti topicuri cu referire exacta la un site in scopul obtinerii de vizite, se considera reclama !
6. Nu folositi imagini in semnatura mai mari decat 500x120. Puteti folosi mai multe imagini care, toate sa nu depaseasca marimea impusa !
7. Folositi CAUTAREA si apoi intrebati pentru ceva daca nu exista pe forum! Numele topicurilor create trebuie sa reflecte continutul subiectului pe care se discuta. Nu vor fi permise topicuri de genul: help, ajutor pls, cum fac, etc
8. Este permisa continuarea unei discutii vechi de pe forum, chiar daca aceasta a fost deschisa cu cativa ani in urma. NU se permite insa dublu-post, triplu-post sau UP-uri.
* dublu-post / triplu - post = adaugarea unor mesaje unul dupa altul intr-o discutie a forumului de catre aceeasi persoana
* UP = adaugarea unor mesaje unul dupa altul cu scopul de a scoate in evidenta discutia respectiva
9. Orice fel de continut cu caracter erotic va fi sters, iar daca este necesar se vor aplica avertismente.
10. Nu este permisa promovarea firmelor de hosting in afara de http://www.eXtreamHost.com , fie ca este vorba de o reclama directa sau indirecta.
11. Nu este permisa postarea de continut ilegal: warez, carding (bine cunoscutele "metode" de furat domenii etc.) si alte practici "neortodoxe", se vor aplica avertismente sau ban, dupa caz si antecedente.

SANCTIONAM DRASTIC INCALCAREA ACESTOR REGULI SI ORICE ABUZ !


WARNINGS/Avertismente
3 Avertismente = BAN pe forum pentru o anumita perioada de timp, in functie de gravitatea regulilor incalcate!
1 Avertisment = 15 de zile

Mesaje private
Abuzul in orice fel de folosirea mesajelor private va duce la sanctionare. In concluzie, vi se va lua dreptul de a mai trimite mesaje.
Reclamatiile cat si penalizarile se regasesc aici: discutii-forum/reclamatii-mesaje-private-t335539.html

Suplimentar
1. In semnatura nu sunt permise linkuri catre jocuri (site-uri) gen bitefight, monstergame, etc.
2. La profilul Detinator server CS se permite reclama catre un server de Counter-Strike.
3. Orice insulta adusa asupra unui administrator se penalizeaza cu ban permanent. Orice insulta adusa asupra unui moderator se penalizeaza (in functie de gravitatea situatiei) de la avertisment pana la ban permanent.
4. Nu se permite ridicarea subiectelor cu mesaje gen "UP!" unul dupa altul, indiferent de timpul dintre raspunsuri.


Atentionari
1. Nu se permite schimbarea numelui pe forum
2. Nu aveti voie cu mai mult de 1 cont / persoana (vi se sterg toate mesajele si contul de utilizator de pe forum drept penalizare) - cei care abuzeaza si isi fac mai multe conturi, risca sa primeasca ban permanent

 

User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

01 Dec 2020, 21:54

Code: Select all

/*[*]
[DeathRun] Duel (CT Choose ONLY)

Plugin by Shidla [SGC]

Idea & Pay (xD):
DarkNill | ICQ: 555-995-004 (zombie-mod.ru)

Credits:
xPaw
DJ_WEST


Shidla [SGC] | 2010 | ICQ: 312-298-513

1.3 [Final Version] | 23/11/2010

http://Shidla.Gm-Project.NET/
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#define OFFSET_RELOAD 54
#define LINUX_DIFF 4

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))


/*========================================================================================================
===========================================[ Customizations ]=============================================
========================================================================================================*/

new const BOT_NAME[] = "DRM Fake Player" // InGame Bot Name (in DeathrunManager!)

new const g_ChatPrefix[] = "[DeathRun Duel]"

new const CT_Aura[] = { 0, 0, 250 }
new const T_Aura[] = { 250, 0, 0 }

new const s_StartDuel[][] = { "vox/bizwarn.wav" } // Duel starting sounds

/*========================================================================================================
=========================================[ Customizations End ]===========================================
========================================================================================================*/


new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33],
g_OneShot, g_ScoutBPAmmo, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite,
CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable

new const TASK_CONT = 1352 // CountDown task

public plugin_init()
{
	register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla")
	register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY)
	
	register_clcmd("say /duel", "StartDuel")
	register_clcmd("say_team /duel", "StartDuel")
	register_clcmd("drop", "Drop_Cmd")
	
	g_ScoutBPAmmo = register_cvar("dr_duel_scout_bpammo", "200")
	g_DeagleBPAmmo = register_cvar("dr_duel_deagle_bpammo", "50")
	g_AWPBPAmmo = register_cvar("dr_duel_awp_bpammo", "100")
	g_PlayerHP = register_cvar("dr_duel_player_hp", "100")
	g_DuelTimeOut = register_cvar("dr_duel_timeout", "5")
	g_OneShot = register_cvar("dr_duel_one_shot", "1") // 1 - one clip bullet (ONLY!); 0 - disable
	g_ButtonsDisable = register_cvar("dr_duel_buttons_disable", "1")
	
	register_event("DeathMsg", "Event_Death", "a")
	register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" )
	register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin")
	register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin")
	register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw")
	register_event("CurWeapon","Event_CurWeapon","b")
	
	register_forward(FM_CmdStart, "fw_CmdStart",1)
	
	RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
	RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
	RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
	RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1)
	RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1)
	RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1)
	RegisterHam(Ham_Use, "func_button", "fw_Use")
	
	SayText = get_user_msgid("SayText")
	g_MsgCurWeapon = get_user_msgid("CurWeapon")
	g_MsgSync = CreateHudSyncObj()
	g_Maxplayers = get_maxplayers()
	
	register_dictionary("dr_duel.txt")
}

public plugin_precache(){
	RingSprite = precache_model("sprites/zbeam5.spr")
	
	static i
	for(i = 0; i < sizeof s_StartDuel; i++)	precache_sound(s_StartDuel[i])
}

public client_putinserver(id){
	g_Weapon[id] = 0
	g_WeaponClip[id] = 0
}

public StartDuel(id){
	if(!is_user_alive(id)){
		new t_Cant_Dead[600 char]
		formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead)
		return PLUGIN_CONTINUE
	}
	
	if(g_Round_Ended){
		new t_Cant_Round_End[600 char]
		formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End)
		return PLUGIN_CONTINUE
	}
	
	if(cs_get_user_team(id) == CS_TEAM_T)
	{
		new t_Cant_Ter[600 char]
		formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter)
		return PLUGIN_CONTINUE
	}
	
	if(g_DuelStarted)
	{
		new t_Cant_Started[600 char]
		formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started)
		return PLUGIN_CONTINUE
	}
	
	for(new i = 1; i <= g_Maxplayers; i++)
	{
		new Name[32]
		get_user_name(i, Name, 31)
		
		if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
		{
			g_Num_CT++
			if(g_Num_CT == 1)
				CT_Player = i
			else
				CT_Player = 0
		}
		
		if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME))
			T_Player = i
	}
	
	if(g_Num_CT == 1)
	{
		new TextTitle[ 200 char ]
		formatex(TextTitle, charsmax(TextTitle), "\Meniu duel deathrun:")
		new WeapDeagle[ 200 char ]
		formatex(WeapDeagle, charsmax(WeapDeagle), "\y[Deagle]")
		new WeapAWP[ 200 char ]
		formatex(WeapAWP, charsmax(WeapAWP), "\y[AWP]")
		new WeapKNife[ 200 char ]
		formatex(WeapKNife, charsmax(WeapKNife), "\y[KNife]")
		new i_Menu = menu_create(TextTitle, "WeaponMenu")
		menu_additem(i_Menu, WeapDeagle, "1", 0)
		menu_additem(i_Menu, WeapAWP, "2", 0)
		menu_additem(i_Menu, WeapKNife, "3", 0)
		
		g_DuelStarted = true
		g_New_Round = false
		
		fm_strip_user_weapons(CT_Player)
		fm_strip_user_weapons(T_Player)
		
		set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP
		set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP
		
		if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
		{
			fm_set_user_godmode(CT_Player, 1)
			set_task(0.5, "Show_Ring", CT_Player)
		}
		
		if(is_user_alive(T_Player) && is_user_connected(T_Player))
		{
			fm_set_user_godmode(T_Player, 1)
			set_task(0.5, "Show_Ring", T_Player)
		}
		
		menu_display(CT_Player, i_Menu, 0)
	}
	else
	{
		new t_Cant_Too_Many[600 char]
		formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
	}
	
	g_Num_CT = 0
	
	return PLUGIN_CONTINUE
}

public WeaponMenu(id, menu, item)
{
	new s_Data[4], s_Name[64], i_Access, i_Callback
	
	menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
	new i_Key = str_to_num(s_Data)
	
	switch(i_Key)
	{
		
		case 1:
		{
			Give_Deagle(CT_Player)
			Give_Deagle(T_Player)
		}
		
		case 2:
		{
			Give_AWP(CT_Player)
			Give_AWP(T_Player)
		}
		
		case 3:
		{
			fm_give_item(CT_Player, "weapon_knife")
			fm_give_item(T_Player, "weapon_knife")
		}
	}
	
	menu_destroy(menu)
	
	if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
		fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20)
	
	if(is_user_alive(T_Player) && is_user_connected(T_Player))
		fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20)
	
	CountDown_Timer = get_pcvar_num(g_DuelTimeOut)
	set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT)
	
	return PLUGIN_HANDLED
}

public Event_Death()
{
	new CT_Count, CT_Last_Player
	
	for(new i = 1; i <= g_Maxplayers; i++)
	{
		new Name[32]
		get_user_name(i, Name, 31)
		
		if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
		{
			CT_Count++
			if(CT_Count == 1)
				CT_Last_Player = i
			else
				CT_Last_Player = 0
		}
	}
	
	if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player))
	{
		new t_Can_Start[600 char]
		formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START")
		print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start)
	}
	
	CT_Count = 0
}

public Event_Round_Start()
{
	g_DuelStarted = false
	g_Round_Ended = false
	g_New_Round = true
	
	g_Num_CT = 0
	CT_Player = 0
	T_Player = 0
	
	remove_task(TASK_CONT)
	
	for(new id = 1; id <= g_Maxplayers; id++)
		fm_set_rendering(id)
}

public Event_Round_End()
{
	g_Round_Ended = true
	
	CT_Player = 0
	T_Player = 0
}

public Event_CurWeapon(id)
{
	g_Weapon[id] = read_data(2)
	g_WeaponClip[id] = read_data(3)
	
	if(g_DuelStarted)
	{
		if(g_WeaponClip[id] > 1)
		{
			if(g_Weapon[id] == CSW_SCOUT)
				Weapon_ReChek(id, CSW_SCOUT)
			
			else if(g_Weapon[id] == CSW_DEAGLE)
				Weapon_ReChek(id, CSW_DEAGLE)
			
			else if(g_Weapon[id] == CSW_AWP)
				Weapon_ReChek(id, CSW_AWP)
		}
	}
}

public fw_CmdStart(id, handle, seed)
{
	if(!is_user_alive(id) || !g_DuelStarted)
		return FMRES_IGNORED
	
	if((g_Weapon[id] == CSW_SCOUT || g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot))
	{
		//if(pev(id, pev_button) & IN_RELOAD)
		if(get_uc(handle, UC_Buttons) & IN_RELOAD)
		{
			set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD)
			return FMRES_HANDLED
		}
	}
	
	return FMRES_IGNORED
}

public Drop_Cmd(id)
{
	if(g_DuelStarted)
	{
		new t_Cant_Drop[600 char]
		formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP")
		print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_CONTINUE
}

public fw_TouchWeapon(weapon, id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED
	
	if(g_DuelStarted)
		return HAM_SUPERCEDE
	
	return HAM_IGNORED
}

public fw_Reload_Post(Weap)
{
	if(!g_DuelStarted && !get_pcvar_num(g_OneShot))
		return FMRES_IGNORED
	
	if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
	{
		if(g_Weapon[CT_Player] == CSW_SCOUT)
			cs_set_user_bpammo(CT_Player, CSW_SCOUT, cs_get_user_bpammo(CT_Player, CSW_SCOUT) + 9)
		else if(g_Weapon[CT_Player] == CSW_DEAGLE)
			cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6)
		else if(g_Weapon[CT_Player] == CSW_AWP)
			cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9)
	}
	
	if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
	{
		if(g_Weapon[T_Player] == CSW_SCOUT)
			cs_set_user_bpammo(T_Player, CSW_SCOUT, cs_get_user_bpammo(T_Player, CSW_SCOUT) + 9)
		else if(g_Weapon[T_Player] == CSW_DEAGLE)
			cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6)
		else if(g_Weapon[T_Player] == CSW_AWP)
			cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9)
	}
	
	return FMRES_IGNORED
}

public fw_Use(ent, idcaller, idactivator, use_type, Float:value)
{
	if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T)
	{
		new t_Cant_Drop[600 char]
		formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE")
		print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
		return HAM_SUPERCEDE
	}
	
	return HAM_IGNORED
}

public Duel_Informer()
{
	if(CountDown_Timer > 1)
	{
		set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1)
		
		if(CountDown_Timer != 1)
		{
			for(new id = 1; id <= g_Maxplayers; id++)
			{
				new t_Time_Delay[600 char]
				formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1)
				ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay)
			}
		}
	}
	--CountDown_Timer
	
	if(CountDown_Timer >= 1)
		set_task(1.0, "Duel_Informer", TASK_CONT)
	else
	{
		client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)])
		
		if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
			fm_set_user_godmode(CT_Player, 0)
		
		if(is_user_alive(T_Player) && is_user_connected(T_Player))
			fm_set_user_godmode(T_Player, 0)
		
		remove_task(TASK_CONT)
	}
}

public Show_Ring(id)
{
	if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round)
	{
		static Float:origin[3]
		pev(id, pev_origin, origin)
		
		if(id == CT_Player)
			Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2])
		else if(id == T_Player)
			Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2])
		
		set_task(0.5, "Show_Ring", id)
	}
	else
		remove_task(id)
}


/*========================================================================================================
===============================================[ Stocks ]=================================================
========================================================================================================*/
stock fm_give_item(index, const item[])
{
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0
	
	new ent = fm_create_entity(item)
	if (!pev_valid(ent))
		return 0
	
	new Float:origin[3]
	pev(index, pev_origin, origin)
	set_pev(ent, pev_origin, origin)
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
	dllfunc(DLLFunc_Spawn, ent)
	
	new save = pev(ent, pev_solid)
	dllfunc(DLLFunc_Touch, ent, index)
	if (pev(ent, pev_solid) != save)
		return ent
	
	engfunc(EngFunc_RemoveEntity, ent)
	
	return -1
}

stock fm_strip_user_weapons(index)
{
	new ent = fm_create_entity("player_weaponstrip")
	if (!pev_valid(ent))
		return 0
	
	dllfunc(DLLFunc_Spawn, ent)
	dllfunc(DLLFunc_Use, ent, index)
	engfunc(EngFunc_RemoveEntity, ent)
	
	return 1
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
	new Float:RenderColor[3]
	RenderColor[0] = float(r)
	RenderColor[1] = float(g)
	RenderColor[2] = float(b)
	
	set_pev(entity, pev_renderfx, fx)
	set_pev(entity, pev_rendercolor, RenderColor)
	set_pev(entity, pev_rendermode, render)
	set_pev(entity, pev_renderamt, float(amount))
	
	return 1
}

stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
	// who knows what wpnName will be
	static newName[32]
	
	// need to find the name
	if(wpnid) get_weaponname(wpnid,newName,31)
	
	// go with what we were told
	else formatex(newName,31,"%s",wpnName)
	
	// prefix it if we need to
	if(!equal(newName,"weapon_",7))
		format(newName,31,"weapon_%s",newName)
	
	new ent
	while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}
	
	return ent
}

stock fm_set_user_godmode(index, godmode = 0)
{
	set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)
	
	return 1
}

stock print_col_chat(const id, const input[], any:...){
	new count = 1, players[32]
	static msg[195];vformat(msg, charsmax(msg), input, 3)
	
	replace_all(msg, charsmax(msg), "!g", "^4") // Green Color
	replace_all(msg, charsmax(msg), "!y", "^1") // Default Color (Yellow)
	replace_all(msg, charsmax(msg), "!t", "^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, SayText, _, players[i])
			write_byte(players[i])
			write_string(msg)
			message_end()
		}
	}
}

UpDate_HUD(id, csw_weapon){
	message_begin(MSG_ONE, g_MsgCurWeapon, _, id)
	write_byte(1)
	write_byte(csw_weapon) //CSW_weapon
	write_byte(1) // MaxClip
	message_end()
}

public Give_Scout(id){
	if(is_user_alive(id) && is_user_connected(id)){
		fm_give_item(id, "weapon_scout")
		
		new wEnt = get_weapon_ent(id, CSW_SCOUT)
		
		if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
		cs_set_weapon_ammo(wEnt, 1)
		
		cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(g_ScoutBPAmmo))
		UpDate_HUD(id, wEnt)
	}
}

Give_Deagle(id){
	if(is_user_alive(id) && is_user_connected(id)){
		fm_give_item(id, "weapon_deagle")
		
		new wEnt = get_weapon_ent(id, CSW_DEAGLE)
		
		if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
		cs_set_weapon_ammo(wEnt, 1)
		
		cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo))
		UpDate_HUD(id, wEnt)
	}
}

Give_AWP(id){
	if(is_user_alive(id) && is_user_connected(id)){
		fm_give_item(id, "weapon_awp")
		
		new wEnt = get_weapon_ent(id, CSW_AWP)
		
		if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
		cs_set_weapon_ammo(wEnt, 1)
		
		cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo))
		UpDate_HUD(id, wEnt)
	}
}

Weapon_ReChek(id, Weap){
	if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id)){
		static wEnt; wEnt = get_weapon_ent(id, Weap)
		if(pev_valid(wEnt)){
			cs_set_weapon_ammo(wEnt, 1)
			UpDate_HUD(id, wEnt)
		}
	}
}

Ring(const Float:origin[3], R, G, B){
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_BEAMCYLINDER) // TE id
	engfunc(EngFunc_WriteCoord, origin[0]) // x 10
	engfunc(EngFunc_WriteCoord, origin[1]) // y
	engfunc(EngFunc_WriteCoord, origin[2]) // z
	engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis
	engfunc(EngFunc_WriteCoord, origin[1]) // y axis
	engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis
	write_short(RingSprite) // sprite
	write_byte(0) // startframe
	write_byte(0) // framerate
	write_byte(5) // life
	write_byte(5) // width
	write_byte(0) // noise
	write_byte(R) // red
	write_byte(G) // green
	write_byte(B) // blue
	write_byte(200) // brightness
	write_byte(0) // speed
	message_end()
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Post Reply

Return to “Modificari pluginuri”

  • Information