Добрый вечер пишу сюда первый раз!помогите со скриптом получается плагин предназначен для бана Администраторов сервера.
у меня стоит AMXBANS на сервере.вроде всё плагин работает как положенно заносит Админа в бан но с сервера почему то кикает а не банит и Админ без припятственно может зайти на сервер...
CODE
#include <amxmodx>
#include <colorchat_new>
#define PLUGIN_NAME "Super Ban [Flag: F]"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Trendy"
#define PLUGIN_PREFIX "SuperBan"
#define MAX_BAN 1440
#define BAN_FLAG ADMIN_LEVEL_B
new const gszBanReason[][] =
{
"Кемпер",
"Ламер",
"Оскорбления",
"Не соблюдение правил",
"Использование читов",
"Иная причина (Указать свою)"
};
new const gszTime[][] =
{
"5", "10", "30", "60", "120", "300", "Указать свое время"
}
new gszLenReason[33][64];
new gszSelectPlayer[33];
new gszSelectReason[33];
new gszSelectTime[33];
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_clcmd("say /superban", "CmdSuperBan");
register_clcmd("SuperBan_Reason", "CmdNameReason");
register_clcmd("SuperBan_Time", "CmdTimeBan");
}
public CmdSuperBan(id)
{
if(get_user_flags(id) & BAN_FLAG)
{
CmdBanMenuShow(id);
}
else
{
ColorPrint(id, "^4[%s]^3 Вы не можете войти в меню^4 SuperBan^1 [Нету доступа]", PLUGIN_PREFIX);
}
return PLUGIN_HANDLED;
}
public CmdBanMenuShow(id)
{
new title[512], Temp[190], numb[5], gszName[32];
formatex(title, sizeof(title) - 1, "\r[%s]\w Меню бана^nШаг: \r1\w из \r4^n^n\wВыберите игрока:^n", PLUGIN_PREFIX);
new menu = menu_create(title, "BanHandle");
for ( new i = 1; i <= get_maxplayers(); i++ )
{
if(!is_user_connected(i))
continue;
get_user_name(i, gszName, sizeof(gszName));
num_to_str(i, numb, sizeof(numb) - 1);
if(id == i)
format(Temp, sizeof(Temp), "%s \r[Вы]", gszName);
else if(get_user_flags(i) & BAN_FLAG)
format(Temp, sizeof(Temp), "\d%s \r[SuperBan]", gszName);
else
format(Temp, sizeof(Temp), "%s", gszName);
menu_additem(menu, Temp, numb)
}
menu_setprop(menu, MPROP_BACKNAME, "Назад");
menu_setprop(menu, MPROP_NEXTNAME, "Далее");
menu_setprop(menu, MPROP_EXITNAME, "Выход");
menu_display(id, menu, 0);
}
public BanHandle(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[7], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
if(get_user_flags(key) & BAN_FLAG)
{
ColorPrint(id, "^4[%s]^3 Данный игрок имеет иммунитет к^4 SuperBan", PLUGIN_PREFIX);
return PLUGIN_HANDLED;
}
gszSelectPlayer[id] = key;
CmdBanReasonMenu(id);
return PLUGIN_HANDLED;
}
public CmdBanReasonMenu(id)
{
new title[512], Temp[190], numb[5];
formatex(title, sizeof(title) - 1, "\r[%s]\w Меню бана^nШаг: \r2\w из \r4^n^n\wВыберите причину:^n", PLUGIN_PREFIX);
new menu = menu_create(title, "BanReasonHandle");
for ( new i = 0; i < sizeof(gszBanReason); i++ )
{
num_to_str(i, numb, sizeof(numb) - 1);
if(i == 4)
format(Temp, sizeof(Temp), "%s^n^n", gszBanReason[i]);
else
format(Temp, sizeof(Temp), "%s", gszBanReason[i]);
menu_additem(menu, Temp, numb)
}
menu_setprop(menu, MPROP_BACKNAME, "Назад");
menu_setprop(menu, MPROP_NEXTNAME, "Далее");
menu_setprop(menu, MPROP_EXITNAME, "Выход");
menu_display(id, menu, 0);
}
public BanReasonHandle(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[7], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
if(key == 5)
{
gszSelectReason[id] = -1;
ColorPrint(id, "^4[%s]^3 Введите свою причину^1 [Русский]", PLUGIN_PREFIX);
client_cmd(id, "messagemode SuperBan_Reason");
}
else
{
CmdBanTime(id);
gszSelectReason[id] = key;
}
return PLUGIN_HANDLED;
}
public CmdBanTime(id)
{
new title[512], Temp[190], numb[5];
formatex(title, sizeof(title) - 1, "\r[%s]\w Меню бана^nШаг: \r3\w из \r4^n^n\wВыберите время:^n", PLUGIN_PREFIX);
new menu = menu_create(title, "BanTimeHandle");
for ( new i = 0; i < sizeof(gszTime); i++ )
{
num_to_str(i, numb, sizeof(numb) - 1);
if(i == 5)
format(Temp, sizeof(Temp), "%s^n^n", gszTime[i]);
else if(i == 6)
format(Temp, sizeof(Temp), "%s^n^n", gszTime[i]);
else
format(Temp, sizeof(Temp), "%s", gszTime[i]);
menu_additem(menu, Temp, numb)
}
menu_setprop(menu, MPROP_BACKNAME, "Назад");
menu_setprop(menu, MPROP_NEXTNAME, "Далее");
menu_setprop(menu, MPROP_EXITNAME, "Выход");
menu_display(id, menu, 0);
}
public BanTimeHandle(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[7], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
if(key == 6)
{
ColorPrint(id, "^4[%s]^3 Введите свое время", PLUGIN_PREFIX);
client_cmd(id, "messagemode SuperBan_Time");
}
else
{
gszSelectTime[id] = str_to_num(gszTime[key]);
CmdBanComplete(id);
}
return PLUGIN_HANDLED;
}
public CmdBanComplete(id)
{
new title[512], gszName[32];
get_user_name(gszSelectPlayer[id], gszName, sizeof(gszName));
if(gszSelectReason[id] == -1)
formatex(title, sizeof(title) - 1, "\r[%s]\w Меню бана^nШаг: \r4\w из \r4^n^n\wИгрок:\r %s^n\wПричина:\r %s^n\wВремя:\r %i минут^n", PLUGIN_PREFIX, gszName, gszLenReason[id], gszSelectTime[id]);
else
formatex(title, sizeof(title) - 1, "\r[%s]\w Меню бана^nШаг: \r4\w из \r4^n^n\wИгрок:\r %s^n\wПричина:\r %s^n\wВремя:\r %i минут^n", PLUGIN_PREFIX, gszName, gszBanReason[gszSelectReason[id]], gszSelectTime[id]);
new menu = menu_create(title, "BanComplete");
menu_additem(menu, "Да\r [Забанить]", "1");
menu_additem(menu, "Выйти из меню", "2");
menu_setprop(menu, MPROP_EXITNAME, "Выход");
menu_display(id, menu, 0);
}
public BanComplete(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[7], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1: ApplyBan(id);
case 2: return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
ApplyBan(id)
{
new gszReason[256], gszName[32], gszNameA[32];
get_user_name(id, gszNameA, sizeof(gszNameA));
get_user_name(gszSelectPlayer[id], gszName, sizeof(gszName));
if(gszSelectReason[id] == -1)
format(gszReason, sizeof(gszReason), "%s", gszLenReason[id]);
else
format(gszReason, sizeof(gszReason), "%s", gszBanReason[gszSelectReason[id]]);
//client_cmd(id,"amx_ban %d #%d ^"%s^"",gszSelectTime[id], get_user_userid(gszSelectPlayer[id]), gszReason);
server_cmd("amx_ban %d #%d ^"%s^"",gszSelectTime[id], get_user_userid(gszSelectPlayer[id]), gszReason);
//client_cmd(id,"amx_ban #%d %d ^"%s^"", get_user_userid(gszSelectPlayer[id]), gszSelectTime[id], gszReason);
ColorPrint(0, "^4[%s]^3 Админ:^1 %s^3 забанил:^1 %s^4 [Причина: %s | Время: %i]", PLUGIN_PREFIX, gszNameA, gszName, gszReason, gszSelectTime[id]);
}
public CmdNameReason(id)
{
static arg[36];
read_argv(1, arg, charsmax(arg));
if ( !strlen(arg) )
{
ColorPrint(id, "^4[%s]^3 Только буквы!", PLUGIN_PREFIX);
client_cmd(id, "messagemode SuperBan_Reason");
return PLUGIN_HANDLED;
}
while (replace(arg, charsmax( arg ), "q", "й")) {}
while (replace(arg, charsmax( arg ), "w", "ц")) {}
while (replace(arg, charsmax( arg ), "e", "у")) {}
while (replace(arg, charsmax( arg ), "r", "к")) {}
while (replace(arg, charsmax( arg ), "t", "е")) {}
while (replace(arg, charsmax( arg ), "y", "н")) {}
while (replace(arg, charsmax( arg ), "u", "г")) {}
while (replace(arg, charsmax( arg ), "i", "ш")) {}
while (replace(arg, charsmax( arg ), "o", "щ")) {}
while (replace(arg, charsmax( arg ), "p", "з")) {}
while (replace(arg, charsmax( arg ), "[", "х")) {}
while (replace(arg, charsmax( arg ), "]", "ъ")) {}
while (replace(arg, charsmax( arg ), "a", "ф")) {}
while (replace(arg, charsmax( arg ), "s", "ы")) {}
while (replace(arg, charsmax( arg ), "d", "в")) {}
while (replace(arg, charsmax( arg ), "f", "а")) {}
while (replace(arg, charsmax( arg ), "g", "п")) {}
while (replace(arg, charsmax( arg ), "h", "р")) {}
while (replace(arg, charsmax( arg ), "j", "о")) {}
while (replace(arg, charsmax( arg ), "k", "л")) {}
while (replace(arg, charsmax( arg ), "l", "д")) {}
while (replace(arg, charsmax( arg ), ";", "ж")) {}
while (replace(arg, charsmax( arg ), "'", "э")) {}
while (replace(arg, charsmax( arg ), "z", "я")) {}
while (replace(arg, charsmax( arg ), "x", "ч")) {}
while (replace(arg, charsmax( arg ), "c", "с")) {}
while (replace(arg, charsmax( arg ), "v", "м")) {}
while (replace(arg, charsmax( arg ), "b", "и")) {}
while (replace(arg, charsmax( arg ), "n", "т")) {}
while (replace(arg, charsmax( arg ), "m", "ь")) {}
while (replace(arg, charsmax( arg ), ",", "б")) {}
while (replace(arg, charsmax( arg ), ".", "ю")) {}
while (replace(arg, charsmax( arg ), "Q", "Й")) {}
while (replace(arg, charsmax( arg ), "W", "Ц")) {}
while (replace(arg, charsmax( arg ), "E", "У")) {}
while (replace(arg, charsmax( arg ), "R", "К")) {}
while (replace(arg, charsmax( arg ), "T", "Е")) {}
while (replace(arg, charsmax( arg ), "Y", "Н")) {}
while (replace(arg, charsmax( arg ), "U", "Г")) {}
while (replace(arg, charsmax( arg ), "I", "Ш")) {}
while (replace(arg, charsmax( arg ), "O", "Щ")) {}
while (replace(arg, charsmax( arg ), "P", "З")) {}
while (replace(arg, charsmax( arg ), "{", "Х")) {}
while (replace(arg, charsmax( arg ), "}", "Ъ")) {}
while (replace(arg, charsmax( arg ), "A", "Ф")) {}
while (replace(arg, charsmax( arg ), "S", "Ы")) {}
while (replace(arg, charsmax( arg ), "D", "В")) {}
while (replace(arg, charsmax( arg ), "F", "А")) {}
while (replace(arg, charsmax( arg ), "G", "П")) {}
while (replace(arg, charsmax( arg ), "H", "Р")) {}
while (replace(arg, charsmax( arg ), "J", "О")) {}
while (replace(arg, charsmax( arg ), "K", "Л")) {}
while (replace(arg, charsmax( arg ), "L", "Д")) {}
while (replace(arg, charsmax( arg ), ":", "Ж")) {}
while (replace(arg, charsmax( arg ), "Z", "Я")) {}
while (replace(arg, charsmax( arg ), "X", "Ч")) {}
while (replace(arg, charsmax( arg ), "C", "С")) {}
while (replace(arg, charsmax( arg ), "V", "М")) {}
while (replace(arg, charsmax( arg ), "B", "И")) {}
while (replace(arg, charsmax( arg ), "N", "Т")) {}
while (replace(arg, charsmax( arg ), "M", "Ь")) {}
while (replace(arg, charsmax( arg ), "<", "Б")) {}
while (replace(arg, charsmax( arg ), ">", "Ю")) {}
copy(gszLenReason[id],charsmax(arg),arg)
CmdBanTime(id);
return PLUGIN_HANDLED;
}
public CmdTimeBan(id)
{
static arg[5];
read_argv(1, arg, charsmax(arg));
if ( !strlen(arg) )
{
ColorPrint(id, "^4[%s]^3 Пустое значение!", PLUGIN_PREFIX);
client_cmd(id, "messagemode SuperBan_Time");
return PLUGIN_HANDLED;
}
else if ( !IsStrFloat(arg) )
{
ColorPrint(id, "^4[%s]^3 Только цифры!", PLUGIN_PREFIX);
client_cmd(id, "messagemode SuperBan_Time");
return PLUGIN_HANDLED;
}
new length = str_to_num(arg);
if( MAX_BAN && (!length || length > MAX_BAN) )
{
ColorPrint(id, "^4[%s]^3 Значение должно быть не больше^1 %i!", PLUGIN_PREFIX, MAX_BAN);
client_cmd(id, "messagemode SuperBan_Time");
return PLUGIN_HANDLED;
}
gszSelectTime[id] = str_to_num(arg);
CmdBanComplete(id);
return PLUGIN_HANDLED;
}
bool:IsStrFloat(string[])
{
new len = strlen(string);
for ( new i = 0; i < len; i++ )
{
switch ( string[i] )
{
case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-', '*':continue;
default: return false;
}
}
return true;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/