Skyrim CK:Формат файлов/QUST
| Этот материал нуждается в переводе или допереводе.. Вы можете помочь перевести его. Не забывайте предварительно добавлять строку {{Edit|--~~~~}} в материалы над которыми работаете, чтобы не создавать конфликта правок. Пожалуйста, снимите шаблон этого сообщения, когда материал будет вычитан. |
QUST - это записи, описывающие квесты. Запись QUST имеет сложную структуру, в которой большинство полей повторяются несколько раз. Порядок, в котором поля следует представляет важную информацию о каждом поле отдельно. Особое значение имеют поля:
- INDX поля. Каждая метка помечает собой начало информации о данной стадии квеста. Последующие поля предоставляют информацию об определенных стадиях квеста.
- QOBJ поля. Каждая метка помечает собой начало информации о цели квеста (которая связана через индекс квеста с информацией из поля INDX).
- ALST и ALLS поля: Каждая метка помечает собой начало информации о связанных с квестом алиасах (alias). Алиасы имеют ID (например, 4), имя (например,
Location) и расчетное значение (например, "Winterhold").
Содержание |
Стандартные поля
Эти поля не являются частью какой-либо из более сложных структур, описанных в последующих разделах.
| C | SubRecord | Название | Тип/Размер | Info |
|---|---|---|---|---|
| + | EDID | editorId | zstring | Editor id |
| - | VMAD | script info | VMAD | |
| - | FULL | fullName | lstring | Полное имя, отображаемое в журнале (по крайней мере для квестов не из раздела "Разное") |
| ? | DNAM | Unknown | struct | Unknown |
| Unknown | int32 | Unknown | ||
| Unknown | int32 | Unknown - always zero so far | ||
| Flags | int32 | Values of 0x01, 0x03, 0x05 and 0x09 so far | ||
| - | ENAM | Event Node? | char[4] | Corresponds with SMEN short name |
| + | FLTR | Filter? | zstring | Такие значения как 'Main Quest\', 'Civil War\', 'Civil War\Siege\', 'Faction\ThievesGuild\' или 'Faction\Companions\Radiant\' |
| * | CTDA | Conditions | struct[32] | Условия, которые применяются к квесту в целом. Обратите внимание, что CTDA поля появляются так же в секциях INDX, QOBJ и ALST/ALLS, но действует там лишь на малую составляющую квеста. |
| * |
|
Variable name? | zstring | Вспомогательные данные для CTDA. |
| + | NEXT | Marker | empty | Always zero bytes in length so far. Appears to mark the end of the QUST header; normally INDX records start to appear immediately after the NEXT field (although sometimes CTDA fields come after NEXT instead of before it). |
| + | ANAM | AliasCount? | int32 | May be the maximum number of Aliases associated with this quest. If so, it implies that the scripting defines more indices that are reflected in the QUST record. (The largest AliasID is never larger than AliasCount in tested cases, but typically several AliasIDs do not appear in ALID fields). ANAM actually appears in between the QOBJ and ALST/ALLS sections, but there is only ever one ANAM field per QUST, and the location of the field may not have any significance. |
INDX Section
Multiple INDX fields can appear in a single QUST record, and 1 or more QSDT fields can appear within each INDX field. The multipliers in the 'C' column in the following table only apply relative to a given INDX/QSDT combination (any of these fields may appear multiple times within an overall QUST record)
| C | SubRecord | Name | Тип/Размер | Info |
|---|---|---|---|---|
| * | INDX | Journal Index | struct | Journal index of the quest stage and other data |
| Index | int16 | Actual journal index of the quest stage | ||
| Flags | int16 | Bits 0x02, 0x100, 0x400, 0x1000, 0x2000 and 0x4000 set so far | ||
| * |
|
ubyte | Flags | Each QSDT field marks the start of one possible set values for this quest stage. Multiple QSDT fields will appear if there are multiple ways to complete this quest stage, and therefore multiple possible journal entries. QSDT contains quest stage flags
|
| - |
|
Journal entry | lstring | Index in the string file for the text of the journal entry. |
| ? |
|
Unknown | struct[25] | Unknown |
| ? |
|
Quest? | formid | QUST formid, however several point to themselves (eg 0x000BA53C) |
| ? |
|
Unknown | string | Unknown |
| * | Conditions | struct[32] | Conditions that apply to this QSDT. | |
| * |
|
Variable name? | zstring | Вспомогательные данные для CTDA. |
QOBJ Section
Multiple QOBJ fields can appear in a single QUST record, and 1 or more QSTA fields can appear within each QOBJ field. The multipliers in the 'C' column in the following table only apply relative to a given QOBJ/QSTA combination (any of these fields may appear multiple times within an overall QUST record)
| C | SubRecord | Name | Тип/Размер | Info |
|---|---|---|---|---|
| * | QOBJ | Index | int16 | Journal index of the quest stage. QOBJ probably stands for "Quest Objective" Same as one of the values in INDX.Index. Indicates that the subsequent fields are relevant to this journal index. In a small number of cases, QOBJ does not have a matching value in INDX.Index. For example in Thane of Falkreath QOBJ is 15, but there is no INDX 15. The quest objective is still displayed in-game, but it cannot be triggered using |
| + |
|
Flags? | int32 | Values often repeat and have flag-looking values like 512 and 130. |
| + |
|
node name? | lstring | Text for an individual quest objective |
| * |
|
Unknown | struct | Unknown. |
| Flags? | int32 | Unknown - almost certainly not a formid like in Oblivion. | ||
| Flags? | int32 | Unknown - either 0 or 1 so far. | ||
| * | Conditions | struct[32] | Conditions that apply to this QSTA. | |
| * |
|
Variable name? | zstring | Вспомогательные данные для CTDA. |
ALST/ALLS Section
Multiple ALST and/or ALLS fields can appear in a single QUST record. Each ALST/ALLS entry provides information about a given Alias (i.e., a dynamically assigned value) that can appear in this quest. Most of the fields that appear in this section appear to be used in order to determine the calculated value for the alias.
ALST and ALLS fields appear largely interchangeable, at least in terms of structure. Both ALST and ALLS fields contain ALID fields, under which are then a wide variety of possible fields. The only difference noted so far between ALST and ALLS fields is that ALST fields only seem to contain a single ALID entry, whereas ALLS fields seem to contain multiple ALID entries. The multipliers in the 'C' column in the following table only apply relative to a given ALST/ALLS/ALID combination (any of these fields may appear multiple times within an overall QUST record)
| C | SubRecord | Name | Тип/Размер | Info |
|---|---|---|---|---|
| * | ALST | Alias Step? | int32 | The AliasID is the numerical value used for this alias. This is the parameter for functions such as LocAliasHasKeyword and GetInCurrentLocAlias.
|
| * | ALLS | All Steps? | int32 | |
| * |
|
AliasName | zstring | The name of this Alias, for example Location or QuestGiver. This name appears in strings that are dynamically updated based upon the quest details, for example Kill the leader of <Alias=Location>. The calculated value of this alias is then substituted into the string.
|
| + |
|
Flags? | int32 | Values often repeat and have flag-looking values like 512 and 130. |
| * | Conditions | struct[32] | Conditions that apply to this ALID. | |
| * |
|
Variable name? | zstring | Вспомогательные данные для CTDA. |
| + |
|
EOF Marker? | empty | Appears to always be the final field in a set of ALID entries. |
| - |
|
Quest target | formid | NPC_ record for the quest giver, if there is a fixed quest giver.
(One other way of setting the quest-giver is using a series of CTDA records in the QuestGiver alias field, using functions such as GetInFaction) |
| ? |
|
Unknown | formid | When non-zero points to NPC_ или FLST records |
| ? |
|
Unknown | int32 | Unknown |
| ? |
|
Unknown | int32 | Unknown |
| ? |
|
Alias Created Object | formid | Points to a base record for an item (NPC_, BOOK, MISC, LVLI, ARMO, KEYM, etc). An instance of that object is then created and assigned to this alias. ALFR, ALRT, and ACLO are mutually exclusive and never used together. |
| ? |
|
Alias Dynamic Name | formid | Points to MESG record, whose value is then dynamically assigned as the name of the Alias object. Used to rename NPCs (e.g., Skyrim:Rigel Strong-Arm), quest rewards (e.g., Blade of Falkreath), or quest targets (e.g., Fine-Cut Void Salts) |
| ? |
|
Unknown | int32 | Unknown |
| ? |
|
Unknown | formid | QUST записи |
| ? |
|
Flags? | int32 | Unknown |
| ? |
|
Unknown | formid | FACT записи |
| ? |
|
Unknown | int32 | Unknown |
| - |
|
Event Node? | char[4] | Corresponds with SMEN short name |
| ? |
|
Unknown | int32 | Unknown |
| ? |
|
Alias Fixed Location | formid | A fixed LCTN record that should be assigned to this alias. Also presumably becomes the default location record for this quest (used by any other alias records that need to look up location-specific items). |
| ? |
|
Alias Fixed Reference | formid | Points to an ACHR or REFR record corresponding to the object that should be assigned to this alias. ALFR, ALRT, and ACLO are mutually exclusive and never used together. |
| ? |
|
Unknown | formid | PACK записи |
| ? |
|
Alias Reference Type | formid | Points to a LCRT record which is used to find the object that should be assigned to this alias. This LCRT is looked up in the LCTN.LCSR field of the quest's assigned location to find a ACHR or REFR record that is then associated with this alias. ALFR, ALRT, and ACLO are mutually exclusive and never used together. |
| ? |
|
Unknown | formid | SPEL записи |
| ? |
|
CNTO count | int32 | Number of CNTO records |
| * |
|
Items | struct[8] | Inventory-type item list. These items are added to the inventory of the aliased object. |
|
formid | |||
|
uint32 | |||
| ? |
|
Unknown | formid | FLST записи |
| ? |
|
Unknown | formid | A single KYWD record |
| ? |
|
KWDA count | uint32 | Number of KWDA entries (size of KWDA is 4*KSIZ) |
| ? |
|
Keywords | formid[KSIZ] | KYWD записи |
| ? |
|
Unknown | int32 | Unknown |
| ? |
|
Unknown | int32 | Unknown |