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

Advanced Rules Menu 1.3

M

miracle

@miracle, по идее описание должно быть сразу под пунктом
Нет, нету. тести на css v 88, почему-то не хочет

сегодня на 34 еще попробую.
--- Добавлено позже ---
@miracle, по идее описание должно быть сразу под пунктом
Проверил на v34, точно такая же фигня. нету описания под пунктом.

пофиксить сможешь ?)
пока видимо идет только на CS:GO этот плагин.
--- Добавлено позже ---
@miracle, по идее описание должно быть сразу под пунктом
Проверил на v34, точно такая же фигня. нету описания под пунктом.

пофиксить сможешь ?)
пока видимо идет только на CS:GO этот плагин.
--- Добавлено позже ---
@R1KO,
@miracle, по идее описание должно быть сразу под пунктом
Проверил на v34, точно такая же фигня. нету описания под пунктом.

пофиксить сможешь ?)
пока видимо идет только на CS:GO этот плагин.
@miracle, по идее описание должно быть сразу под пунктом
Воовааааа
 
Последнее редактирование модератором:

Karmushka

Karma
Сообщения
199
Реакции
30
Переписал весь плагин. Изменил конфиг.
Теперь заглавие меню можно настроить в конфиге.
Меню не создается при каждом входе игрока, а только 1 раз при старте карты.
Кв не создается каждый раз при вызове меню и выборе пункта, а только 1 раз при старте карты.
Автоматически создается конфиг.

В плагине есть 2 квара:
sm_rules_show_connect "1" // Показывать ли меню автоматически при подключении игрока (1 - Показывать, 0 - Не покаывать).
sm_rules_show_admins "1" // Показывать ли меню админам (1 - Показывать, 0 - Не покаывать).

Пример конфига:
PHP:
"Rules"
{
    "Title" "Правила сервера" // Название меню
    "Не материться" // название пункта в меню
    {
        "Rule" "За мат - бан на сутки" // Описание пункта пр его выборе
    }
    "Не использовать читы"  // название пункта в меню
    {
        "Rule" "За читы - бан навсегда"  // Описание пункта пр его выборе
    }   
    "Слушать админов" // название пункта в меню
    {
        "Rule" "За неповиновение админам - к стенке!"  // Описание пункта при его выборе
    }          
}

