Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с 2da таблицами
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset > Custom Content
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
defolt
QUOTE (K.SpecTr @ Jun 19 2005, 00:36)
Может я чуть ошибаюсь, но я не нашел другого применения. А искал.


Вот и я о том же, не цепляются эти дурацкие таблички с реализацией. black eye.gif Забьем на них, есть много более интересных вещей.

Kalian Чем тебе существующих не хватает??? их, извините меня за выражение, их там хоть жопой жуй!
Kalian
Так что же, добавить какое-нибудь новое свойство нельзя?
defolt
Такс вот тебе инфа:

Item Property Definitions:.

Таблица itempropdef.2da определяет доступные свойства итемов, которые могут быть добавлены в PropertiesList итема.

Столбцы itempropdefs.2da

CODE
Столбец:Name
Тип: Integer
Описание: StrRef на имя свойства итема, например, "Enhancement Bonus"

Cтолбец: Label
Тип: String
Описание: программная метка

Столбец: SubTypeResRef
Тип: String
Описание: ResRef на подтаблицу (Sub Type 2da)

Столбец: Cost
Тип: Float
Описание: используется при подсчете стоимости


Столбец: CostTableResRef
Тип: Integer
Описание: индекс в iprp_costtable.2da


Столбец: Param1ResRef
Тип: Integer
Описание: **** для свойств, которые не имеют параметров, или для тех, параметры которых определены в подтаблице. В других случаях- индекс в iprp_paramtable.2da


Столбец: GameStrRef
Тип: Integer
Описание: StrRef на имя свойства, являющееся частью какой-либо строки, например, "Enhancement Bonus:"


Столбец: Description
Тип: Integer
Описание: StrRef на описание свойства итема.

Добавлено в 02:09
продолжение следует...
если где ошибся -пишите.
Добавлено в 03:30
Так эту часть следовало бы пустить до предыдущего описания, но уж извиняйте.

ItemProperty Fields
Эта инфа непосредственно о том, какая информация о свойствах предмета хранится в файле итема.
Каждый элемент ItemProperty в списке свойств итема (PropertiesList) содержит поля, описание которых
дано ниже.

CODE

Имя: ChanceAppear
Тип:BYTE
Описание:Устаревшее. Всегда имеет значение равное 100.

Имя: CostTable
Тип: BYTE
Описание: Индекс в iprp_costtable.2da. Эквивалентен значению в столбце CostTableResRef строке
определенной полем PropertyName. Должен быть определен в обязательном порядке.

Имя: CostValue
Тип: WORD
Описание: Индекс в таблице стоимости. ResRef этой таблицы стоимости - это значение в столбце Name
таблицы iprp_costtable.2da, в строке определенной в поле CostTable. Должен быть определен в
обязательном порядке.

Имя: Param1
Тип: BYTE
Описание: Индекс в iprp_paramtable.2da. Определяет таблицу параметров. Его значение равно -1, если
параметров нет. Существует два способа определения отсутствия параметров в зависимости от того,
содержит ли структура ItemProperty ненулевое поле SubType или нет.
Если SubType присутствует: параметров нет, если столбец Param1ResRef в таблице подтипов
отсутствует (см. описание поля SubType) или если в столбце  Param1ResRef  строки, определенной
полем SubType, стоит ****.
Если SubType отсутствует: параметры отсутствуют если в таблице itempropdef.2da в столбце
Param1ResRef  строки, определенной полем PropertyName, стоит ****.

Имя: Param1Value
Тип: BYTE
Описание: Индекс в таблице параметров. ResRef на эту таблицу определяется значением в столбце
TableResRef строки, определенной полем Param1, таблицы iprp_paramtable.2da. Если данное
ItemProperty не имеет таблицу параметров, то значение этого поля равно 0.

Имя: Param2
Тип: BYTE
Описание: Устаревшее.Одинаков с Param1.

Имя: Param2Value
Тип:BYTE
Описание:Устаревшее. Одинаков с Param1.

Имя: PropertyName
Тип: WORD
Описание: Индекс в itempropdefs.2da. Должен быть определен в обязательном порядке.

Имя: SubType
Тип: WORD
Описание: Индекс в таблице подтипов свойств. ResRef на эту таблицу определяется значением в
столбце SubTypeResRef  строки, определенной полем PropertyName, в таблице itempropdefs.2da. Равен
нулю если SubTypeResRef отсутствует.


ВСЕМ ДУМАТЬ ПО ЭТОМУ ПОВОДУ, и тебе ,Kalian, в первую очередь!!!!!
crazy.gif crazy.gif crazy.gif
Добавлено в [mergetime]1119141577[/mergetime]
кстати там еще куча всякой лажи по этому поводу, и если нужно я переведу...
так мне продолжать?
K.SpecTr
QUOTE (defolt @ Jun 19 2005, 02:08)
ВСЕМ ДУМАТЬ ПО ЭТОМУ ПОВОДУ

QUOTE (defolt @ Jun 19 2005, 02:08)
кстати там еще куча всякой лажи по этому поводу

Где там? Ссылку давай. this.gif
А я подумаю, совать это в мануал или нет. lol.gif
defolt
QUOTE (K.SpecTr @ Jun 19 2005, 11:17)
Где там? Ссылку давай.


