Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Voteban открыть доступ для випов.

Статус пользователя qpi3ik
сообщение 29.9.2014, 19:53
Сообщение #1


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Доброе время суток уважаемые скриптеры!

Кто может помочь и добавить в плагин доступ к вотебану для вип игроков.
Что бы вотебан был доступен випам даже если на сервере админ.

Автор плагина neygomon
Вот иходник:

Код:
/*
neygomon created ^_^ | http://www.neugomon.ru

Наказание на 200 строке. По стандарту бан через AMXBans/FreshBans
Superban: server_cmd("amx_ban #%d 360 ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")
Kick: server_cmd("kick #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")


Credits:
* UFPS vip.Predator - помощь с менюшками
* Safety1st - подсказка с item = -3
*/
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define MIN_PLAYERS 3 // Минимальное кол-во игроков на сервере для запуска голосования
#define BAN_RATIO 0.6 // Коэффицент голосов для бана. 0.1 - 10% | 1.0 - 100%
#define VB_DELAY 120 // Время(в секундах) между голосованиями. Защита от лалок, которые хотят всех перебанить xD

new bool:iBoolVoted[33], szName[33][32];
new iVbTime, iVoteCount, iVbInsider, iVbBanPl, iVbCount, iVbPl[33], iCustomReason[33][20];
new num[3], _access, callback, item_num[3], item_name[36], iRsnMenu, iVoteMenu;

public plugin_init()
{
#define VERSION "1.7.3b"
register_plugin("VoteBan", VERSION, "neygomon");
register_cvar("vb_neygomon", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /ban", "cmd_say_voteban");
register_clcmd("say_team /ban", "cmd_say_voteban");
register_clcmd("say /voteban", "cmd_say_voteban");
register_clcmd("say_team /voteban", "cmd_say_voteban");
register_clcmd("vb_reason", "cmd_vote_reason");
}

public plugin_cfg()
{
iRsnMenu = menu_create("\d[\rVoteBan\d] \yВыберите причину", "custom_menu_handle");
iVoteMenu = menu_create("VOTEBAN_MENU", "votebanpl_handle");

menu_setprop(iRsnMenu, MPROP_EXIT, MEXIT_NEVER);
menu_setprop(iVoteMenu, MPROP_EXIT, MEXIT_NEVER);

menu_additem(iRsnMenu, "\yСвоя причина", "1");
menu_additem(iRsnMenu, "\rСтандартная", "0");

menu_additem(iVoteMenu, "\yДа", "1");
menu_additem(iVoteMenu, "\rНет", "0");
}

public client_disconnect(id)
{
if(iBoolVoted[id])
{
iBoolVoted[id] = false;
iVoteCount--;
}
}

public cmd_say_voteban(id)
{
static players[32], pnum, delay;
if(iVbInsider)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование ^3уже запущено^4!");

delay = iVbTime + VB_DELAY - get_systime();
if(delay > 0)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование будет доступно через ^3%d ^4мин. ^3%d ^4сек.", (delay / 60), (delay % 60));

get_players(players, pnum);
if(MIN_PLAYERS > pnum)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Необходимо не менее ^3%d ^4игроков для запуска голосования!", MIN_PLAYERS);

iVbCount = 0;
for(new i; i < pnum; i++)
{
if(get_user_flags(players[i]) & ADMIN_MENU)
{
client_print_color(id, 0, "^1[^4VoteBan^1] ^4На сервере присутствует ^3администратор^4!");
log_to_file("voteban.log", "[Fail] Vote non active. Reason: Admins on server... This is good :)");
return PLUGIN_HANDLED;
}
else
{
get_user_name(players[i], szName[players[i]], charsmax(szName[]));
iVbPl[iVbCount++] = players[i];
}
}
return choosepl_menu(id);
}

choosepl_menu(id)
{
static iPlMenu, iCallBack;
iPlMenu = menu_create("\d[\rVoteBan\d] \yВыберите игрока:\w", "choosepl_handle");
iCallBack = menu_makecallback("menu_callback");
menu_setprop(iPlMenu, MPROP_BACKNAME, "Назад");
menu_setprop(iPlMenu, MPROP_NEXTNAME, "Далее");
menu_setprop(iPlMenu, MPROP_EXITNAME, "Закрыть");
for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == id) continue;
num_to_str(iVbPl[i], num, charsmax(num));
menu_additem(iPlMenu, szName[iVbPl[i]], num, 0, iCallBack);
}
return menu_display(id, iPlMenu);
}

