Иконка ресурса

Interactive Menu Builder v1.0-beta03

Mr_panica

XenForo one 💖
Сообщения
921
Реакции
436
1.10.0.6529 - на сервере
Компилелся на последней 1.12 - build 6920
Ничего не смущает?
В sm 1.11 добавили много чего, некоторое не поддерживается в sm 1.10, а тут ещё и 1.12
Компилируйте на той же версии, что на сервере.
 

Xyebol

Участник
Сообщения
12
Реакции
1
Что надо прописать чтоб в поле информации был ник игрока? тобишь Приветствуем тебя (ник) на сервере!
 

mrdiega

Участник
Сообщения
328
Реакции
47
@Reiko1231
небольшое пожелание:
сделать так, чтобы меню само открывалось только для новых игроков, которые впервые подключились на сервер
Скриншот 23-04-2023 021323.png
 

FuckYeah

Челик
Сообщения
474
Реакции
57
Как сделать чтобы вводилось в консоль cl_minmodels 1 ?
1683745033331.png

Я сделал так, но в консоли пишет

Unknown command: cl_minmodels
Хотя если ввести вручную то команда работает
 

олег2002

Участник
Сообщения
2
Реакции
0
Ладно. Напишу информативнее. Я сделал меню на сайте, могу даже предоставить исходник, который скачал. Скопмилировал его при помощи sourcemod 1.10. И залил smx в папку plugins, а sp в папку scripting. В sm plugin list он отображается, но при вводе в чат !menu или в консоль sm_menu тишина. Ошибок не увидел, в логах тоже. Достаточно информативно?
а куда ево кидать?
 

Vyacheslav

Участник
Сообщения
164
Реакции
24
А при заходе новых игроков меню само не отображается?
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
А при заходе новых игроков меню само не отображается?
Нет по идее чтоб сделать для новых игроков, надо подключать базу данных, которая будет проверять 1 ли раз зашел игрок. А это просто меню
 

максимка27

Участник
Сообщения
513
Реакции
213
В OnPluginStart():
C++:
LoadTranslations("my_menu.phrases");
На диске создаём файл переводов под именем my_menu.phrases.txt, заполняем основу по аналогии с другими файлами, делая свои фразы. Далее в плагине - зависит от того, где вкручиваем перевод. Но вообще вариант такой.

Если самый простой:
  1. В AddMenuItem - заменяем тексты на имена фраз.
  2. new Menu(Handler_Menu); --> new Menu(Handler_Menu, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
  3. Во всех обработчиках (хандлерах) находим:
    C++:
    case MenuAction_Select:
    Вставляем перед:
    C++:
    case MenuAction_DisplayItem:
    {
        char szItemInfo[4], szItemText[128];
        (view_as<Menu>(menu)).GetItem(slot, szItemInfo, sizeof(szItemInfo), _, szItemText, sizeof(szItemText));
    
        Format(szItemText, sizeof(szItemText), "%T", szItemText, client);
        return RedrawMenuItem(szItemText);
    }
    
    case MenuAction_Display:
    {
    [*][QUOTE="Kruzya, post: 540292, member: 72654"]
    В [ICODE]OnPluginStart()[/ICODE]:
    [CODE=cpp]LoadTranslations("my_menu.phrases");
    На диске создаём файл переводов под именем my_menu.phrases.txt, заполняем основу по аналогии с другими файлами, делая свои фразы. Далее в плагине - зависит от того, где вкручиваем перевод. Но вообще вариант такой.

    Если самый простой:
    1. В AddMenuItem - заменяем тексты на имена фраз.
    2. new Menu(Handler_Menu); --> new Menu(Handler_Menu, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
    3. Во всех обработчиках (хандлерах) находим:
      C++:
      case MenuAction_Select:
      Вставляем перед:
      C++:
      case MenuAction_DisplayItem:
      {
          char szItemInfo[4], szItemText[128];
          (view_as<Menu>(menu)).GetItem(slot, szItemInfo, sizeof(szItemInfo), _, szItemText, sizeof(szItemText));
      
          Format(szItemText, sizeof(szItemText), "%T", szItemText, client);
          return RedrawMenuItem(szItemText);
      }
      
      case MenuAction_Display:
      {
          // к сожалению, с менюшками нельзя вот так просто взять и вбить имя фразы в SetTitle(), потому что мы его затираем здесь.
          (view_as<Menu>(slot)).SetTitle("%T", "имя фразы", client);
      }

    Не тестил, но что-то такое должно проканать

Не высвечивается заголовок меню. Есть способ вывести заголовок с возможностью перевода?

GUI_interactive_menu_builder.sp:
#include <sourcemod>

public Plugin:myinfo =
{
    name        = "[GUI] interactive menu builder",
    author      = "Reiko1231 + hlmod.ru + Kruzya",
    description = "Интерактивное создание меню (alextheregent.github.io).",
    version     = "1.0.5.",
    url         = "https://hlmod.ru/resources/interactive-menu-builder.1155/"
}

new Handle: g_menu;
new g_menu_position[MAXPLAYERS + 1];

public OnPluginStart()
{
    RegConsoleCmd("sm_menu", Command_OpenMenu_menu);

    g_menu = CreateMenu(Handler_menu, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
    AddMenuItem(g_menu, "1", "menu - Report player")
    SetMenuExitBackButton(g_menu, true);
   
    LoadTranslations("my_menu.phrases");
}


public Action:Command_OpenMenu_menu(client, argc)
{
    DisplayMenu(g_menu, client, MENU_TIME_FOREVER);
    return Plugin_Handled;
}

public Handler_menu(Handle:menu, MenuAction:action, client, slot)
{
    switch (action)
    {
        case MenuAction_Select:
        {
            decl String:info[64];
            GetMenuItem(menu, slot, info, sizeof(info));
           
            if (StrEqual(info, "1"))
            {
                FakeClientCommand(client, "say !report");
            }
        }
        case MenuAction_Cancel:
        {
            if (slot == MenuCancel_ExitBack)
            {
                DisplayMenuAtItem(g_menu, client, g_menu_position[client], MENU_TIME_FOREVER);
            }
        }
        case MenuAction_DisplayItem:
        {
            char szItemInfo[4], szItemText[128];
            (view_as<Menu>(menu)).GetItem(slot, szItemInfo, sizeof(szItemInfo), _, szItemText, sizeof(szItemText));

            Format(szItemText, sizeof(szItemText), "%T", szItemText, client);
            return RedrawMenuItem(szItemText);
        }

        case MenuAction_Display:
        {
            // к сожалению, с менюшками нельзя вот так просто взять и вбить имя фразы в SetTitle(), потому что мы его затираем здесь.
            (view_as<Menu>(slot)).SetTitle("%T", "menu_title", client);
        }
    }
}

my_menu.phrases.txt:
"Phrases"
{
    "menu_title"
    {
        "en"        "Server commands"
        "ru"        "Команды сервера"
    }

    "menu - Report player"
    {
        "en"        "Report player"
        "ru"        "Пожаловаться на игрока"
    }
}
 
Последнее редактирование:
Сверху Снизу