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

Interactive Menu Builder v1.0-beta03

Skvin

Участник
Сообщения
323
Реакции
118
На сайте по какой-то причине перестало работать множество кнопок. Добавить действие даже не могу
 

Skvin

Участник
Сообщения
323
Реакции
118
Это мне ответ ? просто я говорю про это меню!!!
На самом сайте ничего не могу сделать ,кроме как пункт добавить
1598929506490.png
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
Да, ответ Вам.
Откройте консоль в браузере, и покажите, что там пишет.
 

Zeek

Участник
Сообщения
32
Реакции
5
А как можно сделать открытие ссылки , вот например я хочу чтобы по нажатию кнопки купить, переходило по ссылке, на мой вк

и было бы удобно реализовать выбор на какую кнопку забиндить команду
 
Последнее редактирование:

MyP3uk

Ничего не знающий
Сообщения
145
Реакции
30
ошибка при компиляции, как решить?
1611614142578.png
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335

MyP3uk

Ничего не знающий
Сообщения
145
Реакции
30
на 78 строке main.sp находится какой-то спец. символ, который не поддерживается сурсмодом. Нужно открыть исходник, найти 78 строку и убрать этот спец. символ.
этим символом был \. Спасибо
 

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
interactive menu builder:
#include <sourcemod>

public Plugin:myinfo =
{
    name        = "interactive menu builder",
    author      = "Reiko1231",
    description = "Интерактивное создание меню (alextheregent.github.io).",
    version     = "1.0.4.",
    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);
    SetMenuTitle(g_menu, "Команды сервера")
    AddMenuItem(g_menu, "1", "Пожаловаться на игрока")
    AddMenuItem(g_menu, "2", "Сбросить свой счет матча")
    AddMenuItem(g_menu, "3", "Посмотреть свою статистику")
    AddMenuItem(g_menu, "4", "Показать позицию статистики")
    AddMenuItem(g_menu, "5", "Голосовать за смену карты")
    AddMenuItem(g_menu, "6", "Настроить голосовую связь")
    AddMenuItem(g_menu, "7", "Открыть меню премиума")
    AddMenuItem(g_menu, "8", "Выбрать нож")
    AddMenuItem(g_menu, "9", "Выбрать перчатки")
    AddMenuItem(g_menu, "10", "Выбрать стикеры")
    AddMenuItem(g_menu, "11", "Выбрать скины на оружие")
    SetMenuExitBackButton(g_menu, true);
}


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, "!report");
            }
            else if (StrEqual(info, "2"))
            {
                FakeClientCommand(client, "!rs");
            }
            else if (StrEqual(info, "3"))
            {
                FakeClientCommand(client, "!rank");
            }
            else if (StrEqual(info, "4"))
            {
                FakeClientCommand(client, "!pos");
            }
            else if (StrEqual(info, "5"))
            {
                FakeClientCommand(client, "!rtv");
            }
            else if (StrEqual(info, "6"))
            {
                FakeClientCommand(client, "!voice");
            }
            else if (StrEqual(info, "7"))
            {
                FakeClientCommand(client, "!vip");
            }
            else if (StrEqual(info, "8"))
            {
                FakeClientCommand(client, "!knife");
            }
            else if (StrEqual(info, "9"))
            {
                FakeClientCommand(client, "!gloves");
            }
            else if (StrEqual(info, "10"))
            {
                FakeClientCommand(client, "!st");
            }
            else if (StrEqual(info, "11"))
            {
                FakeClientCommand(client, "!ws");
            }
        }
        case MenuAction_Cancel:
        {
            if (slot == MenuCancel_ExitBack)
            {
                DisplayMenuAtItem(g_menu, client, g_menu_position[client], MENU_TIME_FOREVER);
            }
        }
    }
}

  • mmsource-1.11.0-git1145-linux
  • sourcemod-1.10.0-git6510-linux
Меню вызывается, но ничего не происходит по нажатию элементов и меню просто закрывается, без ошибок.
При компилировании ругается на 13 строчку:
1629596345431.png
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
Варн тут не причём, а проблема в том, что команды нужно писать в консольном варианте (!report -> sm_report).
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Dreizehnt, а нафига тебе кнопка ExitBack, которая просто переоткрывает текущее меню?

Вот так было бы правильнее:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

Menu hMenu;

public Plugin myinfo =
{
    name    = "Help menu"
}

public void OnPluginStart()
{
    RegConsoleCmd("sm_menu", Cmd_Menu);

    hMenu = new Menu(Handler_Menu);
    hMenu.SetTitle("Команды сервера");
    hMenu.AddItem("", "Пожаловаться на игрока");
    hMenu.AddItem("", "Сбросить свой счет матча");
    hMenu.AddItem("", "Посмотреть свою статистику");
    hMenu.AddItem("", "Показать позицию статистики");
    hMenu.AddItem("", "Голосовать за смену карты");
    hMenu.AddItem("", "Настроить голосовую связь");
    hMenu.AddItem("", "Открыть меню премиума");
    hMenu.AddItem("", "Выбрать нож");
    hMenu.AddItem("", "Выбрать перчатки");
    hMenu.AddItem("", "Выбрать стикеры");
    hMenu.AddItem("", "Выбрать скины на оружие");
}

public Action Cmd_Menu(int client, int argc)
{
    if(client) hMenu.Display(client, MENU_TIME_FOREVER);
    return Plugin_Handled;
}

public int Handler_Menu(Menu menu, MenuAction action, int client, int slot)
{
    if(action == MenuAction_Select) switch(slot)
    {
        case  0:    FakeClientCommand(client, "say_team !report");
        case  1:    FakeClientCommand(client, "say_team !rs");
        case  2:    FakeClientCommand(client, "say_team !rank");
        case  3:    FakeClientCommand(client, "say_team !pos");
        case  4:    FakeClientCommand(client, "say_team !rtv");
        case  5:    FakeClientCommand(client, "say_team !voice");
        case  6:    FakeClientCommand(client, "say_team !vip");
        case  7:    FakeClientCommand(client, "say_team !knife");
        case  8:    FakeClientCommand(client, "say_team !gloves");
        case  9:    FakeClientCommand(client, "say_team !st");
        case 10:    FakeClientCommand(client, "say_team !ws");
    }
}

При компилировании ругается на 13 строчку
Ещё бы не ругалось: ты этой переменной не назначаешь никакого значения и оно всегда равно 0.

@Kruzya, кроме тех случаев, когда плагин не создаёт консольные команды, а слушает чат (ага, ахрененные плагины, команды которых можно забиндить только через bind x "say !команда").
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
interactive menu builder:
#include <sourcemod>

public Plugin:myinfo =
{
    name        = "interactive menu builder",
    author      = "Reiko1231",
    description = "Интерактивное создание меню (alextheregent.github.io).",
    version     = "1.0.4.",
    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);
    SetMenuTitle(g_menu, "Команды сервера")
    AddMenuItem(g_menu, "1", "Пожаловаться на игрока")
    AddMenuItem(g_menu, "2", "Сбросить свой счет матча")
    AddMenuItem(g_menu, "3", "Посмотреть свою статистику")
    AddMenuItem(g_menu, "4", "Показать позицию статистики")
    AddMenuItem(g_menu, "5", "Голосовать за смену карты")
    AddMenuItem(g_menu, "6", "Настроить голосовую связь")
    AddMenuItem(g_menu, "7", "Открыть меню премиума")
    AddMenuItem(g_menu, "8", "Выбрать нож")
    AddMenuItem(g_menu, "9", "Выбрать перчатки")
    AddMenuItem(g_menu, "10", "Выбрать стикеры")
    AddMenuItem(g_menu, "11", "Выбрать скины на оружие")
    SetMenuExitBackButton(g_menu, true);
}


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, "!report");
            }
            else if (StrEqual(info, "2"))
            {
                FakeClientCommand(client, "!rs");
            }
            else if (StrEqual(info, "3"))
            {
                FakeClientCommand(client, "!rank");
            }
            else if (StrEqual(info, "4"))
            {
                FakeClientCommand(client, "!pos");
            }
            else if (StrEqual(info, "5"))
            {
                FakeClientCommand(client, "!rtv");
            }
            else if (StrEqual(info, "6"))
            {
                FakeClientCommand(client, "!voice");
            }
            else if (StrEqual(info, "7"))
            {
                FakeClientCommand(client, "!vip");
            }
            else if (StrEqual(info, "8"))
            {
                FakeClientCommand(client, "!knife");
            }
            else if (StrEqual(info, "9"))
            {
                FakeClientCommand(client, "!gloves");
            }
            else if (StrEqual(info, "10"))
            {
                FakeClientCommand(client, "!st");
            }
            else if (StrEqual(info, "11"))
            {
                FakeClientCommand(client, "!ws");
            }
        }
        case MenuAction_Cancel:
        {
            if (slot == MenuCancel_ExitBack)
            {
                DisplayMenuAtItem(g_menu, client, g_menu_position[client], MENU_TIME_FOREVER);
            }
        }
    }
}

  • mmsource-1.11.0-git1145-linux
  • sourcemod-1.10.0-git6510-linux