public menu_callback(id, menu, item)
{
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), item_name, charsmax(item_name), callback);
static item_newname[64], ITEM_STATUS; ITEM_STATUS = ITEM_DISABLED;

if(get_user_flags(str_to_num(item_num)) & ADMIN_IMMUNITY)
{
formatex(item_newname, charsmax(item_newname), "\d%s \y[\rИммунитет\y]", item_name);
menu_item_setname(menu, item, item_newname);
}
else ITEM_STATUS = ITEM_ENABLED;

return ITEM_STATUS;
}

public choosepl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
iVbBanPl = str_to_num(item_num);

menu_destroy(menu);
return menu_display(id, iRsnMenu);
}

public custom_menu_handle(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;

menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num)) client_cmd(id, "messagemode vb_reason");
else votebanpl_menu(id);

return PLUGIN_HANDLED;
}

votebanpl_menu(id)
{
static szStrReason[64], szTitle[128];
formatex(szStrReason, charsmax(szStrReason), "^n\rReason\w: \y%s", iCustomReason[id]);
formatex(szTitle, charsmax(szTitle), "\d[\rVoteBan\d] \wBan \y%s\w?%s", szName[iVbBanPl], iCustomReason[id][0] ? szStrReason : "");
menu_setprop(iVoteMenu, MPROP_TITLE, szTitle);

iVoteCount = 0; iVbTime = get_systime(); iVbInsider = id;
arrayset(iBoolVoted, false, 33);

for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == iVbBanPl) continue;
menu_display(iVbPl[i], iVoteMenu);
}
set_task(10.0, "voteban_count_votes", iVoteMenu);
return PLUGIN_HANDLED;
}

public votebanpl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
show_menu(id, 0, "^n", 1);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num))
{
iVoteCount++;
iBoolVoted[id] = true;
}
return PLUGIN_HANDLED;
}

