Добавяне на съобщения и квар комадни в Afk & High ping Kicker

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Добавяне на съобщения и квар комадни в Afk & High ping Kicker

Мнение от LoShIaA » 09 Окт 2017, 13:44

Здравейте.
Може ли някой да добави следните съобщения:
1.При влизане в сървъра да изписва:
Players with ping higher than %d will be kicked!
Players who are being afk more than %d seconds will be kicked! (понеже не съм много добре с английския това може да го коригирате както е правилно).

2.Преди да те кикне или препрати към друг сървър излиза съобщението:
You will get %s after 15 seconds for being AFK! Ако може да го изписва още два пъти ето така:
You will get %s after 10 seconds for being AFK!
You will get %s after 5 seconds for being AFK!

3.Да се добави квар с опция за спиране и пускане на съобщението, когато някой играч бъде кикнат или препратен към друг сървър.

4.Имам едно питане, ако пред този ред #define KICK_IMMUNITY ADMIN_IMMUNITY сложа // ще киква ли и админите ? Ако не става така, ако може да обясните как.

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

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <WPMGPrintChatColor>

#define VERSION "1.1a"

#define KICK_IMMUNITY ADMIN_IMMUNITY

enum _:iPunishments
{
	KICK = 1,
	REDIRECT
}

new p_iMaxPing, p_flMaxAfkTime, p_flMaxSpecTime, p_iPingCheckTime, p_iPunishWay, 
p_szRedirectIP, g_iMaxPlayers;
new iPingChecks[33], iUserTotalPing[33], Float:flUserAfkTime[33], bool:blPrintedWarn[33];

new const g_iCheckButtons = ( IN_ATTACK | IN_JUMP | IN_DUCK | IN_FORWARD | IN_BACK | IN_USE | IN_CANCEL | IN_LEFT | IN_RIGHT | IN_MOVELEFT | IN_MOVERIGHT | IN_ATTACK2 | IN_RUN | IN_RELOAD | IN_ALT1 | IN_SCORE );

new const szCheckerClass[] = "kick_manager_checker";

public plugin_init()
{
	register_plugin("Afk & High ping Kicker", VERSION, "TheRedShoko @ AMXX-BG.Info");
	register_cvar("afk_hp_kicker", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED);
	
	p_iMaxPing = register_cvar("kick_manager_maxping", "120");
	p_flMaxAfkTime = register_cvar("kick_manager_afktime", "90.0");
	p_flMaxSpecTime = register_cvar("kick_manager_spectime", "30.0");
	p_iPingCheckTime = register_cvar("kick_manager_pingtime", "5");
	p_iPunishWay = register_cvar("kick_manager_punish", "1");
	p_szRedirectIP = register_cvar("kick_manager_redirectip", "127.0.0.1:27015");
	
	new iEnt = create_entity("info_target");
	
	if (iEnt)
	{
		register_think(szCheckerClass, "CheckUsersStatus");
		
		entity_set_string(iEnt, EV_SZ_classname, szCheckerClass);
		entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
	}
	
	g_iMaxPlayers = get_maxplayers();
}

public client_putinserver(id)
{
	ClearVariables(id);
}

