MagicByteSharedLibrary
Текущая версия мода: 4.5.1
Совместимая версия игры: 1.26
Конфликты (несовместимые моды):
- Моды, удаляющие трупы игроков (кроме BodyDeleter).
Не влияет на работу магазина
Возможности мода:
- Вспомогательный мод, необходимый для работы ряда других модов MagicByte.
Условия использования:
- Разрешается распространение мода как части серверного модпака.
- Запрещается распаковка и изменение модификации.
История обновлений:
- Исправлена совместимость с модом (модами), использующим _Payload в качестве имени типа.
- Добавлена строго типизированная модель функций (классы MBSL_TypedAction и MBSL_TypedFunction).
- Добавлена строго типизированная модель событий (классы MBSL_TypedEvent).
- Добавлен механизм привязки аргументов к строго типизированным функциям (MBSL_BindAction/MBSL_BindActionRef/MBSL_BindFunction/MBSL_BindFunctionRef).
- Добавлен класс исключений (MBSL_Exception) для описания исключительных ситуаций.
- Добавлен механизм асинхронного возвращения результата операции (MBSL_PromiseSource/MBSL_Promise/MBSL_PromiseRef).
- Добавлена новая унифицированная модель RPC (Remote Procedure Call - удалённый вызов процедуры), использующая строго типизированную модель функций.
- Добавлена унифицированная модель RFC (Remote Function Call - удалённый вызов функции с возвратом значения), использующая строго типизированную модель функций.
- Добавлены новые методы в MBSL_ConfigAPI.
- Добавлен механизм MBSL_SharedResource для исполнения кастомной логики при удалении произвольного объекта.
- Добавлена поддержка общего префикса в экземпляре ScriptLogger.
- Добавлен метод MBSL_ModelUtils.SetSimpleSelectionVisibility для безопасного изменения видимости simple selection (by Kramtsov).
- Добавлено MBSL_AmmoAPI для проверки совместимости пуль с магазинами/оружием.
- Переработан MBSL_CreateObjectHelper - исправлено создание магазинов в оружии, добавлена поддержка создания патронов в магазинах/оружии. Добавлены флаги для автоматического довода патронов в патронник и/или внутренний магазин оружия, заполнения жидкостей транспорта.
- Методы для получения информации о игроках на сервере перенесены из MissionServer в MBSL_Server (модуль 3_Game).
- Исправлен некорректный размер блока в логгерах.
- Улучшена производительность индексера множества (MBSL_Set/MBSL_WeakSet).
- Обновлён дизайн стандартных уведомлений.
- Переработана процедура загрузки файлов конфигурации мода.
- Добавлен возможность изменять цвет информационного уведомления.
- Исправлены мелкие утечки памяти в системе уведомлений.
- Добавлен класс DatedFileLogger, логирующий в файл с датой и временем его создания.
- Добавлен метод MBSL_Debug.Assert для проверки истинности выражения и логирования ложных выражений вместе с трассировкой стека в отдельный файл.
- Исправлена десинхронизация клонируемого через CreateObjectHelper оружия.
- Улучшено поведение стандартных уведомлений системы уведомлений.
- Убрано ограничение на неизменность размера кастомных уведомлений в системе уведомлений.
- Исправлен ряд багов в компоненте MBSL_WidgetSizeToContent.
- Добавлена поддержка отступов справа и снизу в MBSL_WidgetSizeToContent.
- Добавлена возможность исключения дочерних виджетов из MBSL_WidgetSizeToContent.
- Добавлена возможность исключения дочерних виджетов из MBSL_WidgetSizeToContent.
- Исправлен баг с некорректной конверсией времени для января и февраля високосных годов в методе MBSL_TimeUtility.ToUnixTimestamp.
- Исправлена некорректная смена активной вкладки в MBSL_TabsManager при удалении вкладки, если удалённая вкладка не являлась активной.
- Добавлено кэширование экземпляров MBSL_PlayerInfo для уменьшения расхода памяти.
- Добавлен основной шрифт на основе distance-field.
- Исправлен баг, вызывающий исключение NULL-переменной при вызове Abort на MBSL_JsonDeserializeAsyncHandle.
- OnConnected теперь вызывается перед всеми вызовами OnPlayerConnected.
- Исправления в поведении MBSL_StackPanel.
- Исправлено: MBSL_EditBox теперь всегда корректно применяет текст-подсказку, если поле пустое.
- Добавлен метод InputChanged в MBSL_EditBox для улучшения интерактивности.
- Добавлены классы MBSL_MapCopyHelper и MBSL_MapCloneHelper для копирования и клонирования класса map соответственно (клонирование работает только для классов, реализующих MBSL_Managed).
- В MBSL_CreateObjectHelper добавлен метод SetItemQuantity для универсальной установки количества на предметах.
- MBSL_CreateObjectHelper обновлён для совместимости с будущими версиями игры.
- В файл конфигурации модификации добавлен параметр ServerLanguage для указания языка сервера при использовании MBSL_LocalizationAPI.TranslateString на сервере.
- Исправлен баг с некорректным парсингом чисел с плавающей точкей в MBSL_JsonParser.
- Исправлено некорректное поведение MBSL_StackPanel при удалении дочерних элементов панели.
- MBSL_StackPanel добавлен параметр padding для добавления расстояния между элементами.
- Добавлены дополнительные методы в MBSL_EditBoxWidget.
- Небольшие фиксы для классов Setting.
- Исправлен возможный баг, при котором MBSL_CreateObjectHelper.CreateInInventory возвращал false при успешном создании всех предметов.
- CreateGroundObject обновлён для использования CreateObjectEx и устранения возможных проблем со спавном объектов в некорректных местах.
- Метод GetSurfaceUnderPointEx переименован в перегрузку GetSurfaceUnderPoint.
- Добавлен метод CopySign в MBSL_Math.
- Исправлен баг с некорректной позицией, возвращаемой GetSurfaceUnderPoint в помещениях.
- Добавлен метод GetSurfaceUnderPointEx, позволяющий указывать маску слоёв взаимодействия.
- Класс MBSL был разделён на ряд статичных классов.
- Исправлен баг с некорректной ориентацией, возвращаемой методом GetSurfaceUnderPoint.
- Добавлен класс MBSL_EditBox для лёгкого создания полей ввода с подсказками и контролем вводимого значения.
- Функция CloneToInventory теперь корректно клонирует предмет с земли в инвентарь, если параметр location не указан.
- Загрузчик аддонов исправлен для корректной поздней загрузки зависимостей.
- В MBSL_Client и MissionServer добавлены методы получения полного списка игроков на сервере.
- Метод CloneToInventory исправлен и теперь корректно клонирует и вращение предмета.
- Исправлен вызов события OnConnected до вызова метода OnReady аддона на клиенте.
- Добавлены дополнительные методы в класс MBSL_VersionInfo.
- Добавлен метод для полного глубокого клонирования предметов в целевой инвентарь.
- Добавлена поддержка свободной загрузки аддонов на тестовых серверах (слово "test" в названии и не более 10 слотов).
- Добавлен базовый класс для логирования MBSL_LoggerBase и две его реализации (MBSL_ScriptLogger и MBSL_FileLogger).
- Во все методы EventManager добавлен опциональный параметр namespace, позволяющий явно разделять события разных модов.
- Метод MBSL_Physics.GetSurfaceUnderPoint теперь использует Fire-геометрию для определения позиции.
- Обновлён загрузчик аддонов для использования загрузки, не блокирующей запуск сервера (устранение проблемы с бесконечным рестартом сервера в CF Tools).
- Экспериментально: добавлена автоматическая дозагрузка аддонов, которым не удалось загрузится при запуске сервера.
- В алгоритм создания объектов добавлено помещение предметов на поверхность.
- Исправлен баг с использованием стандартного языка локализации последнего загруженного файла в качестве стандартного языка локализации для всех файлов.
- Исправлен баг с некорректным парсингом url при создании MBSL_RestAPIRequest из полного url запроса.
- Родительский класс MBSL_Tab заменён на MBSL_WidgetGroup.
- В алгоритм создания объектов добавлен выбор между использованием процентного и абсолютного значений количества/прочности.
- Добавлены исправления в алгоритм создания объектов.
- Исправлены баги в поведении StackPanel.
- Мод обновлён для совместимости с версией игры 1.22.
- Оптимизация для возможного ускорения загрузки сервера/игры.
- Добавлен базовый класс MBSL_Managed, определяющий операции сравнения и клонирования.
- Добавлен обработчик событий виджета StackPanel для автоматического размещения дочерних элементов виджета в ряд/столбец и автоматического изменения размера виджета для умещения всех дочерних элементов.
- Добавлен базовый класс MBSL_WidgetGroup для групп виджетов, не являющихся UIScriptedMenu.
- Добавлены методы для упрощённого создания объектов/предметов на земле/в целевом инвентаре.
- Добавлена структура данных пула целочисленных индексов (IndexPool).
- Добавлено кеширование данных последнего сервера в серверозависимую файловую систему, чтобы позволить взаимодействия с файлами после отключения от сервера.
- Добавлен метод проверки наличия данных сервера у серверозависимой файловой системы.
- Добавлена структура данных слабый хэш-сет (аналог хэш-сета, не поддерживающий сильные ссылки на данные).
- Добавлены методы для слияния массивов разных типов, обладающие разными видами ссылок (сильные/слабые) или разными классами одной иерархии наследования.
- В структуру данных хэш-сета добавлен индексатор.
- В файловые системы добавлен метод создания файла, если его не существует.
- В клиентское событие OnRespawned добавлен параметр onConnect, аналогичный соответствующему параметру серверного события OnPlayerRespawned, а параметр player убран.
- Существующий код обновлён для использование хэш-сета и слабого хэш-сета заместо структуры set.
- Событие Shutdown помечено как устаревшее, убрано из использования в коде.
- Исправлен баг в асинхронных методах файловой системы, предотвращавший инвалидацию существующей блокировки файла.
- Исправлен баг, приводивший к задержке появления уведомлений.
- Исправлен баг, приводивший к двойному вызову события OnUpdate.
- Исправлен баг с возможным доступом к null-переменной при завершении миссии.
- Серверозависимая файловая система теперь всегда использует данные текущего сервера, а не после инициализации.
- ConfigAPI теперь доступен всегда, а не только после загрузки аддона.
- Исправлены вызовы событий OnMissionStart,OnMissionFinish, а также завершение всех активных задач диспетчера.
- Добавлена кастомная система уведомлений.
- Обновлены стандартные события системы событий, добавлены события ResetGUI (заменяет OnGameLanguageChanged), OnResolutionChanged, OnMissionStart, OnMissionFinish.
- Добавлена структура связанный список (LinkedList).
- Добавлена структура хэш-сета (Set).
- Переработана структура очереди (Queue).
- Добавлены структуры для обёртки и абсолютных, и относительных координат экрана в один тип данных (UICoordinateValue, UIVector, UIRect).
- Добавлен обработчик событий виджета для автоматического изменения размера виджета для умещения всех его дочерних элементов с возможностью ограничения максимального размера.
- Добавлена реализация метода Remove на WorldCanvasGroup.
- Добавлены хэндлы для отмены некоторых асинхронных операций.
- Расширены возможные состояния выполнения асинхронных операций.
- Убраны ненужные проверки на успех получения UNIX-timestamp.
- Исправления в системе поиска игроков в дистанции рендера на клиенте.
- Заменена система получения UNIX-timestamp на локальное вычисление.
- Переделана система поиска игроков в дистанции рендера на клиенте.
- Отключена проверка на успех получения UNIX-timestamp на клиенте.
- Добавлены дополнительные фунции для компонента REST-запросов.
- Исправлен баг в системе поиска игроков в дистанции рендера на клиенте.
- Добавлен компонент для автоматического повторения REST-запросов до достижения успеха или лимита попыток.
- В систему событий добавлена опция игнорирования null-значений.
- В парсер JSON-файлов добавлена поддержка экранируемых символов.
- Исправлена проблема совместимости системы уведомлений с DayZExpansion.
- Асинхронное чтение файла теперь возвращает пустую строку в случае провала операции.
- Добавлена автоматическая перезагрузка модов раз в 5 минут в случае проблем с запуском.
- Обновлена система проверки модов для снижения риска недоступности модов.
- Добавлен асинхронный парсер json-файлов.
- Обновлён механизм асинхронного выполнения для динамического определения уровней нагрузки сервера.
- Добавлено полное завершение асинхронных задач при завершении процесса игры/сервера.
- Улучшен механизм поиска игроков в пределах дистанции рендера на клиенте, добавлено событие входа игрока в дистанцию рендера.
- Добавлены операции асинхронного чтения/записи файлов.
- Добавлен компонент для оптимизации выполнения множественного чтения/записи файлов.
- Исправлено смещение элементо UI на WorldCanvas в момент их добавления.
- Событие OnPlayerDisconnected обновлено для вызова в момент окончательного выхода игрока с сервера.
- Прочие мелкие исправления и оптимизации.
- Исправлены колебания элементов UI на WorldCanvas.
- Добавлена функция поиска объектов игроков в пределах дистанции рендера по SteamID на клиенте.
- Исправлен баг с чтением отрицательных чисел в Json.
- Добавлен кастомный чекбокс для UI.
- Добавлены отладочные инструменты расширенного логирования и измерения времени выполнения.
- Исправлена проблема с неполным выводом отсутствующих зависимостей.
- Добавлена заготовка системы управления файлами для дальнейшего перехода на асинхронную модель выполнения.
- На клиент добавлена информация для локальной идентификации игрока (имя, steamid).
- Добавлен формат для стабильного хранения информации об игроках на клиенте и обмена между клиентом и сервером.
- Добавлены вспомогательный функции для работы с коллекциями.
- Добавлены базовые классы для коллекций.
- Добавлен поиск PlayerIdentity по SteamID на сервере.
- Добавлено стандартное уведомление с возможностью форматирования через передаваемую функцию.
- Добавлен компонент для рисования элементов UI в 3D-пространстве игры.
- Основные компоненты библиотеки переведены на статичные классы.
- Добавлена выделенная система событий. Добавлен вызов функций подписчиков через ScriptModule, без промежуточной функции-обработчика.
- Добавлен ряд новых событий для системы событий. Старые события обновлены для совместимости с новой системой.
- Добавлены шаблоны настроек для использования в других модах.
- Добавлен список игроков сервера на клиенты и связанные с его изменением события.
- Для клиента добавлена система управления файлами уникальными для каждого сервера.
- Добавлено действие для замены RGBA виджета.
- Добавлен циклический буфер.
- Добавлен класс необязательных значений.
- Добавлен класс-обёртка неуправляемой памяти для передачи в контекстах управляемой памяти.
- Добавлен класс для вызова функций при событиях виджетов через ScriptInvoker.
- Обновлена система анализа config-файлов игры, устранена причина пропуска некоторых класснеймов.
- Добавлено повторение REST-запросов до 5 раз в случае провала.
- Добавлено предотвращение загрузки мода при невозможности определить текущий UNIX timestamp.
- Добавлена система кастомизируемых уведомлений для других модов.
- Убран блокирующий REST запрос из функции GetUnixTimestamp.
- Добавлены компоненты для обработки результатов нескольких асинхронных REST-запросов одновременно.
- Добавлена система простого отображения диалогового окна для других модов.
- Исправлен ряд возможных проблем с запуском мода.
- Релиз мода.