хм..ссылку на этот ресурс я уже давал, и в этой теме, но на нее дружно все забили - у нее единственный недостаток- вся инфа на английском.
ссылку ищите на этой странице.
K.SpecTr
Ага, ложил, но я хочу конкретную, к именно этим докам.
Т.е. не http://nwn.bioware.com/developers/#resources, а глубжее.
Мне с телефоном там рыться не с руки.

lol.gif
Нам английский не по чем -
Врежем в морду кирпичем!
Вмиг по нашему запляшут,
Все что надо нам расскажут.

lol.gif
defolt
QUOTE (K.SpecTr @ Jun 19 2005, 13:24)
Ага, ложил, но я хочу конкретную, к именно этим докам.


Ух, хумы вообще оборзели! biggrin.gif

Значит так, основы вот тут, но в остальных доках тоже много всего интересного:

инфа по итемам- инва по 2да на стр. 14-23
инфа по плейсам и дверям- инфа по 2 да на стр. хз знает какой- оглавления нету.
инфа по кричам- инфа по 2да на стр. 28-43

Kalian
QUOTE (defolt @ Jun 19 2005, 02:08)
ItemProperty Fields
Эта инфа непосредственно о том, какая информация о свойствах предмета хранится в файле итема.
Каждый элемент ItemProperty в списке свойств итема (PropertiesList) содержит поля, описание которых
дано ниже.


Только я че-то не понял из какого это файла?
defolt
QUOTE (Kalian @ Jun 19 2005, 20:22)
Только я че-то не понял из какого это файла?


Да это в принципе не важно, я просто акцентировал внимание именно какая иформация о его свойствах прикрепляется к итему.

Я думаю, что эта инфа содержится и в UTI файле (определяет итем в палитре тулсета// если я ошибся с расширением исправьте), и в файле BIC персонажа в структуре, определяющей содержимое его инвентаря и тому подобное...Эти структуры можно редактировать при помощи GFF- редактора. А вообще все эти структурки автаматом создаются в тулсете, поэтому не следует извращаться с их редактированием. crazy.gif

GFF (Generic File Format)- расширение файлов, которое используется биотварями для хранения инфы.
По сути дела все типы файлов BIC, UTI, UTD, UTP, ARE , GIC, GIT (но не HAK и ERF) принадлежат к этому формату.

Если тебя не пугает английский, то качая инфу по ссылки из последнего поста K.SpecTrа, там про все это подробно расписано+ там еще куча инфы по 2да.
Kalian
У меня еще вопрос...
Можно ли где-нибудь настроить кол-во восстанавливаемых ХП при отдыхе? Ну чтобы не полностью восстанавливалось, а частично? Или это движковое?
Спасибо заранее.
balrog
Kalian Это помоему движковое. Можно скриптами прерывать отдых через пару секунд от его начала. Но тогда надо както восстонавливать заклинания и т.п.
dumbo
не прерывать отдых, а в конце отдыха делать дамаг, как везде и сделано.
Sharklike
Есть у кого либо реальный опыт создания кастерского класса? Конкретно интересует занесение его в spells.2da.

Возможно ли создать пассивный фит?
SadoMazaXist
Всем доброго времени суток!
_____________________________
Сделал я класс, все по посту в этой ветке...почти у меня нет некоторых колонок в 2дашке...(PreReqTable)
у меня нет таких 2да вообще даже:CLS_PRES_***.2da
У меня WinXp+NWN HOTU1.65...
Я предполагаю, что из-за данных недостатков мой класс нельзя выбрать при создании перса...
balrog
SadoMazaXist Качай с ваулта НВН Эксплорер, открывай ресурсы.... ХотУ экспеншион пак, там первая ветка, там ГеймДата(2да тобишь), там будут ВСЕ 2да
K.SpecTr
QUOTE (Sharklike @ Jul 5 2005, 18:47)
Есть у кого либо реальный опыт создания кастерского класса? Конкретно интересует занесение его в spells.2da.

Сие есть невозможно. Сделать кастерский класс, который бы не был престижем нельзя. Ограничение движка не дает возможности добавить столбец другого класса в spells.2da (точнее добавить то можно, но нельзя прописать его соответствие конкретному классу, т.е. пока только те что есть и все). Проблема даже в том, что дать уже существующий для нового класса тоже не получается.
P.S. Есть теория, что где-то в скриптах можно это ограничение обойти, но на практике не видел ни разу.
QUOTE (SadoMazaXist @ Jul 6 2005, 00:26)
Сделал я класс, все по посту в этой ветке...почти у меня нет некоторых колонок в 2дашке...(PreReqTable)
у меня нет таких 2да вообще даже:CLS_PRES_***.2da
У меня WinXp+NWN HOTU1.65...
Я предполагаю, что из-за данных недостатков мой класс нельзя выбрать при создании перса...

При создании персонажа ни престижные, ни кустомные базовые выбрать нельзя, даже если все требования выполнены. Можно только если использовать внешний редактор (типа PRC-шного).
Отсутствие таблиц требований может сказаться только при выборе класса на повышении, а для своего класса CLS_PRES_***.2da нужно создавать самому, а не искать среди стандартных.
Sharklike
QUOTE (K.SpecTr @ Jul 14 2005, 09:53)
Сделать кастерский класс, который бы не был престижем нельзя.

Т.е. ты хочешь сказать, что кастерский класс можно добавить престиж-классом?
И у него будет стандартная сетка заклинаний, а не спеллайк абилити?
K.SpecTr
И у него будет стандартная сетка заклинаний базового класса, к которому он престиж. this.gif
Создать новую не выйдет, в spells.2da они определены только для следующего (что, думаю, вы заметили уже):
CODE
Bard   Cleric   Druid   Paladin   Ranger   Wiz_Sorc
Kalian
Товарищи, можно ли как-нибудь сделать, чтоб при нажатии на кнопку отдыха не появлялась надпись "Отдых", а при отмене отдыха не появлялась, соответственно, надпись "Отдых отменен"?

PS Или может кто знает, откуда игра ссылается на эти строчки в dialog.tlk ?

Опять же заранее спасибо. )
dumbo
Kalian
просто затри эти строки в dialog.tlk любым tlk-editor'ом. индексы строк - 7952, 7957.
QUOTE (Kalian @ Jul 30 2005, 14:52)
PS Или может кто знает, откуда игра ссылается на эти строчки в dialog.tlk ?

