- Языки
- Английский
О NextGenPVE
Выборочно предотвращает повреждение игроков и объектов в среде PVE.
Использует ZoneManager, Друзья, Кланы, RustIO, GUIОбъявления
Работает с DynamicPVP, HumanNPC (с remod.org), ZombieHorde, SAM Targeting, BotSpawn и др.
Не позволяйте документации беспокоить вас. В большинстве случаев все, что вам нужно сделать, это установить плагин. Остальное необязательно.
ПРИМЕЧАНИЕ ДЛЯ GINGERBREADNPC: из-за того, что часть кода закомментирована, администратору может потребоваться запустить /pveupdate, чтобы добавить GingerbreadNPC в качестве подходящей цели (15 декабря 2022 г.). Другая причина этого в том, что они появились в середине очистки.
НОВИНКА ДЛЯ 1.2.8: Новые параметры очистки доступны только в конфигурации (пока без графического интерфейса). Смотри ниже.
НОВИНКА ДЛЯ 1.1.0: новый графический интерфейс расписания для выбора дня (дней), времени начала и окончания. Можно выбрать все дни или ни одного. Значения по умолчанию (с параметром useSchedule равным true) теперь равны *;0:00;23:59, то есть всегда активны.
НОВОЕ ДЛЯ 1.0.52: Редактор настраиваемых правил и коллекций сущностей. Чтобы включить эту функцию, в конфигурации необходимо установить значение AllowCustomEdit в значение true. Чтобы соответствовать этому, новые типы сущностей будут обнаруживаться при очистке и должны быть доступны для добавления в существующие или новые коллекции для включения в наборы правил.
ПРИМЕР: Создание собственных правил:
ПРИМЕР: самостоятельно управлять новыми сущностями или переназначать существующие:
Обзор
NextGenPVE — это новый плагин, а не форк TruePVE и др. Он включает в себя интегрированный графический интерфейс для управления набором правил.
NextGenPVE организован в виде коллекций сущностей, правил, использующих эти коллекции, и наборов правил, включающих набор правил.
Каждый набор правил имеет значение урона по умолчанию, равное true или false.
Каждый набор правил может включать список правил, которые переопределяют настройки по умолчанию, называемые исключениями.
Каждый набор правил может включать в себя список исключений из исключений, которые переопределяют эти исключения.
Каждый набор правил может и, вероятно, должен быть связан с зоной (если не с набором правил по умолчанию).
Каждый набор правил может быть включен или отключен.
Набор правил по умолчанию (из коробки) имеет следующие настройки:
- Неверный урон по умолчанию
- Исключения:
- животное может нанести вред животному
- животное может повредить игрока
- огонь может повредить здание
- огонь может повредить игрока
- огонь может повредить ресурс
- вертолет может повредить здание
- вертолет может повредить вертолет (за обломки и т.д.)
- вертолет может повредить игрока
- NPC может нанести урон игроку
- турель NPC может повредить животное
- Башня NPC может повредить NPC
- турель NPC может нанести урон игроку
- игрок может повредить животное
- игрок может повредить здание (свое или друга)
- игрок может повредить вертолет
- игрок может повредить миникоптер
- игрок может повредить NPC
- игрок может повредить растение (Growable Entity)
- игрок может повредить ресурс
- игрок может повредить металлолом
- игрок может повредить транспортное средство
- ресурс может нанести урон игроку
- металлолом может повредить игрока
- ловушка может повредить ловушку
- лифт может повредить (раздавить) игрока
- Исключения: НЕТ (Может быть курица, медведь, HumanNPC и т.д.)
- Включить/отключить NextGenPVE
- Создание или удаление наборов правил
- Включить или отключить наборы правил
- Установите урон по умолчанию для набора правил
- Добавить правила для исключений к настройке урона по умолчанию набора правил
- Добавить исключения для правил
- Установите зону, позволяющую активировать набор правил
- Установите расписание для включения/отключения набора правил (НЕОБХОДИМО УЛУЧШЕНИЕ)
- Расписания состоят из следующего простого формата. Расписание (в настоящее время по одному на набор правил) определяет, когда набор правил активен. Если не установлен, он всегда активен.
- ФОРМАТ: ДЕНЬНЕДЕЛИ_OR_*;НАЧАЛО:ВРЕМЯ;КОНЕЦ:ВРЕМЯ
- 1;1:00:21:00 == понедельник между 1:00 по местному времени и 21:00 по местному времени
- *;4:00;15:00 == Каждый день с 4:00 до 15:00
- Расписание можно инвертировать таким образом, чтобы введенный период отключал набор правил, а не включал его.
- Расписания состоят из следующего простого формата. Расписание (в настоящее время по одному на набор правил) определяет, когда набор правил активен. Если не установлен, он всегда активен.
- Установите глобальные флаги.
nextgenpve.use -- В настоящее время используется только для конфигурации requirePermissionForPlayerProtection, которую следует рассматривать как экспериментальную и только для нишевых случаев.
nextgenpve.admin -- Требуется для доступа к графическому интерфейсу и другим функциям.
nextgenpve.god -- Переопределение PVE, killall
Приведенные выше флаги неиспользования можно установить из графического интерфейса пользователя без перезагрузки и т. д. Флаги useXXX предназначены для администратора, чтобы определить использование стороннего плагина и потребовать перезагрузки. В графическом интерфейсе вы также можете СБРОСИТЬ флаги неиспользования по умолчанию.
ZoneManager можно использовать для связывания набора правил с зоной.
В настоящее время доступно несколько глобальных флагов для ограничения урона NPC AutoTurret и ловушки.
Если для параметра protectedDays установлено значение больше 0, элементы, принадлежащие игроку, станут незащищенными, если игрок был в автономном режиме в течение этого количества фактических дней (экспериментально).
Если игрок пытается повредить здание, «HonorBuildingPrivilege» определяет, ограничивается ли он повреждением своих собственных построек или любых построек. Это переопределяется для зонированных наборов правил, где разрешен урон (PVP).
«UnprotectedDamage» определяет, может ли незащищенное здание (без TC) быть повреждено другими игроками, кроме строителя.
«TwigDamage» определяет, могут ли компоненты здания из веток быть уничтожены любым игроком.
«HonorRelationships» определяет, может ли игрок повредить структуры или развертываемые объекты своего друга. Для этого требуется как минимум один из useFriends/useClans/useTeams и любые связанные плагины.
« AllowFriendlyFire » позволяет наносить урон между игроками, которые являются друзьями/соклановцами/сокомандниками. Для этого необходимо, чтобы для HonorRelationships также было установлено значение true.
«BlockScrapHeliFallDamage» обрабатывает особый случай, когда игроки, летящие скрапхели в других игроков, наносят урон от падения, убивая целевого игрока.
Обратите внимание, что поддержка друзей может включать друзей, кланы или команды.
AllowCustomEdit — позволяет редактировать пользовательские наборы правил и наборы настроек для сущностей. Будьте осторожны, так как вы можете легко классифицировать животных как NPC, ресурсы как игроков и т. д.
AllowDropDatabase — включает команду pvedrop и кнопку графического интерфейса для сброса базы данных до значений по умолчанию. Это стирает все!!!
AutoPopulateUnknownEntitities — включает автоматическое обнаружение новых типов сущностей при атаке или атаке. Например, новый плагин создает пользовательский тип NPC, например, CustomScientistNpc (NpcSpawn). Теперь код увидит, что этого типа не существует, и добавит его. Если, как в этом случае, имя содержит 'npc', новый тип будет добавлен как npc. В противном случае он будет добавлен как неизвестный. Затем это можно настроить по желанию в инструменте администрирования (pverule). Обратите внимание, что если вы уже добавили этот тип самостоятельно, он не должен добавляться снова - дайте мне знать...
requirePermissionForPlayerProtection — требовать, чтобы у игроков было разрешение nextgenpve.use для защиты от повреждений. НЕ УСТАНАВЛИВАЙТЕ ЭТО, если вы не хотите проверить это и понять, что вы делаете. В общем, NextGenPVE предназначен для защиты от повреждения PVP на серверах PVE. ммм...
ПРИМЕЧАНИЕ. Флаги могут быть внешними, хотя в настоящее время они должны быть записаны в вызываемый код. Текущий пример — SAM Targeting. Если он загружен, мы вызываем его для его 6 настроек, и мы можем установить эти значения, которые затем будут отражены в графическом интерфейсе NextGenPVE.
ОЧИСТКА (1.2.8 и выше)
Это способ автоматического отключения наборов правил на основе календарных дат, а не только дней недели и т. д.
- Чтобы параметры очистки работали, вы должны установить для useSchedule значение true.
- Затем установите для purgeEnabled значение true.
- Установите даты и время начала и окончания очистки ( в настоящее время в формате США, который представляет собой месяц/день/год час:минута:секунда)
- Для дат начала и окончания время указывать необязательно. Следующие примеры будут действительными:
- «31.12.1969, 12:01» — 31 декабря 1969 г., 12:01.
- «31.12.1969» — 31 декабря 1969 года в полночь или 0:00.
- При желании установите «purgeStartMessage» и «purgeEndMessage» на то, что вы хотели бы видеть в чате и, возможно, в GUIAnnouncements, если это разрешено.
- По умолчанию ОЧИСТКА АКТИВНА и ОЧИСТКА ЗАВЕРШЕНА.
- Установите для autoCalcPurge значение true, чтобы подключаемый модуль автоматически создавал время начала и окончания очистки в конце месяца. Установите autoCalcPurgeDays на количество дней до очистки, чтобы начать очистку.
- Это, конечно, необязательно.
- В настоящее время по умолчанию чистка выполняется со вторника в 12:00 до четверга в 12:00.
- Мысль здесь заключается в том, что многие серверы хотели бы, по крайней мере, провести очистку в конце месяца. Вы, конечно, можете настроить время после того, как плагин сделает свою работу каждый месяц.
На данный момент вам потребуется обновлять эту конфигурацию некоторое время в течение каждого месяца, недели и т. д. в зависимости от того, как часто вы выполняете очистку.
Кроме того, при включении/отключении очистки вызываются следующие хуки:
// At purge enable
Interface.CallHook("DisableMe");
// At purge disable
Interface.CallHook("EnableMe");
Плагины могут принять эти хуки, установив что-то вроде:
JSON:
private void DisableMe()
{
if (!configData.respondToActivationHooks) return;
enabled = false;
Puts($"{Name} disabled");
}
private void EnableMe()
{
if (!configData.respondToActivationHooks) return;
enabled = true;
Puts($"{Name} enabled");
}
Конечно, им нужно будет скорректировать проверки и предпринятые действия.
Разработчики:
Доступны следующие хуки:
// Toggle PVE on or off
private bool TogglePVE(bool on = true)
// Toggle a single ruleset on or off
private bool TogglePVERuleset(string rulesetname, bool on = true)
// Check if a BaseCombatEntity is located in a zone associated with a ruleset with
// damage == true OR (damage == false && enabled == false)
private bool IsInPVEZone(BaseCombatEntity target)
// Add a zone mapping (key) to a ruleset (In use by DynamicPVP, possibly others.)
private bool AddOrUpdateMapping(string key, string rulesetname)
// Remove a zone mapping (key) from a ruleset (In use by DynamicPVP, possibly others.)
private bool RemoveMapping(string key)
Подробности
NextGenPVE использует SQLite для большей части своего хранилища данных. Файл базы данных называется nextgenpve.db.
Единственный другой файл данных — ngpve_zonemaps.json. В настоящее время это используется сторонними плагинами, которые создают свой собственный набор правил и зоны PVP. Многие из них должны быть изменены для использования NextGenPVE, но вызовы функций должны вести себя одинаково.
Каждое правило включает источник и цель со списком всех типов, которые будут соответствовать правилу. Игрок — это просто BasePlayer, тогда как NPC включают в себя несколько разных типов.
Любой отдельный тип NPC, например, может быть добавлен в одно из полей «исключения» набора правил. Это может быть источник или цель. Список основан на правилах исключений, добавленных в набор правил, и типах сущностей, которые они содержат.
Набор правил по умолчанию допускает довольно небольшой урон, кроме как от игрока к игроку. Например, у него есть исключение для player_animal, позволяющее игрокам убивать животных. Вы можете добавить, например, «Курица» в список исключений целей, чтобы заблокировать убийство цыплят для птицы.
Основной порядок оценки правила:
Набор правил -> Урон по умолчанию -> Правило исключения -> Исключение.
Пример 1:
Игрок атакует медведя
- Ущерб от набора правил по умолчанию False.
- Исключение для player_animal.
- Нет исключения источника для BasePlayer.
- Нет исключения цели для Медведя.
- ДОПУСКАЕТСЯ ПОВРЕЖДЕНИЕ.
- Медведь атакует игрока
- Ущерб от набора правил по умолчанию False.
- Исключение для animal_player
- Нет исключения источника для BasePlayer.
- Нет исключения цели для Медведя.
- ДОПУСКАЕТСЯ ПОВРЕЖДЕНИЕ.
- Игрок атакует Цыпленка
- Урон по умолчанию False.
- Исключение для player_animal.
- Нет исключения источника для BasePlayer.
- Целевое исключение для цыпленка.
- ПОВРЕЖДЕНИЕ ЗАБЛОКИРОВАНО.
ДинамическийPVP
Для использования с DynamicPVP вам может потребоваться создать новый набор правил. Измените имя, чтобы оно соответствовало тому, которое использует DynamicPVP — имя по умолчанию — «исключить». Установите для урона по умолчанию этого набора правил значение true. После этого перезагрузите DynamicPVP. Ваш набор правил должен выглядеть так:
Обратите внимание, что зона настроена на поиск. Вы можете щелкнуть «поиск», чтобы увидеть, что поиск зоны для этого настроен на одну или несколько зон, созданных DynamicPVP. Вы должны иметь возможность настроить правила для зоны, чтобы блокировать то, что в противном случае было бы разрешено.
Примеры конкурирующих наборов правил
- Вы создаете клон набора правил по умолчанию и включаете его.
- Теперь у вас есть два набора правил с идентичными функциями, включая урон по умолчанию, разрешающие правила и исключения.
- Оба набора правил будут применяться ко всей карте по умолчанию.
- Если вы отредактируете разрешающие правила или исключения, наборы правил будут конкурировать. Клон, скорее всего, переопределит значение по умолчанию.
- Без расписания или зоны, чтобы определить, какая из них активна в любое время или в любом месте, любая из них может совпадать со всеми действиями PVE.
- ИСПРАВЛЕНИЕ 1. Применение расписаний к обоим наборам правил
- ИСПРАВЛЕНИЕ 2. Установите для зоны клонированный набор правил (требуется ZoneManager), чтобы изолировать ее.
- Вы создаете новый набор правил с уроном по умолчанию TRUE и включаете его.
- Теперь у вас есть набор правил, конкурирующий с набором правил по умолчанию.
- Этот новый набор правил имеет значение повреждения по умолчанию TRUE, которое переопределяет набор правил по умолчанию.
- Вся карта теперь PVP.
- ИСПРАВЛЕНИЕ 1. Добавьте зону в новый набор правил (требуется ZoneManager), чтобы изолировать ее в определенной области карты.
- ИСПРАВЛЕНИЕ 2. Добавьте расписание в новый набор правил. Лучшим вариантом для запланированного PVP может быть добавление расписания к набору правил по умолчанию и удаление дополнительного набора правил.
ДЕЛАТЬ
- Настройка производительности по мере необходимости.