QUOTE (K.SpecTr @ Jun 19 2005, 00:36) |
Может я чуть ошибаюсь, но я не нашел другого применения. А искал. |
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 на описание свойства итема. |
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 отсутствует. |
QUOTE (defolt @ Jun 19 2005, 02:08) |
ВСЕМ ДУМАТЬ ПО ЭТОМУ ПОВОДУ |
QUOTE (defolt @ Jun 19 2005, 02:08) |
кстати там еще куча всякой лажи по этому поводу |
QUOTE (K.SpecTr @ Jun 19 2005, 11:17) |
Где там? Ссылку давай. |
QUOTE (K.SpecTr @ Jun 19 2005, 13:24) |
Ага, ложил, но я хочу конкретную, к именно этим докам. |
QUOTE (defolt @ Jun 19 2005, 02:08) |
ItemProperty Fields Эта инфа непосредственно о том, какая информация о свойствах предмета хранится в файле итема. Каждый элемент ItemProperty в списке свойств итема (PropertiesList) содержит поля, описание которых дано ниже. |
QUOTE (Kalian @ Jun 19 2005, 20:22) |
Только я че-то не понял из какого это файла? |
QUOTE (Sharklike @ Jul 5 2005, 18:47) |
Есть у кого либо реальный опыт создания кастерского класса? Конкретно интересует занесение его в spells.2da. |
QUOTE (SadoMazaXist @ Jul 6 2005, 00:26) |
Сделал я класс, все по посту в этой ветке...почти у меня нет некоторых колонок в 2дашке...(PreReqTable) у меня нет таких 2да вообще даже:CLS_PRES_***.2da У меня WinXp+NWN HOTU1.65... Я предполагаю, что из-за данных недостатков мой класс нельзя выбрать при создании перса... |
QUOTE (K.SpecTr @ Jul 14 2005, 09:53) |
Сделать кастерский класс, который бы не был престижем нельзя. |
CODE |
Bard Cleric Druid Paladin Ranger Wiz_Sorc |
QUOTE (Kalian @ Jul 30 2005, 14:52) |
PS Или может кто знает, откуда игра ссылается на эти строчки в dialog.tlk ? |
QUOTE (dumbo @ Jul 31 2005, 05:17) |
просто затри эти строки в dialog.tlk любым tlk-editor'ом. индексы строк - 7952, 7957. |
QUOTE (Dik Morris @ Aug 17 2005, 06:19) |
Хочу, тебя обидеть, это НЕВОЗМОЖНО. |
QUOTE (-fenix- @ Sep 18 2005, 22:10) |
Где найти 2da, ни в одной папке не нашел? |
QUOTE (-fenix- @ Sep 18 2005, 22:10) |
2) Как взаимодействуют tlk и 2da? |
QUOTE (-fenix- @ Sep 18 2005, 22:10) |
1) |
QUOTE (-fenix- @ Sep 18 2005, 22:10) |
2) |
QUOTE (-fenix- @ Sep 18 2005, 22:10) |
3) |
QUOTE (Vhall @ Sep 18 2005, 22:35) |
Есть папочка в корневухе – source, |
QUOTE (Vhall @ Sep 18 2005, 22:35) |
2da берет текстовые строки из tlk |
QUOTE (Vhall @ Sep 18 2005, 22:35) |
Сами по себе они ничего не делают. Это просто текст. Движок ссылается на них для получения необходимых данных в определенных ситуациях. |
QUOTE (Lex Jan 4 2005 @ 20:53) |
Было бы ОЧЕНЬ здорово. Наверное в тутор надо все таблицы разобрать (каждый столб что значит) и примеры. Чем больше, тем лучше. В идеале для каждой таблицы пример кастомной строки. Так намного легче изучать. |
QUOTE (-fenix- @ Sep 18 2005, 23:03) |
Тоесть каждому 2da соответствует tlk из которого берутся все строки, скажем описание класса, фита... А как они связываются? |
Neverwinter Script Source |
LABEL FEAT DESCRIPTION 0 Alertness 289 290 |
QUOTE (-fenix- @ Sep 18 2005, 23:03) |
Нету такой black eye.gif |
QUOTE (-fenix- @ Sep 18 2005, 23:03) |
Тоесть каждому 2da соответствует tlk из которого берутся все строки, скажем описание класса, фита... А как они связываются? |
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, то что надо на первых порах, почему его тут не написали? |
QUOTE (Vhall @ Sep 19 2005, 01:38) |
Не нашли\нет времени\плевать. Что хоть там? Выкладывай давай |
QUOTE | ||
BioWare Движок Аврора Формат файла 2DA 1. Введение 2da файл представляет собой чисто текстовый файл, описывающий 2-х мерный массив данных. В играх BioWare, 2da файлы используются для различных целей, часто как ключевые элементы правильного функционирования игры и утилит. Они описывают многие аспекты правил иигрового движка. Хотя 2da файлы являются простыми текстовыми файлами. Они структурированы в соответствии с установленными правилами, которых необходио придерживаться в дальнейшем для того, чтобы игра и утилиты читали 2da файлы корректно. 2. Основные Понятия Основное тело 2da файла представляет собой таблицу, содержащуюю строки и столбцы данных. Каждый индивидуальный элемент данных имеет свои координаты по строкам/столбцам и называется компонентом. Данными может быть текст, целое число или число с плавающей точкой Рассмотрим следующий пример контента 2da файла:
|
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 или по крайне мере, ссылок на отмеченную строку. |
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 (не знаю, как вставить картинку ![]() 3.2. Заголовок (Header) Таблица 3.2.1 описывает заголовок файла dialog.tlk. Заметьте, что tlk формат, описываемый в этом документе имеет версию 3.0. Таблица 3.2.1: Заголовок файла dialog.tlk
|
QUOTE | ||
LanguageID указывает язык строк, содержащихся в tlk файле. Таблица 3.2.2 содержит список определенных языков. Для неанглийских языков, должно быть два tlk файла, dialog.tlk и dialogf.tlk. Таблица 3.2.2: LanguageID
|
QUOTE | ||
3.3. Таблица Данных о Строках (String Data Table) Таблица Данных о Строках это список Элементов Данных о Строках, каждый из которых описывает единичную строку в файле dialog.tlk. Число элементов в Таблице Данных о Строках соответствует значению из StringCount, указанному в Заголовке файла. Каждый элемент следует непрерывно один за другим сразу после заголовка файла. StringRef является указателем в Таблице Данных о Строках, так StrRef 0 определяет первый ее элемент, StrRef 1 – второй элемент, и так далее. Формат Элементов Данных о Строках приведен в Таблице 3.3.1. Таблица 3.3.1: Элементы Данных о Строке (String Data Element)
|
QUOTE | ||
До версии 3.0 в TLK файлах не было элемента SoundLength. При чтении из такого файла, приложение в качестве значения SoundLength должно было принять 0.0 секунд. Флаговые значения элемента Данных о Строке являются флаговыми битами cо значениями, приведенными в Таблице 3.3.2. Таблица 3.3.2: Строковые Флаги (String Flags)
|
QUOTE |
3.4. Таблица Контента Строк (String Entry Table) Таблица Контента Строк начинается от StringEntriesOffset, указанном в Заголовке файла и продолжается до конца этого файла. Весь локализованный текст располагается в Таблице Контента Строк в виде строк без нулевых символов. Как только заканчивается одна строка, начинается другая. |
QUOTE (Vhall @ Sep 24 2005, 19:25) |
Чем отрываешь то? |
QUOTE |
Name - Идентификатор из tlk файла. Если из кастомного то к идентификатору надо добавить 16777216 (это расспространяется на ЛЮБУЮ ссылку на tlk). |
QUOTE (AliceDiren @ Sep 24 2005, 20:05) |
-fenix- , дай ссылочку на BLToolkitStd |
QUOTE (AliceDiren @ Sep 24 2005, 20:05) |
А идентификатор из tlk - это... ну проще говоря ID строки. |
QUOTE |
но тогда получается, что кастомный tlk можно иметь только один? |
QUOTE |
Мне не для скриптов а для 2da |
QUOTE (-fenix- @ Sep 24 2005, 20:17) |
но тогда получается, что кастомный tlk можно иметь только один? |
QUOTE (-fenix- @ Sep 24 2005, 19:51) |
NWN2DAEdit |
QUOTE (-fenix- @ Sep 24 2005, 19:51) |
З.Ы так как описание 2da и tlk в темке 2DA ТАБЛИЦЫ?? |
QUOTE (-fenix- @ Sep 24 2005, 19:51) |
А что такое идентификатор из tlk, где его найти? |
QUOTE |
В тулсете при открытом модуле, к которому будет подключен новый спелл, нужно подключить этот ХАК и НЕ ЗАБЫТЬ на той же вкладке ниже выбрать вышесозданный TLK файл. |
Neverwinter Script Source |
nPoly = POLYMORPH_TYPE_ANCIENT_BLUE_DRAGON; nPoly = POLYMORPH_TYPE_ANCIENT_RED_DRAGON; nPoly = POLYMORPH_TYPE_ANCIENT_GREEN_DRAGON; |
QUOTE (-fenix- @ Sep 24 2005, 21:34) |
Что значит на той же вкладке ниже выбрать вышесозданный TLK, на этой вкладке кроме подключения хаков ничего нет. Я сделал из своего tlk то же хак и подключил, но у меня ничего не добавляется, наверное я не так сделал? И еще в написанном скрипте у меня ошибки выдает на строках |
QUOTE (-fenix- @ Sep 24 2005, 21:34) |
И еще в написанном скрипте у меня ошибки выдает на строках |