знаем - из nwmain.exe. но это тебе ни к чему. wink.gif
Kalian
QUOTE (dumbo @ Jul 31 2005, 05:17)
просто затри эти строки в dialog.tlk любым tlk-editor'ом. индексы строк - 7952, 7957.
Ну это-то понятно. ) А так чтоб не трогать dialog.tlk?
dumbo
Kalian, я не зря упомянул nwmain.exe: надписи реста - это движковое и, насколько я знаю, никак не конфигурится.
Valleo
Странно, а почему в "русской" версии НВН там пишется "Начало отдыха" и "Конец отдыха"??? pardon.gif
dumbo
Valleo, зри в корень. а точнее - предыдущий мой пост. wink.gif
под "движковым" подразумевалось само появление этих надписей.
Valleo
А, ты про это. Ну убрать тогда толдько из диалог.тлк их можно... Только зачем? Вот я не понимаю pardon.gif
Exectrix
Всем большое приветствие.

Вопрос: Где можно снять ограничение на уровень? Ну или поднять планку до 200'го...

Спаасибо...
Dik Morris
Не совсем понял твой вопрос. unsure.gif Видимо ты хочешь прокачатся дальше 40 уровня? Хочу, тебя обидеть, это НЕВОЗМОЖНО.
Wizard Red Rise
Привет, А как прокачаться до 40 левела.. у меня в ПЛ 20-максимальный... но ПЛ оговорено про Эпический класс...где 40 возможен... помогите! aggressive.gif
K.SpecTr
QUOTE (Dik Morris @ Aug 17 2005, 06:19)
Хочу, тебя обидеть, это НЕВОЗМОЖНО.

Это НЕ невозможно, но потребует уймы труда по переписыванию всех таблиц. Маленьким хачным методом можно заменить число 40 на любое другое, но без поддержки в данных игры, это ничего не даст, точнее даст глюк.
swoon.gif Только основной вопрос, а зачем такой уровень нужен?
По правилам D&D даже прогресс слотов заклинаний не повышается после 20-ого, в NWN:HotU на него забили ради манчей.
Проще уж сделать +1000НР на первом уровне, и фитов побольше. crazy.gif
Vhall
Мне необходимо добавить +2 к Bluff и Intimidate пассивным фитом. Как это сделать?
-fenix-
В 2da я полный ноль, но вещь эта полезная и поэтому хочу разобраться. И так, ламерские вопросы:
1) Зачем вообще нужны 2da, что они делают. То есть, что с помощью них делают - это понятно, а вот как ОНИ это делают? Ну скажем, при создании скрипта, ты описываешь что в скрипте задействованно и дальше пишешь команды, которые они будут выполнять? Вот какую-нить аналогию с 2da можно провести.(не знаю объяснил ли, что хочу или нет dntknw.gif )
2) Как взаимодействуют tlk и 2da?
3) Где найти 2da, ни в одной папке не нашел?

Пока вроде все. Мне бы главное принцып понять и тогда дело пойдет(темку скачал). Можно кое что сделать читая описание в этой теме, но делать что-то бездумно и не понимая как это делается я не хочу.
Ghost
QUOTE (-fenix- @ Sep 18 2005, 22:10)
Где найти 2da, ни в одной папке не нашел?

(если стоят СоУ и НотУ) Файлы XP1 и XP2. Открываются с помощью Bif Unpacker'a (я пользуюсь им, хотя могут быть и другие проги) .
QUOTE (-fenix- @ Sep 18 2005, 22:10)
2) Как взаимодействуют tlk и 2da?

В 2да прописывается ID строк с описанием (чего либо) в ТЛК файле.
Vhall

QUOTE (-fenix- @ Sep 18 2005, 22:10)
1)

Сами по себе они ничего не делают. Это просто текст. Движок ссылается на них для получения необходимых данных в определенных ситуациях.
QUOTE (-fenix- @ Sep 18 2005, 22:10)
2)

2da берет текстовые строки из tlk
QUOTE (-fenix- @ Sep 18 2005, 22:10)
3)

Есть папочка в корневухе – source, но это фуфло – там не все. Качай nwnexplorer и ищи их в категориях Game Data

-fenix-
QUOTE (Vhall @ Sep 18 2005, 22:35)
Есть папочка в корневухе – source,

Нету такой black eye.gif

QUOTE (Vhall @ Sep 18 2005, 22:35)
2da берет текстовые строки из tlk

Тоесть каждому 2da соответствует tlk из которого берутся все строки, скажем описание класса, фита... А как они связываются?

