Rust news
SOCIAL:
В категориях: Oxid, Плагины

Плагин Zones Manager

Плагин Zones Manager — это продвинутый менеджер для создания зон в игре. Плагин позволяет создавать настраиваемые зоны, например: запрет на строительство, запрет на PVP/PVE, защита дома от разрушений и т.д. Этот плагин отлично подойдет для создания «общественных» зон.


Настройка и установка


Доступные команды

/zone_add => Добавить зону
/zone_edit [XXXX] => Редактировать зону
/zone option1 value1 option2 value2 option3 value3 etc => настроить зону, как вам нужно.
/zone_list => Получить список всех существующих зон
/zone_remove XXXX => удалить указанную зону
/zone_reset => сброс всех зон
/zone_player [playerName] => показать зоны и флаги игрока
/zone_stats => показать счётчики известных сущностей


Опции

autolights true/false => включить или выключить авто-освещение в зависимости от времени суток (устанавливается в конфигах)
eject true/false => всех игроков будет выбрасывать из зоны при попытке войти в неё (1)
enter_message «XXXXX»/false => настроить сообщение, которое отправляется игрокам при входе в зону
leave_message «XXXXXX»/false => настроить сообщение, которое отправляется игрокам при выходе из зоны
location here/»x y z» => изменить локацию зоны
pvpgod true/false => включает «режим бога» при игре PVP у всех игроков в этой зоне
pvegod true/false => включает «режим бога» при игре PVE у всех игроков в этой зоне
sleepgod true/false => включает «режим бога» у всех спящих игроков в этой зоне
undestr true/false => в этой зоне будет невозможно разрушить никакие здания
name XXX => установить название зоны
radius XXX => установить радиус зоны (по умолчанию 20)
nochat true/false => запретить игрокам общаться в этой зоне
nobleed true/false => отключить получение игроками урона от потери крови
nobuild true/false => в этой зоне нельзя будет строить здания (2)
noboxloot true/false => запретить игрокам получать лут из ящиков
nodecay true/false => отключить процесс гниения для всех зданий и развёртываемых объектов в этой области
nodeploy true/false => запрет установки развёртываемых объектов (3)
nocorpse true/false => удалять трупы игроков, если они погибают в этой зоне
nogather true/false => запретить сбор ресурсов в этой зоне
notp true/false => будет невозможно использовать команды телепортации, чтобы выбраться из этой зоны (m-Teleportation)
nokits true/false => в этой зоне нельзя будет делать запросы к каким-либо наборам (плагин Kits)
noplayerloot true/false => запретить игрокам грабить других игроков, как активных, так и спящих
nopve true/false => животные становятся неуязвимыми
noremove true/false => запретить игрокам использовать здесь инструмент для удаления. По умолчанию установлено значение true.
nosuicide true/false => запретить писать в консоли «kill», чтобы совершить самоубийство
nowounded true/false => если игрок должен умереть, он умирает без перехода в состояние раненного
npcfreeze true/false => заморозить NPC (животные не смогут передвигаться в этой зоне)
killsleepers true/false => все игроки будут убиты в момент перехода в состояние спящего
radiation XX/false => добавить в зону радиацию
nodrown true/false => отключить возможность утонуть
nostability true/false => отключить стабильность
noupgrade true/false => будет невозможно совершенствовать здания
ejectsleepers true/false => спящие игроки будут удаляться из зоны
nopickup true/false => блокировать возможность поднимать предметы
nocollect true/false => блокировать возможность собирать ресурсы
nodrop true/false => удалять брошенные предметы

(0): Команды доступны для второго уровня и для разрешения Oxide: «zone»
(1): Игроки второго уровня и игроки из белого списка не будут выброшены (это можно изменить только с помощью внешних плагинов, поэтому и этот плагин теперь может с легкостью работать с другими внешними плагинами)
(2): смогут строить игроки второго уровня и игроки с разрешением Oxide: «canbuild»
(3): смогут устанавливать развёртываемые конструкции только игроки второго уровня и игроки со следующим разрешением Oxide: «candeploy»


