Counter-Strike 1.6
CS1.BG | DUST2 NOSHTA GARMI [RANKED PLAY] #1
45.144.155.113:27015
de_dust2
Играчи: 30/32
de_dust2
Counter-Strike 1.6
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 aim_aztec Играчи: 0/16

Преработка на banretryplayer.amxx.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Преработка на banretryplayer.amxx.

Мнение от atmax » 21 Дек 2019, 21:01

amx_retry_time си е по подразбиране в секунди него не съм "бутал", защото няма смисъл направил съм ти го да банва вместо да киква, както споменах в своето "ненужно мнение" а това дали банва в минути или секунди не си спомням някога amx_ban да е работило в секунди.. Съответно е в минути банва за 5 минути и му изкарва съобщение гласящо: "Please wait next time!"
Rest in peace my friend I always will remember you! 🖤👊

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1296 пъти
Обратна връзка:

Преработка на banretryplayer.amxx.

Мнение от OciXCrom » 21 Дек 2019, 21:08

Плъгинът нито е направен както трябва, нито имат някаква логика 50% от нещата в него, нито ще работи. Не знам как човекът е решил, че може да запазва нещо по userid, което е различно при всяко влизане.

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

#include <amxmodx>

#if !defined client_disconnected
	#define client_disconnected client_disconnect
#endif

#if !defined MAX_PLAYERS
	const MAX_PLAYERS = 32
#endif

#if !defined MAX_IP_LENGTH
	const MAX_IP_LENGTH = 16
#endif

const MAX_REASON_LENGTH = 32

new Trie:g_tConnections
new g_szIP[MAX_PLAYERS + 1][MAX_IP_LENGTH]
new g_pRetryTime, g_pBanTime, g_pBanReason

public plugin_init()
{
	register_plugin("Ban on Reconnect", "1.0", "OciXCrom")
	g_tConnections = TrieCreate()

	// Maximum retry time in seconds - the player will get banned if he leaves and enters within this time period
	g_pRetryTime = register_cvar("noretry_retry_time", "15")

	// Ban duration in minutes
	g_pBanTime = register_cvar("noretry_ban_time", "10")

	// Ban reason
	g_pBanReason = register_cvar("noretry_ban_reason", "Retrying is not allowed")
}

public plugin_end()
{
	TrieDestroy(g_tConnections)
}

public client_connect(id)
{
	get_user_ip(id, g_szIP[id], charsmax(g_szIP[]), 1)

	new iDisconnectTime
	TrieGetCell(g_tConnections, g_szIP[id], iDisconnectTime)

	if(iDisconnectTime && get_gametime() - iDisconnectTime <= get_pcvar_num(g_pRetryTime))
	{
		new szReason[MAX_REASON_LENGTH]
		get_pcvar_string(g_pBanReason, szReason, charsmax(szReason))
		server_cmd("amx_ban %i ^"%s^" ^"%s^"", get_pcvar_num(g_pBanTime), g_szIP[id], szReason)
	}
}

public client_disconnected(id)
{
	TrieSetCell(g_tConnections, g_szIP[id], floatround(get_gametime()))
}
Имай предвид, че плъгинът ще банне играча при всякакво излизане и влизане в дадения срок. Това означава, че ако бъде кикнат и влезне след Х секунди, ще бъде баннат. Може би трябва да измислиш по-добра "логика" за кога да бъде баннат.

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

Преработка на banretryplayer.amxx.

Мнение от iv69 » 21 Дек 2019, 23:22

OciXCrom написа: 21 Дек 2019, 21:08 Плъгинът нито е направен както трябва, нито имат някаква логика 50% от нещата в него, нито ще работи. Не знам как човекът е решил, че може да запазва нещо по userid, което е различно при всяко влизане.

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

#include <amxmodx>

#if !defined client_disconnected
	#define client_disconnected client_disconnect
#endif