public CheckUsersStatus(iEnt)
{
	if (!is_valid_ent(iEnt)) return;
	
	static iUserPing, iUserLoss;
	
	static Float:flMaxAfkTime;
	flMaxAfkTime = get_pcvar_float(p_flMaxAfkTime);
	
	static Float:flMaxSpecTime;
	flMaxSpecTime = get_pcvar_float(p_flMaxSpecTime);
	
	static iMaxPing;
	iMaxPing = get_pcvar_num(p_iMaxPing);
	
	static iPunishment;
	iPunishment = get_pcvar_num(p_iPunishWay);
	
	static szRedirectIP[16];
	if (iPunishment == REDIRECT)
	{
		get_pcvar_string(p_szRedirectIP, szRedirectIP, charsmax(szRedirectIP));
	}
	
	static szPunishment[32];
	
	switch (iPunishment)
	{
		case KICK: formatex(szPunishment, charsmax(szPunishment), "kicked");
		case REDIRECT: formatex(szPunishment, charsmax(szPunishment), "redirected");
	}
	
	for (new i = 1; i <= g_iMaxPlayers; i++)
	{
		if (!is_user_connected(i) || get_user_flags(i) & KICK_IMMUNITY) continue;
		
		if (cs_get_user_team(i) == CS_TEAM_SPECTATOR || cs_get_user_team(i) == CS_TEAM_UNASSIGNED)
		{
			flUserAfkTime[i] += 0.1;
			
			if (flMaxSpecTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
			{
				PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tSpecKicker!g]!y You will get %s after!g 15!y seconds for being spectator!",
				szPunishment);
				blPrintedWarn[i] = true;
			}
			
			if (flUserAfkTime[i] >= flMaxSpecTime)
			{
				new szName[32];
				get_user_name(i, szName, charsmax(szName));
				
				PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tSpecKicker!g]!y Player!g %s!y got %s for being!t Spectator!y for more than!t %i!y seconds!",
				szName, szPunishment, floatround(flMaxSpecTime));
				
				switch (iPunishment)
				{
					case KICK: server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"", get_user_userid(i), floatround(flMaxSpecTime));
					case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
				}
				
				ClearVariables(i);
			}
		}
		else if (!(entity_get_int(i, EV_INT_button) & g_iCheckButtons) && is_user_alive(i))
		{
			flUserAfkTime[i] += 0.1;
			
			if (flMaxAfkTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
			{
				PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y You will get %s after!g 15!y seconds for being AFK!",
				szPunishment);
				blPrintedWarn[i] = true;
			}
			
			if (flUserAfkTime[i] >= flMaxAfkTime)
			{
				new szName[32];
				get_user_name(i, szName, charsmax(szName));
				
				PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y Player!g %s!y got %s for being!t AFK!y for more than!t %i!y seconds!",
				szName, szPunishment, floatround(flMaxAfkTime));
				
				switch (iPunishment)
				{
					case KICK: server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"", get_user_userid(i), floatround(flMaxAfkTime));
					case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
				}
				
				ClearVariables(i);
			}
		}
		else
		{
			flUserAfkTime[i] = 0.0;
			blPrintedWarn[i] = false;
		}
		
		get_user_ping(i, iUserPing, iUserLoss);
		iUserTotalPing[i] += iUserPing;
		iPingChecks[i]++;
		
		if (iPingChecks[i] >= get_pcvar_num(p_iPingCheckTime) && (iUserTotalPing[i] / iPingChecks[i]) >= iMaxPing)
		{
			new szName[32];
			get_user_name(i, szName, charsmax(szName));
				
			PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tHighPingKicker!g]!y Player!g %s!y got %s for having more than!t AFK!y for more than!t %ims!y!",
			szName, szPunishment, iMaxPing);
			
			switch (iPunishment)
			{
				case KICK: server_cmd("kick #%i ^"You got kicked for having more more than %ims!^"", get_user_userid(i), iMaxPing);
				case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
			}
			
			ClearVariables(i);
		}
	}
	
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
}

ClearVariables(id)
{
	flUserAfkTime[id] = 0.0;
	iPingChecks[id] = 0;
	iUserTotalPing[id] = 0;
	blPrintedWarn[id] = false;
}

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Добавяне на съобщения и квар комадни в Afk & High ping Kicker

Мнение от TheRedShoko » 09 Окт 2017, 14:21

Не съм на лаптопа, за да направя промените. Ако искаш да киква и админите направи флага ADMIN_RCON или някой друг, който не даваш на админите.

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Добавяне на съобщения и квар комадни в Afk & High ping Kicker

Мнение от LoShIaA » 15 Окт 2017, 00:53

Не е спешно, когато си, ако искаш ги направи. За кикването на админи добре.

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Добавяне на съобщения и квар комадни в Afk & High ping Kicker

Мнение от TheRedShoko » 20 Окт 2017, 10:22

Погледни темата на плъгина. Не съм направил предупрежденията за кик при оставащи X секунди.

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Добавяне на съобщения и квар комадни в Afk & High ping Kicker

Мнение от LoShIaA » 20 Окт 2017, 15:16

Добре. Няма смисъл да ги правиш. Може да изтриете темата тъй като е безполезна.

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

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

Кой е на линия

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