Исправлено для обновления Rust
Использование этого обновления повредит файл данных игрока, и все потеряют право собственности на свои лифты.
cmdToggleAdm: тернарный операторarg.Argsзаменен цикломHasArgs/GetString(исправление компиляции после обновления игры)
Сохранение данных
- Ключи файла данных:
ulong→string(lift netId)- Значения: читаемые объекты JSON вместо вложенных строк JSON
- Новые вспомогательные функции:
ReadDataFileReadable,WriteDataFileReadable,SaveAllElevators- Сохранение при выгрузке +
OnServerSave** (в версии 1.2.6 новые лифты сохранялись только при готовности; сохранение при выгрузке пропускалось)ELStorage** добавляет мировые позиции (liftPos*,groundPos*) для восстановления после перезапуска- Обратная совместимость: по-прежнему читает старые записи в строковом формате через
JObject/ резервный вариант десериализации
Надежность загрузки/выгрузки
-DestroyImmediateпри выгрузке (лифт + CabinComfort) — исправляет перезагрузку «уже есть лифт» / пустуюcrossReference
— Очистка устаревшего компонентаElevatorперед повторным подключением при загрузке
— ФлагPluginUnloadInProgress
— Дополнительная диагностикаVerboseElevatorLogs+LogLiftConnections
Сеть (обновление видимости FP)
ИспользованиеNetwork.Visibility
Сетевое взаимодействие лифта:EntityNetworkRange.Large, ограничениеUpdateNetworkGroup, пересмотренная синхронизацияSncPs/GroupChangeдля перемещения по пещерам/наземному миру
Для использования этого обновления необходимо удалить файл данных!
Оплата за услуги у дверей/в лифте
Добавляет возможность оплаты:
Настройки
- Стоимость ворот при использовании стандартных гаражных ворот (1 за ворота)
- Стоимость этажа с использованием стандартных предметов лифта (1 на этаж)
BuildCostItems.HijackVanillaElevatorPlacement
разрешений
AllowDoorItemOrCost
AllowElevatorItemPerFloor
- Переопределение размещения лифта в Vanilla (новое)
- Автоматическое преобразование размещения стандартных лифтов! "Вариант конфигурации"
- Дополнительная стоимость размещения лифта на основе предметов: используйте Vanilla Elevators в качестве стоимости.
- Добавлена возможность конвертировать все уже размещенные ванильные лифты в лифты UpLifted.
- Консольная команда: upl.convert_all
- Команды чата:
- /convert = Команда администратора для преобразования всех ванильных лифтов
- /convert.here = Команда администратора для преобразования лифта, на который вы смотрите
- Местоположение лифта отображается на экране.
- Команды чата:
- /liftmap = Команда игрока, позволяющая увидеть все местоположения лифтов на карте.
- /showlift = Команда администратора для просмотра поднятых грузов.
- Производительность
- Сканирование всей сцены заменено активным реестром: activeLifts (HashSet) и картой crossReference для отслеживания всех деталей лифта. Это позволяет избежать FindObjectsOfType<Elevator>() при сохранении/загрузке и во время поиска.
- Регулируемая сетевая работа внутри Elevator.Update() (через _lastNetSync) для уменьшения сетевого трафика за кадр и рекурсивного сбоя синхронизации.
- Централизованное отслеживание на основе событий (перехваты создания/сборки/развертывания) сокращает количество случайных опросов и случаев пропуска состояний.
- Для совместимости сохранена та же надежная схема ELStorage.
- Сохранение/загрузка теперь работают через известные активные лифты, что повышает надежность и скорость при сохранении больших миров.
- Сохранен защитный путь загрузки: поврежденные записи безопасно пропускаются или останавливаются для каждой конфигурации (безопасность данных не изменяется).
- Чистый эффект
- Лучшая масштабируемость на загруженных серверах (меньше глобальных сканирований, меньше сетевых операций для каждого кадра).
- Более плавный поток игроков при обновлении стандартных лифтов.
- Более надежная устойчивость за счет явных, отслеживаемых в реальном времени групп лифтов.
Обновление для принудительной очистки.
Обновленные вызовы: inv.FindItemsByItemID(foundItems, -946369541) и inv.FindItemsByItemID(list, -946369541)