#if !defined MAX_PLAYERS
	const MAX_PLAYERS = 32
#endif

#if !defined MAX_IP_LENGTH
	const MAX_IP_LENGTH = 16
#endif

const MAX_REASON_LENGTH = 32

new Trie:g_tConnections
new g_szIP[MAX_PLAYERS + 1][MAX_IP_LENGTH]
new g_pRetryTime, g_pBanTime, g_pBanReason

public plugin_init()
{
	register_plugin("Ban on Reconnect", "1.0", "OciXCrom")
	g_tConnections = TrieCreate()

	// Maximum retry time in seconds - the player will get banned if he leaves and enters within this time period
	g_pRetryTime = register_cvar("noretry_retry_time", "15")

	// Ban duration in minutes
	g_pBanTime = register_cvar("noretry_ban_time", "10")

	// Ban reason
	g_pBanReason = register_cvar("noretry_ban_reason", "Retrying is not allowed")
}

public plugin_end()
{
	TrieDestroy(g_tConnections)
}

public client_connect(id)
{
	get_user_ip(id, g_szIP[id], charsmax(g_szIP[]), 1)

	new iDisconnectTime
	TrieGetCell(g_tConnections, g_szIP[id], iDisconnectTime)

	if(iDisconnectTime && get_gametime() - iDisconnectTime <= get_pcvar_num(g_pRetryTime))
	{
		new szReason[MAX_REASON_LENGTH]
		get_pcvar_string(g_pBanReason, szReason, charsmax(szReason))
		server_cmd("amx_ban %i ^"%s^" ^"%s^"", get_pcvar_num(g_pBanTime), g_szIP[id], szReason)
	}
}

public client_disconnected(id)
{
	TrieSetCell(g_tConnections, g_szIP[id], floatround(get_gametime()))
}
Имай предвид, че плъгинът ще банне играча при всякакво излизане и влизане в дадения срок. Това означава, че ако бъде кикнат и влезне след Х секунди, ще бъде баннат. Може би трябва да измислиш по-добра "логика" за кога да бъде баннат.
Благодаря! такова нещо исках: Да банва играч който превиши позволения брой retry или reconnect. И да не го пуска в сървъра докато не си изтърпи наказанието: Ако продължава да дава retry или reconnect - и след като е баннат, да не му се намалява времето, нали това имаш впредвид?! Мисля, че всеки от нас, наистина сам трябва да си прецени за колко време да е наказанието (бана): 30 сек минута или 5...Искам само да помоля, може ли да има и съобщение при всяко кикване след бана - което да излиза в конзолата на баннатия играч(на английски ако може)- за причината за получения бан: че е превишил лимита от retry или reconnect.
Веднага ще тествам.

Добавено преди 37 минути 22 секунди:
Плъгина се компилира и показва, че е включен при командата amxx list. Но, само толкова? Влизах и излизах 5-6 пъти, никакъв ефект? Това едното. А другото: искам да попитам за кварите? Виждам че си сложил квар за някаква допустима честота или "фреквенция" за даване на retry или reconnect и квар за времто за бан ако е нарушена тази честота. Тоест - ако се дава retry в сървъра по-начесто - ще има бан!? Така ли да го разбирам? Понеже не видях никъде квара който исках да има и за допустим брой направени retry , след който да бъде банван играча? Поне такава ми бе първоначалната идея, цитирам: "...който при използване на няколко пъти(дефинирано с квар) командите retry или reconnect от определен играч за дадено време( дефинирано с квар) - да получава временен бан(дефинирано с квар)..."

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Преработка на banretryplayer.amxx.

Мнение от atmax » 22 Дек 2019, 08:17

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

#include <amxmodx>

new g_Ip[33];
new bool:Hackz;
new gBanTime;

public plugin_init( )
{
	register_plugin("Terrorist + CT Disconnecter Ban", "0.2", "Craxor");

	gBanTime = register_cvar( "td_bantime", "5" );
	Hackz = true;

}

