Пункты меню по разным флагам
| |
«SeReGa»☆
|
Дата: Пятница, 04.04.2014, 01:40:17 | Сообщение # 1 |
|
Сообщений: 395
Репутация: 37 [ +/- ]
|
|
Здравствуйте возможно ли как небуть ограничить пункты в меню, так чтоб определенные пункты видели только опр люди? на простых и людей с флагом a итд.
Код #include <sourcemod>
public OnPluginStart() {
RegConsoleCmd("say_team",Command); RegConsoleCmd("say",Command); }
public Action:Command(client,argc) { decl String:player[64],String:command[32]; GetCmdArg(1,command,sizeof(command)); GetCmdArg(2,player,sizeof(player)); if(StrEqual(command,"test",false) || StrEqual(command,"menu",false)) { OpenMenu(client); } }
OpenMenu(client) { new Handle:AccesMenu = CreateMenu(AccesMenu_handle); SetMenuTitle(AccesMenu, "[AccesMenu]"); AddMenuItem(AccesMenu, "", "Этот пункт №1 увидит любой");//Этот пункт меню доступен всем его видят все AddMenuItem(AccesMenu, "", "Этот пункт №2 увидит человек с флагом a");//Эетот видит только человек который имеет флаг а AddMenuItem(AccesMenu, "", "Этот пункт №3 увидит человек с z (Root)"); AddMenuItem(AccesMenu, "", "Этот пункт №4 увидит человек Который за Spec"); DisplayMenu(AccesMenu, client, 0); }
public AccesMenu_handle(Handle:AccesMenu,MenuAction:action,client,slot) { if(action==MenuAction_Select) { switch(slot) { case 0: { PrintToChat(client, "\x02 Вы простой смертный"); OpenMenu(client); } case 1: { PrintToChat(client, "\x07ff0033 Вы Имеете доступ (\x08adff2f60Reserved slots\x07ff0033)"); OpenMenu(client); } case 2: { PrintToChat(client, "\x0700ffff Вы Имеете (\x08adff2f60Root\x0700ffff) доступ"); OpenMenu(client); } case 3: { PrintToChat(client, "\x07e6e6fa Вы находитесь в наблюдении"); OpenMenu(client); } } } if (action == MenuAction_End) { CloseHandle(AccesMenu); return; } }
Возможно ли???
Сообщение отредактировал «SeReGa»☆ - Пятница, 04.04.2014, 03:10:17 |
|
| |
ThRunningMan
|
Дата: Пятница, 04.04.2014, 05:35:10 | Сообщение # 2 |
|
Сообщений: 140
Репутация: 12 [ +/- ]
|
|
ты когда при создании меню добавляешь туда пункты AddMenuItem проверяй клиента на флаг Код AddMenuItem(AccesMenu, "", "Этот пункт №1 увидит любой"); if(GetAdminFlag(client, ADMFLAG_GENERIC, Access_Effective)//я не помню чему соответствует флаг а AddMenuItem(AccesMenu, "", "Этот пункт №2 увидит человек с флагом a");//Эетот видит только человек который имеет флаг а if(GetAdminFlag(client, ADMFLAG_ROOT, Access_Effective) AddMenuItem(AccesMenu, "", "Этот пункт №3 увидит человек с z (Root)"); if(GetClientTeam(client) == 1) AddMenuItem(AccesMenu, "", "Этот пункт №4 увидит человек Который за Spec"); Дальше уже комбинируй как тебе надо через else, в данном случае будет два пункта максимум первая строка и любая другая соответствующая условию
|
|
| |
«SeReGa»☆
|
Дата: Воскресенье, 13.04.2014, 07:07:21 | Сообщение # 3 |
|
Сообщений: 395
Репутация: 37 [ +/- ]
|
|
Код #include <sourcemod>
public OnPluginStart() { RegConsoleCmd("say_team",Command); RegConsoleCmd("say",Command); }
public Action:Command(client,argc) { decl String:player[64],String:command[32]; GetCmdArg(1,command,sizeof(command)); GetCmdArg(2,player,sizeof(player)); if(StrEqual(command,"test",false) || StrEqual(command,"menu",false)) { OpenMenu(client); } }
OpenMenu(client) { new flags = GetUserFlagBits(client); new Handle:AccesMenu = CreateMenu(AccesMenu_handle); if (client < 1) { return; } SetMenuTitle(AccesMenu, "[AccesMenu]"); AddMenuItem(AccesMenu, "", "Этот пункт №1 увидет любой"); if (GetClientTeam(client) < 2) { AddMenuItem(AccesMenu, "", "Этот пункт №4 увидет человек Который за Spec"); }
if (flags & ADMFLAG_RESERVATION) { AddMenuItem(AccesMenu, "", "Этот пункт №2 увидет человек с флагом a"); } if (flags & ADMFLAG_ROOT) { AddMenuItem(AccesMenu, "", "Этот пункт №3 увидет человек с z (Root)"); } DisplayMenu(AccesMenu, client, 0); }
public AccesMenu_handle(Handle:AccesMenu,MenuAction:action,client,slot) { if(action==MenuAction_Select) { switch(slot) { case 0: { PrintToChat(client, "\x02 Вы простой смертный"); OpenMenu(client); } case 1: { PrintToChat(client, "\x07e6e6fa Вы находитесь в наблюдении"); OpenMenu(client); } case 2: { PrintToChat(client, "\x07ff0033 Вы Имеете доступ (\x08adff2f60Reserved slots Флаг а\x07ff0033)"); OpenMenu(client); } case 3: { PrintToChat(client, "\x0700ffff Вы Имеете (\x08adff2f60Root\x0700ffff) доступ"); OpenMenu(client); } } } if (action == MenuAction_End) { CloseHandle(AccesMenu); return; } }
может кому будет интересно>
есть маленькая проблемка пункты слетают(((
За код спасибо wS
Добавлено (13.04.2014, 07:07:21) --------------------------------------------- Здравствуйте ещё раз. возможно ли дать пункт меню по steamID?? Код new PERSONA = GetClientOfUserId(client); if (PERSONA == "STEAM_0:1:*******") { AddMenuItem(Menu, "", "LOL"); } Подправте пожалуйста.
Сообщение отредактировал «SeReGa»☆ - Воскресенье, 13.04.2014, 07:07:51 |
|
| |
BarD
|
Дата: Воскресенье, 13.04.2014, 09:15:38 | Сообщение # 4 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Код new String:persona[64]; GetClientAuthString(client, persona, sizeof(persona)); // Берешь Стим айди игрока if (StrEqual(persona, "STEAM_0:1:********")) // Если он равен написанному, то { AddMenuItem(Menu, "", "LOL"); // Создаем, что тебе надо }
P.S.Ты взял не Стим айди, а userid
Сообщение отредактировал BarD - Воскресенье, 13.04.2014, 09:16:07 |
|
| |
«SeReGa»☆
|
Дата: Понедельник, 14.04.2014, 01:54:34 | Сообщение # 5 |
|
Сообщений: 395
Репутация: 37 [ +/- ]
|
|
BarD спасибо заработало я забыл об GetClientAuthString
|
|
| |
Jon4ik
|
Дата: Суббота, 31.05.2014, 23:56:07 | Сообщение # 6 |
|
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
Ребят а как исправить это:
У меня есть меню: 1)Для игроков команда 2)Для игроков команда 3)для игроков команда 4)Для админов с флагом (a) команда 5)test
На них забито:
1)votemute 2)votekick 3)voteban 4)команда для админа типо !votemap de_dust2 5)test
И вот такая проблема игрок без флага (a) жмет на 4) и он пишет команду для админа типо !votemap de_dust2(как сделать чтобы он писать test а не то, что для админов)?
надеюсь вы поняли вот скрин http://rghost.ru/56048181
|
|
| |
«SeReGa»☆
|
Дата: Воскресенье, 01.06.2014, 01:39:18 | Сообщение # 7 |
|
Сообщений: 395
Репутация: 37 [ +/- ]
|
|
Можно в функции где для админов писать !votemap de_dust2 сделать ещё разочек проверку на то что client admin а дальше.... Код if (flags & ADMFLAG_RESERVATION) { ClientCommand(client, "say !votemap de_dust2") } else { ClientCommand(client, "say test") PrintToChat(client, "У вас нет доступа") }
Но по моему если у client root то ему может видатся У вас нет доступа.Добавлено (01.06.2014, 01:39:18) --------------------------------------------- наверное тогда нужно сделать
Код if (flags & ADMFLAG_RESERVATION || flags & ADMFLAG_ROOT)
|
|
| |
BarD
|
Дата: Воскресенье, 01.06.2014, 05:06:13 | Сообщение # 8 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Код new flags = GetUserFlagBits(client); new Handle:menu = CreateMenu(Menu_Select); SetMenuTitle(menu, "Menu"); AddMenuItem(menu, "", "votemute"); AddMenuItem(menu, "", "votekick"); AddMenuItem(menu, "", "voteban"); if (flags & ADMFLAG_RESERVATION) { AddMenuItem(menu, "", "Для админов"); } else AddMenuItem(menu, "", "test");
|
|
| |
Jon4ik
|
Дата: Воскресенье, 01.06.2014, 12:22:46 | Сообщение # 9 |
|
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
«SeReGa»☆, Можеш кинуть как проверить ещё раз на админа вместе с кодом,что ты писал а то чёт не получается.
Сообщение отредактировал Jon4ik - Воскресенье, 01.06.2014, 12:24:35 |
|
| |
Tokami
|
Дата: Воскресенье, 01.06.2014, 13:54:36 | Сообщение # 10 |
|
Сообщений: 238
Репутация: 19 [ +/- ]
|
|
Смотри что я сделал проверкой то у кого есть флаг Admin_Custom3 сможет нажать на функцию у кого нету флага Admin_Custom3 то у него будет надпись просто белая Код
new AdminId:admin = GetUserAdmin(client); new Handle:panel = CreatePanel(); SetPanelTitle(panel, buffer); DrawPanelItem(panel, "Убить Игрока"); DrawPanelItem(panel, "Кикнуть Игрока"); DrawPanelItem(panel, "Забанить Игрока"); if (GetAdminFlag(admin, Admin_Custom3, Access_Effective)) { DrawPanelItem(panel, "Забанить Вышедшего Игрока"); } else { DrawPanelItem(panel, "Забанить Вышедшего Игрока", (ITEMDRAW_DISABLED)); }
|
|
| |
Jon4ik
|
Дата: Воскресенье, 01.06.2014, 19:41:07 | Сообщение # 11 |
|
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
Tokami, Вобще меню не открывается =( может я чёт не так сделал
|
|
| |
BarD
|
Дата: Понедельник, 02.06.2014, 06:24:53 | Сообщение # 12 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Jon4ik, я же дал тебе перед этим рабочий пример)
|
|
| |
Darkeneez
|
Дата: Понедельник, 02.06.2014, 07:29:26 | Сообщение # 13 |
|
Сообщений: 221
Репутация: 18 [ +/- ]
|
|
Цитата Jon4ik ( ) Tokami, Вобще меню не открывается =( может я чёт не так сделал
Проще простого ведь
Код new AdminId:admin = GetUserAdmin(client);
new Handle:v_menu = CreateMenu(main_handle);
SetMenuTitle(v_menu, buffer); AddMenuItem(v_menu, "Убить Игрока"); AddMenuItem(v_menu, "Кикнуть Игрока"); AddMenuItem(v_menu, "Забанить Игрока");
AddMenuItem(v_menu, "Забанить Вышедшего Игрока", (GetAdminFlag(admin, Admin_Custom3, Access_Effective))? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED));
SetMenuExitButton(v_menu, true);
DisplayMenu(v_menu, client, 0);
Это ваш вариант, но переделанный, а теперь как я обычно делаю. Вырезал пример из плагина
Код #include <sourcemod> #include <sdktools> #include <clientprefs> #include <cstrike> #include <darkeneez>
public Plugin:myinfo = { name = "No-Steam Bans lite", author = "Darkeneez", version = "1.1", url = "http://www.darkeneez.ucoz.net" }
//Лог файл new String:log_file[256]; //ConVars new Handle:g_enable = INVALID_HANDLE; new Handle:g_iflag = INVALID_HANDLE;
new String:strflag[64];
new i_enable; new iFlag;
public OnPluginStart() { g_enable = CreateConVar("sm_nsb_enable", "1", "Включение/Отключение защиты", FCVAR_NOT_CONNECTED | FCVAR_NOTIFY); g_iflag = CreateConVar("sm_nsb_global_flag", "z", "Флаг доступа к глобальным функциям (Отключение защиты)");
GetConVarString(g_iflag, strflag, sizeof(strflag)); iFlag = ReadFlagString(strflag); HookConVarChange(g_enable, convars); HookConVarChange(g_iflag, convars); RegConsoleCmd("sm_nsb", BanMenu, "NSB ban system"); AutoExecConfig(true, "nsbsystem"); }
public convars(Handle:convar, const String:oldValue[], const String:newValue[]) { if (convar == g_log) { GetConVarString(g_iflag, strflag, sizeof(strflag)); iFlag = ReadFlagString(strflag); } }
public Action:BanMenu(client, args) { new Handle:main_menu = CreateMenu(main_handle); SetMenuTitle(main_menu, "NSB система\nАвтор: Darkeneez\nВерсия: Публичная[Lite]");
AddMenuItem(main_menu, "1", (i_enable == 1)?"Забанить игрока":"Забанить игрока(Включите защиту)", (i_enable == 1)? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
AddMenuItem(main_menu, "2", (i_enable == 0)?"Разбанить игрока":"Разбанить игрока(Выключите защиту)", (i_enable == 1)? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
AddMenuItem(main_menu, "3", (i_enable == 1)?"Отключить систему защиты":"Включить систему защиты" ,(IsVip(client, iFlag))? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
//IsVip(client, iFlag) - проверяет имеется ли у клиента определенный доступ, который указывается в конфиге SetMenuExitButton(main_menu, true); DisplayMenu(main_menu, client, 0); return Plugin_Handled; }
Сообщение отредактировал Darkeneez - Понедельник, 02.06.2014, 07:30:21 |
|
| |
BarD
|
Дата: Понедельник, 02.06.2014, 08:51:26 | Сообщение # 14 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Darkneez, у других твой плагин не скомпилируется, т.к. у тебя своя библиотека)
|
|
| |
Jon4ik
|
Дата: Понедельник, 02.06.2014, 09:39:34 | Сообщение # 15 |
|
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
BarD,Тоже не хочет открыватся
Мдя я дуб =(
|
|
| |
|