Начните вводить название — например, MoreHead, Sodium или PEAK

DDS Script Extensions — иконка
Обложка Shadows of DoubtМод для Shadows of Doubt

DDS Script Extensions

от Piepieonline

Управляемые Lua расширения сценариев для системы DDS для обеспечения динамического написанного текста

  • Редкий
  • 5,9 тыс. скачиваний
  • Версия 1.1.0
  • Обновлён 12 сентября 2026
  • Библиотека

О моде DDS Script Extensions

DDS Script Extensions — мод для Shadows of Doubt (Шэдоус оф Даут) от автора Piepieonline. Управляемые Lua расширения сценариев для системы DDS для обеспечения динамического написанного текста

Его скачали 5,9 тыс. раз: это 49-е место среди модов Shadows of Doubt в нашем каталоге, редкость — «редкий» (топ-50% по скачиваниям). Мод обновлялся в последние полгода, актуальная версия — 1.1.0.

Для работы ему нужны: Asset Bundle Loader, BepInExPack IL2CPP.

Полное описание DDS Script Extensions

Текст автора на языке оригинала

Piepieonline's DDSScriptExtensions

Lua driven script extensions for the DDS system to enable dynamic scripted text. Looks for JSON files named ddsscripts.sod.json in the Bepinex mods directory and subdirectories.

ddsscripts.sod.json Format

This is a subset taken from the default ddsscripts.sod.json file (/DDSContent/ddsscripts.sod.json) that comes with this mod:

{
  "values": {
    "citizen": {
      "selected_random": {
        "seed": "tonumber(inputObject.seed)",
        "script": "return 'Random number is: ' .. math.random(0, 10)"
      },
      "owner": {
        "script": "return 'Current location owner is: ' .. inputObject.currentGameLocation.thisAsAddress.owners[0].citizenName"
      }
    },
    "random": {
      "alpha6": {
        "script": "return string.format('#%06X', math.random(0, 0xFFFFFF))"
      }
    },
    "city": {
      "player_name": {
        "script": "return Player.citizenName"
      }
    },
    "time": {
      "twohourslater": {
        "script": "return SessionData.TimeString(tonumber(CSToString(inputObject)) + 2, true)"
      }
    }
  },
  "scopes": {
    "citizen": {
      "vmail_participant_a": {
        "scope": "citizen",
        "script": "return inputObject.thread.participantA > -1 and CityData.citizenDictionary[inputObject.thread.participantA] or nil"
      }
    }
  }
}
  • At the top level, scripts are split into scopes (contain other scopes and values) and values
  • Each script is placed into an existing scope, which means that the relevent scope object will be passed in as inputObject (So for a letter, it'll have the evidence scope).
  • The next level are keys that will be called from the DDS system, for example:
  • values
  • |writer.custom_selected_random| - Will generate a random number for each civilian, the same each time it is called
  • |writer.custom_selected_random_1| - Will call the above function, but generate a different number with an adjusted seed
  • |writer.custom_owner| - Will show the name of the owner of the current location of the writer
  • |random.custom_alpha6| - Will generate a random 6 digit hex code each time the text is shown
  • |city.custom_player_name| - Will show the player's citizen name
  • |killer.lastmurder.time.custom_twohourslater| - Will show the time (in 24 hour time) 2 hours after the previous murder was committed. Time is represented as a float where the integer component is hours since world start.
  • scopes
  • |customscope_vmail_participant_a.fullname| - Will set the scope to the first participant in the vmail chain, and then get the fullname value (Only valid in a vmail scope, which is based on the citizen scope)

When referencing scope scripts from the DDS system, each needs to be prefixed with 'customscope_'. When referencing value scripts from the DDS system, each needs to be prefixed with 'custom_'. If a numeric postfix is attached, the generated seed will be offset by this number.

  • Instead of an inline script, a value or scope can specify "file": "path/to/script.lua", relative to the directory containing ddsscripts.sod.json
  • _caller is available in every script, and contains the name of the script being run without the custom_/customscope_ prefix
  • _cache is a Lua table available in every script for storing state between calls. It is cleared each time a city is loaded

Debugging

There is a debugging configuration flag to log a lot of information from each script execution. Scripts can also be reloaded at runtime by running DDSScriptExtensions.DDSScriptExtensionsPlugin.ReloadScriptList() in UnityExplorer

Manual Installation

  • Ensure you have BepInEx BE installed
  • Extract the mod to ".\BepInEx\plugins\", so you should have ".\BepInEx\plugins\DDSScriptExtensions\DDSScriptExtensions.dll"

Source:

https://github.com/piepieonline/ShadowsOfDoubtMods/tree/master/DDSScriptExtensions

Нужно для работы

В r2modman ставится автоматически

Моды, которым нужен DDS Script Extensions

2 в каталоге

Hire A Hitman — иконка

Hire A Hitman

Добавляет возможность нанять киллера по телефону, чтобы снять NPC по вашему выбору. Требует, чтобы вы знали их имя и адрес. Можно использовать для опорожнения квартир, чтобы приобрести их на следующий день после того, как дело будет раскрыто.

Редкий5,8 тыс.Cases

Theft Objective Colours — иконка

Theft Objective Colours

Добавляет разнообразие цветов к целям корпоративной кражи в SOD, что позволяет легко отличить их друг от друга. Больше не надо смотреть на стопку одинаковых конвертов и гадать.

Редкий3,3 тыс.Библиотека

Как установить DDS Script Extensions

Файл скачивается с официального сервера Thunderstore, без перезаливов и сторонних установщиков

Подробная инструкция для Shadows of Doubt
  1. Скачайте менеджер модов r2modman (или Gale) и выберите в нём игру Shadows of Doubt.
  2. Создайте профиль — так моды не смешаются с чистой версией игры.
  3. Найдите «DDS Script Extensions» во вкладке Online и нажмите Download — BepInEx и все зависимости подтянутся сами.
  4. Нажмите «Start modded» — игра запустится с модами.
  5. Чтобы сыграть без модов, запустите игру как обычно из Steam — r2modman не трогает чистую версию игры.
Вы автор мода? Поставьте ссылку на русское описание

Вставьте значок в описание на Thunderstore, в README или в Discord — русскоязычные игроки сразу попадут на страницу с переводом и инструкцией.

Описание на русском — Модка
Markdown[![Описание на русском — Модка](https://modka.app/badge.png)](https://modka.app/shadows-of-doubt/piepieonline-dds-script-extensions/)
HTML<a href="https://modka.app/shadows-of-doubt/piepieonline-dds-script-extensions/"><img src="https://modka.app/badge.png" alt="Описание на русском — Модка" height="44"></a>
Steam (BBCode)[url=https://modka.app/shadows-of-doubt/piepieonline-dds-script-extensions/]Описание на русском — Модка[/url]

Частые вопросы о DDS Script Extensions

Как установить DDS Script Extensions?

Скачайте менеджер модов r2modman (или Gale) и выберите в нём игру Shadows of Doubt. Создайте профиль — так моды не смешаются с чистой версией игры. Найдите «DDS Script Extensions» во вкладке Online и нажмите Download — BepInEx и все зависимости подтянутся сами. Нажмите «Start modded» — игра запустится с модами. Чтобы сыграть без модов, запустите игру как обычно из Steam — r2modman не трогает чистую версию игры.

Безопасен ли DDS Script Extensions?

Файл скачивается с официального сервера Thunderstore, куда его загрузил Piepieonline. Мы не перезаливаем и не изменяем моды.

Что нужно для работы DDS Script Extensions?

Установите вместе с ним: Asset Bundle Loader, BepInExPack IL2CPP. В менеджере модов зависимости подтягиваются автоматически.

Когда DDS Script Extensions обновлялся последний раз?

12 сентября 2026, актуальная версия — 1.1.0. Дата берётся с официальной страницы мода при каждом обновлении каталога.

Babbler — иконка

Babbler

Дает NPC слышимые голоса, когда они говорят в Shadows of Doubt.

Эпический40,8 тыс.ИИ

Guns — иконка

Guns

Внедрение пистолетов-стрелков в игру.

Эпический40,7 тыс.

RealEstateCruncherApp — иконка

RealEstateCruncherApp

Добавляет новое приложение в хрусталь мэрии, в котором перечислены все доступные объекты недвижимости для продажи и позволяет купить их.

Эпический38,5 тыс.

DensityMod — иконка

DensityMod

Этот мод позволяет изменять более продвинутые настройки поколения города.

Эпический37,7 тыс.City Generation

SODLifeAndLiving — иконка

SODLifeAndLiving

Добавьте гораздо больше погружения в образ жизни детектива в городе

Эпический37 тыс.Патчи

SODStockMarket — иконка

SODStockMarket

Добавляет в игру полноценный фондовый рынок.

Эпический36 тыс.Патчи