[Cerere Plugin] Assist

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
User avatar
fentezzzzz
Membru, skill +1
Membru, skill +1
Posts: 490
Joined: 18 Nov 2022, 23:56
Detinator Steam: Da
Reputatie: Membru COMERCIAL
Fost Scripter eXtreamCS.com
Membru anului 2023
Fond eXtream: 0
Discord: fentezzz
Has thanked: 100 times
Been thanked: 88 times

29 Jan 2023, 23:25

Doctor whO? <3 wrote:
27 Jan 2023, 21:21
Rezolvarea este una simpla si banala, dar dupa raspunsul tau de mai sus, iti urez mult succes in rezolvarea ei. Nu meritati ajutor cei care sunteti puturosi si faceti cereri inutile cand ceea ce cautati exista deja pe internet.
Romanul este obisnuit sa primeasca totul pe tava fara prea mult efort.
Servicii Scripting la comanda + panel cs 1.6 unicat
post2835898.html#p2835898
Vice Bravo
Membru, skill +1
Membru, skill +1
Posts: 376
Joined: 11 May 2016, 14:25
Detinator Steam: Da
Detinator server CS: 185.198.27.236
Reputatie: Membru Club eXtreamCS (2 Dec 2022 - 2 Ian 2023)
Fond eXtream: 0
Discord: *** Reclama *** . top
Has thanked: 24 times
Been thanked: 5 times
Contact:

29 Jan 2023, 23:28

Am rezolvat! Inchide-ti, va rog, topic-ul, ca au venit strainii sa ne spuna cum e obisnuit romanul. :))
User avatar
quatro93
Membru, skill 0
Membru, skill 0
Posts: 17
Joined: 30 Dec 2022, 13:45
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Discord: terrorist
Has thanked: 5 times
Been thanked: 1 time

30 Jan 2023, 21:09

am eu ceva bun pentru tine

Code: Select all

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

#define is_user_valid(%0)		(%0 && %0 < g_iMaxPlayers)
#define MAXPLAYERS				32
#define MAXLENGTH				28
#define linux_diff_player		5
#define m_iTeam 				114
#define m_iDeaths				444

#define DAMAGE_FOR_ASSIST		10 	// Сколько процентов урона от хп надо нанести игроку, чтобы засчитало помощь в убийстве
#define MONEY_FOR_ASSIST		100	// Сколько денег платить игроку, совершившему помощь в убийстве. Если сумма меньше или равна нулю, то тогда оплаты не будет.
#define FRAGS_FOR_ASSIST			// Объявите, чтобы игроку, помогшему в убийстве начислялся фраг 
//#define FFA						// Объявите, если Ваш сервер использует FFA режим.
//#define HLTV_FIX					// Объявие, если Ваш сервер использует HLTV прокси.

#if MONEY_FOR_ASSIST > 0
	#define MAXMONEY			16000 // Максимальное количество денег, при котором помощник по убийству больше не будет получать денежное вознаграждение
	#include <cstrike>
#endif

//#define DEBUG

#if AMXX_VERSION_NUM < 183
	#define client_disconnected client_disconnect
#endif

enum _:PLAYER_DATA
{
	DAMAGE_ON[MAXPLAYERS + 1],
	ASSISTANT_NAME[32],
	ASSISTANT,
	MAXHEALTH,
	CONNECTED,
	TEAM
}

new g_ePlayerData[MAXPLAYERS + 1][PLAYER_DATA], g_iMaxPlayers, HamHook:g_pHamSpawnPost

