Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 3
    Гостей: 1
    Пользователи: - отсутствуют
    Роботы: crawl Bot, robot Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Safety1st Дата: 6-08-2014, 18:55 Просмотров: 4228
    скрытие меню у игроков
    Чтобы убрать меню с экрана игрока, ему нужно отправить новое меню, но без клавиш для выбора. Какой текст - не важно, разумнее использовать пустышку. Ну и минимальное время показа - 1 секунда.

    Скрыть меню у определённого игрока:
    show_menu( id, 0, "^n", 1 )
    Скрыть меню у всех игроков:
    show_menu( 0, 0, "^n", 1 )

    Таким же способом скрываются и 'новые' меню (см. newmenus.inc ): они всего лишь обёртка на т.н. 'старыми': на самом деле в игре меню одно и то же. Важно не забыть предварительно 'нажать' кнопку Выход за игрока с помощью:
    menu_cancel(id)


    длинные строки в меню
    Максимальный размер текста меню - 512 символов. Но размер пунктов меню не лимитируется: они могут быть произвольного размера. Ограничивается только длина текста, не содержащего служебные тэги \d, \r, \w, \y и \R - 80 символов. Поэтому если нужен длинный пункт - просто дополните текст тэгами в нужных местах. На экране помещаются 90 символов при разрешении 800x600 и 115 - при 1024x768. Пример ниже.

    трансляция команд в клавиши
    Это встроенная возможность игры. В тексте меню указывается команда, а при показе меню она автоматически заменяется на кнопку, на которую назначена у игрока. Работает такая возможность только для 'плюсовых' команд: +attack, +use, +hook и т.д., но для любых из них.

    Пример на последние 2 случая:


    Фишки меню

    Чтобы меню выглядело как на скриншоте, необходимо предварительно забиндить клавишу:
    bind "?" "+test"
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Фишки меню
    gavrilyuc

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +


    Скрыть меню у определённого игрока:
    show_menu( id, 0, "^n", 1 )

    Скрыть меню у всех игроков:
    show_menu( 0, 0, "^n", 1 )



    Ага, и когда мы вызовем функцию : player_menu_info
    То он покажет что у мы видим меню.
    Это Костыль.

    Для закрытие меню есть :
    menu_cancel
    menu_destroy

    Для понятие что у тебя открыто меню :
    player_menu_info

    Так что это не фишка, а как я уже говорил Костыль.
    С Костылями будь осторожен, а то начнут пинаться.
    Safety1st

    5.08.2014
    ICQ: --
    Публикаций: 8
    Комментариев: 42
    Репутация: -  9  +

    gavrilyuc, menu_cancel() в случае 'новых' меню упомянуто, menu_destroy() к скрытию меню на клиенте не относится.

    menu_cancel() в случае 'старых' меню использовать нельзя:
    int menu = player->newmenu;
    if (menu < 0 || menu >= (int)g_NewMenus.size() || !g_NewMenus[menu])
        return 0;


    Цитата: gavrilyuc
    Это Костыль.

    Неверно:
    int CHudMenu :: MsgFunc_ShowMenu( const char *pszName, int iSize, void *pbuf )
    {
        // ...
        m_bitsValidSlots = READ_SHORT();
        // ...

        if ( m_bitsValidSlots )
        {
            // ...
        }
        else
        {
            m_fMenuDisplayed = 0; // no valid slots means that the menu should be turned off
            m_iFlags &= ~HUD_ACTIVE;
        }

        // ...
    }

    В клиенте предусмотрена отправка меню без кнопок. Он его скрывает. Это не костыль.

    Цитата: gavrilyuc
    Ага, и когда мы вызовем функцию : player_menu_info
    То он покажет что у мы видим меню.

    Снова неверно. Можно использовать такой тестовый плагин.
    player_menu_info() 'не показывает' наличия меню.

    Цитата: gavrilyuc
    С Костылями будь осторожен, а то начнут пинаться.

    К счастью, всегда найдутся умники, чтобы в формате насмешки наставить на путь истинный wink
    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    show_menu( id, 0, "^n", 1 )


    Через секунду его уже не будет ))
    Valer4

    20.07.2012
    ICQ: 616504260
    Публикаций: 4
    Комментариев: 70
    Репутация: -  3  +

    Дополню, так можно отключить выход:
    Keys &= ~MENU_KEY_0
    Keys &= ~MENU_KEY_0 это 0<<0
    Keys |= MENU_KEY это 1<<0

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама