Обычно используется для админских команд, хотя сейчас зачастую используют меню, для упрощения и скорости использования плагина/команд.
Инфо из 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[]="" )
- const cmd[] - имя команды, например amx_my_command ( пишется в кавычках, если это не массив)
- const function[] - имя функции, которую будет вызывать команда (пишется в кавычках)
- flags=-1 - Флаг доступа
- 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 команды:
- my_admin_cmd - Если вы обратили внимание, то заметили что в строке где мы регистрируем данную команду с помощью, нами рассматриваемой функции register_concmd, админский флаг доступа ADMIN_KICK, это значит что мы присваиваем данной команде ограничение использования для всех кроме админов с данным флагом.
- 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