QUOTE (Vhall @ Sep 18 2005, 22:35)
Сами по себе они ничего не делают. Это просто текст. Движок ссылается на них для получения необходимых данных в определенных ситуациях.

Тобишь те же скрипты но работающие на прямую с движком.

QUOTE (Lex Jan 4 2005 @ 20:53)

Было бы ОЧЕНЬ здорово.
Наверное в тутор надо все таблицы разобрать (каждый столб что значит) и примеры.
Чем больше, тем лучше. В идеале для каждой таблицы пример кастомной строки.
Так намного легче изучать.

Тутора еще не написали?
Добавлено в [mergetime]1127071058[/mergetime]
Гы нашел описание 2da в tlkedit_v2.05, то что надо на первых порах, почему его тут не написали?
Ghost
QUOTE (-fenix- @ Sep 18 2005, 23:03)
Тоесть каждому 2da соответствует tlk из которого берутся все строки, скажем описание класса, фита... А как они связываются?

Нет... не каждому 2да, а каждопу пункту в нем..
Neverwinter Script Source
LABEL                                          FEAT     DESCRIPTION          
0  Alertness                                      289       290

Вот отрывок! первой строчки из Feat.2da
Цифры это номера строк в ТЛК файле. Тоесть по номером 289 будет написано само название фита, а под 290 описание этого фита... smile.gif . Надеюсь объясняю понятно...
Vhall
QUOTE (-fenix- @ Sep 18 2005, 23:03)
Нету такой black eye.gif

Плюнь на нее. nwnexplorer rulzz
QUOTE (-fenix- @ Sep 18 2005, 23:03)
Тоесть каждому 2da соответствует tlk из которого берутся все строки, скажем описание класса, фита... А как они связываются?

В соответствующем поле 2da'шки указывается строка (StrRef) в dialog.tlk или <customtlk>.tlk, как уже показал Ghost
QUOTE (-fenix- @ Sep 18 2005, 23:03)
Тобишь те же скрипты но работающие на прямую с движком.

В корне не верно
QUOTE (-fenix- @ Sep 18 2005, 23:03)
Тутора еще не написали?

Как видишь...
QUOTE (-fenix- @ Sep 18 2005, 23:03)
Гы нашел описание 2da в tlkedit_v2.05, то что надо на первых порах, почему его тут не написали?

Не нашли\нет времени\плевать. Что хоть там? Выкладывай давай
Добавлено в [mergetime]1127081314[/mergetime]
http://droaam.nm.ru/images/2da&tlk.jpg
Клемент Астилон
Хех, Вал дай ссылку на твой Балдурс Легаси smile.gif Удобный редактор вроде.

Туторил вроде была такая идея, только вроде самое интересное где-то было разобрано одним усидцивым парнем. Вот не помню где точно, зайте поиск.
Vhall
Да не вроде, а точно удобный biggrin.gif
http://www.wrg.ru/files/?cr=./toolset
-fenix-
QUOTE (Vhall @ Sep 19 2005, 01:38)
Не нашли\нет времени\плевать. Что хоть там? Выкладывай давай


QUOTE

BioWare Движок Аврора
Формат файла 2DA

1. Введение
2da файл представляет собой чисто текстовый файл, описывающий 2-х мерный массив данных.
В играх BioWare, 2da файлы используются для различных целей, часто как ключевые элементы правильного функционирования игры и утилит. Они описывают многие аспекты правил иигрового движка.
Хотя 2da файлы являются простыми текстовыми файлами. Они структурированы в соответствии с установленными правилами, которых необходио придерживаться в дальнейшем для того, чтобы игра и утилиты читали 2da файлы корректно.
2. Основные Понятия
Основное тело 2da файла представляет собой таблицу, содержащуюю строки и столбцы данных. Каждый индивидуальный элемент данных имеет свои координаты по строкам/столбцам и называется компонентом. Данными может быть текст, целое число или число с плавающей точкой

Рассмотрим следующий пример контента 2da файла:
CODE

2DA V2.0

   LABEL         STRREF STRING          HasLegs  Pesonal_Space
0   Chicken       2013   Chicken         1        0.13
1   ****          ****   ****            ****     ****
2   Battle_Horror 1996   "Battle Horror" 0        0.3
3   Bear_Polar      1999  "Polar Bear"    1     0.6
4   Deer          2017   Deer            1        0.6


QUOTE

Этот пример иллюстрирует некоторые понятия, описанные до этого

Пространство, разделяющее столбцы
Каждый столбец разделен одним или несколькими пробелами. Точное число пробелов не имеет значения, сколько угодно, необходим по крайне мере один пробел. Столбцы можно точно не выравнивать, как показано в линии 3 примера выше.
Важно: не используйте символы табуляции для разделения столбцов.

Первый столбец
Первый столбец всегда содержит номер строки, первая строка нумеруется как 0, и все последующие строки увеличивают значение с этого.
Первый столбец единственный из всех не имеет заголовка.
Отметьте, что нумерация строк с помощью первого столбца нужна для удобства изучения или редактирования 2da файла. Игра и утилиты автоматически отслеживают индекс каждой строки, так что если строки пронумерована некорректно, игра или утилита все равно будет использовать верный номер в качестве индекса строки. Однако, хорошей привычкой может стать проверка правильности нумерации строк, избавляющаяя от путаницы.