public client_putinserver( id )
{
	if( is_user_connected( id ) )
	{
		new szUserIp[33];
		get_user_ip( id, szUserIp, charsmax( szUserIp ), 1 );

		copy( g_Ip[id], charsmax( g_Ip ), szUserIp );
	}
}

public plugin_end( )
	Hackz = false;


public client_disconnect( id ) 
{
	if( get_user_team( id ) == 1 && Hackz == true )
		server_cmd("amx_addban %s %i Tero-Retry-Reason ", g_Ip[id], get_pcvar_num( gBanTime ) );
		else
		server_cmd("amx_addban %s %i Ct-Retry-Reason ", g_Ip[id], get_pcvar_num ( gBanTime ) );
}
Този банва за 5мин ако използваш retry, обаче няма много други екстри може да използваш този, докато OciXcrom или някой друг намери решение на проблема ти.
Иначе това ти излиза в конзолата на тебе:

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

Server<0><><>" ban "***.**.1.***" (minutes "5") (reason "Ct-Retry-Reason")
Writing listip.cfg.
Server<0><><>" ban "***.**.1.***" (minutes "5") (reason "Tero-Retry-Reason")
Writing listip.cfg.
Rest in peace my friend I always will remember you! 🖤👊

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

Преработка на banretryplayer.amxx.

Мнение от iv69 » 22 Дек 2019, 11:06

atmax написа: 22 Дек 2019, 08:17

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

#include <amxmodx>

new g_Ip[33];
new bool:Hackz;
new gBanTime;

public plugin_init( )
{
	register_plugin("Terrorist + CT Disconnecter Ban", "0.2", "Craxor");

	gBanTime = register_cvar( "td_bantime", "5" );
	Hackz = true;

}

public client_putinserver( id )
{
	if( is_user_connected( id ) )
	{
		new szUserIp[33];
		get_user_ip( id, szUserIp, charsmax( szUserIp ), 1 );

		copy( g_Ip[id], charsmax( g_Ip ), szUserIp );
	}
}

public plugin_end( )
	Hackz = false;


public client_disconnect( id ) 
{
	if( get_user_team( id ) == 1 && Hackz == true )
		server_cmd("amx_addban %s %i Tero-Retry-Reason ", g_Ip[id], get_pcvar_num( gBanTime ) );
		else
		server_cmd("amx_addban %s %i Ct-Retry-Reason ", g_Ip[id], get_pcvar_num ( gBanTime ) );
}
Този банва за 5мин ако използваш retry, обаче няма много други екстри може да използваш този, докато OciXcrom или някой друг намери решение на проблема ти.
Иначе това ти излиза в конзолата на тебе:

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

Server<0><><>" ban "***.**.1.***" (minutes "5") (reason "Ct-Retry-Reason")
Writing listip.cfg.
Server<0><><>" ban "***.**.1.***" (minutes "5") (reason "Tero-Retry-Reason")
Writing listip.cfg.
Ще тествам , благодаря!

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1296 пъти
Обратна връзка:

Преработка на banretryplayer.amxx.

Мнение от OciXCrom » 22 Дек 2019, 15:12

@iv69 - всъщност не добавих такава опция да брои колко пъти е retry-вал. Виж сега:

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

#include <amxmodx>
#include <cromchat>

#if !defined client_disconnected
	#define client_disconnected client_disconnect
#endif

#if !defined MAX_PLAYERS
	const MAX_PLAYERS = 32
#endif

#if !defined MAX_NAME_LENGTH
	const MAX_NAME_LENGTH = 32
#endif

#if !defined MAX_IP_LENGTH
	const MAX_IP_LENGTH = 16
#endif

const MAX_REASON_LENGTH = 32

new Trie:g_tLastTime, Trie:g_tRetryNum
new g_szIP[MAX_PLAYERS + 1][MAX_IP_LENGTH]
new g_pRetryTime, g_pMaxRetries, g_pBanTime, g_pBanReason

