Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,4 @@ cython_debug/
TEST*
TEST*/

/docs/.vs
50 changes: 50 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"cSpell.words": [
"Аард",
"автосохранение",
"бафф",
"Бьянко",
"взаимоисключают",
"вопроизведения",
"Гвинт",
"дебафф",
"заспавнить",
"Игни",
"Ирден",
"катсцена",
"катсцену",
"катсцены",
"Каэр",
"Квестовые",
"квестовых",
"кооэффициэнт",
"Корво",
"маунтере",
"Морхен",
"прогрузки",
"респаун",
"саундбанки",
"сhunk",
"сomplexity",
"чанки",
"Aard",
"affeted",
"Blackscreen",
"Deact",
"Despawn",
"dont",
"Gwint",
"Igni",
"lxgdark",
"mappin",
"Minigame",
"playgo",
"QMFT",
"QSCSM",
"questeblocks",
"respawn",
"spawnset",
"spawnsets",
"Yrden"
]
}
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.1.4
2.1.5
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 4 additions & 2 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@

***

- 2.1.3 - Добавлены справочнки для [DLC Definition](unnoficial_docs/references/dlc/dlc_definition.md) и [DLC Mounters](unnoficial_docs/references/dlc/dlc_mounters.md)
- 2.1.5 - Добавлен набор статей о квестах:
[1](unnoficial_docs/references/quest/general.md), [2](unnoficial_docs/references/quest/editor.md), [3](unnoficial_docs/references/quest/blocks.md), [4](unnoficial_docs/references/quest/debug.md), [5](unnoficial_docs/references/quest/examples.md), [6](unnoficial_docs/references/quest/conditions_and_functions.md), [7](unnoficial_docs/base/dlc/dlc_mods/dlc_quest.md)
- 2.1.3 - Добавлены справочники для [DLC Definition](unnoficial_docs/references/dlc/dlc_definition.md) и [DLC Mounters](unnoficial_docs/references/dlc/dlc_mounters.md)
- 2.1.0-2.1.3 - Начат [цикл](unnoficial_docs/base/dlc/index.md) пошагового руководства по созданию DLC-модов
- 2.1.0 - Добавдены справочники: [Asset Browser](unnoficial_docs/references/editors/asset_browser.md), [редактор локализуемых строк (Localized Strings Editor)](unnoficial_docs/references/editors/localized_strings_editor.md)
- 2.1.0 - Добавлены справочники: [Asset Browser](unnoficial_docs/references/editors/asset_browser.md), [редактор локализуемых строк (Localized Strings Editor)](unnoficial_docs/references/editors/localized_strings_editor.md)
- 2.0.8 - Добавлена [страница](unnoficial_docs/guides/create_new_hud_medallion.md)
- 2.0.7 - Добавлена [страница](unnoficial_docs/base/loading_screens.md), отредактирована [страница](unnoficial_docs/guides/create_usm_video.md)
- 2.0.6 - Добавлена [страница](unnoficial_docs/guides/create_usm_video.md)
Expand Down
86 changes: 86 additions & 0 deletions docs/unnoficial_docs/base/dlc/dlc_mods/dlc_quest.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
tags:
- dlc
- quest
- reddlc
- w2quest
- w2phase

status: new
---

# Квестовый DLC-мод

Если ваш мод содержит хотя бы минимальное сюжетное взаимодействие с игроком, вам обязательно потребует реализовать свой **DLC-квест**. В отличии от модификации основной игры, квест в DLC запускается одновременно с главным квестом игры и не не может изменять текущий сюжет. Таким образом этот вариант подходит, если вы планируете добавлять новые сюжетные события или крупные DLC сюжеты по типу "Каменные сердца" или "Кровь и Вино".

!!! info "Примечание"
Подробнее о понятии **квеста** и принципе его работы читайте в [соответствующем разделе](../../../references/quest/general.md) справки.

## Создание файла квеста

Перейдите в папку вашего DLC (далее в примере будет использоваться имя dlc77) и создайте папки так, чтобы они образовывали путь **"dlc --> dlc77 --> data --> quests"**. Внутри созданной папки, нажмите правой кнопкой мыши на пустое место и выберите пункт меню **"Create --> Quest"**. В качестве имени файла используйте **"dlc77_quest"**.
![create_dlc_quest.webp](../../../../assets/images/unnoficial_docs/base/dlc/create_dlc_quest.webp)

После того, как вы создадите и откроете файл, вы заметите, что он не содержит вообще никаких блоков. Это нормально, однако в таком виде этот фал бесполезен и даже не будет запущен. Чтобы файл мог выполнятся, нужно добавить стартовый блок.