public plugin_init()
{
	register_plugin("Advanced Kill Assists", "0.9", "Spection")
	RegisterHam(Ham_TakeDamage, "player", "Ham_PlayerTakeDamage_Pre", false)
	RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Pre", false)
	DisableHamForward((g_pHamSpawnPost = RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", true)))
	RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", true)
	
	register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0")
	
	#if defined DEBUG
		register_clcmd("assist", "ClCmd_Assist")
	#endif
	g_iMaxPlayers = get_maxplayers() + 1
} 

public Event_HLTV()
{
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(g_ePlayerData[i][CONNECTED])
		{
			g_ePlayerData[i][ASSISTANT] = 0
			arrayset(g_ePlayerData[i][DAMAGE_ON], 0, MAXPLAYERS + 1)
			g_ePlayerData[i][ASSISTANT_NAME] = ""
		}
	}
}

public client_putinserver(id) g_ePlayerData[id][CONNECTED] = true

public client_disconnected(id) 
{
	g_ePlayerData[id][ASSISTANT] = 0
	arrayset(g_ePlayerData[id][DAMAGE_ON], 0, MAXPLAYERS + 1)
	g_ePlayerData[id][ASSISTANT_NAME] = ""
	g_ePlayerData[id][CONNECTED] = false
}

public Ham_PlayerSpawn_Post(id) 
{
	#if !defined FFA
		g_ePlayerData[id][TEAM] = get_pdata_int(id, m_iTeam, linux_diff_player)
	#endif
	g_ePlayerData[id][MAXHEALTH] = pev(id, pev_health) 
	g_ePlayerData[id][ASSISTANT] = 0
	g_ePlayerData[id][ASSISTANT_NAME] = ""
}
	
public Ham_PlayerKilled_Pre(iVictim, iKiller)
{
	if(g_ePlayerData[g_ePlayerData[iVictim][ASSISTANT]][CONNECTED]) g_ePlayerData[g_ePlayerData[iVictim][ASSISTANT]][DAMAGE_ON][iVictim] = 0
	if(!is_user_valid(iKiller)) return HAM_IGNORED
	g_ePlayerData[iKiller][DAMAGE_ON][iVictim] = 0
	if(iKiller == g_ePlayerData[iVictim][ASSISTANT] || iKiller == iVictim || !g_ePlayerData[iVictim][ASSISTANT_NAME][0]) return HAM_IGNORED
	
	static szBuffer[64], szName[32], iLen[2]
	get_user_name(iKiller, szName, charsmax(szName))
	iLen[0] = strlen(szName)
	iLen[1] = strlen(g_ePlayerData[iVictim][ASSISTANT_NAME])
	if(iLen[0] > MAXLENGTH / 2)
	{
		if(iLen[1] > MAXLENGTH / 2)
		{
			if(iLen[0] - MAXLENGTH / 2 > 1)
			{
				if(iLen[1] - MAXLENGTH / 2 > 1)
				{
					strclip(szName, charsmax(szName), MAXLENGTH / 2)
					strclip(g_ePlayerData[iVictim][ASSISTANT_NAME], 31, MAXLENGTH / 2)
				}
				else strclip(szName, charsmax(szName), MAXLENGTH / 2 - (iLen[1] - MAXLENGTH / 2))
			}
			else strclip(g_ePlayerData[iVictim][ASSISTANT_NAME], 31, MAXLENGTH / 2 - (iLen[0] - MAXLENGTH / 2))
		}
		else strclip(szName, charsmax(szName), MAXLENGTH - iLen[1])	
	}
	else if(iLen[1] > MAXLENGTH / 2) strclip(g_ePlayerData[iVictim][ASSISTANT_NAME], 31, MAXLENGTH - iLen[0])
	
	formatex(szBuffer, charsmax(szBuffer), "%s + %s", szName, g_ePlayerData[iVictim][ASSISTANT_NAME])
	
	if(g_ePlayerData[g_ePlayerData[iVictim][ASSISTANT]][CONNECTED]) 
	{	
	#if MONEY_FOR_ASSIST > 0 
		cs_set_user_money(g_ePlayerData[iVictim][ASSISTANT], min(cs_get_user_money(g_ePlayerData[iVictim][ASSISTANT]) + MONEY_FOR_ASSIST, MAXMONEY))
	#endif
	
	#if defined FRAGS_FOR_ASSIST
		set_pev(g_ePlayerData[iVictim][ASSISTANT], pev_frags, float(pev(g_ePlayerData[iVictim][ASSISTANT], pev_frags) + 1))
		static iMsgScoreInfo 
		if(!iMsgScoreInfo) iMsgScoreInfo = get_user_msgid("ScoreInfo")
		message_begin(MSG_ALL, iMsgScoreInfo)
		write_byte(g_ePlayerData[iVictim][ASSISTANT])
		write_short(pev(g_ePlayerData[iVictim][ASSISTANT], pev_frags))
		write_short(get_pdata_int(g_ePlayerData[iVictim][ASSISTANT], m_iDeaths, linux_diff_player))
		write_short(0)
		write_short(g_ePlayerData[g_ePlayerData[iVictim][ASSISTANT]][TEAM])
		message_end();
	#endif
	}
	g_ePlayerData[iVictim][ASSISTANT] = 0
	set_user_fake_name(iKiller, szBuffer)
	EnableHamForward(g_pHamSpawnPost)
	return HAM_IGNORED
}

public Ham_PlayerKilled_Post(iVictim, iKiller)
{
	DisableHamForward(g_pHamSpawnPost)
	#if AMXX_VERSION_NUM >= 183 && defined HLTV_FIX
		set_task(0.1, "task_resetinfo", iKiller + 64)
	#else
		reset_user_info(iKiller)
	#endif
}

#if AMXX_VERSION_NUM >= 183 && defined HLTV_FIX
public task_resetinfo(id) reset_user_info(id - 64)
#endif

public Ham_PlayerTakeDamage_Pre(iVictim, iWeapon, iAttacker, Float:fDamage)
{
	if(!is_user_valid(iAttacker) || iVictim == iAttacker) return HAM_IGNORED
	#if !defined FFA
		if(g_ePlayerData[iVictim][TEAM] == g_ePlayerData[iAttacker][TEAM]) return HAM_IGNORED
	#endif
	g_ePlayerData[iAttacker][DAMAGE_ON][iVictim] += floatround(fDamage)
	if(g_ePlayerData[iAttacker][DAMAGE_ON][iVictim] >= (float(g_ePlayerData[iVictim][MAXHEALTH]) * (DAMAGE_FOR_ASSIST.0 / 100.0)) && !g_ePlayerData[iVictim][ASSISTANT])
	{
		get_user_name(iAttacker, g_ePlayerData[iVictim][ASSISTANT_NAME], 31)
		g_ePlayerData[iVictim][ASSISTANT] = iAttacker
	}
	return HAM_IGNORED
}

stock reset_user_info(id)
{
	new szUserInfo[256]
	copy_infokey_buffer(engfunc(EngFunc_GetInfoKeyBuffer, id), szUserInfo, charsmax(szUserInfo))
	#if defined HLTV_FIX
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(!is_user_hltv(i) && g_ePlayerData[i][CONNECTED])
		{
			message_begin(MSG_ONE, SVC_UPDATEUSERINFO, _, i)
	#else
			message_begin(MSG_ALL, SVC_UPDATEUSERINFO)
	#endif
			write_byte(id - 1)
			write_long(get_user_userid(id))
			write_string(szUserInfo)
			write_long(0)
			write_long(0)
			write_long(0)
			write_long(0)
			message_end()
	#if defined HLTV_FIX
		}
	}
	#endif
}