public plugin_init()
{
	register_plugin("Ban on Reconnect", "1.1", "OciXCrom")
	CC_SetPrefix("&x04[NoRetry]")

	g_tLastTime = TrieCreate()
	g_tRetryNum = TrieCreate()

	// Maximum retry time in seconds - the player will get +1 to his retry count if he leaves and enters within this time period
	g_pRetryTime = register_cvar("noretry_retry_time", "15")

	// Maximum allowed number of retries - when this limit is reached, the player will get banned
	g_pMaxRetries = register_cvar("noretry_max_retries", "5")

	// Ban duration in minutes
	g_pBanTime = register_cvar("noretry_ban_time", "10")

	// Ban reason
	g_pBanReason = register_cvar("noretry_ban_reason", "Retrying is not allowed")
}

public plugin_end()
{
	TrieDestroy(g_tLastTime)
	TrieDestroy(g_tRetryNum)
}

public client_connect(id)
{
	get_user_ip(id, g_szIP[id], charsmax(g_szIP[]), 1)

	new iDisconnectTime
	TrieGetCell(g_tLastTime, g_szIP[id], iDisconnectTime)

	if(iDisconnectTime && get_gametime() - iDisconnectTime <= get_pcvar_num(g_pRetryTime))
	{
		new iRetries, iMaxRetries = get_pcvar_num(g_pMaxRetries)
		TrieGetCell(g_tRetryNum, g_szIP[id], iRetries)

		if(++iRetries == iMaxRetries)
		{
			new szReason[MAX_REASON_LENGTH], szName[MAX_NAME_LENGTH]
			get_pcvar_string(g_pBanReason, szReason, charsmax(szReason))
			get_user_name(id, szName, charsmax(szName))
			CC_SendMessage(id, "&x03%s &x01got banned for reconnecting &x04 times&x01.", szName, iMaxRetries)
			server_cmd("amx_banip %i ^"%s^" ^"%s^"", get_pcvar_num(g_pBanTime), g_szIP[id], szReason)
		}
		else
		{
			TrieSetCell(g_tRetryNum, g_szIP[id], iRetries)
			CC_SendMessage(id, "&x07Reconnect notice: &x01you have retried &x04%i times&x01. On &x04%i &x01you will get &x07banned&x01.", iRetries, iMaxRetries)
		}
	}
	else
	{
		TrieSetCell(g_tRetryNum, g_szIP[id], 0)
	}
}

public client_disconnected(id)
{
	TrieSetCell(g_tLastTime, g_szIP[id], floatround(get_gametime()))
}
Добавих и съобщения в чата. Ако виждаш съобщението за бана, а играчът не бива банван, значи командата за бан е грешна.

@atmax - и този плъгин няма никаква логика. Даже е по-зле и от предишния, като запазва IP адресът на само един играч в глобална променлива.

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

Преработка на banretryplayer.amxx.

Мнение от iv69 » 22 Дек 2019, 18:11

OciXCrom написа: 22 Дек 2019, 15:12 @iv69 - всъщност не добавих такава опция да брои колко пъти е retry-вал. Виж сега:

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

#include <amxmodx>
#include <cromchat>

#if !defined client_disconnected
	#define client_disconnected client_disconnect
#endif

#if !defined MAX_PLAYERS
	const MAX_PLAYERS = 32
#endif

#if !defined MAX_NAME_LENGTH
	const MAX_NAME_LENGTH = 32
#endif

#if !defined MAX_IP_LENGTH
	const MAX_IP_LENGTH = 16
#endif

const MAX_REASON_LENGTH = 32

new Trie:g_tLastTime, Trie:g_tRetryNum
new g_szIP[MAX_PLAYERS + 1][MAX_IP_LENGTH]
new g_pRetryTime, g_pMaxRetries, g_pBanTime, g_pBanReason