public voteban_count_votes(vmenu)
{
new menu, newmenu, menupage;
for(new i; i < iVbCount; i++)
{
if(!is_user_connected(iVbPl[i]) || iBoolVoted[iVbPl[i]]) continue;
player_menu_info(iVbPl[i], menu, newmenu, menupage);
if(vmenu == newmenu)
menu_cancel(iVbPl[i]);
}

static iMinVoteBan, iLol;
iMinVoteBan = floatround(BAN_RATIO * float(iVbCount) + 0.49);
iLol = (iVoteCount >= iMinVoteBan);
if(iLol)
server_cmd("amx_ban 360 #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!");
client_print_color(0, 0, "^1[^4VoteBan^1] ^4Голосование завершено! Игрок ^3%s %s ^3забанен^4! ^1[^4Голосов: ^3%d ^1| ^4Необходимо: ^3%d^1]", szName[iVbBanPl], iLol ? "^1был" : "^1не был", iVoteCount, iMinVoteBan);
log_to_file("voteban.log", "[Voteban] Vote %s. Player ^"%s^" [Reason: ^"%s^"][Vote: %d | MinVote: %d][Players: %d]", iLol ? "SUCCESS [Ban]" : "FAILED [No Ban]", szName[iVbBanPl], iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Default", iVoteCount, iMinVoteBan, iVbCount);
iVbInsider = iVbBanPl = iCustomReason[iVbInsider][0] = 0; /* Обнуляем переменные и массив */
}

public cmd_vote_reason(id)
{
static szArgs[20];
read_args(szArgs, charsmax(szArgs));
remove_quotes(szArgs);
iCustomReason[id] = szArgs;
return votebanpl_menu(id);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
SHWED
сообщение 29.9.2014, 19:56
Сообщение #2
Стаж: 11 лет

Сообщений: 133
Благодарностей: 77
Полезность: 0

Пиши ему на сайт
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 29.9.2014, 19:58
Сообщение #3


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(SHWED @ 29.9.2014, 20:56) *
Пиши ему на сайт


Он не переделывает уже!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kes
сообщение 29.9.2014, 20:17
Сообщение #4


Стаж: 12 лет

Сообщений: 577
Благодарностей: 547
Полезность: 870

Цитата(qpi3ik @ 29.9.2014, 18:58) *
Он не переделывает уже!

Если хорошо попросить всё переделает..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 29.9.2014, 21:38
Сообщение #5


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

qpi3ik,
лови и тестируй )

Скрытый текст
Код:
/*
neygomon created ^_^ | <noindex><a rel="nofollow" href="https://c-s.net.ua/url?u=http%3A%2F%2Fwww.neugomon.ru" target="_blank">http://www.neugomon.ru</a></noindex>

Наказание на 200 строке. По стандарту бан через AMXBans/FreshBans
Superban: server_cmd("amx_ban #%d 360 ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")
Kick: server_cmd("kick #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")


Credits:
* UFPS vip.Predator - помощь с менюшками
* Safety1st - подсказка с item = -3
*/
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define VOTEBAN_FLAG ADMIN_LEVEL_H // флаг доступа к вотебану,по умолчанию как и просил флаг t

#define MIN_PLAYERS 3 // Минимальное кол-во игроков на сервере для запуска голосования
#define BAN_RATIO 0.6 // Коэффицент голосов для бана. 0.1 - 10% | 1.0 - 100%
#define VB_DELAY 120 // Время(в секундах) между голосованиями. Защита от лалок, которые хотят всех перебанить xD

new bool:iBoolVoted[33], szName[33][32];
new iVbTime, iVoteCount, iVbInsider, iVbBanPl, iVbCount, iVbPl[33], iCustomReason[33][20];
new num[3], _access, callback, item_num[3], item_name[36], iRsnMenu, iVoteMenu;

public plugin_init()
{
#define VERSION "1.7.3b"
register_plugin("VoteBan", VERSION, "neygomon");
register_cvar("vb_neygomon", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /ban", "cmd_say_voteban");
register_clcmd("say_team /ban", "cmd_say_voteban");
register_clcmd("say /voteban", "cmd_say_voteban");
register_clcmd("say_team /voteban", "cmd_say_voteban");
register_clcmd("vb_reason", "cmd_vote_reason");
}

public plugin_cfg()
{
iRsnMenu = menu_create("\d[\rVoteBan\d] \yВыберите причину", "custom_menu_handle");
iVoteMenu = menu_create("VOTEBAN_MENU", "votebanpl_handle");

menu_setprop(iRsnMenu, MPROP_EXIT, MEXIT_NEVER);
menu_setprop(iVoteMenu, MPROP_EXIT, MEXIT_NEVER);

menu_additem(iRsnMenu, "\yСвоя причина", "1");
menu_additem(iRsnMenu, "\rСтандартная", "0");

menu_additem(iVoteMenu, "\yДа", "1");
menu_additem(iVoteMenu, "\rНет", "0");
}

public client_disconnect(id)
{
if(iBoolVoted[id])
{
iBoolVoted[id] = false;
iVoteCount--;
}
}

public cmd_say_voteban(id)
{
if (!(get_user_flags ( id ) & VOTEBAN_FLAG ))
{
client_print_color(id, 0, "^1[^4VoteBan^1] ^4VoteBan доступен только ^3VIP ^4игрокам");
}
static players[32], pnum, delay;
if(iVbInsider)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование ^3уже запущено^4!");

delay = iVbTime + VB_DELAY - get_systime();
if(delay > 0)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование будет доступно через ^3%d ^4мин. ^3%d ^4сек.", (delay / 60), (delay % 60));

get_players(players, pnum);
if(MIN_PLAYERS > pnum)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Необходимо не менее ^3%d ^4игроков для запуска голосования!", MIN_PLAYERS);

iVbCount = 0;
for(new i; i < pnum; i++)
{
get_user_name(players[i], szName[players[i]], charsmax(szName[]));
iVbPl[iVbCount++] = players[i];
}
return choosepl_menu(id);
}

choosepl_menu(id)
{
static iPlMenu, iCallBack;
iPlMenu = menu_create("\d[\rVoteBan\d] \yВыберите игрока:\w", "choosepl_handle");
iCallBack = menu_makecallback("menu_callback");
menu_setprop(iPlMenu, MPROP_BACKNAME, "Назад");
menu_setprop(iPlMenu, MPROP_NEXTNAME, "Далее");
menu_setprop(iPlMenu, MPROP_EXITNAME, "Закрыть");
for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == id) continue;
num_to_str(iVbPl[i], num, charsmax(num));
menu_additem(iPlMenu, szName[iVbPl[i]], num, 0, iCallBack);
}
return menu_display(id, iPlMenu);
}

