Русское сообщество по скриптингу

Lite VoteBan: иммунитет для админов

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы только с поиском исполнителя или заказчика.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Lite VoteBan: иммунитет для админов

Сообщение adrenalin_den » 20 дек 2016, 02:50

Помогите пожалуйста. Как сделать чтобы у админов был имуннитет с флагом f .
И чтобы было когда игрок нажимал причину он видел и время на которое банит:
"AIM", 180 минут
"WH", 180 минут
"Мешает играть" 15 минут
+Квар 0 можно писать втб если есть админ | 1 если есть админ то нельзя писать втб
Бан по amxbans 6.0 причина бана voteban
Поставил #define ACCESS АDMIN_NONE ввожу вотебан плагин не реагирует

Код: Выделить всё
#include <amxmodx>
#define ADMIN_NONE -1

#define MIN_PLAYERS 0    // Минимальное кол-во игроков на сервере для запуска голосования
#define BAN_RATIO 0.6    // Коэффицент голосов для бана. 0.1 - 10% | 1.0 - 100%
#define VB_DELAY    120    // Время(в секундах) между голосованиями. Защита от лалок, которые хотят всех перебанить xD
#define VB_TIME    10.0    // Продолжительность голосования
#define VB_BANTIME    15    // Время бана в минутах
#define VB_TYPE    1    // Тип наказания. 0 - кик, 1 - AmxBans/FreshBans, 2 - SuperBan
#define ACCESS    // Доступ к функциям вотебана. Чтобы разрешить всем использовать поставьте ADMIN_NONE
// Стандартные причины VoteBan. Не указывайте больше 8-ми. Может сломаться менюшка :D
// Пункт "Своя причина" добавляется в конце списка.
new g_aBanReasons[][64] = 
{
"AIM",
"WH",
"Мешает играть"
}

new 
g_iReasonsMenu;
new 
g_iVoteMenu;
new 
_accesscallbackItemData[3];

new 
g_iInsider;
new 
g_iVoteStartTime;
new 
g_iVoteCountbool:g_bIsVoted[33];
new 
g_iVictim;
new 
g_sBanReason[64];

new 
g_iVoteBanPlayersNumg_iVoteBanPlayers[33];

public 
plugin_init()
{
#define VERSION "1.4"
register_plugin("Lite VoteBan"VERSION"neygomon");
register_cvar("lite_voteban"VERSIONFCVAR_SERVER FCVAR_SPONLY);    

register_clcmd("say /voteban""ClCmdVoteban");
register_clcmd("say /vtb""ClCmdVoteban");
register_clcmd("say_team /voteban""ClCmdVoteban");
register_clcmd("say_team /vtb""ClCmdVoteban");
register_clcmd("vtb_reason""ClCmdReason");
}

