у меня есть конфигурация команды MyCommand и она работает когда команда приписывается от лица игрока - пермишен проверяется. Но когда команда прописывается через консоль к примеру "ddd rtopik" - если даже у игрока нет пермишена, то он будет отображать сообщение - '$text$ &a$arg1$ имеет разрешение sub!', НО как мне сделать так чтобы когда команда /ddd player вводится через консоль, то была проверка на пермишен и если нет у игрока пермишена то отображалось сообщение - '$text$ &c$arg1$ не имеет разрешения sub.'
Вот конфигурация
ddd:
command: /ddd
type: RUN_CONSOLE
runcmd:
- '$Script$%if%$HasPermission==sub'
- '$text$ &a$arg1$ имеет разрешение sub!'
- '$Script$%else%'
- '$text$ &c$arg1$ не имеет разрешения sub.'
permission-required: false
Если я правильно понял (ибо сам делаю примерно такое же), то это можно реализовать сделав "Команду посредника" и использовать дополнительно Essentials (или EssentialsX, или любой другой плагин, который может заставить другого игрока написать команду)
Однако, спешу сразу разочаровать, такое работает ТОЛЬКО если игрок, у которого проверяют право - на сервере. Как сделать, чтобы проверялось даже тогда, когда игрок оффлайн, я не знаю.
Покажу, как сделал я у себя:
Основная команда (её вводит тот, кто проверяет наличие права у другого игрока)
Код:
obr-player:
command: /obrplayer
type: RUN_COMMAND
runcmd:
- '$RUN_CONSOLE$sudo $arg1 obr2 $player'
permission-required: true
permission-node: obr.player
Команда посредник, которую уже исполняет игрок, у которого проверяют наличие права
Код:
obr2:
command: /obr2
type: RUN_COMMAND
runcmd:
- '$Script$%if%$HasPermission==obr.bigger'
- '$RUN_CONSOLE$msg $arg1 У игрока Высшее образование'
- '$Script$%if%$HasPermission==obr.medium'
- '$RUN_CONSOLE$msg $arg1 У игрока Среднее образование'
- '$Script$%else%'
- '$RUN_CONSOLE$msg $arg1 У игрока Нет образования'
permission-required: false
Кратко поясню, что тут происходит.
В основной команде, используется лишь 1 скрипт, он заставляет другого игрока воспроизвести команду посредник.
В команде посредник, у меня несколько скриптов.
Первый, проверяет наличие права obr.bigger (У меня это Высшее образование), если оно есть, тогда исполняется 2-й скрипт ниже,
Консоль отправляет личное сообщение первому игроку, который собственно написал основную команду. (либо можно настроить также BROADCAST, TELL, TELLRAW, TITLE да по сути че угодно, на что фантазии хватит, главное чтобы сервер знал кому это отправить)
Если высшего образования нет, эти 2 строчки пропускаются, на третьей и четвертой абсолютно такой же скрипт, но уже с Средним образованием.
Если же, у игрока вообще нет никаких прав, то используются последние, 5 и 6 строчки, которые отправляют исполнителю основной команды сообщение о том, что у игрока нет образования (то-есть нет ни права obr.bigger, ни obr.medium)
(Примечание: У меня это исправно работает, MyCommand 5.7.4, версия PaperMC 1.12.2, но важно понимать, что это не идеальный вариант и как по мне с достаточными костылями, думаю его можно (и даже стоит) доработать в лучшую сторону)
Обновлено: Решил допом показать как это работает в игре.
You must be registered for see medias