public menu_callback(id, menu, item)
{
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), item_name, charsmax(item_name), callback);
static item_newname[64], ITEM_STATUS; ITEM_STATUS = ITEM_DISABLED;

if(get_user_flags(str_to_num(item_num)) & ADMIN_IMMUNITY)
{
formatex(item_newname, charsmax(item_newname), "\d%s \y[\rИммунитет\y]", item_name);
menu_item_setname(menu, item, item_newname);
}
else ITEM_STATUS = ITEM_ENABLED;

return ITEM_STATUS;
}

public choosepl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
iVbBanPl = str_to_num(item_num);

menu_destroy(menu);
return menu_display(id, iRsnMenu);
}

public custom_menu_handle(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;

menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num)) client_cmd(id, "messagemode vb_reason");
else votebanpl_menu(id);

return PLUGIN_HANDLED;
}

votebanpl_menu(id)
{
static szStrReason[64], szTitle[128];
formatex(szStrReason, charsmax(szStrReason), "^n\rReason\w: \y%s", iCustomReason[id]);
formatex(szTitle, charsmax(szTitle), "\d[\rVoteBan\d] \wBan \y%s\w?%s", szName[iVbBanPl], iCustomReason[id][0] ? szStrReason : "");
menu_setprop(iVoteMenu, MPROP_TITLE, szTitle);

iVoteCount = 0; iVbTime = get_systime(); iVbInsider = id;
arrayset(iBoolVoted, false, 33);

for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == iVbBanPl) continue;
menu_display(iVbPl[i], iVoteMenu);
}
set_task(10.0, "voteban_count_votes", iVoteMenu);
return PLUGIN_HANDLED;
}

public votebanpl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
show_menu(id, 0, "^n", 1);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num))
{
iVoteCount++;
iBoolVoted[id] = true;
}
return PLUGIN_HANDLED;
}

public voteban_count_votes(vmenu)
{
new menu, newmenu, menupage;
for(new i; i < iVbCount; i++)
{
if(!is_user_connected(iVbPl[i]) || iBoolVoted[iVbPl[i]]) continue;
player_menu_info(iVbPl[i], menu, newmenu, menupage);
if(vmenu == newmenu)
menu_cancel(iVbPl[i]);
}

static iMinVoteBan, iLol;
iMinVoteBan = floatround(BAN_RATIO * float(iVbCount) + 0.49);
iLol = (iVoteCount >= iMinVoteBan);
if(iLol)
server_cmd("amx_ban 360 #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!");
client_print_color(0, 0, "^1[^4VoteBan^1] ^4Голосование завершено! Игрок ^3%s %s ^3забанен^4! ^1[^4Голосов: ^3%d ^1| ^4Необходимо: ^3%d^1]", szName[iVbBanPl], iLol ? "^1был" : "^1не был", iVoteCount, iMinVoteBan);
log_to_file("voteban.log", "[Voteban] Vote %s. Player ^"%s^" [Reason: ^"%s^"][Vote: %d | MinVote: %d][Players: %d]", iLol ? "SUCCESS [Ban]" : "FAILED [No Ban]", szName[iVbBanPl], iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Default", iVoteCount, iMinVoteBan, iVbCount);
iVbInsider = iVbBanPl = iCustomReason[iVbInsider][0] = 0; /* Обнуляем переменные и массив */
}

public cmd_vote_reason(id)
{
static szArgs[20];
read_args(szArgs, charsmax(szArgs));
remove_quotes(szArgs);
iCustomReason[id] = szArgs;
return votebanpl_menu(id);
}


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 29.9.2014, 21:47
Сообщение #6


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Ты не понял я имел ввиду что бы когда админ есть то как в старом плагине voteban_by_slimshady.amxx

При админе игроки не могут вотебаном пользоваться им пишет вот такое!
"^1[^4VoteBan^1] ^4На сервере присутствует ^3администратор^4!");

А випы свободно могут воспользоваться вотебаном.

Не уберай строчку

Код:
"^1[^4VoteBan^1] ^4На сервере присутствует ^3администратор^4!");


Просто открой доступ при админе для випов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 29.9.2014, 22:06
Сообщение #7


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

qpi3ik,
Вот, пожалуйста

випы свободно могут воспользоваться вотебаном когда админ на сервере

Скрытый текст
Код:
/*
neygomon created ^_^ | <noindex><a rel="nofollow" href="https://c-s.net.ua/url?u=http%3A%2F%2Fwww.neugomon.ru" target="_blank">http://www.neugomon.ru</a></noindex>

Наказание на 200 строке. По стандарту бан через AMXBans/FreshBans
Superban: server_cmd("amx_ban #%d 360 ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")
Kick: server_cmd("kick #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")


Credits:
* UFPS vip.Predator - помощь с менюшками
* Safety1st - подсказка с item = -3
*/
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define VOTEBAN_FLAG ADMIN_LEVEL_H // флаг доступа к вотебану когда админ на сервере,по умолчанию как и просил флаг t

#define MIN_PLAYERS 3 // Минимальное кол-во игроков на сервере для запуска голосования
#define BAN_RATIO 0.6 // Коэффицент голосов для бана. 0.1 - 10% | 1.0 - 100%
#define VB_DELAY 120 // Время(в секундах) между голосованиями. Защита от лалок, которые хотят всех перебанить xD

new bool:iBoolVoted[33], szName[33][32];
new iVbTime, iVoteCount, iVbInsider, iVbBanPl, iVbCount, iVbPl[33], iCustomReason[33][20];
new num[3], _access, callback, item_num[3], item_name[36], iRsnMenu, iVoteMenu;

public plugin_init()
{
#define VERSION "1.7.3b"
register_plugin("VoteBan", VERSION, "neygomon");
register_cvar("vb_neygomon", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /ban", "cmd_say_voteban");
register_clcmd("say_team /ban", "cmd_say_voteban");
register_clcmd("say /voteban", "cmd_say_voteban");
register_clcmd("say_team /voteban", "cmd_say_voteban");
register_clcmd("vb_reason", "cmd_vote_reason");
}

public plugin_cfg()
{
iRsnMenu = menu_create("\d[\rVoteBan\d] \yВыберите причину", "custom_menu_handle");
iVoteMenu = menu_create("VOTEBAN_MENU", "votebanpl_handle");

menu_setprop(iRsnMenu, MPROP_EXIT, MEXIT_NEVER);
menu_setprop(iVoteMenu, MPROP_EXIT, MEXIT_NEVER);

menu_additem(iRsnMenu, "\yСвоя причина", "1");
menu_additem(iRsnMenu, "\rСтандартная", "0");

menu_additem(iVoteMenu, "\yДа", "1");
menu_additem(iVoteMenu, "\rНет", "0");
}

public client_disconnect(id)
{
if(iBoolVoted[id])
{
iBoolVoted[id] = false;
iVoteCount--;
}
}

public cmd_say_voteban(id)
{
static players[32], pnum, delay;
if(iVbInsider)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование ^3уже запущено^4!");

delay = iVbTime + VB_DELAY - get_systime();
if(delay > 0)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование будет доступно через ^3%d ^4мин. ^3%d ^4сек.", (delay / 60), (delay % 60));

get_players(players, pnum);
if(MIN_PLAYERS > pnum)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Необходимо не менее ^3%d ^4игроков для запуска голосования!", MIN_PLAYERS);

iVbCount = 0;
for(new i; i < pnum; i++)
{
if ((get_user_flags ( id ) & VOTEBAN_FLAG ))
{
get_user_name(players[i], szName[players[i]], charsmax(szName[]));
iVbPl[iVbCount++] = players[i];
}
else if(get_user_flags(players[i]) & ADMIN_MENU)
{
client_print_color(id, 0, "^1[^4VoteBan^1] ^4На сервере присутствует ^3администратор^4!");
log_to_file("voteban.log", "[Fail] Vote non active. Reason: Admins on server... This is good :)");
return PLUGIN_HANDLED;
}
else
{
get_user_name(players[i], szName[players[i]], charsmax(szName[]));
iVbPl[iVbCount++] = players[i];
}
}
return choosepl_menu(id);
}

choosepl_menu(id)
{
static iPlMenu, iCallBack;
iPlMenu = menu_create("\d[\rVoteBan\d] \yВыберите игрока:\w", "choosepl_handle");
iCallBack = menu_makecallback("menu_callback");
menu_setprop(iPlMenu, MPROP_BACKNAME, "Назад");
menu_setprop(iPlMenu, MPROP_NEXTNAME, "Далее");
menu_setprop(iPlMenu, MPROP_EXITNAME, "Закрыть");
for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == id) continue;
num_to_str(iVbPl[i], num, charsmax(num));
menu_additem(iPlMenu, szName[iVbPl[i]], num, 0, iCallBack);
}
return menu_display(id, iPlMenu);
}