public plugin_init()
{
	register_plugin("Ban on Reconnect", "1.1", "OciXCrom")
	CC_SetPrefix("&x04[NoRetry]")

	g_tLastTime = TrieCreate()
	g_tRetryNum = TrieCreate()

	// Maximum retry time in seconds - the player will get +1 to his retry count if he leaves and enters within this time period
	g_pRetryTime = register_cvar("noretry_retry_time", "15")

	// Maximum allowed number of retries - when this limit is reached, the player will get banned
	g_pMaxRetries = register_cvar("noretry_max_retries", "5")

	// Ban duration in minutes
	g_pBanTime = register_cvar("noretry_ban_time", "10")

	// Ban reason
	g_pBanReason = register_cvar("noretry_ban_reason", "Retrying is not allowed")
}

public plugin_end()
{
	TrieDestroy(g_tLastTime)
	TrieDestroy(g_tRetryNum)
}

public client_connect(id)
{
	get_user_ip(id, g_szIP[id], charsmax(g_szIP[]), 1)

	new iDisconnectTime
	TrieGetCell(g_tLastTime, g_szIP[id], iDisconnectTime)

	if(iDisconnectTime && get_gametime() - iDisconnectTime <= get_pcvar_num(g_pRetryTime))
	{
		new iRetries, iMaxRetries = get_pcvar_num(g_pMaxRetries)
		TrieGetCell(g_tRetryNum, g_szIP[id], iRetries)

		if(++iRetries == iMaxRetries)
		{
			new szReason[MAX_REASON_LENGTH], szName[MAX_NAME_LENGTH]
			get_pcvar_string(g_pBanReason, szReason, charsmax(szReason))
			get_user_name(id, szName, charsmax(szName))
			CC_SendMessage(id, "&x03%s &x01got banned for reconnecting &x04 times&x01.", szName, iMaxRetries)
			server_cmd("amx_banip %i ^"%s^" ^"%s^"", get_pcvar_num(g_pBanTime), g_szIP[id], szReason)
		}
		else
		{
			TrieSetCell(g_tRetryNum, g_szIP[id], iRetries)
			CC_SendMessage(id, "&x07Reconnect notice: &x01you have retried &x04%i times&x01. On &x04%i &x01you will get &x07banned&x01.", iRetries, iMaxRetries)
		}
	}
	else
	{
		TrieSetCell(g_tRetryNum, g_szIP[id], 0)
	}
}

public client_disconnected(id)
{
	TrieSetCell(g_tLastTime, g_szIP[id], floatround(get_gametime()))
}
Добавих и съобщения в чата. Ако виждаш съобщението за бана, а играчът не бива банван, значи командата за бан е грешна.

@atmax - и този плъгин няма никаква логика. Даже е по-зле и от предишния, като запазва IP адресът на само един играч в глобална променлива.
Да, наистина май командата за бан е грешна и проблема в този случай е мой а не в плъгина ! Съжалявам и се извинявам, и би ли ми редактирал реда за бана:
server_cmd("amx_banip %i ^"%s^" ^"%s^"", get_pcvar_num(g_pBanTime), g_szIP[id], szReason)
така, че да "задейства" някак си командата с този ред на изпълнение:
amx_ban <nick> <time> <reason>
Това е "смарт-бан" от mdbBansv4.8 на Desikac, и ми е резервната, доста надеждна и работеща бан-система. :)
Мисля, че с тази команда ще банва със сигурност(ако може да се "активира в този ред обаче" ?), тя си банва не само по ник, но помни и ИП и стеам_ид и му прави "бисквитки"... за мен е доста надежден и последен вариант за бан ?!
p.s. Иначе плъгина си се компилира няма грешки, показа , в конзолата че е включен и работи нормално, но бана липсва и е най-вероятно от AMXBans 6.13... то аз този бан да ме пита някой и сега не знам как го "подкарах" :)

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1296 пъти
Обратна връзка:

