Добавяне на флаг за lite_kill_assists.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

Добавяне на флаг за lite_kill_assists.

Мнение от iv69 » 30 Сеп 2020, 18:25

Намерих много гладко и добре функциониращ lite_kill_assists. Има ли начин lite_kill_assists да действа само за играчи с флаг "q".

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <fun>
#include <cstrike>

// #define LIVE_UPDATE 	// Сразу обновлять кол-во фрагов или же в начале раунда. Включение добавит "тяжести"

#define IsValidPlayers(%1,%2) ((1 <= %1 <= 32) && (1 <= %2 <= 32))

new g_iAssist[33];
new g_iAssDamage[33][33];

public plugin_init()
{
#define VERSION "1.17"
	register_plugin("Lite Kill Assist", VERSION, "neygomon");
	register_cvar("lite_assist", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
	
	register_event("HLTV",     "eRoundStart", "a", "1=0", "2=0");
	register_event("DeathMsg", "eDeathMsg", "a", "1>0");
	register_event("Damage",   "eDamage", "be", "2!0", "3=0", "4!0");
}

public client_disconnect(id)
	ResetAssist(id);

public eRoundStart()
{
	new pl[32], pnum; get_players(pl, pnum);
	for(new i; i < pnum; i++)
		ResetAssist(pl[i]);
}
	
public eDeathMsg()
{
	static pKiller, pVictim;
	pKiller = read_data(1);
	pVictim = read_data(2);
	if(pKiller == pVictim || pKiller == g_iAssist[pVictim] || !is_user_connected(g_iAssist[pVictim])) return;
	
	cs_set_user_money(g_iAssist[pVictim], cs_get_user_money(g_iAssist[pVictim]) + 100);
	static iFrags; iFrags = get_user_frags(g_iAssist[pVictim]) + 1;
	set_user_frags(g_iAssist[pVictim], iFrags);
#if defined LIVE_UPDATE
	static mScoreInfo; if(!mScoreInfo) mScoreInfo = get_user_msgid("ScoreInfo");
	message_begin(MSG_ALL, mScoreInfo);
	write_byte(g_iAssist[pVictim]);
	write_short(iFrags);
	write_short(get_user_deaths(g_iAssist[pVictim]));
	write_short(0);
	write_short(get_user_team(g_iAssist[pVictim]));
	message_end();
#endif
	static killer[32], victim[32]; 
	is_user_connected(pKiller) ? get_user_name(pKiller, killer, charsmax(killer)) : formatex(killer, charsmax(killer), "Killer unknown");
	get_user_name(pVictim, victim, charsmax(victim));
	ChatColor(g_iAssist[pVictim], "^4[Kill Assist] ^1You assist ^3%s ^1for kill ^3%s^1. You received^4 1 frag ^1+^4 $100.", killer, victim);	
	ResetAssist(pVictim);
}

public eDamage(id)
{
	static pAttacker; pAttacker = get_user_attacker(id);
	if(id == pAttacker || !IsValidPlayers(id, pAttacker)) return;
	g_iAssDamage[id][pAttacker] += read_data(2);
	if(!g_iAssist[id] && g_iAssDamage[id][pAttacker] >= 65)
		g_iAssist[id] = pAttacker;
}

ResetAssist(id)
{
	g_iAssist[id] = 0;
	arrayset(g_iAssDamage[id], 0, sizeof g_iAssDamage[]);
}

stock ChatColor(id, const szMessage[], any:...)
{
	static szMsg[190], IdMsg; vformat(szMsg, charsmax(szMsg), szMessage, 3);
	if(!IdMsg) IdMsg = get_user_msgid("SayText");
	message_begin(MSG_ONE, IdMsg, .player = id);
	write_byte(id);
	write_string(szMsg);
	message_end();
}
Благодаря.

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Добавяне на флаг за lite_kill_assists.

Мнение от JackEyedJones » 01 Окт 2020, 12:25

Код за потвърждение: Избери целия код

#define ASSIST_FLAG ADMIN_LEVEL_E

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

// #define LIVE_UPDATE

#define IsValidPlayers(%1,%2) ((1 <= %1 <= 32) && (1 <= %2 <= 32))
#define ASSIST_FLAG ADMIN_LEVEL_E

new g_iAssist[33];
new g_iAssDamage[33][33];

public plugin_init()
{
#define VERSION "1.17"
	register_plugin("Lite Kill Assist", VERSION, "neygomon");
	register_cvar("lite_assist", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
	
	register_event("HLTV",     "eRoundStart", "a", "1=0", "2=0");
	register_event("DeathMsg", "eDeathMsg", "a", "1>0");
	register_event("Damage",   "eDamage", "be", "2!0", "3=0", "4!0");
}

public client_disconnect(id)
	ResetAssist(id);

public eRoundStart()
{
	new pl[32], pnum; get_players(pl, pnum);
	for(new i; i < pnum; i++)
		ResetAssist(pl[i]);
}
	
public eDeathMsg()
{
	static pKiller, pVictim;
	pKiller = read_data(1);
	pVictim = read_data(2);

	if(!access(pKiller, ASSIST_FLAG)) return;
	if(pKiller == pVictim || pKiller == g_iAssist[pVictim] || !is_user_connected(g_iAssist[pVictim])) return;
	
	cs_set_user_money(g_iAssist[pVictim], cs_get_user_money(g_iAssist[pVictim]) + 100);
	static iFrags; iFrags = get_user_frags(g_iAssist[pVictim]) + 1;
	set_user_frags(g_iAssist[pVictim], iFrags);
#if defined LIVE_UPDATE
	static mScoreInfo; if(!mScoreInfo) mScoreInfo = get_user_msgid("ScoreInfo");
	message_begin(MSG_ALL, mScoreInfo);
	write_byte(g_iAssist[pVictim]);
	write_short(iFrags);
	write_short(get_user_deaths(g_iAssist[pVictim]));
	write_short(0);
	write_short(get_user_team(g_iAssist[pVictim]));
	message_end();
#endif
	static killer[32], victim[32]; 
	is_user_connected(pKiller) ? get_user_name(pKiller, killer, charsmax(killer)) : formatex(killer, charsmax(killer), "Killer unknown");
	get_user_name(pVictim, victim, charsmax(victim));
	ChatColor(g_iAssist[pVictim], "^4[Kill Assist] ^1You assist ^3%s ^1for kill ^3%s^1. You received^4 1 frag ^1+^4 $100.", killer, victim);	
	ResetAssist(pVictim);
}

public eDamage(id)
{
	static pAttacker; pAttacker = get_user_attacker(id);
	if(!access(pAttacker, ASSIST_FLAG)) return;
	if(id == pAttacker || !IsValidPlayers(id, pAttacker)) return;
	g_iAssDamage[id][pAttacker] += read_data(2);
	if(!g_iAssist[id] && g_iAssDamage[id][pAttacker] >= 65)
		g_iAssist[id] = pAttacker;
}

ResetAssist(id)
{
	g_iAssist[id] = 0;
	arrayset(g_iAssDamage[id], 0, sizeof g_iAssDamage[]);
}

stock ChatColor(id, const szMessage[], any:...)
{
	static szMsg[190], IdMsg; vformat(szMsg, charsmax(szMsg), szMessage, 3);
	if(!IdMsg) IdMsg = get_user_msgid("SayText");
	message_begin(MSG_ONE, IdMsg, .player = id);
	write_byte(id);
	write_string(szMsg);
	message_end();
}

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

Добавяне на флаг за lite_kill_assists.

Мнение от iv69 » 01 Окт 2020, 16:17

Благодаря! Работи! Ключа моля!

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Добавяне на флаг за lite_kill_assists.

Мнение от JackEyedJones » 01 Окт 2020, 17:49

iv69 написа: 01 Окт 2020, 16:17 Благодаря! Работи! Ключа моля!
Може да има и команда с която да го изключваш на даден играч, да не получава assists. Не само да има флагово ограничение, а и алтернатива.
През чата - /noassists <nick> примерно. :dtm:

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

Добавяне на флаг за lite_kill_assists.

Мнение от iv69 » 01 Окт 2020, 18:43

JackEyedJones написа: 01 Окт 2020, 17:49
iv69 написа: 01 Окт 2020, 16:17 Благодаря! Работи! Ключа моля!
Може да има и команда с която да го изключваш на даден играч, да не получава assists. Не само да има флагово ограничение, а и алтернатива.
През чата - /noassists <nick> примерно. :dtm:
Ми, честно казано на мен и това ми стига което досега направи! Благодаря за идеята все пак, ако някой пожелае да го ползва и с тази екстра нека пише ! А иначе плъгина мисля, че си го бива. Лично при мен върви доста гладко и без много натоварване дори и с множеството съобщения в чата от плъгина:).

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 14 госта