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

    Всего на сайте: 6
    Гостей: 4
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 22-08-2011, 19:53 Просмотров: 6728

    register_concmd Функция регистрирует консольную команду

    register_concmd - Функция регистрирует консольную команду. Команду можно выполнять как из консоли игрока так и из консоли сервера.
    Обычно используется для админских команд, хотя сейчас зачастую используют меню, для упрощения и скорости использования плагина/команд.

    Инфо из amxmodx.inc:
    /* Registers function which will be called from any console. 
    * Set FlagManager to 1 to make FlagManager always include this command
    * Set FlagManager to 0 to make FlagManager never include this command
    * Returns the command ID.
    */
    native register_concmd(const cmd[],const function[],flags=-1, const info[]="", FlagManager=-1);


    Синтаксис:
    register_concmd ( const cmd[],const function[],flags=-1, info[]="" )

    1. const cmd[] - имя команды, например amx_my_command ( пишется в кавычках, если это не массив)
    2. const function[] - имя функции, которую будет вызывать команда (пишется в кавычках)
    3. flags=-1 - Флаг доступа
    4. const info[]="" - Описание команды


    Флаги доступа:
    • ADMIN_RESERVATION
    • ADMIN_IMMUNITY
    • ADMIN_KICK
    • ADMIN_BAN
    • ADMIN_SLAY
    • ADMIN_MAP
    • ADMIN_CVAR
    • ADMIN_CFG
    • ADMIN_CHAT
    • ADMIN_VOTE
    • ADMIN_PASSWORD
    • ADMIN_RCON
    • ADMIN_LEVEL_A
    • ADMIN_LEVEL_B
    • ADMIN_LEVEL_C
    • ADMIN_LEVEL_D
    • ADMIN_LEVEL_E
    • ADMIN_LEVEL_F
    • ADMIN_LEVEL_G
    • ADMIN_LEVEL_H

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "Register console cmd"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


    public plugin_init ( )
    {
        register_plugin ( PLUGIN, VERSION, AUTHOR )
        
        register_concmd("my_admin_cmd","my_function_for_cmd",ADMIN_KICK," - My test command for admin")
        register_concmd("my_player_cmd","cmd_all_players",_," - My test command for player")
        
    }
    public my_function_for_cmd(id,level,cid){

        if (!cmd_access(id,level,cid,1))
            return PLUGIN_HANDLED
        
        client_print(id,print_chat,"[Register console cmd] Very good! It you first console admin command")
        
        return PLUGIN_CONTINUE
    }
    public cmd_all_players(id){
        
        client_print(id,print_chat,"[Register console cmd] Very good! It you first console player command")
        
    }


    Описание:
    Просто зарегистрировав команду, мы не получим визуальное и наглядное представление о том что мы сделали, по этому мы добавим сюда пару функций, но сначала мы зарегистрируем 2 команды:
    1. my_admin_cmd - Если вы обратили внимание, то заметили что в строке где мы регистрируем данную команду с помощью, нами рассматриваемой функции register_concmd, админский флаг доступа ADMIN_KICK, это значит что мы присваиваем данной команде ограничение использования для всех кроме админов с данным флагом.
    2. my_player_cmd - Команда доступная всем игрокам и админам в том числе.


    Админам с помощью стандартной функции из набора AmxModX Доступна команда amx_help, в которой появится наши команды и поисания к ним ( 4 параметр)

    Разберем первую функцию, которую вызывает наша команда для админов:
    Первое что бросается в глаза:
        if (!cmd_access(id,level,cid,1))
            return PLUGIN_HANDLED

    Это проверка на флаг доступа, если флаг доступа не совпадает, то выполнение функции прервется, и в консоле будет выдано сообщение о нехватке прав для данной команды, если же права есть - то будет выведено в чат текстовое сообщение. Подробнее о функции cmd_access я расскажу в другой статье.

    Что же касается второй функции, то там все просто, нет ни каких ограничений и любой выполнивший команду my_player_cmd, получит соответствующие сообщение в чат.

    К стати, если набрать в консоле сервера
    amxx cmds
    то будет выдан весь список команд, в том числе и наши две.
    Так же можно ввести
    amxx cmds plugin_name
    , так будет выданы команды только для плагина plugin_name
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    register_concmd Функция регистрирует консольную команду
    Doombringer

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

    Я немного не понял, чем отличается register_clcmd от register_concmd?
    LordNAO

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

    Doombringer, тем, что register_clcmd выполняется только на клиенте, а register_concmd - на клиенте и на сервере.
    Admin

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

    Не выполняется, а возможен вызов как с клиента так и из консоли сервера.

    Например команда которая вызывает функцию с меню, в консоли сервера это меню не отобразится и имеет смысл регистрировать команду через register_clcmd.

    А вот команду для бана игрока лучше сделать и там и там.
    Например админ сидит онлайн в аське и ему скинули инфу на читера, он не запуская клиента смотрит в консоль сервера и банит от туда, а те кто на сервере прямо с сервера.
    ( ну про тех у кого свои сервера, а не арендованные и доступа в консоль сервера нет)
    --------------------

    Информация

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

Реклама