Map Bans
Публикувано на: 12 Окт 2016, 17:47
Автор: grimvh2
Описание: Ако някой играч ви прави проблеми на някоя карта,а не искате да го баннете от сървъра,сега може да го баннете от мапа чрез този плъгин.
Команди:
Как да го инсталираме?
1.Слагате файлът ' mapbans.amxx ' в директорията на играта ви>cstrike>addons>amxmodx>plugins
2.Отваряте директорията на играта ви>cstrike>addons>amxmodx>configs.След това отваряте файлът ' plugins.ini ' и най-отдолу добавяте нов ред:
3.Слагате файлът ' mapbans.txt ' в директорията на играта ви>cstrike>addons>amxmodx>data>lang.
4.Слагате файлът ' mapbans.sma ' в директорията на играта ви>cstrike>addons>amxmodx>scripting
.sma
Описание: Ако някой играч ви прави проблеми на някоя карта,а не искате да го баннете от сървъра,сега може да го баннете от мапа чрез този плъгин.
Команди:
Код за потвърждение: Избери целия код
аmх_mарbаn uѕеrnаmе mарсоunt(Игpaчa тpябвa дa бъдe в cъpвъpa и щe бъдe бaннaт нa ĸoнĸpeтнaтa ĸapтa)
mарсоunt = нeгoвия бaн щe бъдe пpeмaxнaт cлeд ĸapтaтa, oт ĸoятo e бaннaт oт нeгoвитe игpaлни х пъти (0=пepмaнeнт)
аmх_mарunbаn mарnаmе аuthіd (аuthіd = Ѕtеаm : х : хххххххх или нeщo тaĸoвa)
аmх_rеmоvеmарbаnѕ mарnаmе (пpeмaxвa фaйлa mарbаnѕ)
1.Слагате файлът ' mapbans.amxx ' в директорията на играта ви>cstrike>addons>amxmodx>plugins
2.Отваряте директорията на играта ви>cstrike>addons>amxmodx>configs.След това отваряте файлът ' plugins.ini ' и най-отдолу добавяте нов ред:
Код за потвърждение: Избери целия код
mapbans.amxx
4.Слагате файлът ' mapbans.sma ' в директорията на играта ви>cstrike>addons>amxmodx>scripting
.sma
Код за потвърждение: Избери целия код
/************************************************/
/* Kureno : Hello */
/* Xalus : My Personal SpamBot / Tester */
/* xPaw : Optimizing */
/* Plugin By Grim */
/************************************************/
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Map Bans"
#define VERSION "2.1"
#define AUTHOR "Grim"
#define ACCES ADMIN_KICK
new g_szFile[100];
new Path[100];
new Trie:Bans
new szMapName[32];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_concmd("amx_mapban", "cmd_ban", ACCES, "Usage : amx_mapban playername mapcount (0=permanent)");
register_concmd("amx_mapunban", "cmd_unban", ACCES, "Usage : amx_mapunban mapname auhtid");
register_concmd("amx_removemapbans", "cmd_removemapbans", ACCES, "Usage : amx_removemapbans mapname");
get_configsdir(Path, charsmax(Path));
format(Path,charsmax(Path), "mapbans")
register_dictionary("Mapbans.txt");
}
public plugin_cfg()
{
if(!dir_exists(Path)) mkdir(Path)
get_mapname(szMapName, charsmax(szMapName));
formatex(g_szFile,charsmax(g_szFile), "%s/mapbans",Path)
Bans = TrieCreate()
load_mapbans()
}
public client_authorized(id)
{
do_loadban(id);
}
public cmd_ban(id,level,cid)
{
if (!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg[32],arg2[3];
read_argv(1,arg,charsmax(arg));
read_argv(2,arg2,charsmax(arg2));
new iCount = str_to_num(arg2)
new player = cmd_target(id,arg,18);
if(!player)
return PLUGIN_HANDLED;
do_saveban(player,iCount);
new szName[32],szName2[32];
get_user_name(id,szName,charsmax(szName));
get_user_name(player,szName2,charsmax(szName));
client_print(0,print_chat,"[Map Bans] %L",LANG_PLAYER, "CMD_BAN",szName,szName2)
return PLUGIN_HANDLED;
}
public cmd_unban(id,level,cid)
{
if (!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg[32],arg2[32];
read_argv(1,arg,charsmax(arg));
read_argv(2,arg2,charsmax(arg2));
do_removeban(id,arg,arg2);
return PLUGIN_HANDLED;
}
public cmd_removemapbans(id,level,cid)
{
if (!cmd_access(id,level,cid,2))
return PLUGIN_HANDLED;
new arg[32];
read_argv(1,arg,charsmax(arg));
do_removemapbans(id,arg);
return PLUGIN_HANDLED;
}
do_saveban(player,iCount)
{
new iFile = fopen(g_szFile, "a");
if( !iFile )
return;
new szName[32];
get_user_name(player,szName,charsmax(szName))
new szAuthid[32],szCount[3];
get_user_authid(player, szAuthid, charsmax(szAuthid));
num_to_str(iCount,szCount,charsmax(szCount))
if(iCount > 0)
{
TrieSetCell(Bans,szAuthid,true)
fprintf(iFile, "%s ^"%s^" %s^n",szAuthid, szName, szCount);
}
else
{
TrieSetCell(Bans,szAuthid,true)
fprintf(iFile, "%s ^"%s^" 0^n",szAuthid, szName);
}
fclose(iFile);
server_cmd("kick ^"#%i^"", get_user_userid(player));
}
do_removeban(id, mapname[], authid[])
{
new g_szFileu[100]
format(g_szFileu, charsmax(g_szFile), "%s/%s.ini", Path, mapname);
new Temp[100];
format(Temp, charsmax(Temp), "%s/temp.ini", Path);
new iFile = fopen(g_szFileu, "r");
if( !iFile )
{
console_print(id, "[Map Bans] %L", id, "DIR_NTFOUND",g_szFile)
return;
}
new TempFile = fopen(Temp, "w");
if( !TempFile )
return;
new szData[64], szrAuthid[32], szName[32], szCount[3];
new succes;
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
trim( szData )
if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/'))
continue
parse(szData, szrAuthid, charsmax(szrAuthid),szName,charsmax(szName),
szCount,charsmax(szCount))
if(!equal(authid, szrAuthid))
{
fprintf(iFile, "%s ^"%s^" %s^n",szrAuthid,szName,szCount)
}
else
succes++
}
fclose(TempFile)
fclose(iFile)
delete_file(g_szFileu)
rename_file(Temp, g_szFileu, 1)
if(succes == 1)
client_print(id,print_chat,"[Map Bans] %L",id, "SUC_UNBAN",authid,mapname)
else
client_print(id,print_chat,"[Map Bans] %L",id, "FAIL_UNBAN",authid,mapname)
}
do_removemapbans(id,mapname[])
{
format(g_szFile, charsmax(g_szFile), "%s/%s.ini", Path, mapname);
new iFile = fopen(g_szFile, "r");
if( !iFile )
{
console_print(id, "[Map Bans] %L", id, "DIR_NTFOUND",g_szFile)
return;
}
else
{
fclose(iFile)
delete_file(g_szFile)
}
}
do_loadban(id)
{
new szAuthid[32];
get_user_authid(id, szAuthid, charsmax(szAuthid));
if(TrieKeyExists(Bans, szAuthid))
{
server_cmd("kick ^"#%i^"", get_user_userid(id));
}
}
load_mapbans()
{
new Temp[100];
format(Temp, charsmax(Temp), "%s/temp.ini", Path);
new iFile = fopen(g_szFile, "r");
if( !iFile )
return;
new TempFile = fopen(Temp, "w");
if( !TempFile )
return;
new szData[64], szrAuthid[32], szName[32], szCount[3];
new iCount, TempData[64];
while(!feof(iFile))
{
fgets(iFile, szData, charsmax(szData))
trim( szData )
if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/'))
continue
parse(szData, szrAuthid, charsmax(szrAuthid),szName,charsmax(szName),
szCount, charsmax(szCount))
iCount = str_to_num(szCount)
if(iCount == 0)
{
fprintf(iFile, "%s ^"%s^" 0^n",szrAuthid,szName)
fputs(TempFile, TempData);
TrieSetCell(Bans,szrAuthid,true)
}
else if(iCount > 1)
{
iCount--
num_to_str(iCount,szCount,charsmax(szCount))
fprintf(iFile, "%s ^"%s^" %s^n",szrAuthid,szName,szCount)
fputs(TempFile, TempData);
TrieSetCell(Bans,szrAuthid,true)
}
}
fclose(TempFile)
fclose(iFile)
delete_file(g_szFile)
rename_file(Temp, g_szFile, 1)
}
public plugin_end()
{
TrieDestroy(Bans)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1043\\ f0\\ fs16 \n\\ par }
*/