Плагин переведен на русский язык (исходник и текст сообщений.
Изменен цвет текста (смотреть на скрине).
Автоматически настроен на коннект игроков только из России.
/* Country kicker | Фильтр Стран
Описание:
Этот плагин нужен для того, чтобы пускать людей только из нужных Вам стран, или запрета на
вход для определенных стран.
Тема на форуме (ENG): http://www.amxmodx.org/forums/viewtopic.php?t=12063
Специально для Anti-STeAm server
http://espadaserver.ru/gotovye-servera/13111-anti-steam-server-pub-part-2fixed.html
By Alina and Vad1k
Требуемые модули: GeoIP
Credits:
Ops in #AMXmod @ Quakenet for alot of help ( + AssKicker & CheesyPeteza )
xeroblood Explode string func
Настройки плагина (в amxx.cfg):
sv_country
1 Только люди из ЭТОЙ страны
2 Все КРОМЕ этой страны
sv_country_name Используйте запятые для разделения стран
Например:
sv_country_name \\\\\\"RUS,UKR\\\\\\"
Изменения:
1.0.0(25.05.2010)
- Русская версия.
1.0.0( 18.12.2004 )
- Первый публичный релиз
*/
#include <amxmodx>
#include <geoip>
#include <chatcolor.inc>
#define MAX_COUNTRYS 15
new g_Mode
new g_CC[MAX_COUNTRYS+1][4]
new g_Countries
new CountyList[128]
public plugin_init()
{
register_plugin(\\\\\\"Country kicker\\\\\\",\\\\\\"1.0.0\\\\\\",\\\\\\"EKS\\\\\\")
register_cvar(\\\\\\"sv_country_name\\\\\\",\\\\\\"RUS\\\\\\")
register_cvar(\\\\\\"sv_country\\\\\\",\\\\\\"1\\\\\\")
}
public plugin_cfg()
{
g_Mode = get_cvar_num(\\\\\\"sv_country\\\\\\")
new CvarInfo[MAX_COUNTRYS*3+MAX_COUNTRYS+2]
get_cvar_string(\\\\\\"sv_country_name\\\\\\",CvarInfo,MAX_COUNTRYS*3+MAX_COUNTRYS+2)
g_Countries = ExplodeString( g_CC, MAX_COUNTRYS, 3, CvarInfo, ',' )
for(new i=0;i<=g_Countries;i++)
format(CountyList,127,\\\\\\"%s %s\\\\\\",CountyList,g_CC[i])
}
stock ExplodeString( p_szOutput[][], p_nMax, p_nSize, p_szInput[], p_szDelimiter )
{
new nIdx = 0, l = strlen(p_szInput)
new nLen = (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput, p_szDelimiter ))
while( (nLen < l) && (++nIdx < p_nMax) )
nLen += (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput[nLen], p_szDelimiter ))
return nIdx
}
stock IsConInArray(Con[4])
{
for(new i=0;i<=g_Countries;i++)
{
if(equal(Con,g_CC[i]))
return 1
}
return 0
}
stock IsLocalIp(IP[32])
{
new tIP[32]
copy(tIP,3,IP)
if(equal(tIP,\\\\\\"10.\\\\\\") || equal(tIP,\\\\\\"127\\\\\\"))
return 1
copy(tIP,7,IP)
if(equal(tIP,\\\\\\"192.168\\\\\\"))
return 1
return 0
}
public client_connect(id)
{
new userip[32]
new CC[4]
get_user_ip(id,userip,31,1)
geoip_code3(userip,CC)
if(strlen(userip) == 0)
{
get_user_ip(id,userip,31,1)
if(!IsLocalIp(userip))
log_amx(\\\\\\"%s made a error when passed though geoip\\\\\\",userip)
return PLUGIN_HANDLED
}
if(g_Mode == 1 && !IsConInArray(CC))
{
server_cmd(\\\\\\"kick #%d only people from %s ^nare allowed to this server \\\\\\",get_user_userid(id),CountyList)
new Name[32]
get_user_name(id,Name,31)
client_print_color(0, DontChange, \\\\\\"^3%s ^4был кикнут, потому что он не из ^3%s\\\\\\",Name,CountyList)
}
else if(g_Mode == 2 && IsConInArray(CC))
{
server_cmd(\\\\\\"kick #%d No %s are allowed on this server\\\\\\",get_user_userid(id),CC)
new Name[32]
get_user_name(id,Name,31)
client_print_color(0, DontChange, \\\\\\"^3%s ^4был кикнут, потому что он из ^3%s\\\\\\",Name,CC)
}
return PLUGIN_HANDLED
}