public 
plugin_cfg()
{
g_iReasonsMenu menu_create("\d[\rLite VoteBan\d] \yВыберите причину бана\w""ReasonsMenuHandler");
g_iVoteMenu menu_create("UNNAMED_MENU""VoteMenuHandler");

menu_setprop(g_iReasonsMenuMPROP_EXITMEXIT_NEVER);
menu_setprop(g_iReasonsMenuMPROP_PERPAGE0);
menu_setprop(g_iVoteMenuMPROP_EXITMEXIT_NEVER);

new 
num[3];
for(new 
isizeof g_aBanReasonsi++)
{
num_to_str(inumcharsmax(num));
menu_additem(g_iReasonsMenug_aBanReasons[i], num);
}    
menu_addblank(g_iReasonsMenu0);
menu_additem(g_iReasonsMenu"\yСвоя причина""69");

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

public 
client_disconnect(id)
{
if(
g_bIsVoted[id])
{
g_bIsVoted[id] = false;
g_iVoteCount--;
}
}

public 
ClCmdVoteban(id)
{
#if ACCESS != ADMIN_NONE
if(~get_user_flags(id) & ACCESS)
{
new 
flag[25]; get_flags(ACCESSflagcharsmax(flag));
ChatColor(id"^1[^4WARN^1] ^4Доступ запрещен! Разрешено только игрокам с флагами ^3%s^4!"flag);
return 
PLUGIN_HANDLED;
}
#endif
static players[32], pnumiVtbDelay;
if(
g_iInsider)
return 
ChatColor(id"^1[^4Lite VoteBan^1] ^4Голосование ^3уже запущено^4!");
if((
iVtbDelay g_iVoteStartTime VB_DELAY get_systime()) > 0)
return 
ChatColor(id"^1[^4Lite VoteBan^1] ^4Голосование будет доступно через ^3%d ^4мин. ^3%d ^4сек.", (iVtbDelay 60), (iVtbDelay 60));
get_players(playerspnum);
if(
MIN_PLAYERS pnum)
return 
ChatColor(id"^1[^4Lite VoteBan^1] ^4Необходимо не менее ^3%d ^4игроков для запуска голосования!"MIN_PLAYERS);

g_iVoteBanPlayersNum 0;
for(new 
ipnumi++)
{
if(
get_user_flags(players[i]) & ADMIN_MENU)
return 
ChatColor(id"^1[^4VoteBan^1] ^4На сервере присутствует ^3администратор^4!");
g_iVoteBanPlayers[g_iVoteBanPlayersNum++] = players[i];
}
return 
SelectPlayerOnBan(id);
}

public 
SelectPlayerOnBan(id)
{
new 
iPlayersMenu menu_create("\d[\rLite VoteBan\d] \yВыберите игрока\w""PlayersMenuHandler");
new 
iCallBack menu_makecallback("PlayersMenuCallback");
menu_setprop(iPlayersMenuMPROP_BACKNAME"Назад");
menu_setprop(iPlayersMenuMPROP_NEXTNAME"Далее");
menu_setprop(iPlayersMenuMPROP_EXITNAME"Выход");

new 
name[32], num[3];
for(new 
ig_iVoteBanPlayersNumi++)
{
if(
g_iVoteBanPlayers[i] == id) continue;
get_user_name(g_iVoteBanPlayers[i], namecharsmax(name));
num_to_str(g_iVoteBanPlayers[i], numcharsmax(num));
menu_additem(iPlayersMenunamenum0iCallBack);
}
menu_display(idiPlayersMenu0);
return 
PLUGIN_HANDLED;
}

public 
PlayersMenuCallback(idmenuitem)
{
static 
ItemName[32], ItemNewName[64];
menu_item_getinfo(menuitem_accessItemDatacharsmax(ItemData), ItemNamecharsmax(ItemName), callback);
if(
get_user_flags(str_to_num(ItemData)) & ADMIN_IMMUNITY)
{
formatex(ItemNewNamecharsmax(ItemNewName), "\d%s \y[\rИммунитет\y]"ItemName);
menu_item_setname(menuitemItemNewName);
return 
ITEM_DISABLED;
}
return 
ITEM_ENABLED;
}

public 
PlayersMenuHandler(idmenuitem)
{
if(
item == MENU_EXIT)
{
menu_destroy(menu);
return 
PLUGIN_HANDLED;
}
menu_item_getinfo(menuitem_accessItemDatacharsmax(ItemData), __callback);
g_iVictim str_to_num(ItemData);
menu_destroy(menu);
return 
menu_display(idg_iReasonsMenu);
}

public 
ReasonsMenuHandler(idmenuitem)
{
menu_item_getinfo(menuitem_accessItemDatacharsmax(ItemData), __callback);
new 
ReasonId str_to_num(ItemData);
if(
ReasonId == 69client_cmd(id"messagemode vtb_reason");
else
{
g_sBanReason g_aBanReasons[ReasonId];
VoteBanAction(id);
}
return 
PLUGIN_HANDLED;
}

public 
ClCmdReason(id)
{
#if ACCESS != ADMIN_NONE
if(~get_user_flags(id) & ACCESS)
{
new 
flag[25]; get_flags(ACCESSflagcharsmax(flag));
ChatColor(id"^1[^4WARN^1] ^4Доступ запрещен! Разрешено только игрокам с флагами ^3%s^4!"flag);
return 
PLUGIN_HANDLED;
}
#endif
static sReason[64]; 
read_args(sReasoncharsmax(sReason)); 
remove_quotes(sReason);
g_sBanReason sReason[0] ? sReason "unknown";
return 
VoteBanAction(id);
}

VoteBanAction(id)
{
static 
sInsName[32], sVicName[32], sTitle[256]; 
get_user_name(idsInsNamecharsmax(sInsName));
get_user_name(g_iVictimsVicNamecharsmax(sVicName));
formatex(sTitlecharsmax(sTitle), "\rЗабанить \y%s\w?^n\rПричина\w: \y%s^n\dЗапустил \r%s"sVicNameg_sBanReasonsInsName);
menu_setprop(g_iVoteMenuMPROP_TITLEsTitle);

g_iInsider id;
g_iVoteStartTime get_systime();
g_iVoteCount 0;
arrayset(g_bIsVotedfalsesizeof(g_bIsVoted));

for(new 
ig_iVoteBanPlayersNum; ++i)
{
if(
g_iVoteBanPlayers[i] != g_iVictim)
menu_display(g_iVoteBanPlayers[i], g_iVoteMenu);
}
return 
set_task(VB_TIME"VoteBanResults");
}

public 
VoteMenuHandler(idmenuitem)
{
if(
item != MENU_EXIT)
{
menu_item_getinfo(menuitem_accessItemDatacharsmax(ItemData), __callback);
if(
str_to_num(ItemData))
{
g_iVoteCount++;
g_bIsVoted[id] = true;
}
}    
return 
PLUGIN_HANDLED;
}

public 
VoteBanResults()
{
show_menu(00"^n"1); // визуально закрываем меню.
if(is_user_connected(g_iVictim))
{
new 
iVoteBanMinVotes floatround(BAN_RATIO float(g_iVoteBanPlayersNum));
new 
name[32]; get_user_name(g_iVictimnamecharsmax(name));
if(
g_iVoteCount >= iVoteBanMinVotes)
{
#if VB_TYPE == 0
server_cmd("kick #%d ^"%s^""get_user_userid(g_iVictim), g_sBanReason);
#endif    
#if VB_TYPE == 1
server_cmd("amx_ban %d #%d ^"%s^""VB_BANTIMEget_user_userid(g_iVictim), g_sBanReason);
#endif    
#if VB_TYPE == 2
server_cmd("amx_superban #%d %d ^"%s^""get_user_userid(g_iVictim), VB_BANTIMEg_sBanReason);
#endif    
ChatColor(0"^1[^4Lite VoteBan^1] ^4Голосование завершено! Игрок ^3%s ^1был ^3забанен^4! ^1[^4Голосов: ^3%d ^1| ^4Необходимо: ^3%d^1]"nameg_iVoteCountiVoteBanMinVotes);
log_amx("VoteBan SUCCESS. Player ^"%s^" [Reason: ^"%s^"][Vote: %d | MinVote: %d]"nameg_sBanReasong_iVoteCountiVoteBanMinVotes);
}
else
{
ChatColor(0"^1[^4Lite VoteBan^1] ^4Голосование завершено! Игрок ^3%s ^1не был ^3забанен^4! ^1[^4Голосов: ^3%d ^1| ^4Необходимо: ^3%d^1]"nameg_iVoteCountiVoteBanMinVotes);
log_amx("VoteBan FAILED. Player ^"%s^" [Reason: ^"%s^"][Vote: %d | MinVote: %d]"nameg_sBanReasong_iVoteCountiVoteBanMinVotes);
}    
}
else 
ChatColor(g_iInsider"^1[^4Lite VoteBan^1] ^4Наказать не удалось... Игрок покинул сервер :(");
g_iInsider g_iVictim 0;
}

stock ChatColor(const id, const szMessage[], any:...)
{
static 
pnumplayers[32], szMsg[190], IdMsg
vformat(szMsgcharsmax(szMsg), szMessage3);

if(!
IdMsgIdMsg get_user_msgid("SayText");

if(
id

if(!
is_user_connected(id)) return 1;
players[0] = id;
pnum 1

else 
get_players(playerspnum"ch");

for(new 
ipnumi++)
{
message_begin(MSG_ONEIdMsg, .player players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
return 
1;

Название темы скорректировано // Subb98
Аватара пользователя
adrenalin_den
 
Сообщения: 63
Зарегистрирован: 17 сен 2012, 03:49
Благодарил (а): 25 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Lite VoteBan: иммунитет для админов

Сообщение Subb98 » 20 дек 2016, 12:55

Если готовы оплатить работу, то могу перенести вашу тему в раздел "Биржа труда".
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4886
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1280 раз.
Поблагодарили: 2195 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Lite VoteBan: иммунитет для админов

Сообщение adrenalin_den » 20 дек 2016, 15:52

Могу и оплатить.
Аватара пользователя
adrenalin_den
 
Сообщения: 63
Зарегистрирован: 17 сен 2012, 03:49
Благодарил (а): 25 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Lite VoteBan: иммунитет для админов

Сообщение Subb98 » 20 дек 2016, 15:55

Тема перемещена в раздел "Биржа труда"
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4886
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1280 раз.
Поблагодарили: 2195 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Lite VoteBan: иммунитет для админов

Сообщение ko22009 » 22 янв 2017, 20:48

Отпишись в ЛС
Аватара пользователя
ko22009
 
Сообщения: 127
Зарегистрирован: 19 янв 2017, 16:20
Благодарил (а): 12 раз.
Поблагодарили: 25 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
C++
Php
Python
C#


Вернуться в Поиск исполнителей / заказчиков

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1