Где угодно можно использовать перенос строки \n
Что не так сделал? не компилится!(

C-подобный:
#pragma semicolon 1
#include <sourcemod>
#include <adminmenu>

new bool:g_bShowConnect,
    bool:g_bShowAdmins,
    Handle:g_hMenu,
    Handle:g_hKv;

public Plugin:myinfo =
{
    name = "Rules",
    author = "R1KO",
    version = "1.2",
};

public OnPluginStart()
{
    LoadTranslations("common.phrases");

    RegConsoleCmd("sm_msc", RulesMenu_Func);
    RegAdminCmd("sm_showmsc", ShowRules, ADMFLAG_GENERIC);

    new Handle:hCvar;
    HookConVarChange((hCvar = CreateConVar("sm_rules_show_connect", "1", "Показывать ли меню автоматически при подключении игрока.")), OnShowConnectChange);
    g_bShowConnect = GetConVarBool(hCvar);
    HookConVarChange((hCvar = CreateConVar("sm_rules_show_admins", "1", "Показывать ли меню админам.")), OnShowAdminsChange);
    g_bShowAdmins = GetConVarBool(hCvar);
    CloseHandle(hCvar);
    AutoExecConfig(true, "Rules");
}

public OnShowConnectChange(Handle:hCvar, const String:oldValue[], const String:newValue[]) g_bShowConnect = GetConVarBool(hCvar);
public OnShowAdminsChange(Handle:hCvar, const String:oldValue[], const String:newValue[]) g_bShowAdmins = GetConVarBool(hCvar);

public OnMapStart()
{
    decl String:sBuffer[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "configs/comand.cfg");
    if(g_hKv != INVALID_HANDLE) CloseHandle(g_hKv);
    if(g_hMenu != INVALID_HANDLE) CloseHandle(g_hMenu);
    g_hKv = CreateKeyValues("Comand);
    if(FileToKeyValues(g_hKv, sBuffer))
    {
        g_hMenu = CreateMenu(RulesMenuHandler);
        SetMenuExitButton(g_hMenu, true);
        KvGetString(g_hKv, "Title", sBuffer, sizeof(sBuffer), "Команды сервера:");
        ReplaceString(sBuffer, sizeof(sBuffer), "\\n", "\n", true);
        SetMenuTitle(g_hMenu, sBuffer);
        if (KvGotoFirstSubKey(g_hKv))
        {
            do
            {
                if(KvGetSectionName(g_hKv, sBuffer, sizeof(sBuffer)))
                {
                    ReplaceString(sBuffer, sizeof(sBuffer), "\\n", "\n", true);
                    AddMenuItem(g_hMenu, sBuffer, sBuffer);
                }
            } while(KvGotoNextKey(g_hKv));
        }
    }
}

public OnClientPostAdminCheck(client)
{
    if (client > 0 && !IsFakeClient(client))
    {
        if(g_bShowConnect)
        {
            if(g_bShowAdmins || (!g_bShowAdmins && GetUserAdmin(client) == INVALID_ADMIN_ID)) DisplayMenu(g_hMenu, client, 0);
        }
    }
}

public Action:RulesMenu_Func(client, args)
{
    if (client > 0) DisplayMenu(g_hMenu, client, 0);
    return Plugin_Handled;
}

public Action:ShowRules(client, args)
{
    if(client > 0)
    {
        new Handle:PlayersMenu = CreateMenu(ShowRulesHandler);
        SetMenuTitle(PlayersMenu, "Отправить список команд игроку:");
        SetMenuExitButton(PlayersMenu, true);
        AddTargetsToMenu2(PlayersMenu, client, COMMAND_FILTER_NO_BOTS|COMMAND_FILTER_CONNECTED);
        DisplayMenu(PlayersMenu, client, 15);
    }
    return Plugin_Handled;
}

public RulesMenuHandler(Handle:menu, MenuAction:action, param1, param2)
{
    if (action == MenuAction_Select)
    {             
        decl String:sItem[PLATFORM_MAX_PATH];
        GetMenuItem(menu, param2, sItem, sizeof(sItem));     
       
        KvRewind(g_hKv);
        if(KvJumpToKey(g_hKv, sItem, false))
        {
            new Handle:hMenu = CreateMenu(ShowRuleHandler);
            SetMenuTitle(hMenu, sItem);
            SetMenuExitBackButton(hMenu, true);
            KvGetString(g_hKv, "Rule", sItem, sizeof(sItem));
            ReplaceString(sItem, sizeof(sItem), "\\n", "\n", true);
            AddMenuItem(hMenu, "", sItem, ITEMDRAW_DISABLED);
            DisplayMenu(hMenu, param1, 0);
        }
    }
}

public ShowRulesHandler(Handle:menu, MenuAction:action, param1, param2)
{
    if (action == MenuAction_Select)
    {
        decl String:UserId[64];
        GetMenuItem(menu, param2, UserId, sizeof(UserId));
        new target = GetClientOfUserId(StringToInt(UserId));
        if (target == 0) PrintToChat(param1, "[SM] %t", "Player no longer available");
        else DisplayMenu(g_hMenu, target, 0);
    } else if (action == MenuAction_End) CloseHandle(menu);   
}

public ShowRuleHandler(Handle:menu, MenuAction:action, param1, param2)
{
    if (action == MenuAction_End) CloseHandle(menu);
    else if (action == MenuAction_Cancel && param2 == MenuCancel_ExitBack && g_hMenu != INVALID_HANDLE) DisplayMenu(g_hMenu, param1, 0);
}
 

novichek

Участник
Сообщения
631
Реакции
21
Если на меню не нажимать кнопкy то оно само закрывается. Как сделать чтоб игрок мок закрыть его?
 

Temlik

Участник
Сообщения
668
Реакции
174
Если на меню не нажимать кнопкy то оно само закрывается. Как сделать чтоб игрок мок закрыть его?
Заменить 15 на 0
C-подобный:
DisplayMenu(PlayersMenu, client, 15);
DisplayMenuAtItem(RulesMenu, client, item, 15);
SendPanelToClient(DescriptionPanel, param1, HandlerBackToMenu, 15);
 

novichek

Участник
Сообщения
631
Реакции
21
Что то не полyчается скомпилировать ошибкy выдает. Можете помочь?
 

Saliba

Участник
Сообщения
63
Реакции
5
Ребят. Может кто помочь. Есть ли плагин наподобие этого, или же этот доработанный.
При заходе в меню высвечивается описание команды, к примеру вот так:
1. Смена карты
Нажимаешь на нее, далее идет описание команды:
1. Команда для смены карты !rtv
Когда на нее нажимаешь, то она автоматом пишется в чат либо в консоль?
К чему я это. У меня на сервере есть много интересных плагинов, админы хотели бы ими пользоваться. Но команды не всегда простые которые они могу запомнить. А так, было бы прекрасно имею такую менюшку которая упростила бы жизнь.
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Ребят. Может кто помочь. Есть ли плагин наподобие этого, или же этот доработанный.
При заходе в меню высвечивается описание команды, к примеру вот так:
1. Смена карты
Нажимаешь на нее, далее идет описание команды:
1. Команда для смены карты !rtv
Когда на нее нажимаешь, то она автоматом пишется в чат либо в консоль?
К чему я это. У меня на сервере есть много интересных плагинов, админы хотели бы ими пользоваться. Но команды не всегда простые которые они могу запомнить. А так, было бы прекрасно имею такую менюшку которая упростила бы жизнь.
 

Saliba

Участник
Сообщения
63
Реакции
5
Не совсем то, что я искал.
Ничего страшного.
Я уже в разработке своего плагина с менюшкой)
 
Последнее редактирование:
Сверху Снизу