Что бы узнать конкретные права доступа игрока, можно воспользоваться сток функцией cmd_access
Инфо из amxmisc.inc:
stock cmd_access(id, level, cid, num, bool:accesssilent = false)
Синтаксис:
cmd_access ( id, level, cid, num,bool:accesssilent = false )
- id - Айди игрока
- level - Проверяемый уровень ( Admin Level Constants )
- cid - Индекс команды
- num - Сколько у команды аргументов
- bool:accesssilent = false - Выдавать лиигроку сообщение о недостаточных правах доступа или нет.
Тип функции:
Stock
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[amxmisc.inc] cmd_access"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("test_cmd","f_test_cmd",ADMIN_LEVEL_A,"[arg]")
register_clcmd("test_cmd_two","f_test_cmd_two",ADMIN_LEVEL_A,"[arg]")
}
public f_test_cmd(id,level,cid){
if (!cmd_access(id,level,cid,2,true))
{
console_print(id, "You level is low to this command")
return PLUGIN_HANDLED
}
console_print(id, "You secred code")
return PLUGIN_HANDLED
}
public f_test_cmd_two(id,level,cid){
if (!cmd_access(id,level,cid,2,false))
{
return PLUGIN_HANDLED
}
console_print(id, "You secred code two")
return PLUGIN_HANDLED
}
Описание:
В данном примере показано 2 варианта использования функции, с выводом стандартного сообщения о нехватке прав на команду и вывода своего сообщения об этом.
Сама по себе функция только лишь проверяет наличие прав с заданными правами для команды, по этому с начала необходимо задать права при регистрации команды:
register_clcmd("test_cmd","f_test_cmd",ADMIN_LEVEL_A,"[arg]")
Регистрируется команда и назначается флаг доступа ADMIN_LEVEL_A, и назначается функция которая будет вызвана при выполнении пользователем данной команды f_test_cmd.
В функции f_test_cmd принимаем айди игрока, уровень доступа, и айди команды.
Далее наконец то начинается работа функции cmd_access, вернее идет условие в котором все зависит от результата работы функции cmd_access. Ей мы предоставляем айди игрока, его уровень, количество аргументов команды и ставим true что бы не выводилось стандартное сообщение о нехватке прав.
Если количество аргументов буде меньше двух ( сама команда тоже является первым аргументом) то будет выдана ошибка и как пользоваться командой ( это дело так же пишется при регистрации команды)
Вот результаты:
Не достаточно прав (обратите внимание на сообщение, оно наше,а не стандартное):
] test_cmd
You level is low to this command
You level is low to this command
Не правильное количество аргументов
] test_cmd
Usage: test_cmd [arg]
Usage: test_cmd [arg]
И права и аргументы в порядке
] test_cmd 123
You secred code
You secred code
Так же не забывайте возвращать
return PLUGIN_HANDLED
Что бы в консоли не появлялось не приятное сообщение о неизвестной команде Unknown command.
Почему получается, что при команду нужно вводить на подобие "amx_sm 1", а при "amx_sm" мы получаем ошибку флагов?
Возможно, я неправильно регистрирую команду?
...
В данном примере при "amx_fuck 1" получаю всё как нужно.
При "amx_fuck" - нет. Подскажите, что не так?
UPD. Нужно было сделать num 1