Имена столбцов
Все столбцы после первого должны иметь заголовок. Заголовок может содержать символы различного регистра и подчеркивания.
Типы данных
В 2da файле используется три типа данных. Все данные в пределах одного столбца должны быть однотипны. Используются следующие типы данных:

• Строка: строка может состоять из произвольной последовательности символов. Однако, если строка содержит пробелы, то она должна быть заключена в символы разделения (") потому, что иначе, текст после пробела будет отнесен к следующему столбцу. Сама строка не должна содержать символов разделения.
• Целое: целое может быть максимум 32-разрядным, хотя приложение, считывающее это целое может в действительности принять значение меньшим размером. Например, булевое значение сохраняется в 2da как целое, таким образом столбец для него должен содержать только 0 или 1.
• Дробное: 32-разрядное значение с плавающей точкой.
Формат 2da не включает информацию о типе данных для каждого столбца потому, что приложению, считывающему данные из 2da, должно быть известно, какой тип данных соответствует тому или иному столбцу.

Пустые (****) ячейки
Специальная последовательность из символа **** указывает что компонент не содержит данных, или его значение не может быть использовано. Отметьте, что эта последовательность содержит точно 4 символа звездочки, ни больше, ни меньше.
Если нужно удалить строку из 2da файла, то все столбцы в этой строке должны быть заполнены последовательностями ****.
Значение **** также используется для указания "N/A" (не доступно).
При попытке чтения Строки с компонента **** , должна возвращаться пустая строка (""). При попытке чтения Целого или Дробного должен возвращаться 0. При программировании функций, выполняющих операции чтения, указывайте, когда попытка чтения завершилась неудачей, чтобы приложение знало, что компонетн не является простой пустой строкой "" или 0.

StrRefs
Одно из типичных применений Целочисленных столбцов это сохранение StringRefs (или StrRefs). StrRef представляет собой индекс в пользовательском файле dialog.tlk, который содержит строки диалогов. Когда 2da файл включает информацию, относязуюся к тексту, который должен быть отображен пользователю, этот текст не внедряется прямо в 2da файл. Вместо этого, 2da содержит ссылки StrRef для этого текста.
Использование StrRefs в 2da позволяет для всех языков использовать одну копию 2da файла. Вместо проведения многих тысяч изменений 2da для каждого языка, нужно только изменить один файл - dialog.tlk.

3. Разметка Файла
Линия 1 – версия формата файла

Первая линия 2da файла после указания типа, описывает версию 2da формата. Заголовок текущей версии выглядит следующим образом:
2DA V2.0

Линия 2 – по умолчанию пустая или опциональная
Вторая линия 2da файла обычно пустая.
Опционально, в этой строке может быть указано значение по умолчанию для всех компонент в файле. Шаблон имеет следующий вид:
DEFAULT: <text>
где <text> представляет собой значение по умолчанию, которое следует использовать. Отметьте, что текст значения по умолчанию подчиняется тем же правилам о пробелах, что любой другой столбец в 2da. Строка, содержащая пробелы, должна быть заключена в символы разделения.
Значение по умолчанию будет возвращено, когда запрошенная строка и столбец не имеют данных, а также  при запросе данных из несуществующей строки. Для запрошенной Строки, текст по умолчанию возвращается в виде строкового значения. Для целочисленных или дробных запросов, значение по умолчанию будет преобразовано Целочисленное или Дробное значение, в зависимости от прочих условий. Если строка значения по умолчанию не может быть преобразована в числовой тип данных, то будет возвращено значение 0. Программная функция, считывающая 2da компонент, должна информировать о  неудачном  чтении.
Значение по умолчанию не вовращается, когда запрашивается компонент ****. Для компонента, содержащего **** будет возвращена пустая строка или ноль.

Линия 3 – имена столбцов
Третья линия 2da файла содержит имена для каждого столбца. Имя каждого столбца отделено от других одним или более пробелами. Точное количество пробелов не имеет значения, сколько угодно, но по крайне мере один.
Имя столбца содержит буквенно-цифровые символы или подчеркивания и может начинаться с любого из них (т.е. первый символ не ограничен только буквой).

Линия 4 для определения – строка данных
Все линии начиная с 4 являются строками данных.
Каждый столбец в строке отделен от других столбцов одним или несколькими пробелами. При просмотре 2da контента с использованием шрифта фиксированной ширины, столбцы в  каждой строке визуально не совпадают со столбцами в других строках, но для упрощения восприятия лучше делать, чтобы совпадали.
Самый первый столбец в строке это индекс строки. Первая строка данных (линия 4) имеет индекс 0, вторая строка данных (линия 5) имеет индекс 1, и так далее.
Каждая строка должна содержать точно столько столбцов, сколько именованных столбцов содержится в линии 3, и еще один (так как индекс столбца без имени).
Если данные в ячейке столбца являются строкой, содержащей пробелы, то необходимо наличие символа разделения (двойная кавычка) в начале и в конце этих данных. В противном случае, текст после пробела будет отнесен к следующему столбцу. Строковый копонетнт 2da может вообще не содежать символов разделения.

4. Проверка
После того, как 2da файл был создан и его поддержка была добавлена в игру и/или утилиты, часто бывает необходимо изменять этот файл. Следующие правила обеспечивают безопасное внесение изменений.

Столбцы
Приложения могут ссылаться на столбцы через позицию (столбец 0, столбец 1, и т.д.) или по имени. Во избежании ошибок кода, зависимого от позиции столбца, пользуйтесь следующими правилами:
• Всегда добавляйте столбец после самого последнего столбца.
• Никогда не вставляйте столбец между двумя существующими или первым.
• Никогда не удаляйте столбец из 2da файла.
• Никогда не переименовывайте столбец.
• При добавлении столбца, убедитесь, что все строки содержат данные для нового столбца.

Строки
Многие свойства игровых объектов являются целочисленными значениями и сохраняться в виде обычных 2da файлов. Следовательно, позаботьтесь при изменении строк данных в 2da о том, чтобы  как можно меньшее число данных было затронуто изменениями.
Всегда добавляйте строки в самый конец файла.
Никогда не вставляйте строку между двумя существующими строками.
Никогда не удаляйте строку. Если требуется удалить данные в строке, просто замените все ненужные компоненты символами ****. Убедитесь, что действительно нет реальных данных в 2da или по крайне мере, ссылок на отмеченную строку.
-fenix-
Ну так как вам? Я еще и про tlk нашел. Их бы на сайт выложить или в отдельную темку, помоему для человека ни разу в глаза не видавшему 2da и tlk(как я) это просто спасение. И вы от многих совсем ламерских вопросов освободитесь smile.gif

QUOTE



BioWare Движок Аврора
Формат Файла Таблицы Диалогов (dialog.tlk)




1. Введение
Игры BioWare's изданы на различных языках, поэтому и иговой текст необходим различный, в зависимости от языка пользователя.
Файл таблицы диалогов называется dialog.tlk (dialogf.tlk содержаит строки для женских персонажей) и содержит все строки, отображаемые игрой перед пользователем и поэтому требует перевода. Хранение всех отображаемых пользователю строк в таблице диалогов упрощает процедуру создания разноязычных версий игры, т.к. все остальные игровые данные (за исключением файлов озвучки) могут оставаться одними и теми же. Использование таблицы диалогов также помогает уменьшить требуемый объем дискового пространства для игры, т.к. содержит текст только для одного языка.

1.1. Соглашения
Это документ, описывающий файловые форматы. Во всех файловых форматах, описываемых здесь, упорядочивание байт происходит от младшего, также как в формате, используемом в процесорах Intel. Если значение больше, чем 1 байт, то младший значимый байт будет первым, а старший - последним.
Например, число 258 (0x0102 в шестнадцатиричной системе) выражается как 4-х байтовое целое и в файле будет записано следующей последовательностью байтов: 0x02, 0x01, 0x00, 0x00.
Следующие термины используются в документе для ссылки на типы числовых данных:
• WORD: 16-бит (2-байта) беззнаковое целое
• DWORD: 32-бита (4-байта) беззнаковое целое
• FLOAT: 32-бита с плавающей точкой, значение в формате IEEE Std 754-1985.

2. Строковая Ссылка StringRefs

2.1. Выборка Строки с помощью строковой ссылки StringRef
Когда игре или редактору (toolset) требуется отобразить языкозависимую строку, происходит обращение к строке в таблице диалогов через Строковую Ссылку  (String Reference) (сокращенно StringRef или StrRef), являющуюся уникальным идентификатором (ID), однозначно указывающим соответствующую строку в таблице. Идентификатор (ID) неизменен для версий игры различных языков, а соответствующий ему текст зависит от языка пользователя. Текст, содержащийся в таблице диалогов варьируется в зависимости от языка.

2.2. Описание StringRef
StrRef является 32-битным беззнаковым целым, которое служит как указатель на  табличную строку, размещенную в таблице диалогов.
Для обозначения неверной StrRef, в системе таблицы диалогов используется StrRef в которой все биты равны 1 (т.е., 4294967295 или 0xFFFFFFFF, как наибольшее 32-битное беззнаковое значение, или -1, сли это было знаковое 32-битное значение). При появлении StrRef с неверным значением, возвращаемый текст должен быть пустой строкой.
Верным считается значение StrRefs до 0x00FFFFFF или 16777215. Любое большее значение будет иметь 2 старших байта, которые примут нулевое значение, так, например, 0x01000001 или 16777217, будет представлено как StrRef, равная 1.
Если говорить точно, то 2 старших байта из StrRef могут нести особое значение. Смотрите Раздел 2.4 для пояснения.
В API, который взаимодействует с таблицей диалогов, функция, извлекающая текст по StrRef, должна возвращать булевое значение, как в случае, если StrRef была найдена в таблице диалогов, так и в противном случае. Произойдет обращение к приложению решить, как обработать ошибку. Это может быть сообщение об ошибке для пользователя или автоматическое использование пустой строки.

2.3. Обозначение Пола (Gender)
Для языков, отличных от английского, где разговорный или другой текст отличается  в зависимости от пола говорящего или слушающего, используют два файла с таблицей диалогов, dialog.tlk и dialogf.tlk. Оба tlk файла содержат идентичный между собой текст по всем StrRefs в игре. Однако, при появлении StrRef, указывающей на текст, имеющий два различных варианта в зависимости от пола персонажа игрока, то используется dialog.tlk для мужской формы текста или dialogf.tlk для женской формы текста.

2.4. Альтернативные Таблицы Диалогов (Alternate Talk Tables)
В модуле может быть указано, что используется альтернативная таблица диалогов, отличная от таблицы dialog.tlk.
Если модуль использует альтернативную таблицу диалогов, то используется бит 0x01000000 для использования StrRef указывающий, когда StrRef ссылается на обычный dialog.tlk, а когда - на альтернативный tlk файл. Если этот бит выставлен в 0, то StrRef ссылается как обычно на dialog.tlk. Если этот бит выставлен в 1, то StrRef ссылается на альтернативную таблицу диалогов.
Если альтернативного tlk файла не существует, или он не может быть загружен, или в нем нет запрошенной StrRef, то StrRef будет ссылаться как обычно, - на файл dialog.tlk.
Например: StrRef 0x00000005 указывает на StrRef 5 в dialog.tlk, а 0x01000005 является ссылкой StrRef 5 в альтернативном tlk файле. Если альтернативная  ссылка StrRef 5 не может быть получена, то используется обычная сылка StrRef 5.
Имя и расположение файла альтернативной таблицы диалогов не описываются форматом TLK файла. Однако, если требуется женская таблица диалогов, то соответсвующая ей версия файла альтернативной таблицы диалогов должна быть размещена в той же дирректории, что и мужская/нейтральная версия.
Например: Если неанглийский модуль использует альтернативную таблицу диалогов названную "customspells", то должны быть файлы customspells.tlk и customspellsF.tlk.

3. Формат Файла TLK

3.1. Структура Файла TLK
(не знаю, как вставить картинку  blush.gif )

3.2. Заголовок (Header)
Таблица 3.2.1 описывает заголовок файла dialog.tlk. Заметьте, что tlk формат, описываемый в этом документе имеет версию 3.0.

Таблица 3.2.1: Заголовок файла dialog.tlk
CODE

Значение             Тип        Описание

FileType             4 байта    "TLK "
FileVersion          4 байта    "V3.0"
LanguageID           DWORD      ID языка. См. таблицу 3.2.2
StringCount          DWORD      Число строк в файле
StringEntriesOffset  DWORD      Смещение от начала файла до Контента Таблицы


QUOTE

LanguageID указывает язык строк, содержащихся в tlk файле. Таблица 3.2.2 содержит список определенных языков. Для неанглийских языков, должно быть два tlk файла, dialog.tlk и dialogf.tlk.

Таблица 3.2.2: LanguageID
CODE

Язык                     ID

Английский                0
Французский               1
Немецкий                  2
Итальянский               3
Испанский                 4
Польский                  5
Корейский               128
Китайский Традиционный  129
Китайский Упрощенный    130
Японский                131


QUOTE


3.3. Таблица Данных о Строках (String Data Table)
Таблица Данных о Строках это список Элементов Данных о Строках, каждый из которых описывает единичную строку в файле dialog.tlk.
Число элементов в Таблице Данных о Строках соответствует значению из StringCount, указанному в Заголовке файла. Каждый элемент следует непрерывно один за другим сразу после заголовка файла.
StringRef является указателем в Таблице Данных о Строках, так StrRef 0 определяет первый ее элемент, StrRef 1 – второй элемент, и так далее.
Формат Элементов Данных о Строках приведен в Таблице 3.3.1.

Таблица 3.3.1: Элементы Данных о Строке (String Data Element)
CODE

Значение        Тип        Описание

Flags           DWORD      Флаг ссылки StrRef.
SoundResRef     16 байт    Ссылка ResRef на звуковой файл, связанный с
               (4xDWORD)  соответствующей строкой. В качестве неиспользуемых  
                          символов используются нули.
VolumeVariance  DWORD      не используется
PitchVariance   DWORD      не используется
OffsetToString  DWORD      Смещение от StringEntriesOffset до начала текста по
                          ссылке StrRef.
StringSize      DWORD      Число байт в строке. Нулевые конечные символы не
                          учитываются, следовательно данный размер не
                          включает нулевые окончания строк.
SoundLength     FLOAT      Длительность в секундах связанного со строкой wave
               (4 байта)  файла.    


QUOTE


До версии 3.0 в TLK файлах не было элемента SoundLength. При чтении из такого файла, приложение в качестве значения SoundLength должно было принять 0.0 секунд.
Флаговые значения элемента Данных о Строке являются флаговыми битами cо значениями, приведенными в Таблице 3.3.2.

Таблица 3.3.2: Строковые Флаги (String Flags)
CODE

Имя             Значение   Описание

TEXT_PRESENT    0x0001     Если этот флаг установлен, то в файле текст,
                          указанный ссылкой StrRef присутствует.Используйте  
                          OffsetToString и StringSize для определения этого  
                          текста.            
                                                     
                          Если флаг не установлен, то по ссылке StrRef
                          нет текста. Возвращается пустая строка.

SND_PRESENT     0x0002     Если флаг установлен, то можно считать SoundResRef  
                          из файла.

                          Если флаг не установлен, то SoundResRef является
                          пустой строкой.

SNDLENGTH_PRESENT 0x0004   Если флаг установлен, то можно считать  SoundLength
                          из файла.

                          Если флаг не установлен, то SoundLength считатеся
                          равной 0.0 секунд.    


QUOTE


3.4. Таблица Контента Строк (String Entry Table)
Таблица Контента Строк начинается от StringEntriesOffset, указанном в Заголовке файла и продолжается до конца этого файла. Весь локализованный текст располагается в Таблице Контента Строк в виде строк без нулевых символов. Как только заканчивается одна строка, начинается другая.
yudgi
Привет всем, зашла в этот раздел форума и решила внести предложение. Информация здесь наверно довольно полезная, но думаю что для болшинтсва новичков, в том числе и для меня,непонятная. Может стоить сделать отдельную тему о 2DA таблицах, хотя бы самое основное: где находятся, зачем нужны, что с помощью них можно сделать и как, и т.д. Я узнала о них буквально день назад в одном из сообщений прочитала, думаю другие новички тоже о них мало знают, а ведь им это может пригодиться. Мастера, может у кого-то из вас найдётся свободное время создать такую темку? Заранее спасибо!
Кстати может такая тема есть, а я её не видела?
-fenix-
При попытки открыть chargenclothes.2da выдается ошибка
Run-time error '380'
invalid property value
Почему так?
Vhall
Чем отрываешь то? lazy.gif
-fenix-
QUOTE (Vhall @ Sep 24 2005, 19:25)
Чем отрываешь то?

NWN2DAEdit

Но сейчас скачал BLToolkitStd, все открывает и намного удобнее + еще и tlk.

Такой вопросик
QUOTE

Name - Идентификатор из tlk файла. Если из кастомного то к идентификатору надо добавить 16777216 (это расспространяется на ЛЮБУЮ ссылку на tlk).


А что такое идентификатор из tlk, где его найти?


Добавлено в [mergetime]1127577194[/mergetime]
З.Ы так как описание 2da и tlk в темке 2DA ТАБЛИЦЫ??
AliceDiren
-fenix- , дай ссылочку на BLToolkitStd, у мну до сих пор TLKEdit 1.0, даже поиска нет sad.gif А идентификатор из tlk - это... ну проще говоря ID строки.
Добавлено в [mergetime]1127578269[/mergetime]
Ну помнишь в тулсе есть функция
void SpeakStringByStrRef(int nStrRef, int nTalkVolume=TALKVOLUME_TALK)
так nStrRef - это и есть идентификатор строки
-fenix-
QUOTE (AliceDiren @ Sep 24 2005, 20:05)
-fenix- , дай ссылочку на BLToolkitStd

Смотри ТУТ называется Baldur's Legacy Toolkit - v1.0

QUOTE (AliceDiren @ Sep 24 2005, 20:05)
А идентификатор из tlk - это... ну проще говоря ID строки.

Мне не для скриптов а для 2da, если у меня кастомный tlk, то к ID нужно добавить 16777216 - но тогда получается, что кастомный tlk можно иметь только один?
AliceDiren
QUOTE
но тогда получается, что кастомный tlk можно иметь только один?

Ну, как я понимаю - да. Ты же указываешь его в модульные свойства/настройки пользователя/Специальный TLK файл.

QUOTE
Мне не для скриптов а для 2da

так ID-то у строки один что для скрипта, что для 2da smile.gif
Добавлено в [mergetime]1127579771[/mergetime]
-fenix- kiss.gif Спасиб за ссылочку - гораздо удобнее работать good.gif
Vhall
QUOTE (-fenix- @ Sep 24 2005, 20:17)
но тогда получается, что кастомный tlk можно иметь только один?

Да. Больше и не нужно
QUOTE (-fenix- @ Sep 24 2005, 19:51)
NWN2DAEdit

Видимо эта прога не понимает такое количество строк\столбцов, которые есть в chargenclothes.2da
QUOTE (-fenix- @ Sep 24 2005, 19:51)
З.Ы так как описание 2da и tlk в темке 2DA ТАБЛИЦЫ??

Все что могу сказать - информативно
QUOTE (-fenix- @ Sep 24 2005, 19:51)
А что такое идентификатор из tlk, где его найти?

Я же скрин приводил
http://droaam.nm.ru/images/2da&tlk.jpg
Верхнее окно - 2da
Нижнее - tlk
-fenix-
Я вот решил попробовать сделать полиморф в драконов, как описал Lemegeton и у меня вопрос
QUOTE

В тулсете при открытом модуле, к которому будет подключен новый спелл, нужно подключить этот ХАК и НЕ ЗАБЫТЬ на той же вкладке ниже выбрать вышесозданный TLK файл.

Что значит на той же вкладке ниже выбрать вышесозданный TLK, на этой вкладке кроме подключения хаков ничего нет. Я сделал из своего tlk то же хак и подключил, но у меня ничего не добавляется, наверное я не так сделал?
И еще в написанном скрипте у меня ошибки выдает на строках
Neverwinter Script Source
nPoly = POLYMORPH_TYPE_ANCIENT_BLUE_DRAGON;
nPoly = POLYMORPH_TYPE_ANCIENT_RED_DRAGON;
nPoly = POLYMORPH_TYPE_ANCIENT_GREEN_DRAGON;

Наверное из-за того же?
Помогите!
Vhall
QUOTE (-fenix- @ Sep 24 2005, 21:34)
Что значит на той же вкладке ниже выбрать вышесозданный TLK, на этой вкладке кроме подключения хаков ничего нет. Я сделал из своего tlk то же хак и подключил, но у меня ничего не добавляется, наверное я не так сделал? И еще в написанном скрипте у меня ошибки выдает на строках

ТЛК должен иметь расширение .tlk и находиться в папке tlk
QUOTE (-fenix- @ Sep 24 2005, 21:34)
И еще в написанном скрипте у меня ошибки выдает на строках

Эт скрипты - я хз
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.