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

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

  • Страница 1 из 1
  • 1
Категории в админку добавить.
_nS_ Дата: Суббота, 28.05.2016, 23:49:11 | Сообщение # 1
Сообщений: 18
Репутация: 0 [ +/- ]
Возможно я такой "зелёный" в SP или чего-то не понимаю.
Код
public OnAdminMenuReady(Handle aTopMenu)
{
    TopMenu topmenu = TopMenu.FromHandle(aTopMenu);

    /* Block us from being called twice */
    if (topmenu == hTopMenu)
    {
  return;
    }
    
    /* Save the Handle */
    hTopMenu = topmenu;
    
    /* Find the "Player Commands" category */
    TopMenuObject cmd_commands = hTopMenu.FindCategory("cmd_commands");

    if (cmd_commands == INVALID_TOPMENUOBJECT)
    {
  cmd_commands = AddToTopMenu(topmenu, "cmd_commands", TopMenuObject_Category, CategoryHandler, INVALID_TOPMENUOBJECT);
    }
    
    hTopMenu.AddItem("sm_warden_remove", AdminMenu_WardenRemove, cmd_commands, "sm_warden_remove", ADMFLAG_GENERIC);
    
}

public CategoryHandler(Handle:topmenu,  
                    TopMenuAction:action,
                    TopMenuObject:object_id,
                    param,
                    String:buffer[],
                    maxlength)
{
    if (action == TopMenuAction_DisplayTitle)
    {
  Format(buffer, maxlength, "Управление КМД");
    }
    else if (action == TopMenuAction_DisplayOption)
    {
  Format(buffer, maxlength, "Управление КМД");
    }
}

public AdminMenu_WardenRemove(Handle:topmenu,
       TopMenuAction:action,
       TopMenuObject:object_id,
       client,
       String:buffer[],
       maxlength)
{
    if (action == TopMenuAction_DisplayOption)
    {
  Format(buffer, maxlength, "Удалить КМД");
    }
    else if (action == TopMenuAction_SelectOption)
    {
  if(Warden == -1)
  {
   CPrintToChat(client, "\x07FF0000 [Инфо] \x01 ~ \x0700FF00 КМД \x07FFFFE0 и так нет, ты че?");
  }
  else
  {
   for(new i = 1; i <= MaxClients; ++i)
   {
    
    if (IsClientInGame(i) && !IsFakeClient(i) && i == Warden)
    {
     RemoveTheWarden(i);
     CPrintToChat(client, "КМД удален!");
     return;
    }
   }
  }
  hTopMenu.Display(client, TopMenuPosition_LastCategory);
    }
}

Как в этой категории добавить еще 1 функцию?Через какую строку можно добавить функцию и ее описание "не ломая" код.
Нужно чтобы было WardenSet или SetTheWarden не знаю точно.
Типо Добавить КМД,Кмд добавлен и т.д
 
TEIN Дата: Воскресенье, 29.05.2016, 08:37:46 | Сообщение # 2
Сообщений: 563
Репутация: 78 [ +/- ]
http://world-source.ru/forum/100-2667-1
http://world-source.ru/forum/100-2299-1
 
_nS_ Дата: Воскресенье, 29.05.2016, 21:49:33 | Сообщение # 3
Сообщений: 18
Репутация: 0 [ +/- ]
Цитата
http://world-source.ru/forum/100-2667-1

Читал уже,но всё равно не понял как просто добавить функцию в категорию =(
 
Jon4ik Дата: Понедельник, 30.05.2016, 18:58:35 | Сообщение # 4
Сообщений: 278
Репутация: 7 [ +/- ]
_nS_, Другие плагины с этой функцией посмотри. Я тоже мучился с этим, но потом дошло как делать надо.


Сообщение отредактировал Jon4ik - Понедельник, 30.05.2016, 18:59:03
 
_nS_ Дата: Понедельник, 30.05.2016, 19:57:50 | Сообщение # 5
Сообщений: 18
Репутация: 0 [ +/- ]
Код
public OnAdminMenuReady(Handle:topmenu)
{
    if (topmenu == hTopMenu)
    {
  return;
    }
    hTopMenu = topmenu;
    new TopMenuObject:server_commands = FindTopMenuCategory (hTopMenu, ADMINMENU_SERVERCOMMANDS);
    AddToTopMenu(hTopMenu, "BOTS", TopMenuObject_Item, Bots_Item, server_commands, "sm_bots", ADMFLAG_CONFIG);
}

public Bots_Item(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength)
{
    if (action == TopMenuAction_DisplayOption)
    {
  Format(buffer, maxlength, "%T", "BOTS" , param);
    }
    else if (action == TopMenuAction_SelectOption)
    {
  BotsMenu_show(param, 1);
    }
}

Взял к примеру BotsManager,вот категория ботов
Код
public OnAdminMenuReady(Handle aTopMenu)
{
    TopMenu topmenu = TopMenu.FromHandle(aTopMenu);

    /* Block us from being called twice */
    if (topmenu == hTopMenu)
    {
  return;
    }
    
    /* Save the Handle */
    hTopMenu = topmenu;
    
    /* Find the "Player Commands" category */
    TopMenuObject cmd_commands = hTopMenu.FindCategory("cmd_commands");

    if (cmd_commands == INVALID_TOPMENUOBJECT)
    {
  cmd_commands = AddToTopMenu(topmenu, "cmd_commands", TopMenuObject_Category, CategoryHandler, INVALID_TOPMENUOBJECT);
    }
    
    hTopMenu.AddItem("sm_warden_remove", AdminMenu_WardenRemove, cmd_commands, "sm_warden_remove", ADMFLAG_GENERIC);
    
}

public CategoryHandler(Handle:topmenu,  
                    TopMenuAction:action,
                    TopMenuObject:object_id,
                    param,
                    String:buffer[],
                    maxlength)
{
    if (action == TopMenuAction_DisplayTitle)
    {
  Format(buffer, maxlength, "Управление КМД");
    }
    else if (action == TopMenuAction_DisplayOption)
    {
  Format(buffer, maxlength, "Управление КМД");
    }
}

public AdminMenu_WardenRemove(Handle:topmenu,
       TopMenuAction:action,
       TopMenuObject:object_id,
       client,
       String:buffer[],
       maxlength)
{
    if (action == TopMenuAction_DisplayOption)
    {
  Format(buffer, maxlength, "Удалить КМД");
    }
    else if (action == TopMenuAction_SelectOption)
    {
  if(Warden == -1)
  {
   CPrintToChat(client, "\x07FF0000 [Инфо] \x01 ~ \x0700FF00 КМД \x07FFFFE0 и так нет, ты че?");
  }
  else
  {
   for(new i = 1; i <= MaxClients; ++i)
   {
    
    if (IsClientInGame(i) && !IsFakeClient(i) && i == Warden)
    {
     RemoveTheWarden(i);
     CPrintToChat(client, "КМД удален!");
     return;
    }
   }
  }
  hTopMenu.Display(client, TopMenuPosition_LastCategory);
    }
}

Вот мой плагин с категорией.
Как правильно просто добавить функцию в эту категорию хз =(
 
Jon4ik Дата: Вторник, 31.05.2016, 12:40:17 | Сообщение # 6
Сообщений: 278
Репутация: 7 [ +/- ]
_nS_, Бери плагины где по мимо категории создаются подкатегории.

Я бы объяснил как сделать, но из меня объяснятор не очень
 
  • Страница 1 из 1
  • 1
Поиск: