Реализация пермишина в WorldGuard

NeverBoss

Пользователь
Сообщения
65
Как сделать чтобы при входе игрока в регион ему выдался особый пермишен, а при выходе забирлася он. К примеру плагин ConditionalEvents
 
Вход:
YAML:
enter:
  type: wgevents_region_enter
  conditions:
  - '%region% == название'
  actions:
    default:
    - "console_command: lp user %player_name% permission set нужное.право"
Выход
YAML:
leave:
  type: wgevents_region_leave
  conditions:
  - '%region% == название'
  actions:
    default:
    - "console_command: lp user %player_name% permission unset нужное.право"
Для работы нужен

Так же желательно сделать проверку на мир, что бы игроки не абузили этого
"%player_world% == мир" - разрешить только в одном мире
"%player_world% != мир" - разрешить только в этом мире

offtop и научитесь делать все сами и хотя бы читать документацию плагинов
 
Последнее редактирование:
Как сделать чтобы при входе игрока в регион ему выдался особый пермишен, а при выходе забирлася он. К примеру плагин ConditionalEvents
offtop
Держу в курсе, это прям очень не безопасно
Я практически уверен, что надуться эксплойты, к-рые позволят оказаться за пределами региона, сохранив нужное право
Это лишь вопрос времени
 
offtop
Держу в курсе, это прям очень не безопасно
Я практически уверен, что надуться эксплойты, к-рые позволят оказаться за пределами региона, сохранив нужное право
Это лишь вопрос времени
offtop Вот обход. Пингуешь/отключаешь жёстко интернет или включаешь чит blink (или тому подобных), выходишь из региона, врубаешь инет и в эту же наносекунду выходишь из игры. После перезагрузки сервера права останутся :)
 
Я бы сделал это через проверку repetitive (проверка каждые n тиков), и поместил бы это в один ивент, а не два разных
YAML:
permission_in_region:
  type: repetitive
  repetitive_time: 5 #каждые сколько тиков будет проверяться
  conditions:
  - '%worldguard_region_name% == <название_региона> execute in_region'
  - '%worldguard_region_name% != <название_региона> execute no_in_region'
  actions:
    default:
    - "cancel_event: true"
    in_region:
    - "console_command: lp user %player_name% permission set нужное.право"
    no_in_region:
    - "console_command: lp user %player_name% permission unset нужное.право"
У такого способа и обхода нет, в любом случае право заберётся
 
Я бы сделал это через проверку repetitive (проверка каждые n тиков), и поместил бы это в один ивент, а не два разных
YAML:
permission_in_region:
  type: repetitive
  repetitive_time: 5 #каждые сколько тиков будет проверяться
  conditions:
  - '%worldguard_region_name% == <название_региона> execute in_region'
  - '%worldguard_region_name% != <название_региона> execute no_in_region'
  actions:
    default:
    - "cancel_event: false"
    in_region:
    - "console_command: lp user %player_name% permission set нужное.право"
    no_in_region:
    - "console_command: lp user %player_name% permission unset нужное.право"
У такого способа и обхода нет, в любом случае право заберётся
Сильно большая нагрузка как на каждые 5 тиков, да и каждые 5 тиков тогда будет спамить правом, а так хот ли 2 ивента, но нагрузки в разы меньше, ведь слушается вход и выход, а не регион игрока каждые 5 тиков
 
Сильно большая нагрузка как на каждые 5 тиков, да и каждые 5 тиков тогда будет спамить правом, а так хот ли 2 ивента, но нагрузки в разы меньше, ведь слушается вход и выход, а не регион игрока каждые 5 тиков
ну можно дополнить проверкой на наличие права, тогда отменять ивент
Объединено

Ещё раз повторюсь: зато у такого способа и обхода нет, в любом случае право заберётся
 
Это не будет так сильно нагружать
Не будет нагружать? 4 раза в секунду обрабатывать каждого игрока которых может быть под 100 человек это не будет нагружать? А через вход и выход оно будет обрабатывать только входы в регионы и выходы из него
 
Не будет нагружать? 4 раза в секунду обрабатывать каждого игрока которых может быть под 100 человек это не будет нагружать? А через вход и выход оно будет обрабатывать только входы в регионы и выходы из него
Я бы сделал это через проверку repetitive (проверка каждые n тиков), и поместил бы это в один ивент, а не два разных
YAML:
permission_in_region:
  type: repetitive
  repetitive_time: 5 #каждые сколько тиков будет проверяться
  conditions:
  - '%worldguard_region_name% == <название_региона> execute in_region'
  - '%worldguard_region_name% != <название_региона> execute no_in_region'
  actions:
    default:
    - "cancel_event: true"
    in_region:
    - "console_command: lp user %player_name% permission set нужное.право"
    no_in_region:
    - "console_command: lp user %player_name% permission unset нужное.право"
У такого способа и обхода нет, в любом случае право заберётся
Осталось бы спам убрать в консольке
 
Назад
Сверху Снизу