Для создания стартового блока, нажмите правой кнопкой мыши на пустом месте холста (с серым фоном) и в открывшемся меню выберите **"Complexity management --> Start"**. Сохраните файл через меню **"File --> Save"** или комбинацию клавиш ++ctrl+s++. После этого редактор пока можно закрыть.

## Настройка файла DLC

Для того, чтобы игра узнала о новом файле квеста, который необходимо запустить параллельно с остальными, нам необходимо указать соответствующий [маунтер](../../../references/dlc/dlc_mounters.md) в [определение](../dlc_steps/step_4.md) нашего DLC.

Перейдите в корневую папку вашего DLC и откройте ранее созданный файл **.reddlc**. В открывшемся окне выделите строку **"mounters"** и справа нажмите на зеленую иконку ➕. В результате нажатия появится новая пустая строка строка. Теперь выделите эту строку и нажмите на красный перевернутый треугольник -🔻. В результате откроется окно со списком маунтеров, в котором нужно будет выбрать элемент с названием **"CR4QuestDLCMounter"**. Сделайте двойной щелчок по маунтеру, чтобы добавить его DLC.

Добавленный маунтер содержит четыре свойства, подробнее о которых вы можете посмотреть [здесь](../../../references/dlc/dlc_mounters.md/#cr4questdlcmounter), однако нас сейчас интересует только поле **"quest"**, которое содержит пусть к нашему файлу квеста.

Не закрывая окно **DLC Definition**, прейдите в [Asset Browser](../../../references/editors/asset_browser.md) и вернитесь к нашему файлу **"dlc77_quest"**. Выделите его и переключитесь снова на окно **DLC Definition**. Нажмите на свойство **"quest"** и после на появившуюся справа зеленую стрелочку ⬅. Путь к вашему файлу квест будет задан.
![set_quest_dlc_definition.webp](../../../../assets/images/unnoficial_docs/base/dlc/set_quest_dlc_definition.webp)

Закройте окно редактирования **DLC Definition** и в появившемся запросе на сохранение, нажмите **"Yes"**. Теперь игра знает о вашем файле квеста и будет запускать его при старте игры (как новой, так и из сохранения).

## Структура квеста

Как было описано в [основном материале](../../../references/quest/general.md) о работе квестов, для удобства работы с большой структурой, нам необходимо дробить логики на отдельные фазы (файлы формата **w2phase**). Мало того, если изучить существующие файлы квестов, разработчики стараются и вовсе не размещать никакой логики в самом фале квеста, а старт основных действий запускают с файла фазы, который обычно носит название содержащее слово **"structure" (структура)**. Давайте поступим так же.

Перейдите в папку с файлом квеста и рядом уже с имеющимся файлом создайте файл фазы **w2phase** с именем **"dlc77_structure"** (пункт контекстного меню **"Create --> Phase"**).

!!! info "Примечание"
Вынос логики в фал фазы, а так же имя файла, не является жестким требованием, однако подобный нейминг и разбивка по файлам, позволяет избегать массы проблем в будущем.

После создания файла нам так же требуется указать в нем точку входа, через которую [луч](../../../references/quest/general.md/#_4) квеста попадет внутрь. Откройте файл **"dlc77_structure"** и с помощью контекстного меню **"Complexity management --> In"** добавьте входной блок. Сохраните и закройте файл. Теперь когда фаза создана ее можно добавить в основной файл квеста.

Откройте файл квеста **"dlc77_quest"** и добавьте блок **"Complexity management --> Phase"**. Разместите блок фазы справа от блока **Start** и соедините блоки между собой (как показано в [руководстве](../../../references/quest/editor.md) по редактору квестов).

Теперь выделите блок фазы и слева в списке свойств укажите в свойстве **phase** путь к фалу **"dlc77_structure.w2phase"** (выделив нужный файл в Asset Browser, и нажав зеленую стрелочку в окне нужного свойства).
![add_dlc_quest_structure.webp](../../../../assets/images/unnoficial_docs/base/dlc/add_dlc_quest_structure.webp)

!!! warning "Важно!"
Если вы решите добавить фазу в файл квеста до того как создадите блок **In** внутри фазы, то в блоке фазы у вас не будет точки для входящего соединения. Это связано с тем, что внутри фазы может быть множество разных блоков **In** и от их количества будет зависеть число входящих соединений для блока фазы.

После того как вы добавите блок **In** внутри фазы, вернитесь в квест, нажмите ++пкм++ на блок фазы и в контекстном меню выберите пункт **Rebuild sockets**

Теперь внутри файла фазы **"dlc77_structure"** мы можем описывать структуру нашего квеста (в том числе добавляя новые фазы, формируя любой уровень вложенности).

## Пример квеста

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

Откройте файл **"dlc77_structure.w2phase"** и справа от блока In добавьте блок **"Scripting --> Script"**. Соедините блоки линией и выделите блок **Script**. Слева в окне свойств выберите свойство **functionName** и нажмите на красный треугольник 🔻. В открывшемся окне найдите **DisplayHudMessage**. После выбора скрипта в низу основных свойств блока появится набор свойств, доступных только для этого скрипта. В свойстве **localisedStringKey** укажите **"dlc77_desc"** (значение взято для примера, а вы можете указать любой ключ строки из [Localized Strings Editor](../../../references/editors/localized_strings_editor.md)).

Теперь в REDkit запустите сохраненную игру (или используя шаблон **.redgame**) и при появлении игрока вы увидите ваше сообщение.
![test_dlc_quest.webp](../../../../assets/images/unnoficial_docs/base/dlc/test_dlc_quest.webp)

## Послесловие

Лучший способ научится программировать квесты - это изучение существующих квестов в основной игре и дополнениях, однако эти структуры могут показаться очень большими и сложными для новичков.

Благо на сайте с официальной документацией REDkit, разработчики разместили тестовый мод [Mariska's Wonderland](https://cdprojektred.atlassian.net/wiki/spaces/W3REDkit/pages/28770305/Demo+Mod+Mariska+s+Wonderland), который можно скачать в виде zip-архива и открыть в REDkit. Там вы найдете фал **"mariska_test_quest"**, описывающий короткий сюжет этого мода и позволяющий изучать редактор квестов на более простом примере.

!!! warning "Важно!"
Ни в коем случае не воспринимайте структуру и имена файлов в моде "Mariska's Wonderland" как руководство к действию. Данный мод сделан в ознакомительных целях и не отвечает требованиям к размещению фалов и их именам, но хорошо подходит для изучения написания квестов.

***
Автор: lxgdark

*Документация поддерживается участниками сообщества [REDkit RU](https://discord.gg/kRTEy8KcNa)*
***
11 changes: 6 additions & 5 deletions docs/unnoficial_docs/base/dlc/dlc_steps/step_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,26 @@
tags:
- dlc
- reddlc

status: new

---

# Шаг 1: Определение пространства ID для локализации

## Общие сведения

Перед началом любых действий в рамках мода, нужно обязательно определить пространство ID для локализации.
Так как на игру можно установить более одного мода, а моды DLC с вероятностью в 99% содержат строки, нужно убедится что внутренние ссылки на ID строки не будет конфликтовать между модами.

Для этого существует возможность установить стартовый ID с которого начнутся ваши идентификаторы строк в рамках DLC.

!!! info "Примечание"
Собственные идентификаторы можно начинать с 10 000 000 (десять миллионов), однако не рекомендуется использовать именно это число, так как это наиболее очевидный выбор для других моддеров.
Собственные идентификаторы можно начинать с 10 000 000 (десять миллионов), однако не рекомендуется использовать именно это число, так как это наиболее очевидный выбор для других создателей модов.

В качестве первых цифр мы рекомендуем использовать номер вашего DLC (см следующий шаг), а затем шесть нолей для достижения необходимого размера числа.

Например, если номер вашего DLC 77, пространство ID будет начинаться с 77000000.

## Установка пространства идентификаторов

Для установки пространства идентификаторов перейдите в **_View --> Settings --> Mod Project Settings_** и в поле **Project ID space** задайте стартовый идентификатор.

![id_space.webp](../../../../assets/images/unnoficial_docs/base/dlc/id_space.webp)
Expand All @@ -29,4 +30,4 @@ status: new
Автор: lxgdark

*Документация поддерживается участниками сообщества [REDkit RU](https://discord.gg/kRTEy8KcNa)*
***
***
6 changes: 2 additions & 4 deletions docs/unnoficial_docs/base/dlc/dlc_steps/step_2.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@ tags:
- dlc
- reddlc
- mod_name

status: new

---

# Шаг 2: Имя мода

Имя мода условно можно разделить на две части:

!!! docs "[Внутреннее имя](#_1)"
Это имя вы будете использовать для внедрения в структуру текущей игры.

!!! docs "[Пубдикуемое имя](#_2)"
!!! docs "[Публикуемое имя](#_2)"
То которое вы будет использовать при размещении мода на разных площадках.

## Внутреннее имя
Expand Down
Loading
Loading