Меню вызывается, но ничего не происходит по нажатию элементов и меню просто закрывается, без ошибок.
При компилировании ругается на 13 строчку:
Посмотреть вложение 82947
Либо FakeClientCommand(client, "say !report"); либо как написал крузя.
 

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
Да, я похоже забыл что нужно say !command, потому что изначально забирал исходники со старого сервера, там работало меню, а потом решил переделать и не дошло что не так... Спасибо, теперь надеюсь запомню :D

Заодно посмотрел методы:

Через переменные работает, не считая случаем указанных @Grey83, ([CS:GO] ResetScore):
1629662932828.png

И Help menu от @Grey83:
1629663202294.png
Сообщения автоматически склеены:

Ещё вопрос, как преобразовать меню, чтобы был перевод в файле?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
Ещё вопрос, как преобразовать меню, чтобы был перевод в файле?
В 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:
    {
        // к сожалению, с менюшками нельзя вот так просто взять и вбить имя фразы в SetTitle(), потому что мы его затираем здесь.
        (view_as<Menu>(slot)).SetTitle("%T", "имя фразы", client);
    }

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

Морковка

Котлетка ^^
Сообщения
878
Реакции
472
кажется, невнимательно смотрел но не смог в топике найти ответ по этим ошибкам

//// menu.sp
//
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(20) : warning 203: symbol is never used: "g_shown"
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(17) : warning 203: symbol is never used: "g_menu_allcommand_position"
// Code size: 12520 bytes
// Data size: 5868 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 34772 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
подскажите пожалуйста
SourceMod Version: 1.11.0.6675
 

Young <

Now, finally free
Сообщения
1,263
Реакции
505
кажется, невнимательно смотрел но не смог в топике найти ответ по этим ошибкам

//// menu.sp
//
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(20) : warning 203: symbol is never used: "g_shown"
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(17) : warning 203: symbol is never used: "g_menu_allcommand_position"
// Code size: 12520 bytes
// Data size: 5868 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 34772 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
подскажите пожалуйста
SourceMod Version: 1.11.0.6675
Это не ошибки, а варны. Переменные не заюзаны в коде просто, и СМ сообщает что они бесполезные.
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
кажется, невнимательно смотрел но не смог в топике найти ответ по этим ошибкам

//// menu.sp
//
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(20) : warning 203: symbol is never used: "g_shown"
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(17) : warning 203: symbol is never used: "g_menu_allcommand_position"
// Code size: 12520 bytes
// Data size: 5868 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 34772 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
подскажите пожалуйста
SourceMod Version: 1.11.0.6675
Плагин будет работать, несмотря на эти предупреждения. Причину этих предупреждений озвучили выше, а исправлять я в своё время их не стал, т.к. это потребовало бы написания доп. алгоритма, который дал бы практически нулевой выигрыш. Если вам хочется, чтобы плагин компилировался без предупреждений, вы можете удалить строки, на которые вам указывает компилятор - 17 и 20 (удаляйте снизу вверх, т.к. если вы сначала удалите 17 строку, то 20 станет 19, и при удалении текущей 20 строки вы на самом деле удалите 21 (по старой нумерации)).
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
Пост выше поправил. Видеоверсия для тех, кому за 60 и думать влом.
 
Сверху Снизу