public menu_callback(id, menu, item)
{
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), item_name, charsmax(item_name), callback);
static item_newname[64], ITEM_STATUS; ITEM_STATUS = ITEM_DISABLED;

if(get_user_flags(str_to_num(item_num)) & ADMIN_IMMUNITY)
{
formatex(item_newname, charsmax(item_newname), "\d%s \y[\rИммунитет\y]", item_name);
menu_item_setname(menu, item, item_newname);
}
else ITEM_STATUS = ITEM_ENABLED;

return ITEM_STATUS;
}

public choosepl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
iVbBanPl = str_to_num(item_num);

menu_destroy(menu);
return menu_display(id, iRsnMenu);
}

public custom_menu_handle(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;

menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num)) client_cmd(id, "messagemode vb_reason");
else votebanpl_menu(id);

return PLUGIN_HANDLED;
}

votebanpl_menu(id)
{
static szStrReason[64], szTitle[128];
formatex(szStrReason, charsmax(szStrReason), "^n\rReason\w: \y%s", iCustomReason[id]);
formatex(szTitle, charsmax(szTitle), "\d[\rVoteBan\d] \wBan \y%s\w?%s", szName[iVbBanPl], iCustomReason[id][0] ? szStrReason : "");
menu_setprop(iVoteMenu, MPROP_TITLE, szTitle);

iVoteCount = 0; iVbTime = get_systime(); iVbInsider = id;
arrayset(iBoolVoted, false, 33);

for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == iVbBanPl) continue;
menu_display(iVbPl[i], iVoteMenu);
}
set_task(10.0, "voteban_count_votes", iVoteMenu);
return PLUGIN_HANDLED;
}

public votebanpl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
show_menu(id, 0, "^n", 1);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num))
{
iVoteCount++;
iBoolVoted[id] = true;
}
return PLUGIN_HANDLED;
}