Привилегии

Система разрешений Oxide работает во многом аналогично традиционному плагину Flags.
В ней также можно создавать группы, добавлять разрешения для этой группы и включать в неё пользователей, чтобы разрешения группы распространялись на каждого включенного пользователя.

Вы можете дать пользователю разрешение командой:
oxide.grant user <username> <permission>
Чтобы создать группу:
oxide.group add <groupname>
Чтобы присвоить группе разрешение:
oxide.grant group <groupname> <permission>
Чтобы добавить в группу пользователя:
oxide.usergroup add <username> <groupname>
Чтобы удалить разрешение для пользователя:
oxide.revoke <userid/username> <group> <permission>


Пример для Admin House:
/zone_add
/zone nobuild true nodeploy true name «Admin House» undestr true

Конфиг:

{
"AutoLights": {
"Lights Off Time": "8.0",
"Lights On Time": "18.0"
}
}

Для разработчиков

Методы-перехватчики системных функций:

void OnEnterZone(string ZoneID, BasePlayer player)

Вызывается, когда игрок входит в зону
отменить нельзя

void OnExitZone(string ZoneID, BasePlayer player)

Вызывается, когда игрок входит в зону
отменить нельзя

Внешние вызовы на этот плагин:


bool CreateOrUpdateZone(string ZoneID, string[] args, Vector3 position = default(Vector3))

Создать или обновить зону из внешнего плагина
Аргумент 1: Zone ID для зоны, которая вам нужна (можно использовать её название)
Аргумент 2: аргумент, который вы хотите добавить в /zone, например:
args[0] = «name»
args[1] = «Jail»
args[2] = «eject»
args[3] = «true»
args[4] = «enter_message»
args[5] = «Welcome to the jail»
args[6] = «radius»
args[7] = «120»
Аргумент 3 (опционально): позволяет установить или изменить местоположение зоны

Плагин возвращает значение TRUE, если зона является действующей,
и FALSE если она была сохранена, но НЕ создана (единственной причиной может быть отсутствие установленной позиции для этой зоны)

bool EraseZone(string ZoneID)

Удалить зону с заданным ZoneID (может использоваться название)
возвращает TRUE, если зона удалена
возвращает FALSE, если зона была удалена ранее

List<BasePlayer> GetPlayersInZone(string ZoneID)

Получить список игроков в данной зоне

bool isPlayerInZone(string ZoneID, BasePlayer player)

возвращает значение TRUE, если игрок находится в зоне
возвращает значение FALSE, если игрок не находится в зоне

bool AddPlayerToZoneWhitelist(string ZoneID, BasePlayer player)

Требования: EJECT TRUE
позволяет указанному игроку войти в зону
возвращает TRUE, если всё идёт нормально
возвращает FALSE, если зона не существует

bool RemovePlayerFromZoneWhitelist(string ZoneID, BasePlayer player)

Требования: EJECT TRUE
Доступ в зону будет отменён (игроку должен выйти до того, как будет выброшен)
возвращает TRUE, если всё идёт нормально
возвращает FALSE, если зона не существует

bool AddPlayerToZoneKeepinlist(string ZoneID, BasePlayer player)

Игрок будет заперт внутри зоны, и не сможет из неё выйти
возвращает TRUE, если всё идёт нормально
возвращает FALSE, если зона не существует
(эта команда НЕ телепортирует игрока в зону, поэтому вам нужно сначала поместить игрока в неё, а если у вас установлено eject TRUE, позаботьтесь о том, чтобы у игрока был допуск в зону или может произойти что-то забавное)

bool RemovePlayerFromZoneKeepinlist(string ZoneID, BasePlayer player)

Позволит запертому игроку покинуть зону
возвращает TRUE, если всё идёт нормально
возвращает FALSE, если зона не существует
(не телепортирует игрока из зоны, а просто позволяет ему выйти)