stock set_user_fake_name(const id, const name[])
{
	#if defined HLTV_FIX
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(!is_user_hltv(i) && g_ePlayerData[i][CONNECTED])
		{
			message_begin(MSG_ONE, SVC_UPDATEUSERINFO, _, i)
	#else
			message_begin(MSG_ALL, SVC_UPDATEUSERINFO)
	#endif
			write_byte(id - 1)
			write_long(get_user_userid(id))
			write_char('\')
			write_char('n')
			write_char('a')
			write_char('m')
			write_char('e')
			write_char('\')
			write_string(name)
			for(new i; i < 16; i++) write_byte(0)
			message_end()
	#if defined HLTV_FIX
		}
	}
	#endif
}

stock strclip(szString[], iSize, iClip)
{
	copy(szString, iClip - 2, szString)
	add(szString, iSize, "..")
}

#if defined DEBUG
public ClCmd_Assist()
{
	new id[3], szArg[64]
	for(new i; i < 3; i++)
	{
		read_argv(i + 1, szArg, charsmax(szArg))
		id[i] = str_to_num(szArg)
	}
	g_ePlayerData[id[2]][ASSISTANT] = id[1]
	get_user_name(id[1], g_ePlayerData[id[2]][ASSISTANT_NAME], 31)
	ExecuteHamB(Ham_Killed, id[2], id[0], 0)
}
#endif
modifici in

Code: Select all

#define DAMAGE_FOR_ASSIST		10 
numarul de damage de la cat sa citeasca asistul
93.114.82.167:27015
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 16 guests