public voteban_count_votes(vmenu)
{
new menu, newmenu, menupage;
for(new i; i < iVbCount; i++)
{
if(!is_user_connected(iVbPl[i]) || iBoolVoted[iVbPl[i]]) continue;
player_menu_info(iVbPl[i], menu, newmenu, menupage);
if(vmenu == newmenu)
menu_cancel(iVbPl[i]);
}

static iMinVoteBan, iLol;
iMinVoteBan = floatround(BAN_RATIO * float(iVbCount) + 0.49);
iLol = (iVoteCount >= iMinVoteBan);
if(iLol)
server_cmd("amx_ban 360 #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!");
client_print_color(0, 0, "^1[^4VoteBan^1] ^4Голосование завершено! Игрок ^3%s %s ^3забанен^4! ^1[^4Голосов: ^3%d ^1| ^4Необходимо: ^3%d^1]", szName[iVbBanPl], iLol ? "^1был" : "^1не был", iVoteCount, iMinVoteBan);
log_to_file("voteban.log", "[Voteban] Vote %s. Player ^"%s^" [Reason: ^"%s^"][Vote: %d | MinVote: %d][Players: %d]", iLol ? "SUCCESS [Ban]" : "FAILED [No Ban]", szName[iVbBanPl], iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Default", iVoteCount, iMinVoteBan, iVbCount);
iVbInsider = iVbBanPl = iCustomReason[iVbInsider][0] = 0; /* Обнуляем переменные и массив */
}

public cmd_vote_reason(id)
{
static szArgs[20];
read_args(szArgs, charsmax(szArgs));
remove_quotes(szArgs);
iCustomReason[id] = szArgs;
return votebanpl_menu(id);
}


неправильно понял,уставший

Отредактировал: MiXa, - 29.9.2014, 22:10


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 30.9.2014, 0:58
Сообщение #8


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(MiXa @ 29.9.2014, 23:06) *
qpi3ik,
Вот, пожалуйста

випы свободно могут воспользоваться вотебаном когда админ на сервере

Скрытый текст
Код:
/*
neygomon created ^_^ | <noindex><a rel="nofollow" href="https://c-s.net.ua/url?u=http%3A%2F%2Fwww.neugomon.ru" target="_blank">http://www.neugomon.ru</a></noindex>

Наказание на 200 строке. По стандарту бан через AMXBans/FreshBans
Superban: server_cmd("amx_ban #%d 360 ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")
Kick: server_cmd("kick #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!")


Credits:
* UFPS vip.Predator - помощь с менюшками
* Safety1st - подсказка с item = -3
*/
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define VOTEBAN_FLAG ADMIN_LEVEL_H // флаг доступа к вотебану когда админ на сервере,по умолчанию как и просил флаг t

#define MIN_PLAYERS 3 // Минимальное кол-во игроков на сервере для запуска голосования
#define BAN_RATIO 0.6 // Коэффицент голосов для бана. 0.1 - 10% | 1.0 - 100%
#define VB_DELAY 120 // Время(в секундах) между голосованиями. Защита от лалок, которые хотят всех перебанить xD

new bool:iBoolVoted[33], szName[33][32];
new iVbTime, iVoteCount, iVbInsider, iVbBanPl, iVbCount, iVbPl[33], iCustomReason[33][20];
new num[3], _access, callback, item_num[3], item_name[36], iRsnMenu, iVoteMenu;

public plugin_init()
{
#define VERSION "1.7.3b"
register_plugin("VoteBan", VERSION, "neygomon");
register_cvar("vb_neygomon", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /ban", "cmd_say_voteban");
register_clcmd("say_team /ban", "cmd_say_voteban");
register_clcmd("say /voteban", "cmd_say_voteban");
register_clcmd("say_team /voteban", "cmd_say_voteban");
register_clcmd("vb_reason", "cmd_vote_reason");
}

public plugin_cfg()
{
iRsnMenu = menu_create("\d[\rVoteBan\d] \yВыберите причину", "custom_menu_handle");
iVoteMenu = menu_create("VOTEBAN_MENU", "votebanpl_handle");

menu_setprop(iRsnMenu, MPROP_EXIT, MEXIT_NEVER);
menu_setprop(iVoteMenu, MPROP_EXIT, MEXIT_NEVER);

menu_additem(iRsnMenu, "\yСвоя причина", "1");
menu_additem(iRsnMenu, "\rСтандартная", "0");

menu_additem(iVoteMenu, "\yДа", "1");
menu_additem(iVoteMenu, "\rНет", "0");
}

public client_disconnect(id)
{
if(iBoolVoted[id])
{
iBoolVoted[id] = false;
iVoteCount--;
}
}

public cmd_say_voteban(id)
{
static players[32], pnum, delay;
if(iVbInsider)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование ^3уже запущено^4!");

delay = iVbTime + VB_DELAY - get_systime();
if(delay > 0)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Голосование будет доступно через ^3%d ^4мин. ^3%d ^4сек.", (delay / 60), (delay % 60));

get_players(players, pnum);
if(MIN_PLAYERS > pnum)
return client_print_color(id, 0, "^1[^4VoteBan^1] ^4Необходимо не менее ^3%d ^4игроков для запуска голосования!", MIN_PLAYERS);

iVbCount = 0;
for(new i; i < pnum; i++)
{
if ((get_user_flags ( id ) & VOTEBAN_FLAG ))
{
get_user_name(players[i], szName[players[i]], charsmax(szName[]));
iVbPl[iVbCount++] = players[i];
}
else if(get_user_flags(players[i]) & ADMIN_MENU)
{
client_print_color(id, 0, "^1[^4VoteBan^1] ^4На сервере присутствует ^3администратор^4!");
log_to_file("voteban.log", "[Fail] Vote non active. Reason: Admins on server... This is good :)");
return PLUGIN_HANDLED;
}
else
{
get_user_name(players[i], szName[players[i]], charsmax(szName[]));
iVbPl[iVbCount++] = players[i];
}
}
return choosepl_menu(id);
}

choosepl_menu(id)
{
static iPlMenu, iCallBack;
iPlMenu = menu_create("\d[\rVoteBan\d] \yВыберите игрока:\w", "choosepl_handle");
iCallBack = menu_makecallback("menu_callback");
menu_setprop(iPlMenu, MPROP_BACKNAME, "Назад");
menu_setprop(iPlMenu, MPROP_NEXTNAME, "Далее");
menu_setprop(iPlMenu, MPROP_EXITNAME, "Закрыть");
for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == id) continue;
num_to_str(iVbPl[i], num, charsmax(num));
menu_additem(iPlMenu, szName[iVbPl[i]], num, 0, iCallBack);
}
return menu_display(id, iPlMenu);
}

public menu_callback(id, menu, item)
{
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), item_name, charsmax(item_name), callback);
static item_newname[64], ITEM_STATUS; ITEM_STATUS = ITEM_DISABLED;