Преработка на banretryplayer.amxx.

Мнение от OciXCrom » 22 Дек 2019, 20:39

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

#include <amxmodx>
#include <cromchat>

#if !defined client_disconnected
	#define client_disconnected client_disconnect
#endif

#if !defined MAX_PLAYERS
	const MAX_PLAYERS = 32
#endif

#if !defined MAX_NAME_LENGTH
	const MAX_NAME_LENGTH = 32
#endif

#if !defined MAX_IP_LENGTH
	const MAX_IP_LENGTH = 16
#endif

const MAX_REASON_LENGTH = 32
const Float:JOIN_MESSAGE_DELAY = 8.0

new Trie:g_tLastTime, Trie:g_tRetryNum
new g_szIP[MAX_PLAYERS + 1][MAX_IP_LENGTH], g_iRetries[MAX_PLAYERS + 1]
new g_pRetryTime, g_pMaxRetries, g_pBanTime, g_pBanReason

public plugin_init()
{
	register_plugin("Ban on Reconnect", "1.2", "OciXCrom")
	CC_SetPrefix("&x04[NoRetry]")

	g_tLastTime = TrieCreate()
	g_tRetryNum = TrieCreate()

	// Maximum retry time in seconds - the player will get +1 to his retry count if he leaves and enters within this time period
	g_pRetryTime = register_cvar("noretry_retry_time", "15")

	// Maximum allowed number of retries - when this limit is reached, the player will get banned
	g_pMaxRetries = register_cvar("noretry_max_retries", "5")

	// Ban duration in minutes
	g_pBanTime = register_cvar("noretry_ban_time", "10")

	// Ban reason
	g_pBanReason = register_cvar("noretry_ban_reason", "Retrying is not allowed")
}

public plugin_end()
{
	TrieDestroy(g_tLastTime)
	TrieDestroy(g_tRetryNum)
}

public client_connect(id)
{
	g_iRetries[id] = 0
	get_user_ip(id, g_szIP[id], charsmax(g_szIP[]), 1)

	new iDisconnectTime
	TrieGetCell(g_tLastTime, g_szIP[id], iDisconnectTime)

	if(iDisconnectTime && get_gametime() - iDisconnectTime <= get_pcvar_num(g_pRetryTime))
	{
		new iMaxRetries = get_pcvar_num(g_pMaxRetries)
		TrieGetCell(g_tRetryNum, g_szIP[id], g_iRetries[id])

		if(++g_iRetries[id] == iMaxRetries)
		{
			new szReason[MAX_REASON_LENGTH], szName[MAX_NAME_LENGTH]
			get_pcvar_string(g_pBanReason, szReason, charsmax(szReason))
			get_user_name(id, szName, charsmax(szName))
			CC_SendMessage(0, "&x03%s &x01got banned for reconnecting &x04%i times&x01.", szName, iMaxRetries)
			server_cmd("amx_ban #%i %i ^"%s^"", get_user_userid(id), get_pcvar_num(g_pBanTime), szReason)
		}
		else
		{
			TrieSetCell(g_tRetryNum, g_szIP[id], g_iRetries[id])
			set_task(JOIN_MESSAGE_DELAY, "display_reconnect_notice", id)
		}
	}
	else
	{
		TrieSetCell(g_tRetryNum, g_szIP[id], 0)
	}
}

public display_reconnect_notice(id)
{
	if(is_user_connected(id))
	{
		CC_SendMessage(id, "&x07Reconnect notice: &x01you have retried &x04%i times&x01. On &x04%i &x01you will get &x07banned&x01.", g_iRetries[id], get_pcvar_num(g_pMaxRetries))
	}
}

public client_disconnected(id)
{
	TrieSetCell(g_tLastTime, g_szIP[id], floatround(get_gametime()))
}

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

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

Кой е на линия

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