FS25 Динамика рынка — Динамическое ценообразование на сельскохозяйственные культуры
Цены на урожай в Farming Simulator 25 основаны на реальных событиях. Цены растут и падают ежедневно и внутридневно в зависимости от мировых событий, спроса и предложения, поэтому никакие два прохождения не ощущаются одинаково. Заключайте фьючерсные контракты, преодолевайте рыночные потрясения и наблюдайте за всем этим в реальном времени на экране рынка. Рынки остаются волатильными, но не абсурдными, ограниченными между 50% и 200% базовой базы.
✨ Особенности
- Динамический механизм ценообразования
- Десять мировых событий
- Фьючерсные контракты
- Экран реального рынка
- Настраиваемые события
- Многопользовательская синхронизация
- Интеграция модов
- 26 языков
🎮 Управление
- Открыть диалоговое окно «Новый контракт»: N (или нажать «Новый контракт» на экране «Рынок»)
Обратите внимание, что в многопользовательской игре все зависит от сервера, и вы можете безопасно удалить мод во время сохранения, он просто игнорирует свои данные при следующей загрузке!
Прекрасно работает с: FS25_FuturesMission и FS25_UsedPlus (интеграция активируется автоматически при обнаружении).
FuturesMission: https://github.com/Mmtrx/FS25_FuturesMission
===============================================================
Репозиторий GitHub:
https://github.com/TheCodingDad-TisonK/FS25_MarketDynamics]
===============================================================
УВЕДОМЛЕНИЕ ОБ АВТОРСКИХ ПРАВАХ:
Все права защищены. Несанкционированное распространение, копирование,
модификация или утверждение этого мода как своего строго запрещено.
Автор оригинала: TisonK
===============================================================
[Что нового]
- Оповещения о мировых событиях теперь отображаются в виде немодального баннера, а не всплывающего окна, которое прерывает ваши действия.
- Новая настройка «Компактный баннер события», если вы предпочитаете меньшее оповещение (полное диалоговое окно остается по умолчанию).
[Исправления]
- Фьючерсные контракты теперь рассчитываются по точной цене, которую вы зафиксировали.
- Время контрактов корректно синхронизируется на выделенных серверах (исправлено несоответствие в многопользовательской игре).
- Сбой выделенного сервера: замененоstreamWriteFloat64 (недоступно в сборках dedi) наstreamWriteInt32 (секунды) для времени доставки контракта.
- Доставка контракта учитывается дважды: удален хук addFillLevelFromTool — стандартные станции продаж вызывают оба хука на одном уровне стека, минуя защиту повторного входа и увеличивая прогресс контракта в 2 раза.
- Слишком много событий на Редких событиях: понижена шкала частоты Редких событий с 0,4 → 0,15; добавлено ограничение на 1 новое событие на проверку с перетасованным порядком, чтобы предотвратить штормы событий
- Изменение настройки частоты задерживается: таймер мирового события теперь сбрасывается немедленно при изменении eventFrequency или eventEnabled в настройках.
- Панель настроек удалена из настроек игры.
- Интегрирована панель пользовательских настроек (НУЖНО ПРИВЯЗАТЬСЯ)
- Поменяны местами индикаторы ▲/▼, так как FS25 это не любит.
- Исправлена ошибка `nill` из-за отсутствия строки l10n.
- Обновлены все файлы перевода (добавлены новые ключи)
– Нажмите заголовок столбца «Обрезать», «Цена» или «Изменить» на вкладке «Цены», чтобы отсортировать список. Нажмите еще раз, чтобы перевернуть порядок. Маленькая стрелка ▲/▼ показывает, какой столбец активен.
- MDM теперь правильно использует базовые цены, установленные модом Realistic Economics. Если у вас установлены оба продукта, колебания цен MDM и мировые события будут накладываться поверх реальных цен REM, а не игнорировать их.
Администраторы выделенных серверов не могли добавлять или удалять пользовательские типы заполнения из
мировые события — изменения, казалось, работали, но каждый раз молча возвращались назад. Это
обновление исправляет это, а также значительно упрощает поиск названий культур на серверах.
установлено множество кроп-модов.
Что исправлено/Что нового:
• Пользовательские типы заполнения теперь корректно сохраняются для администраторов выделенного сервера — не более того.
изменения исчезают после закрытия диалога
• Удаление типа заливки из списка событий теперь остается неизменным (закрытие #77).
• В диалоговом окне «Просмотр типов заливок» появилась новая панель поиска в режиме реального времени — введите часть
обрежьте имя, чтобы мгновенно отфильтровать список вместо прокрутки более 100 записей
• Все существующие языки обновлены с помощью нового ярлыка поиска.
Перенос сохранений не требуется — существующие сохранения загружаются нормально.
- Исправлено невыполнение контракта при перезапуске, сохраняя абсолютное игровое время и добавляя защиту синхронизации в цикл обновления.
- Реализовать действие «Утрата» для владельцев контрактов, позволяющее клиентам, не являющимся администраторами, на выделенных серверах управлять своими собственными контрактами.
— Рефакторинг сериализации XML для использования современного API класса FS25 XMLFile, повышение стабильности и исправление ошибок сценария, связанных с типами.
- Исправлен бесконечный цикл в логике загрузки UPIntegration, приводивший к зависанию игры при загрузке 100%.
— Подавление ошибок «Не удалось открыть XML» из-за отсутствия устаревших файлов конфигурации.
- Обеспечьте правильную проверку разрешений администраторов и главных пользователей для элементов пользовательского интерфейса.
Market Dynamics теперь реагирует на то, что происходит в мире. Если случайный мир
События вызывают крах рынка, цены отразят это. Если ваши поля находятся под
широко распространенный стресс урожая, давление со стороны предложения подталкивает цены вверх.
Что нового/исправлено:
- Интеграция случайных мировых событий: активные экономические и полевые события теперь
напрямую меняет цены на сельскохозяйственные культуры (рыночный бум +12%, крах -13%, экспорт
возможность +18%, экономический кризис -20% и более)
- Интеграция сезонного стресса урожая: когда многие из ваших полей находятся под угрозой
критический стресс, начинается умеренное повышение цен под давлением предложения.
- Единица времени доставки (реальные дни по сравнению с внутриигровыми днями) теперь единая глобальная.
настройка в ESC > Настройки > Динамика рынка вместо каждого контракта
выбор — существующие контракты не затрагиваются
- Новый HUD контрактов, показывающий ваши активные контракты с первого взгляда.
- Оповещения о событиях переработаны с более чистыми уведомлениями.
- Исправлены контракты, которые некорректно завершались в точках продаж.
- Исправлено некорректное сохранение времени начала доставки при перезагрузке.
- Исправлено предупреждение о шкале времени, которое могло некорректно сработать во время быстрой перемотки вперед.
- Диалоговое окно «Просмотр типов заполнения» для упрощения настройки событий.
- Теперь доступна немедленная доставка по контракту
- Настройки событий правильно синхронизируются в многопользовательском режиме.
Сохраняет: миграция не требуется. Существующие контракты переносятся.
- Добавлен новый HUD при наличии активного контракта.
- Добавлен диалог, который появляется при начале события.
- Добавлены новые строки во все 25 файлов перевода.
- Исправлена проблема, из-за которой заключенные контракты не могли быть выполнены во время разгрузки на станции продажи.
- Добавлены недостающие строки во все файлы перевода.
- Добавлен новый HUD при наличии активного контракта.
- Добавлен диалог, который появляется при начале события.
- Добавлены новые строки во все 25 файлов перевода.
- Добавлены отсутствующие поля DeliveryStartTime и bcManaged в MarketSerializer и сетевую синхронизацию (#64).
— Исправлено смещение крайнего срока BCIntegration для использования DaysPerPeriod (#64).
- Добавлены хуки UPIntegration и исправлены клавиши удаления модификаторов (#64).
- Добавлены резервные копии onLoad и getExtraData для всех событий без сохранения состояния для обеспечения безопасности загрузки (#64).
- Исправлено дублирование приложения TradeDisruptionEvent с дополнительным типом заполнения (#64).
- В MarketDynamics добавлен льготный период начала сеанса, чтобы предотвратить немедленные дефолты контракта при перезапуске сервера (#63, #60).
- Реализован MDMMarketSyncEvent для синхронизации цен сервера и активных событий с клиентами, исправление рассинхронизации (#62).
- Добавлена детерминированная логика выполнения самого старого контракта.
- Зарегистрированы отсутствующие диалоги и добавлена нулевая защита в основных системах.
- Просмотр типов (расширенный) — теперь вы можете добавлять отдельные типы заливки непосредственно к событиям через пользовательский интерфейс браузера.
- Расширена обработка товаров — события теперь поддерживают все типы заливок, а не только культуры.
- Настройки событий многопользовательской игры/выделенного сервера улучшены для большей согласованности и надежности.
- Проблема с завершением контракта, которая может помешать правильному завершению контрактов.
— Создан MDMSettingsSyncEvent.lua: новое сетевое событие, которое управляет синхронизацией всех настроек (переключение цен, частота событий, волатильность, отключенные события и пользовательские типы фруктов) между сервером и всеми подключенными клиентами.
- Синхронизация при присоединении: когда новый игрок присоединяется к серверу, он теперь автоматически получает все текущие настройки с сервера и видит именно то, что видит хост.
- Обновления в режиме реального времени: всякий раз, когда какой-либо игрок (с разрешения) меняет настройку в пользовательском интерфейсе настроек или диалоговых окнах настроек событий, это изменение теперь мгновенно передается на сервер и всем другим клиентам.
- Сохранение на стороне сервера: поскольку сервер теперь получает эти обновления в режиме реального времени, он будет правильно включать ваши пользовательские типы фруктов при следующем сохранении игры.
- Контракты теперь корректно синхронизируются со всеми клиентами на выделенном сервере.
- Исправлен сбой загрузки, вызванный неправильными путями к файлам внутри zip-архива мода.
- Переключатель единиц времени (часы/дни) перемещен в диалог контракта, где он и находится.
— Всплывающее окно ввода контракта изменено и изменено — текстовое поле больше не обрезано.
- Удалена оставшаяся панель настроек, которая вызывала конфликты вкладок в многопользовательской игре.
- Настройки событий теперь находятся в нижнем колонтитуле (рядом с «Новым контрактом»), их легче найти.
- Улучшены все диалоги (должны быть менее шумными)
- 2 новых варианта создания контракта (индивидуальная сумма и произвольные дни)
- Добавлен переключатель единиц времени для выбора между игровыми и реальными днями.
- Переработка команд администратора.
- Исправлено несколько мелких ошибок
Вместо выбора заранее заданных количеств теперь вы можете ввести любое количество (в литрах или единицах измерения), используя новый настраиваемый диалог ввода. То же самое и с окнами доставки — введите любое количество игровых или реальных дней.
[Сохранить путь исправления]
- Файл сохранения больше не создается внутри подпапки в каталоге сохраненной игры. Это устраняет проблему, из-за которой выделенные серверы отклоняли загруженные сохранения. Существующие сохранения из версии 1.1.4.x автоматически переносятся при первой загрузке.
[Расположение кнопок диалогового окна]
- Кнопки предварительной настройки количества в диалоговом окне фьючерсного контракта больше не выходят за пределы границ диалогового окна.
[Диалог пользовательского ввода]
— Текст подсказки в нижней части диалогового окна пользовательского ввода теперь полностью виден (в предыдущем макете он был обрезан).
Полный журнал изменений -> https://github.com/TheCodingDad-TisonK/FS25_MarketDynamics/blob/main/CHANGELOG.md
FS25_FuturesMission обновлен -> https://github.com/Mmtrx/FS25_FuturesMission/releases/tag/v1.1.0.1
Вкладка «Динамика рынка» перезаписывала вкладку «НАСТРОЙКИ СЕРВЕРА» при игре на многопользовательском сервере. Вкладка MDM теперь всегда вставляется после всех существующих вкладок игры (включая вкладку «НАСТРОЙКИ СЕРВЕРА» только для MP) и автоматически восстанавливается, если что-то меняет положение вкладки.
Добавлено 3 новых события!
- ColdSnapEvent.lua — заморозок смешанного направления; зерновые/масличные вверх, кормовые вниз; полное сохранение/загрузка через getExtraData/onLoad
- FinancialPanicEvent.lua — макрошок «черный лебедь»; подавляет все культуры одновременно; редкий пол высокой интенсивности
- ProteinPremiumEvent.lua — тренд спроса на белок; увеличивает урожай сои/канолы и мукомольной пшеницы/ячменя с разной скоростью
- Ключи перевода mdm_event_cold_snap, mdm_event_financial_panic, mdm_event_protein_premium добавлены во все 26 языковых файлов.
- Фьючерсные контракты больше не дефолтируются сразу при первой перезагрузке после подписания.
- Полная многопользовательская поддержка фьючерсных контрактов. Все действия по контракту (создание, завершение, отмена, удаление) теперь отправляются на сервер для принудительного выполнения и синхронизируются со всеми подключенными клиентами.
Это обновление обеспечивает полную интеграцию с FS25_FuturesMission (от Mmtrx), исправляет несколько ошибок контрактов и цен, которые возникли с момента запуска, а также убирает запутанные внутриигровые сообщения, чтобы вы всегда знали, куда идти.
Что нового/исправлено:
• Интеграция FuturesMission — при установке FS25_FuturesMission фьючерсные контракты создаются с помощью потока задач BetterContracts, а MDM автоматически обрабатывает ценовую сторону.
• Миграция сохраненных игр — существующие контракты MDM передаются в FuturesMission без ошибок при первой загрузке; никаких ручных действий не требуется
• Исправлены цены, иногда показывающие 0 долларов на экране рынка.
• Исправлен список контрактов, не реагирующий на клики в некоторых ситуациях.
• Исправлено зависание игры, которое могло произойти при нажатии кнопки «Новый контракт» при активном BetterContracts.
• Исправлены сроки контрактов и таймеры событий, которые рассинхронизировались при длительных игровых сессиях.
• Внутриигровые сообщения теперь правильно называют FS25_FuturesMission и сообщают, где его получить, если у вас его нет.
Перенос сохранений не требуется — существующее сохранение работает как есть.
Фьючерсные контракты теперь правильно отслеживают поставки урожая. Раньше контракты фиксировались на уровне 0% выполнения независимо от того, сколько было поставлено. (PriceHook.lua — используйте fillDelta вместо возвращаемого значения SellFillType, которое не является допустимым количеством литров в FS25.)