if(get_user_flags(str_to_num(item_num)) & ADMIN_IMMUNITY)
{
formatex(item_newname, charsmax(item_newname), "\d%s \y[\rИммунитет\y]", item_name);
menu_item_setname(menu, item, item_newname);
}
else ITEM_STATUS = ITEM_ENABLED;

return ITEM_STATUS;
}

public choosepl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
iVbBanPl = str_to_num(item_num);

menu_destroy(menu);
return menu_display(id, iRsnMenu);
}

public custom_menu_handle(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;

menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num)) client_cmd(id, "messagemode vb_reason");
else votebanpl_menu(id);

return PLUGIN_HANDLED;
}

votebanpl_menu(id)
{
static szStrReason[64], szTitle[128];
formatex(szStrReason, charsmax(szStrReason), "^n\rReason\w: \y%s", iCustomReason[id]);
formatex(szTitle, charsmax(szTitle), "\d[\rVoteBan\d] \wBan \y%s\w?%s", szName[iVbBanPl], iCustomReason[id][0] ? szStrReason : "");
menu_setprop(iVoteMenu, MPROP_TITLE, szTitle);

iVoteCount = 0; iVbTime = get_systime(); iVbInsider = id;
arrayset(iBoolVoted, false, 33);

for(new i; i < iVbCount; ++i)
{
if(iVbPl[i] == iVbBanPl) continue;
menu_display(iVbPl[i], iVoteMenu);
}
set_task(10.0, "voteban_count_votes", iVoteMenu);
return PLUGIN_HANDLED;
}

public votebanpl_handle(id, menu, item)
{
if(item == MENU_EXIT)
{
show_menu(id, 0, "^n", 1);
return PLUGIN_HANDLED;
}
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
if(str_to_num(item_num))
{
iVoteCount++;
iBoolVoted[id] = true;
}
return PLUGIN_HANDLED;
}

public voteban_count_votes(vmenu)
{
new menu, newmenu, menupage;
for(new i; i < iVbCount; i++)
{
if(!is_user_connected(iVbPl[i]) || iBoolVoted[iVbPl[i]]) continue;
player_menu_info(iVbPl[i], menu, newmenu, menupage);
if(vmenu == newmenu)
menu_cancel(iVbPl[i]);
}

static iMinVoteBan, iLol;
iMinVoteBan = floatround(BAN_RATIO * float(iVbCount) + 0.49);
iLol = (iVoteCount >= iMinVoteBan);
if(iLol)
server_cmd("amx_ban 360 #%d ^"[VoteBan] %s^"", get_user_userid(iVbBanPl), iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Демо на форум!");
client_print_color(0, 0, "^1[^4VoteBan^1] ^4Голосование завершено! Игрок ^3%s %s ^3забанен^4! ^1[^4Голосов: ^3%d ^1| ^4Необходимо: ^3%d^1]", szName[iVbBanPl], iLol ? "^1был" : "^1не был", iVoteCount, iMinVoteBan);
log_to_file("voteban.log", "[Voteban] Vote %s. Player ^"%s^" [Reason: ^"%s^"][Vote: %d | MinVote: %d][Players: %d]", iLol ? "SUCCESS [Ban]" : "FAILED [No Ban]", szName[iVbBanPl], iCustomReason[iVbInsider][0] ? iCustomReason[iVbInsider] : "Default", iVoteCount, iMinVoteBan, iVbCount);
iVbInsider = iVbBanPl = iCustomReason[iVbInsider][0] = 0; /* Обнуляем переменные и массив */
}

public cmd_vote_reason(id)
{
static szArgs[20];
read_args(szArgs, charsmax(szArgs));
remove_quotes(szArgs);
iCustomReason[id] = szArgs;
return votebanpl_menu(id);
}


неправильно понял,уставший



А как сделать что бы для випа он был всегда доступен и ему не нужно было б ждать 120 сек
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 3.10.2014, 15:52
Сообщение #9


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Как сделать теперь так что бы випы не ждали 120сек после каждого голосования?

В прошлом вотебане нужно было изменить

Код:
if (interim < delay_cvar * 60)


на

Код:
if( (interim < delay_cvar * 60) && (!(get_user_flags(id) & read_flags( VIP_FLAG ) )) )


и в начало добавить

Код:
#define VIP_FLAG "t"


Подскажите как в этом сделать.

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: