Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Пункты меню по разным флагам
Пункты меню по разным флагам
«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 pipec
 
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,Тоже не хочет открыватся

Мдя я дуб =(
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Пункты меню по разным флагам
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: