2 Ice Blade:
На форуме realms.ru прочитал тему про 2da'шники. Вчера попробовал вставить свой скилл, четко следовал всему, что вы написали, но версия у меня не SoU, а HOTU поэтому я решил не дописывать обычный dialog.tlk, а создал новый - модульный. А уже в новый добавил две записи: 120000 и 120001 (может в этом и проблема). .nss вытащил из .bif'a, изменил, положил в хак. scripts.2da - туда-же. В тулсете подключил и хак и .tlk . Ничего
skills.2da:
27 строчка (с 20 по 26 все ****), ссылки на 120000 и 120001 есть.
Да скрипт в принципе иностранные языки как у тебя и был
Чего, такой огромный ID поставить можно? Как? У меня вроде нельзя...
2 Iceblade: вопрос по тайлсетам. Каким образом реализовать такую вещь - вот допустим берем обычный невер. Тайлы домов расположены на расстоянии 1 тайла, при этом между ними обычная мостовая. Если же расстояние между ними 2 и больше, то вплотную к домам так и идет об. мостовая, а междук - как бы дорога... Я конечно отстойно обьясняю, но может ты понял о чем я?
И еще - как сделать, чтоб отайлы одного типа (но разные их модификации) появлялись в случайном порядке (ты в уроке помойму этого не коснулся)?
Буду очень признателен.
... сейчас у меня мало времени расписывать всё подробно (в выходные займусь... возможно ), по этому в крацах:
Хм... У меня видимо старый тлк-едитор: пишет - введите значение от 1 до 16777215...
Как называется тот, которым пользуешься ты?
Ох... совсем я с этим запутался... наверное чето не так делаю... добавлять новые записи (описания вещей, названия тайлсетов и т.д.) надо начиная с 16777216? То есть ResRef должен быть начиная с этого числа... Так как я делаю кустомный тлк, который буду потом добавлять к модулю, до 16777216 все записи должны быть пустыми... Когда я этот тлк сохраняю у меня получается файл размером 65 мегов... в нем одна запись...
P.s. какую прогу выбрать? я уже три с ваулта скачал, так на всех ограничение до 16777215...
Помогите плиз, а то нам столько всего делать надо... ужас... и самое страшное, что вроде как на простом уже запорка...
Опять в крацах: В КАСТОМНОМ ТЛК НАЗНАЧАЕШЬ НОМЕР 1 (или 0 точно непомню ), А В СКАЖЕМ 2ДА ЭТО СООТВЕТСТВУЕТ НОМЕРУ 16777216. - надеюсь понятно объяснил
Ох, спасибо огромное! Теперь все ясно
Но у меня снова вопросы (как только я надоем, так и скажите ):
1. в файле .set тайлсета есть такой параметр EnvMap? Это текстура какая то или что?
2.
...
[TILE0]
Model=N01_UGV - имя нашего тайла (верхний угол).
WalkMesh=msb01 - пишите тоже что у меня.
TopLeft=Desert - тип местности с которым стыкуется угол
TopLeftHeight=1 - этот угол у нас на высоте
TopRight=Desert
...
откуда берется значение WalkMesh ("пишите тоже что у меня") - а разве тут не надо указывать название обьекта с модификатором MDL walkmesh из модели тайла, который мы описываем?
3. Полазил я с помощью NWNViewera по bif-файлам, конечно поначалу ошеломляет, сколько всего со всем этим можно сделать... А все ли можно?
Пример: в бифе лежат иконки, курсоры, текстуры менюшек и все остальное... Если сделать свой курсор, назвать его точно так же как и в самой игре, раземры естественно соблюсти, а потом положить в хак... В модуле оно будет работать или не все так просто?
То есть типы Walkmesha бывают разными?
А где эти типы узнать, они где-то указаны?
И конкретно какие характеристики у msb01?
2 Ice Blade: если у вас будет свободное время, можете разобраться с проблемой. Я уже 4 раз заново начинаю, а ничего (хотя некоторые плоды есть)
мои файлы:
dwt_floor.mdl
dwt_floor.wok
dwt_floor.tga
dwtpalstd.itp
dwt.set
dwt.set:
[GENERAL]
Name=DWT01
Type=SET
Version=V0.1
Interior=0
HasHeightTransition=1
EnvMap=tcn01__ref01
Transition=4
DisplayName=1605
Border=Asfalt
Default=Asfalt
Floor=Asfalt
[TERRAIN TYPES]
Count=1
[TERRAIN0]
Name=Asfalt
StrRef=63297
[TILES]
Count=1
[TILE0]
Model=dwt_floor
WalkMesh=msb01
TopLeft=Asfalt
TopLeftHeight=1
TopRight=Asfalt
TopRightHeight=1
BottomLeft=Asfalt
BottomLeftHeight=0
BottomRight=Asfalt
BottomRightHeight=1
Top=
Right=
Bottom=
Left=
MainLight1=1
MainLight2=1
SourceLight1=1
SourceLight2=1
AnimLoop1=1
AnimLoop2=1
AnimLoop3=1
Doors=0
Sounds=0
PathNode=B
Orientation=0
VisibilityNode=A
VisibilityOrientation=0
ImageMap2D=MICN01_A01
dwtpalstd.itp точно такой же, как в вашем уроке (только вместо Desert - Asfalt)...
ID из dialog.tlk я нигде не менял (оставил те же самые, какие были в тайлсете из невера)
Тулсет вроде бы чего то такое видит, когда создаешь новую область, только ячейка без названия, а потом когда создаю область - "не могу создать область... "
P.S. имеет ли смысл поставить английскую вместо русской, может оно исправится (а то вдруг чего там пираты наделали )
чесно говоря у меня была похожая проблема присоздании нового типа локаций - название появлялось, но при запуске выдавал "не могу создать область... ". так что пришлось делать замену локаций, упростив себе жизнь.
А я хотел спросить, поддерживает ли MdlPluginSuit 1.12 анимацию.
тот который я тебе дал - точно поддерживает
Сорри, чуть-чуть не туда обратился
Добавлено в [mergetime]1083340329[/mergetime]
А ты пробовал вставлять аним?
Эх не помогло...
Все равно не создает
Может с .тлк ошибка??
Мой кастомны тлк:
0 Название тайлсета
1 Асфальт
К модулю подключил:
ссылки из .сет и .итп фалов
16777216 и 16777217 соответственно
В тулсете обысно ничего не пишет, а иногда "Неправильный указатель" (у меня к сож. только русская версия)
А отом - "не могу создать область"...
З.Ы. Макс я тьфу-тьфу-тьфу знаю...
ХЗ... бери эти файлы и шли мне на jrs@surguttel.ru, - я посмотрю
А я прочитал урок по втавке своего тайла и чето никак не пойму откуда брать Strref, вернее я знаю, что он берется из tlk(в уроке написан какой-то)?
Берешь делаешь в тлк. фале (своем кустомном) запись (вверху Ice Blade писал об этом), а потом уж на нее ссылку...
P.S. По поводу этого надо переговорить, чтоб конфликтов не было (на техническом форуме).
2 Ice Blade: ужо послал посмотри плиз
А как мне тлк открыть?
Добавлено в [mergetime]1083399199[/mergetime]
Давайте я попробую рассказать по порядку, а вы скажите где я ошибаюсь.
Я создаю модель, экспортирую ее. Получаю два файла .mdl и .wok .
Потом создаю .set файл прописываю там настройки.
Потом там какайто запарка с Itp тулсетом. Скажите пожалуйста по порядку, что нужно делать с itp .
ну в уроке все аписано же, даже картинка прилагается...
ХА ХА ХА ХА ХА ХА - ЩАС УПАДЁТЕ
Вся загвоздка была ... ну неповеришь....
действительно неповеришь
Всё дело в
Version=V0.1 - оказуется так нельзя
ставь
Version=V1.0 - обязанно зароботать!
АААААААААААААААААААААААААААААААААААААААААААААААГРОМНОЕ СПАСИБО!!!!!!!
Я бы сам в жизнь не дагодался
Однако вопросы не кончаются.
Я вот только не понимаю каким образом осуществляется связь палитры (я так понимаю это .itp файл) с тайлами.
В палитре мы делаем элементы с ссылками на записи в .tlk и на вид Terrain'а из .set файла. В самом же .set файле я как-то не нашел ни одной связи между Terrain'ами и тайлами (то есть у меня сначала написано [terrain types]count 2, потом просто описываются два terraina (название и ссылка на тлк файл), а потом вроде как в случайном порядке идут все тайлы (и в неверовских сетах вроде бы так же), а к какому виду terraina они принадлежат не ясно...
P.S. Палитры в тулсете вобще не появляется...
Так в том то и дело, что тлк к модулю я уже подключил... А политры вообще нет. Пусто. Ни Особенностей, ни Группы, ни Местность, ничего...
У меня есть два Terraina: Asfalt и Building. И есть два тайл: один - плоскость (якобы асфальт), а другой - стена. Нигде же не указано к какому виду местности принадлежат эти тайлы...
Вопрос: карту EnvMap можно свою использовать? Если да, то какой формат? Вставлять так же как и текстуры, в ХАК?
Чего такое trimesh? Видимо полезная штука, т.к. она в наличие практически в каждом неверском тайле...
Я попробовал вставить свой placeable, все получилось, только не пойму, как сделать чтобы персонаж не проходил насквозь?
p.s. Если в максе я меняю праметры tile и rotate в настройках мапы, это сохранится при экспорте?
p.p.s Как создать "размазанную" текстуру обьекта? Unwrap'ом, или как?
p.p.p.s. Поддерживает ли игра модификатор UWV Map?
Лицо, тело и все остальное как бы по плоскоси растянуто... Ну не знаю как сказать
Я пробовал заменять GUI-тектурки всякие (указатели, иконки слотов брони в инвенторИ, кнопочки всякие и т.д.) - странное дело. В тулсете пишется: эти текстурки заменены (ну там есть такая функция проверки на конфликты, когда хак подключаешь), тобишь все должно работать.
А в игре ни фига, как будто какая то фигня всегда сбрасывает на дефолтные...
2 Ice Blade: Ты пробовал менять интерфейс?
P.S. Причем остальные ресурсы спокойно заменяются (loadsceens и др.). Не заменяется только то что в gui - бифе... Может надо еще чето сделать (я то че заменить надо в хак кладу и всё)..
Ice Blade
когда-то ты мне говорил что 2да в сочитании со скриптом могут творить чудеса,
так вот:
имеем footstepsounds.2da и 2 звука: шаги и постоянный, можно ли с помощю скпипта включать и выключать постоянный звук?
У меня возникла проблема с 2да. Мне препёрло вписать в 2да пару модэлей, но как отурываю ету таблтцу ... когда она грузится, появляется эррор, он гласит: "Run-time error '308' Invelid properti value" ... и чё мне терь дэлать?
balrog
Чем ты открываешь эту таблицу? Блокнотом?
NWN2DAEdit ........ ща качаю с ваулта другие проги ... мож подскажи самую самую, шоб всё открывало
БЛОКНОТ.
Ну я тут откопал другую прогу.... ты лучше мне скажи, вот я тут вставил пару новых модэлей, и удолил старых, но я когда удалил старые увидел шо все модэли в тулике (тулсете) сбиты с порядка .... так я как понял надо вместо того шоб кдолять строчки писать шо они типо РЕЗЕРВИРОВАННЫЕ ?
А нафига ты удалял?!.. Просто добавил в конец свои модели и все!.. На кой тебе удаление?
ай, просто ета Таблица уже гатова была, а модели некоторые были левинькие и я не хотел их держать в хаке шоб использовать из в одном мэппе, или воще не использовать.
Эээ... Если кому времени не жалко, обучите пожалуйста, как новые Item'ы делаются? Что-то не пойму, какие 2da'шки править? Где картинки итемов добавлять?
З.Ы. http://nwn.bioware.com/neverwinternights/misc/1.62HotU-2dasourcefull.zip лежат ВСЕ 2da'шки от HoU! Уже вытащенные. 622Кб.
для нового типа айтемов тебе baseitem нужен, если я не ошибаюсь.
А потом сами новые айтемы идут в хаке без прописывания в 2да, как например новые щиты и тд.
Прописываю в 2дашке polimorph пару своих строк (на безопасных строках), однако константы полиморфа, которые я прописал в этом файле, не появились в скрипт эдиторе и я не смог сдлать эффект с моей констатной.
Вопрос:
что я сделал не так?
(в 2да все правильно написал. Взял строку, которая там есть и поменял имя констаты..все остальное не трогал. Потом ее копию, сменил имя и модель (все согласно appearence.2da))
еще вопрос.
есть безопасные строки для каждой 2да ...скажем в какой-то 2да это от 200.
Ьам есть только 50. Надо ли делать с 51 по 200 пустых строк или можно сразу после 50 написать 200-ую ?
Lex: Не-а, нельзя после 50-той написать 200-тую. Это вытекает из Биоварного описания 2да-шек, где написано:
QUOTE |
Never delete a row. |
Lemegeton
Колонка ID, где идут номера, фактически ничего не значит. Можно чтобы номера шли и непоследовательно. Все будет работать .
В принципе номера колонок вообще ни на что не влияют...
Если будет такая ситуация
1
2
3
4
699
то на самом деле при считывании файла получится
1
2
3
4
5
поэтому и пишут обычно
1
2
3
4
5
6 **** **** ****
7 **** **** ****
---//---//---//---
---//---//---//---
698 **** **** ****
699 бла бла бла
а что там с полиморфом у меня?
CODE |
Прописываю в 2дашке polimorph пару своих строк (на безопасных строках), однако константы полиморфа, которые я прописал в этом файле, не появились в скрипт эдиторе и я не смог сдлать эффект с моей констатной. Вопрос: что я сделал не так? (в 2да все правильно написал. Взял строку, которая там есть и поменял имя констаты..все остальное не трогал. Потом ее копию, сменил имя и модель (все согласно appearence.2da)) |
Lex: Дык, братишка, опаньки... Надо же еще эту константу в скрипты вписать. Обычно в nwscripts.nss. Вроде:
CODE |
const int POLYMORPH_xxx_xxx = <номер строки в 2да>. |
ясно. Спасибо.
QUOTE (Lemegeton @ Dec 3 2004, 19:44) |
Дык, братишка, опаньки... Надо же еще эту константу в скрипты вписать. Обычно в nwscripts.nss. Вроде: |
ну..я сам не нашел этот nwscripts.nss поэтому запихнул консту в скрипт полиморфа.. :-)
Была славная тема на старом Форуме. Ее еще Ice Blade вел. К сожалению она прекратилась на самом интересном месте - на spells.2da.
В связи с этим у меня возник вопрос.
Как сделать новое заклинание???
Вроде со всеми столбцами (ну почти) разобрался. Где не разобрался, подставил значения из наиболее похожих заклинаний (строк), а вот на скрипте взял, да и запоролся. То есть, я его обозвал (в десятом столбце), создал файл с таким же именем+nss, а он, зараза такая, не вызывается. Что я сделал не так?
Мегетончик, ты меня так не пугай. Ты мне по полиморфу сколько советов надавал, а теперь оказывается, что ты не волшебник, а только учишься?
У меня вроде остались старые Лексовские темы. Если хочешь можешь скачать их http://vgjsoft.h14.ru/admin/2dastuff.rar 2,69мб
А что конкретное спрашивай. Я с ними в свое время возился.
Смотря откуда вызываешь. Я хотел сделать как в ПРЦ фит в контекстном меню, вызываюший спелл.
Вот у меня все было как надо кроме появления фита в контекстном меню. Ты конкретный код показывай. Так не разобраться.
Chimeric: Не беспокойся. Меня просто где-то переклинило по-черному. Разберусь.
Clement Astilon: Гы. Я этот форум ВЕСЬ скатал.
Про конкретность:
Ну всю строку спела не надо, надеюсь? Спел у меня в книге появляется. Как ни крути.
В десятой строчке (ImpactScript) ставлю имя. Создаю скрипт <имя>.nss. В нем пишу что-нибудь типа speakstring('Da, da, da!') - стопудово должно работать же?! Ан не работает!!!
Нижайше прошу прощения за то, что обращаюсь к Вам со столь Ламерским вопросом. Я его уже отпостил где только мог. Хоть "караул" кричи.
Пытаюсь сделать новое заклинание.
Вроде со всеми столбцами (ну почти) разобрался. Где не разобрался, подставил значения из наиболее похожих заклинаний (строк), а вот на скрипте взял, да и запоролся. То есть, я его обозвал (в десятом столбце), создал файл с таким же именем + nss, а он, зараза такая, не вызывается. Что я сделал не так?
Заклинание появляется в книге как и должно. Если ставить стандартные скрипты - вызываются. Мой - нет. Для проверки я уже чего только туда не пихал. Вплоть до SpeakString. Не вызывается.
Ну думаю ты сам догадался что тут всего нескольк вариантов:
- Либо чего-то нитуда поставил в 2да-шке ( проверить просто - берёш первое попавшеся заклинание и меняешь ему только имя скрипта - больше ничего нетрогая)
- Либо чего-то перемудрил со скриптом ( проверить тоже очень просто- достаточно скопировать код любого из работающих заклинаний и попробовать запустить с ним, если несработает значит дело не в скрипте )
- Ну и последний вариант - это так называемая "криворукость" (редко но бывает почти у всех - у меня в том числе ),- сделал что-то мелкое и противное на что обычно никто не обращает внимания, причём возможно и ты сам незамечаешь хотя и знаешь что так нельзя сделать. Тут может помочь только полный - нет.. АБСОЛЮТНО полный пересказ своих действий, без "кратких" изложений.
Помню, в молодости сам делал новый закл, дык вот на скрипте постоянно спотыкался, пока не понял, что он просто напросто не компилируется из-за ошибки =).
З.Ы. Больше ничем не могу помочь, т.к. все было давно.
Люди, помогите плиз!
Расскажите как редатировать 2da файлы в хаках. А то у меня после подключения некоторых из них получается заместь грибов деревья, а заместь заборов столы!
Anker: Старайся не редактировать строки, а добавлять их. Избежишь много-много неприятных "глюков". Да, не забывай обновлять копии в хаке.
По поводу спелла: в-принципе-то, я правильно скрипт подключаю???
QUOTE (Lemegeton @ Dec 17 2004, 09:20) |
Anker: Старайся не редактировать строки, а добавлять их. Избежишь много-много неприятных "глюков". Да, не забывай обновлять копии в хаке. |
Anker
У нас в Проклятии собственная палитра. Мы не пользовались стандартной и вообще забили на нее, продублировав все объекты в Custom Palette, попутно переводя их на русский язык. Так что выход один - экспортировать палитру из Проклятия и импортировать ее к себе. И пользоваться после этого объектами из Custom Palette.
QUOTE (DBColl @ Dec 17 2004, 15:35) |
Anker У нас в Проклятии собственная палитра. Мы не пользовались стандартной и вообще забили на нее, продублировав все объекты в Custom Palette, попутно переводя их на русский язык. Так что выход один - экспортировать палитру из Проклятия и импортировать ее к себе. И пользоваться после этого объектами из Custom Palette. |
QUOTE (DBColl @ Dec 17 2004, 15:35) |
Так что выход один - экспортировать палитру из Проклятия и импортировать ее к себе. И пользоваться после этого объектами из Custom Palette. |
Ghost
Хм... Какого дополнения? Хака нашего? Или ресурсов Expansion Pack 1?
Expansion Pack 1
Вывод. Хех, надо ставить СоУ...
Люды добрі!
Тож скажите как редактировать хаки?!
У меня такая фигня не только с Леворовским хаком!
Пли-и-и-и-з!!!
QUOTE (DBColl @ Dec 21 2004, 17:30) |
Вывод. Хех, надо ставить СоУ... |
Anker
Что тебе именно нужно? Плэйсэблы? Монстры?
1. Открываешь соответственно стандартные placeables.2da и appearance.2da. Достать их нужно из 2da.bif NWN Explorer'ом или NWN Viewer'ом.
2. Открываешь эти же 2да-шки, лежащие в хаке.
3. В стандартный файл добавляешь те строчки из хаковского, которые в нем отсутствуют. Таким образом ты прилепишь ресурсы хака к стандартному 2да файлу.
4. После этого сохраняешь получившийся файл и пихаешь его в свой хак.
Вообще вся эта работа на примерах расписана в туториале Айвана у нас на сайте. Посмотри для начала его pdf-ку.
Добавлено в [mergetime]1103644479[/mergetime]
Ghost
Я имел в виду, надо ставить совместно СоУ+ХотУ и все у тебя будет в шоколаде!
QUOTE (DBColl @ Dec 21 2004, 18:53) |
Я имел в виду, надо ставить совместно СоУ+ХотУ и все у тебя будет в шоколаде! |
Ghost
Что-то у тебя вообще с НВН не то... Вообще у народа вроде бы все нормально с отображением Левора в тулсе... Странно. Тебе надо бы искать сначала баги в том, почему же все-таки не ставятся нормально СоУ + ХотУ...
Ой пасиба пасибочки!!!
Урррряяяя, заработало!!!
Понял! Нельзя "внешние" (в виде файлов) скрипты пихать. Если внутренние - все ОК, иначе - тупик!!!
Ффуу. Думал, сошел с ума.... Крэйзанулся, по-ихнему.
КУЛ! МОЛОТОК. Поделись здесь опытом, плиз. Научи еще народ .
DBColl: Подкалываешь, да?
Вообще-то, я собирался добавить серию новых заклинаний полиморфа NPC-Henchman'ов (но не самого кастователя!) в различные виды драконов (дабы офигенно мощных NPC можно было делать на несколько ходов)... Чему тут учить-то? Если грабли найду, тогда отпостю.
QUOTE (Lemegeton @ Dec 23 2004, 18:44) |
DBColl: Подкалываешь, да? |
QUOTE (Lemegeton @ Dec 23 2004, 18:44) |
Чему тут учить-то?Если грабли найду, тогда отпостю. |
Лирическое отступление: Первые грабли, на которых я попрыгал, являли собой недостаток информации про сам SPELLS.2DA. Я, честно говоря, поражен. Ice Blade в описании SPELLS.2DA на старом форуме дал его гораздо более полно и точно, чем здесь в статьях. Непонятно. Посему, проведя свое маленькое расследование в данной области, привожу своё:
Итак, его величество SPELLS.2da
ID, Label - как и везде.
Name - Идентификатор из tlk файла. Если из кастомного то к идентификатору надо добавить 16777216 (это расспространяется на ЛЮБУЮ ссылку на tlk).
IconsRef - иконка заклятия
School - школа магии, к которой принадлежит заклинание(буква идентификатор из spellschools.2DA)
Range - зона поражения(P- сам персонаж,T - прикосновение, S - малая, M - средняя, L - большая).
VS - Vocal (устная) и Somantic (рукамимахательная) составляющие заклинания. Это определяет достаточно много параметров. Например, есть фит (или скил, пожизни путаю) на колдовство без соматической части. Т.е. можно кастовать заклинание в состоянии окаменения. v - голос, s - руки, vs - и то, и то, "-" - ни то, ни то. Что будут обозначать "****" - честно говоря, не в курсе.
Было: VS - спасбросок против заклинания( если vs - то есть, если s или v, то нет ).
MetaMagic - это есть мета магия - т.е фиты усиливающие( ускоряющие, улучшающие и .т.д) заклинания.
значения:
1 - Empower
2 - Extend
4 - Maximize
8 - Quicken
16 - Silent
32 - Still
Соответственно, при суммировании побитовым "И" можно настроить какие фиты доступны заклинанию.
TargetType - тип цели:
0х01 - self
0x02 - creature
0x04 - area
0x08 - item
0x10 - door
0x20 - placeble
0x40 - trigger
Соответственно, при суммировании побитовым "И" (можно просто суммировать) можно настроить на что действует заклинание.
ImpactScript - собственно скрипт определяющий действие заклинания.
Bard, Cleric, Druid, Paladin, Wiz_Sorc -показывает, с какого уровня доступно данное заклинание ( Если **** - то оно у класса отсутствует).
Innate - Уровень, на котором присутствует спелл, если это "врожденная" способность (вспоминаем священника)
ConjTime - Время колдовства.(т.е. -время за которое рпоизходит визуальная часть заклинания).
ConjAnim - анимация клдовства(Head - над головой, Hand- в руках, **** - руки не двигаются)
ConjHeadVisual - спец эффект над головой (имя модели).
ConjHandVisual - то же но для рук.
ConjGrndVisual - тоже но для земли (эффект на полу)
ConjSoundVFX - звук для спецэффектов.
ConjSoundMale - звук, который издает маг(мужчина) во время произнесения заклинания
ConjSoundFemale - звук, который издает маг(женшина) во время произнесения заклинания.
CastAnim - анимация при колдовстве(Константа анимации ).
"area"
"out"
"self"
"touch"
"up"
"attack"
"creature"
CastTime - время необходимое для колдовства.
CastHeadVisual, CastHandVisual, CastGrndVisual - Спецэффекты при колдовстве.
CastSound - звук при колдовстве.
Proj, ProjModel, ProjType, ProjSpwnPoint, ProjSound - частицы при колдовстве(прсутствуют - отсутствуют, тип, место появление, звук, Ориентация - соответственно.)
Типовые константы для ProjType:
"homing"
"ballistic"
"highballistic"
"burst"
"accelerating"
"spiral"
"linked"
"bounce"
ImmunityType - тип иммунитета к заклинанию (костанта иммунитета).
ItemImmunity - Подлежат ли предметы действию заклинания.
SubRadSpell - позволяет задать "подзаклинания" как, например, теневые заклинания. Указывается номер строки подзаклинания. Всего их можно сделать 5 (пять) штук. При создании подзаклинаний, у последних в ОБЯЗАТЕЛЬНОМ порядке должен быть указан параметр в столбце Matser.
Было: SubRadSpell - изменение заклинания в зависимости уровня (ID спела отсюда же).
Category - берется из Category.2da.
Master - Используется в "подчиненных" радиальных заклинаниях. С.м. SubRadSpell
SpellDesc - описание спелла, ( ID из Dialog.tlk или кастомного tlk)
UserType - Сложно для формулировки, что-то вроде того, кто/что это заклинание может использовать:
1 = spells
2 = creature power
3 = feat
4 = item power
SpellDesc - Из tlk. Описание спелла.
UseConcentration — если стоит 1, то будет использоваться умение Concentration
SpontaneouslyCast - Для лечащих заклинаний священников (они могут заменять существующие заклинания тогоже уровня)
Altmessage — текст в консоли после применения заклятья ( ID из Dialog.tlk).
HostileSetting - будет ли расцениваться это заклинание как нападение (0 - нет, 1 - да)
FeatID - идентификатор фита( некоторые фиты (например песня барда или ярость варвара) предстовляют из себя заклинания) из Feats.2da
Ффу... Вроде все.
Ох, Блин! Греатест РЕСПЕКТ! Молодец. Оформим в виде статьи . Может твои комментарии в ходе работы еще добавишь? Чего избегать и тп..?
По заказам трудящихся, но БЕЗ картинок.
Создание заклинания
1. Постановка задачи:
(Задача выдумана и реальной ценности не имеет, поскольку внесет слишком большой дисбаланс)
Создать заклинание полиморфа игрока в синего, красного и зеленого дракона. Заклинание должно быть радиальным и использоваться Колдуном/Волшебником на первом уровне.
2. Необходимые инструменты:
а. Любая программа, которая позволит достать SPELLS.2DA. Например http://nwvault.ign.com/Files/other/data/1026158289673.shtml, если лень другой искать. Либо сам SPELLS.2DA.
б. Любая программа, которая позволит отредактировать SPELLS.2DA. Например, NotePad.
в. Редактор TLK файлов. Ну, тут уж на вкус и цвет. Ищите на ваулте.
г. Тулсет + модуль. Я буду использовать специально созданный маленький модуль с одной локацией.
3. Решение задачи:
3.1 Создание нового (редактирование существующего) кастомного TLK файла:
Для решения задачи мы будем использовать кастомный tlk файл. Т.е. мы не будем использовать DIALOG.TLK из корневого каталого игры.
Нам потребуется по две строки описания на одну строку в SPELLS.2DA (название заклинания и его описание). У нас есть одно основное и три дополнительных заклинания - значит, потребуется восемь строк в TLK файле.
Берем свой свежескачанный TLK редактор и добавляем строки с названиями. Я сделал так:
10000 - название основного заклинания ("Полиморф в дракона")
10001, 10002, 10003 - названия дополнительных заклинаний. ("Синий", "Красный", "Черный")
20000 - описание основного заклинания ("Это заклинание превращает заклинателя в древнего дракона...")
20001, 20002, 20003 - описание дополнительных заклинаний.
Сохраняем TLK файл в каталоге TLK, который находится в каталоге с игрой.
3.2 Редактирование SPELLS.2DA:
а. Создание основного радиального заклинания.
Придумываем название скрипта, например "l_poly_drgn". Это будет единый скрипт для ВСЕХ строк.
Придумываем название основного заклинания например "l_Polymorph_Drgn", иконку к нему (можно создать, можно взять готовую, я взял для примера "is_PolyFey").
Добавляем строку в 2да файл с нужными параметрами (см. предыдущий пост). Пусть (предположим) эта строка имеет номер 805. Анимацию для основного заклинания можно не указывать, как и ряд других параметров (задача на дом - выяснить опытным путем, каких именно). Лучший вариант, на мой взгляд, взять строку номер 130 (PolymorfSelf), скопировать и подредактировать.
Придумываем названия "подзаклинаний" и разрабатываем параметры для них. В моем случае это "l_Polymorph_Drgn_Blue", "l_Polymorph_Drgn_Red" и "l_Polymorph_Drgn_Blue".
Скрипт подставляем тот же, который и для родительского заклинания. Пусть (предположим) номера этих строк будут 806, 807 и 808 соответственно.
Внимание!!! Дальнейшее очень важно. Это - связь. Без нее работать не будет!!!.
ГЛАВНОЕ: в столбце Master всех "подзаклинаний" указываем номер строки основного заклинания.
Так как "подзаклинаний" у нас три (синий, красный и зеленый драконы), то в строке основного скрипта в столбцах SubRadSpell1, SubRadSpell2 и SubRadSpell3 прописываем номера строк "подзаклинаний" 806, 807 и 808 соответственно.
На этом с SPELLS.2DA все. Сохраняем и оставляем пока в покое.
3.3 Подключение этого всего к модулю:
Для начала, нужно создать HAK файл с нашим SPELLS.2DA (и иконками, если есть). Для этого можно использовать утилиту NWHAK.EXE, поставляемую с тулсетом (с игрой). Можно, так же, положить это все в существующий хак.
В тулсете при открытом модуле, к которому будет подключен новый спелл, нужно подключить этот ХАК и НЕ ЗАБЫТЬ на той же вкладке ниже выбрать вышесозданный TLK файл.
3.4 Скриптование:
Последняя часть "Марлезонского балета".
Нужно помнить, что скрипт вызывается от лица того, на кого направленно заклинание. Т.е. константа "OBJECT_SELF" будет указывать на того, на кого кастовали.
Создаем скрипт с ранее придуманным именем ("l_poly_drgn"). В нем пишем все, что нашей душе угодно. В моем случае, я написал следующее:
Neverwinter Script Source |
const int l_Polymorph_Drgn = 805; const int l_Polymorph_Drgn_Blue = 806; const int l_Polymorph_Drgn_Red = 807; const int l_Polymorph_Drgn_Green = 808; void main() { int nSpell = GetSpellId(); object oTarget = GetSpellTargetObject(); effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); effect ePoly; int nPoly; int nMetaMagic = GetMetaMagicFeat(); int nDuration = GetCasterLevel(OBJECT_SELF); //Enter Metamagic conditions if (nMetaMagic == METAMAGIC_EXTEND) { nDuration = nDuration *2; //Duration is +100% } //Determine Polymorph subradial type if(nSpell == 806) { nPoly = POLYMORPH_TYPE_ANCIENT_BLUE_DRAGON; } else if (nSpell == 807) { nPoly = POLYMORPH_TYPE_ANCIENT_RED_DRAGON; } else if (nSpell == 808) { nPoly = POLYMORPH_TYPE_ANCIENT_GREEN_DRAGON; } ePoly = EffectPolymorph(nPoly); //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, l_Polymorph_Drgn, FALSE)); //Apply the VFX impact and effects ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, oTarget, TurnsToSeconds(nDuration)); } |
Lemegeton - - Эх.. вот и смена растёт, давненько уже ник-то туторов по 2да не писал,- хоть и без картинок и некоторых мелочей(ввиде явного примера строки 2да-шки), но зато и без ошибок, я примерно год назад точно-так же делал - только задачка была чуть посложней . Наградить тебя особо нечем, но кое чего я тебе всётаки дам. См. приват.
Lemegeton
ПУЛЯ! КРУТО. Слов нет. Абсолютное пособие для самых маленьких. Для меня .
У меня сейчас случится припадок мании величия!
Фигня! Опустим на землю при случае . Смотри не увлекайся . Хыхыхы.
И я первый опущу если что не так (хоть я уже и незанимаюсь НВН). Просто давненько небыло как бы это выразится "залётных", которые хотябы процентов на 50% своими силами осилили что-то существенное в 2да-шках (а спелы это и есть существенное) и более того подробно описали. Фактически за всё время что я связан с НВН таких залётных можно персчитать по пальцам одной руки ), но сильно нос не задирай - т.е есть ещё ОЧЕНЬ многое чего ты ещё незнаешь и если не продолжишь свои иследования, а будешь как большенство ждать что в чём-то за тебя разберутся, то далеко не уйдёшь. Заклинания заклинаниями, но пока хотябы сложные комбинации классов с фитами не осилишь - ты будишь не более чем начинающим мастером. Так что удачи.
PS
Айв или ДБ - дайте ему "мастера контента".
QUOTE |
Смотри не увлекайся |
Эх, нравится мне в 2да'шках копаться.
При создании фита, одним из параметров является определение, доступен ли этот фит всем классам, или только некоторым. Это делается в файле feat.2da, столбце ALLCLASSCANUSE(18). Однако, определяется, какой класс этот фит будет использовать совсем в других файлах. Эти файлы называются обычно cls_feat_#.2da, где # это название класса. На самом деле, название такого файла для каждого класса указывается в файле classes.2da в столбце FeatsTable.
Итак, одни из самых простых 2да:
CLS_FEAT_****.2DA
ID - Идентификатор строки. Опять таки, на практике не имеет значения. Имеет значение лишь номер строки.
FeatLabel - Имя фита.
FeatIndex - Индекс фита из таблицы feat.2da
List - Возможность/категория использования:
0 - Общий фит.
1 - Мета-магический
2 - Специфичный для класса (Вроде Favor Enemy у рэйнджера)
3 - Выдаваемый автоматически.
GrantedOnLevel - На каком уровне гарантировано автоматическое получение. Значение -1 означает стандартное получение по увеличению уровня.
OnMenu - Самая главная строчка для активных фитов. Обозначает, будет ли отображаться фит в радиальном меню персонажа. 1 - да, 0 - нет. Если фит активный, необходимо поставить 1.
Вот и все.
CR - Челендж Рейтинг - что-то вроде крутости. Ну например (хотя пример конечно кривоват но что поделаешь.) итак есть у нас лич, сначала у него ЦР 100, а потом мы ему сделали ЦР 1. К личу подваливает чел 40 лвла (я хз скока у него считается ЦР, но допустим 40). В первом случае лич увидит перса, сравнит его цр со своим и скажет (иметь мои старые костыли - да это же лам) и ломанет на перса в рукопашную без обкастовки. Иное дело когда у лича Цр 1 - он посмотрит на перса 40 лвла и подумает (вот теперь ко мне снова смерть пришла, только на этот раз я походу костями не отмахаюсь). и после этого выдаст в перса весь набор спеллов которые только натолкали в него с помощью тулса.
Т.о. вот это "MAXCR" - если тупо переводить, можно перевести как - максимальный челендж рейтинг
, а вот с этим "MinFortSave" проще - это минимальный спас на Форту ака Стойкость ака Fortitude. Хм, только что-то мне не припоминаются фиты которые требуют спасы ...
Гы, воровские сныки сделаны с помощью SUCCESSOR
"TARGETSELF - Тяжелый случай. При 1, фит не может быть использован не на себе. Но наблюдались и другие эффекты!" - например ?
"EFFECTSSTACK - Непонял. Но похоже на то, что если стоит 1, то эффект не суммируется с другими при высоких сложностях." - скорее всего - если фит используют несколько раз то будет ли стаковаться (складываться) эффект друг с дружкой или нет.
"ALLCLASSESCANUSE - Все ли классы могут использовать этот фит? 1 - да, 0 - нет. Если 0 - необходимо добавить фит в соотвестствующий cls_feat_***.2da файл.
З.Ы. Тут есть сложность. В этом файле (cls_feat_***.2da) описывается, где будет находится "иконка" активного фита. Непонятно, как сделать активный фит, который могут использовать ВСЕ классы?!" --- а поставить 1 ???
"SPELLID - Идентификатор заклинания для активных фитов. Все активные фиты создаются через этот параметр. Он, по сути дела, косвенно "связывает" фит со скриптом." - поясни плз
Все таки дойдут у меня руки сделать чтобы девастат на лук был от ловкости, а не от силы - это ж бред чистой воды.
Lemegeton
РЕСПЕКТИЩЕ!.. Отлично!
Спасибо. Но это еще не все. Я еще до расс и классов не добрался. Разберу по косточкам. Ишь, взяли моду - не отвечать на вопросы!
Goblin
1. Спасибо за CR.
QUOTE |
мне не припоминаются фиты которые требуют спасы ... |
QUOTE |
"TARGETSELF - Тяжелый случай. При 1, фит не может быть использован не на себе. Но наблюдались и другие эффекты!" - например ? |
QUOTE |
Непонятно, как сделать активный фит, который могут использовать ВСЕ классы?!" --- а поставить 1 |
QUOTE |
"SPELLID - Идентификатор заклинания для активных фитов. Все активные фиты создаются через этот параметр. Он, по сути дела, косвенно "связывает" фит со скриптом." - поясни плз |
QUOTE |
Все таки дойдут у меня руки сделать чтобы девастат на лук был от ловкости, а не от силы - это ж бред чистой воды. |
Ух ты, а вот это интересно.
Вспомнил одну вещь, которая у меня когда-то не получилась.
Имеем классовый фит, например полиморф Шифтера или Огн.дыхание RDD. Данный фит является активным и появляется, в собственном радиальном меню класса. Однако, объединив предидущие посты имеем следующий результат:
Даем классу RDD в его классовую таблицу фитов фит полиморфа в дракона. Прописываем скрипт, наподобие приведенного выше. Скажем появление нашего фита запланировано с уровня N персонажа. Первый собственный активный фит (аля Огн.дыхание дается на уровне M). И тут проблема: если M>N, то радиальное меню классовых фитов не появляется вообще (хотя в нем должен был появляться наш фит), если M<=N, то меню появляется и в нем мы видим оба фита (наш и родной). Изменение M на формулу не влияет, т.е. наш фит появляется в меню только если оно уже появилось в силу родного фита.
Сам фит работает и скрипт работает, могу выложить строку из 2da.
Собственно вопрос: в чем причина такой дискриминации кустомного фита?
IMHO глюка. Выкладывай все ТРИ строки. Из spell, feat, cls_feat_x.
З.Ы. Как я превращался в дракона:
http://gbds.narod.ru/NWN0001.jpg
http://gbds.narod.ru/NWN0002.jpg
http://gbds.narod.ru/NWN0003.jpg
http://gbds.narod.ru/NWN0004.jpg
http://gbds.narod.ru/NWN0005.jpg
http://gbds.narod.ru/NWN0006.jpg
http://gbds.narod.ru/NWN0007.jpg
http://gbds.narod.ru/NWN0008.jpg
http://gbds.narod.ru/NWN0009.jpg
http://gbds.narod.ru/NWN0010.jpg
Сорри за народ.рю и невбубенные картинки.
Ех! Рано я обрадовался
У меня всё равно ни чего не вышло. Я всё зделал как мне советовал и как расписано в туториале Айван, но проблема осталась. Только теперь заместь грибов уже другое дерево.
У меня возник новый вопрос.
В 2daшке из хака "Пр. Лев." я заметил (также как и в некоторых других), что номерация строк идёт не по порядку. В данном случае стандартные заканчиваются 201-ой строкой, а дописаные начинаются 300-ой. Почему 300, а не 202? Может в ентом вся загвоздка?
Anker
Нет. Как правило колонка ID ничего не решает. Она для личного удобства .
Итак, возьмем строки стандартного полиморфа шифтера и дадим их RDD (изменения в таблицах минимальны - только выдрал и проверил на глючность - глючат ):
Это у нас cls_feat_dradis.2da
CODE |
FeatLabel FeatIndex List GrantedOnLevel OnMenu 41 FEAT_DRAGON_DIS_BREATH 965 3 M 1 ... 71 FEAT_EPIC_WILD_SHAPE_DRAGON 873 1 N 1 |
CODE |
LABEL FEAT DESCRIPTION ICON MINATTACKBONUS MINSTR MINDEX MININT MINWIS MINCON MINCHA MINSPELLLVL PREREQFEAT1 PREREQFEAT2 GAINMULTIPLE EFFECTSSTACK ALLCLASSESCANUSE CATEGORY MAXCR SPELLID SUCCESSOR CRValue USESPERDAY MASTERFEAT TARGETSELF OrReqFeat0 OrReqFeat1 OrReqFeat2 OrReqFeat3 OrReqFeat4 REQSKILL ReqSkillMinRanks REQSKILL2 ReqSkillMinRanks2 Constant TOOLSCATEGORIES HostileFeat MinLevel MinLevelClass MaxLevel MinFortSave PreReqEpic 873 FEAT_EPIC_WILD_SHAPE_DRAGON 8667 8668 ife_X2WShpDrag **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 725 **** 1 **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_WILD_SHAPE_DRAGON 6 **** **** **** **** **** 0 |
CODE |
Label Name IconResRef School Range VS MetaMagic TargetType ImpactScript Bard Cleric Druid Paladin Ranger Wiz_Sorc Innate ConjTime ConjAnim ConjHeadVisual ConjHandVisual ConjGrndVisual ConjSoundVFX ConjSoundMale ConjSoundFemale CastAnim CastTime CastHeadVisual CastHandVisual CastGrndVisual CastSound Proj ProjModel ProjType ProjSpwnPoint ProjSound ProjOrientation ImmunityType ItemImmunity SubRadSpell1 SubRadSpell2 SubRadSpell3 SubRadSpell4 SubRadSpell5 Category Master UserType SpellDesc UseConcentration SpontaneouslyCast AltMessage HostileSetting FeatID Counter1 Counter2 HasProjectile 707 Greater_Wild_Shape_Red_dragon 12491 is_ShpDragon T P v 0x00 0x01 X2_S2_GWildShp **** **** **** **** **** **** 3 1500 hand **** vco_smhannatr01 **** sco_mehannatr01 **** **** out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 677 2 **** 0 0 83578 0 329057129 **** **** 0 708 Greater_Wild_Shape_Blue_dragon 12467 is_ShpDragon T P v 0x00 0x01 X2_S2_GWildShp **** **** **** **** **** **** 3 1500 hand **** vco_smhannatr01 **** sco_mehannatr01 **** **** out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 677 3 **** 0 0 83578 0 329122665 **** **** 0 709 Greater_Wild_Shape_Green_dragon 12487 is_ShpDragon T P v 0x00 0x01 X2_S2_GWildShp **** **** **** **** **** **** 3 1500 hand **** vco_smhannatr01 **** sco_mehannatr01 **** **** out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 677 3 **** 0 0 83578 0 329188201 **** **** 0 ... 725 Dragon_Shape 8667 is_ShpDragon T P v **** 0x01 X2_S2_GWildShp **** **** **** **** **** **** 1 1500 hand **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 707 708 709 **** **** **** **** 3 **** 0 0 83895 0 873 **** **** 0 |
QUOTE |
невбубенные картинки |
См. приват.
QUOTE (K.SpecTr @ Dec 27 2004, 19:27) |
Ну я за 5-ть минут только пол картинки закачал и обломался, а что там было? |
А в чём же тогда дело?
Что ты сделал? Паоитру Левора экспортировал/импортировал?
Попробуй в cls_feat_****.2da поменять в столбце List 1 на 3.
И UserType в SPELLS.2DA посмотри. Не очень-то понятно, где у тебя фит должен стоять.
Да, если у тебя версия выше 1.60, не заморачивайся так с радиальными активными фитами. И без этой мути работают.
"Сбивание с ног" --- а так это какой спас будет против этого фита, а я думал что идет речь о том что для взятия какого-то фита требуется определенное кол-во спаса.
"Э, батенька, это уже на скриптах решать надобно. Да и почему бред? Ты лук видел? А тетиву натянуть пробовал? Там нужна сила. А ловкость, скорее на скорость." - позволю себе не согласится -- девастат по идее рассматривается МНОЙ как эдакий супер пупер удар которым можно с одного щелчка завалить противника, за счет так сказать большОго умения мастера. Дык для использования лука в основном нужна ловкость - чтобы так стрелу пустить чтобы она попала в такое место (каждый думает конечно в меру своей испорченности, но туда - тоже вариант ) чтоб врага сразу сдуло. А сила действительно влияет - но на урон наносимый стрелой, который в данном случае и приравнивается к скорости стрелы (считаем что стреляется одинаковыми по массе стрелами). Так что ИМХО как раз от ловкости должен расчитываться девастат, а не от силы. Эт так скаать разь. И двазь - почему на скриптах - взять скрипт от девастата (он общий) - выдрать из него ту часть которая отвечается за лук (арбалет, пращу и т.д.) и оформить в виде отдельного фита который привязать к достижению допустим 25 ловкости и в самом скрипте поставить где была сила - ловкость. Т.о. стандартный девастат останется, а мой будет появлятся тогда когда мне надо т.е. при достижении персом 25 ловкости. В принципе придется конечно по скриптам полазить - не без этого, но чтоб только на скриптах - эт ты загнул
"Например, пропадает курсор, и спелл, привязаный "на себя" кастуется без "наводки"." - т.е. должен кастовать на себя, а кастуется на кого то от балды, кто рядом стоит - или я чего то не понял ?
"Имеется в виду АКТИВНЫЙ фит, присутствующий в радиальном меню. А где ты поставишь OnMenu???????" --- хм, ну тогда в том самом цлс_фитс прописать твой фит каждому классу вручную ...
"Сорри за народ.рю и невбубенные картинки. " -- ты бы еще видео снял в авишнике - а то вдруг кто не поймет - как полиморфится надо =))))))))))))))))
2K.SpecTr : Убери "перенос по словам" в блокноте - все сразу преобразится в более менее нормальную картину
т.е. если сначала полиморф - потом перегар -- то перегар не взять никогда, а если наоборот - сначала перегар взять - то полиморф потом взять можно --- я прально понял ?
QUOTE |
а я думал что идет речь о том что для взятия какого-то фита требуется определенное кол-во спаса. |
QUOTE |
ну тогда в том самом цлс_фитс прописать твой фит каждому классу вручную ... |
QUOTE |
ты бы еще видео снял в авишнике - а то вдруг кто не поймет - как полиморфится надо =)))))))))))))))) |
QUOTE |
...на урон наносимый стрелой, который в данном случае и приравнивается к скорости стрелы... |
QUOTE |
...и в самом скрипте поставить где была сила - ловкость... |
QUOTE (Goblin @ Dec 28 2004, 16:15) |
2K.SpecTr : Убери "перенос по словам" в блокноте - все сразу преобразится в более менее нормальную картину |
QUOTE (Lemegeton @ Dec 28 2004, 16:03) |
Да, если у тебя версия выше 1.60, не заморачивайся так с радиальными активными фитами. И без этой мути работают |
QUOTE (Goblin @ Dec 28 2004, 16:15) |
т.е. если сначала полиморф - потом перегар -- то перегар не взять никогда, а если наоборот - сначала перегар взять - то полиморф потом взять можно --- я прально понял ? |
QUOTE (Lemegeton @ Dec 28 2004, 16:03) |
List 1 на 3 |
QUOTE (Lemegeton @ Dec 28 2004, 16:03) |
И UserType в SPELLS.2DA посмотри |
Вот это да?! Я попробовал сделать то же самое - усе нормально!!! Бредятина. Буду искать разницу. Какая у тебя вресия?
QUOTE (K.SpecTr @ Dec 28 2004, 17:07) |
И смотреть не надо, все правильно (3=feat) |
QUOTE (Lemegeton @ Dec 28 2004, 17:14) |
Я попробовал сделать то же самое - усе нормально!!! |
Нет политру я не экспортировал и не импортировал, не знал как.
Я пробовал редактировать 2da файл вашего хака. Делак всё как писал Айван. Брал стандартный плейсебл и добавлял строки из вашего хака. При этом изменились вещи которые вылазят заместь стандартных и всё.
Я уже начал подумывать что дело в каком то нюансе о котором я не знаю.
QUOTE (Anker @ Dec 28 2004, 17:27) |
Нет политру я не экспортировал и не импортировал, не знал как. |
QUOTE (K.SpecTr @ Dec 28 2004, 17:07) | ||
Ноль, и вроде это влияет на принадлежность фита (combat, metamagic, class ets.), а не на то что нужно. |
Блин...Anker, наш хак очень устарел. На волте полно плэйсов. Зачем тебе наш??
QUOTE (Lex @ Dec 28 2004, 21:58) |
Блин...Anker, наш хак очень устарел. На волте полно плэйсов. Зачем тебе наш?? |
В этом году ничего больше делать не могу. Вернусь с попоек, буду ковыряться.
Все. Ухожу на каникулы. До 11.01.2005. Всем удачно встретить Новый Год!
2Lemegeton :
"Позволь не согласиться, дабы стреле скорость придать нужно ей придать ускорение, оно, извини от твоей силы зависит. Ловкость это, скорее, точность действий. Хотя, если в глаз с пяти метров засадить - тут силы много не потребуется. " ---- а я думал что скорость стрелы зависит от так сказать тетивы лука (если тетиву хрен натянешь то и скорость стрелы если натянешь будет огого, а если это резинка от трусов а не тетива, то и стрела полетит соответственно как говно по параболе, а не как стрела) -- если ты это имел ввиду то да - тут от силы зависит. Но ведь урон из лука зависит не только от натяга тетивы (что у нас приравнивается к скорости стрелы и мощности выстрела), а еще от массы стрелы (кстати, может стрелы +1, +2, +3 просто поменять на названия с разными массами стрел - ИМХО больше реалистичности) и от того куда именно направлена эта стрела - а это в свою очередь зависит как раз от ловкости. У лучника вроде все таки берется силы 14 - 16 ... в среднем, что ИМХО как раз хватает для удовлетворения требований по силе натяга тетивы для разных луков, а вот чем больше ловкость (т.к. в НВН нету таких понятий как меткость, восприятие и т.д. то все они входят в ловкость - ЭТО МОЕ ИМХО) - тем больше шанс того что лучник засадит свою тетиву в какое-нить сочленение доспехов и сильно ослабит или сразу завалит супостата. Кроме того некоторые стрелы можно сделать против определенного типа доспехов - я где то читал что для пробивания тяжелых копейщиков (эдакие маленькие танки в фуллплейтах) использовались тяжелые стрелы с тупыми наконечниками которые выпускались из луков с достаточно большой силой натяжения и с достаточно близкого расстояния - при лобовом ударе (прямо в душу) - стрела прошибала копейщика навылет.
"Например?" --- вот и я не мог вспомнить. Но теперь все ясно.
"А при мультиклассе у тебя за каждый класс этот фит давать будут." --- может я чего то не вижу, но чем это плохо ?
"А всего остального можно и не делать..." -- угу и тогда девастат на все будет работать от ловкости, а не от силы = 5 баллов (для двуручного топора например ). Или в девастате есть часть которая отвечает именно за ранжед оружие? Кроме того - для взятия девастата на ранжед оружие нужно чтобы ловкости было 25, а не силы, а то получится допустим - чтобы взять девастат - силу надо взять 25, а модификатор девастата будет учитываться исходя из ловкости персонажа --- вот это будет подстава.
"Это я дабы не быть голословным сделал. Чтобы не подумали, что от балды свое IMHO выложил." - ето быль сарьказьм с моей стороны без желания обидеть слушающего (читающего в нашем случае )
2K.SpecTr
- ну ничаго ничаго - вот получишь ответ в таком же виде - типа я тоже ведь писать буду, а не читать -- воть тадыть и поговоримс
Дык у тебя получается что меню (в данном случае РДД) появляется с появлением перегара, ясен пень что если что-то раньше перегара в этом меню появляется - ты этим пользоваться не сможешь пока перегара не будет. Ты привяжи появление классового меню к тому что раньше появляется ... и все должно заработать .... (или я опять что-то не понял = вот что я действительно не понял - это как можно сделать так что РДД получает все свои классовые возможности без перегара (отключение перегара как фита не рассматривается) )
QUOTE (Goblin @ Dec 30 2004, 15:04) |
- ну ничаго ничаго - вот получишь ответ в таком же виде - типа я тоже ведь писать буду, а не читать -- воть тадыть и поговоримс |
QUOTE (Goblin @ Dec 30 2004, 15:04) |
или я опять что-то не понял = вот что я действительно не понял - это как можно сделать так что РДД получает все свои классовые возможности без перегара |
QUOTE (Goblin @ Dec 30 2004, 15:04) |
Ты привяжи появление классового меню к тому что раньше появляется |
Солидно... Респект. Только вот проблема с появлением фита в радиальном меню бывает часто...
С нетерпением жду classes.2da думаю будет также информативно.
Clement Astilon
Напросился
Делаем классы.
Сперва разбор таблиц, затем проблемы, с которыми я столкнулся (собственно из-за проблем и пишу, а то до возвращения Lemegeton'a не вытерплю ). Замечания приветствуются.
classes.2da - Первая таблица и главная (что логично)
Id,Label - ид строки и текстовая метка класса
QUOTE (Lemegeton) |
как и везде |
Не плохо. Респект.
Можно уже потихоньку оформлять в русский мануаль по 2да
Clement Astilon, займешься этим?
<small>Добавлено в 13:27</small>
ДО КУЧИ:
CODE |
__________________________________________________________ __________________________________________________________ Обшие столбцы: ID(пустой столбец) - итендификатор, используется чаще всего для ссылки на другие 2да, причём само число неважно,- т.к учитывается лишь номер строки, однако полезно. Description/STR_REF/Name - текстовая информация (описание,название и т.д) В качестве значения указывается ссылка на ID из *.tlk файла. LABEL - внутригровое имя, иногда используется для ссылок в 2да но чаще просто как удобное обозначение. ____________________________________________________ ammunitiontypes.2da Model - имя файла модели ShotSound - звук при выстреле ImpactSound - звук при попадании ____________________________________________________ apperance.2da NAME - имя используюшееся для принадлежности данной модели персонажа RACE - имя файла с моделью. ENVMAP - текстура которая будет использоваться для создания эффекта отражения. BLOODCOLR - цвет крови: R - красный, G - зеленый, W - белый, O - оранжевый, Y - желтый, B - голубой, P - пурпурный. MODELTYPE - тип модели: P - модель игрока, F - модель с "полным" набором анимации, S - модель с набором анимации creature (монстры, животные), L - модель с набором анимации creature, но с анимацией оружия. WEAPONSCALE - визуальное увеличение/уменьшение оружия( 1 - без изменений). WING_TAIL_SCALE - визуальное увеличение/уменьшение "крыльев" существа. HELMET_SCALE_M - визуальное увеличение/уменьшение шлема (мужск) HELMET_SCALE_F - визуальное увеличение/уменьшение шлема (женск) MOVERATE - скорость передвижения.(численые значения этих переменных см. в creaturesspeed.2da). WALKDIST - перемешение при ходьбе. RUNDIST - перемешение при беге. PERSPACE,CREPERSPACE - расстояние на которим могут находиться персонажи друг от друга. HEIGHT - высота ??? HITDIST - расстояние удара PreFatCKDist - растояние атаки без использования оружия. TARGETHEIGHT - высота цели(а точнее тип атаки H или L ). ABORTONPARRY - ??? RACIALTYPE - расса HASLEGS, HASARMS -соответственно определяют есть ли у перонажа ноги и руки. PORTRAIT - портрет по умолчанию. SIZECATEGORY - размер, ID из creaturesize.2da PERCEPTIONDIST - дистанция обнаружения(появления). FOOTSTEPTYPE - звук при ходьбе (ID из Footstepsounds.2da) SOUNDAPPTYPE - остальные звуки персонажа (ID из apperancesndset.2da) HEADTRACK - возможность поворачивания головы в сторону других персонажей . HEAD_ARC_H и HEAD_ARC_V - соответственно углы поворота. HEAD_NAME - название обьекта головы в MDL модели персонажа. BODY_BAG - набор сокровишь ( ID из Bodybag.2da). TARGETABLE - определяет может ли данная модель выбираться в качестве цели.(подсвечиваться) _________________________________________ apperancesndset.2da ArmorType - тип брони WeapTypeL,WeapTypeR,WeapTypeS,WeapTypeClsLw,WeapTypeClsH,WeapTypeRch ,FallFws, FallBck - звук звучащий при соответствующих ударах/падениях ( ИД из Looping - постоянно повторяющийся звук _________________________________________ areaeffects.2da SHAPE - Способ задания формы зоны: R- прямоугольник, C - круг. RADIUS - радиус круга (если используется круг) WIDTH, LENGTH - ширина и длина квадрата. ONENTER - скрипт выполняемый при входе в зону HEARTBEAT - скрипт периодически выполняемый когда объект находится в зоне. ONEXIT - скрипт выполняемый при покидании зоны. _________________________________________ Armor.2da ACBONUS - общий бонус АС DEXBONUS - максимальный бонус от ловкости ACCHECK - пенальти к скилам ARCANEFAILURE% - процент "провала" заклинания WEIGHT - вес COST - цена _________________________________________ Baseitems.2da InvSlotWidth - занимаемое место в инвентаре - ширина. InvSlotHeight - занимаемое место в инвентаре - высота. EquipableSlots - слоты в которые можно экипировать данный предмет: 0x00000 – не экипируемое 0x00001 - шлем 0x00002 - броня 0x00004 - обувь 0x00008 - перчатки 0x00010 - расходуемое оружие 0x00020 - щит 0x00030 - Дистанционное оружие 0x00040 - плащ 0x00180 - кольцо 0x00200 - амулет 0x00400 - пояс 0x00800 - стрелы 0x01000 - заряды для пращи 0x02000 - заряды для арбалета 0x1C000 - оружие существа 0x1C010 - двуручное оружие 0x1C030 - одноручное оружие 0x20000 - броня существа (щкура) CanRotateIcon -возможность поворачивать в окне редактора. ModelType - тип модели 1 - используется только для шлема 2 - составная модель 3 - броня 0 - выборачная модель (выбирается иконка модели, а вместе с ней подставляется и модель). ItemClass - имя модели (для разных типов моделей, свои правила в именах). GenderSpecific - определяет зависит ли выбор модели от пола персонажа. Part1EnvMap, Part2EnvMap, Part3EnvMap - текстура отражения соответственно для 1-й 2-й и 3-й частей модели. DefaultModel - модель по умолчанию. DefaultIcon - иконка по умолчанию. Container - определяет является ли модель контейнером.(можно ли туда что-то положить). WeaponWield - определяет тип анимации для этой модели: 1 - без типа анимации (предметы которые носят ) 2 - 3 - 4 - копья и т.д 5 - Лук 6 - арбалет 7 - шит 8 - двухсторонние мечи и т.д 9 - оружие существ 10 - дарты и праща (гранаты) 11 - Сюрикены, метательные топоры **** - стандартное оружие WeaponType - тип урона от оружия 1 - колющий 2 - дробящий 3 - режущий 4 - колющий и режущий WeaponSize - размер окужия 1 - мелкий 2 - маленький 3 - средний 4 - большой RangedWeapon - дистанционное оружие(ID амуниции из этого же файла). PrefAttackDist, MinRange, MaxRange, NumDice, DieToRoll, CritThreat, CritHitMult - стандартный харак-ки оружия . CritThreat - вероятность нанесения критического удара 1 - d20 2 - d19-20 3 - d18-20 и т.д BaseCost - базовая цена. Stacking - по сколько штук может храниться (например стрелы 99). InvSoundType - звук в инвентаре (ID из Inventorysnds.2da). StorePanel - определяет в какой группе находится предмет у торговца 0 - броня 1 - оружие 2 - эликсиры 3 - маг. вещи 4 - ReqFeat0, ReqFeat1, ReqFeat2, ReqFeat3, ReqFeat4 - требуемые фиты( ID из Feats.2da) AC_Enchant, BaseAC, ArmorCheckPen -снова хар-ки оружия. ChargesStarting - количество зарядов. RotateOnGround - возможность поворота на земле. TenthLBS - Вес. WeaponMatType - тип материала оружия.(используется в основном для определения звука и т.д) AmmunitionType - тип аммуниции (ID из ammunutiontypes.2da). ArcaneSpellFailure - вероятность срыва закленания %AnimSlashL, %AnimSlashR, %AnimSlashS - вероятность проигрования одного из типов анимации. ILRStackSize - почти тоже что и Stacking. __________________________________________ Classes.2da HitDie - хитов на уровень (думаю понятно) AttackBonusTable - имя таблицы BAB (Base Attack Bonus) см. любую из них там всё просто. FeatsTable - имя таблицы фитов (о ней ниже) SavingThrowTable - таблица спасс бросков (там тоже всё понятно) SkillsTable - таблица скилов. BonusFeatsTable - таблица бонусных фитов (привет из ХоТУ .. - дополнительная таблица по фитам) SkillPointBase - сколько скил пойнтов получает этот класс не считая всяких там бонусов за интелект и т.д. SpellGainTable - таблица спеллов которые "даются" - т.е слоты для спеллов. SpellKnownTable - таблица спеллов которые "может применить" - т.е как сорк Н-дцать спелов опред левла. PlayerClass - может ли игрок использовать этот класс. SpellCaster - и так понятно, 1 - класс спелкастер, 0 - нет. Str,Dex,Con,Wis,Int,Cha - "рекомендуемые" параметры. PrimaryAbil - основная для класса характеристика (я точно не уверен но кажется она как-то влияет на опыт) AlignRestrict - ограничитель на alignment: 0x01 = NEUTRAL, 0x02 = LAWFUL, 0x04 = CHAOTIC, 0x08 = GOOD, 0x10 = EVIL. AlignRstrctType - дополнение к первому, но влияет как бы сказать на линию: 0x01 = lawchaos, 0x02 = goodevil, 0x03 = оба. Constant - константа класса, впринцепе очень нужна только для скриптов. EffCRLvl1-20 - эффективный уровень, вляет на опыт персонажа. PreReqTable - таблица требований престижа MaxLevel - максимальный уровень в классе. XPPenalty - пеннальти за мультиклассовость ArcSpellLvlMod, DivSpellLvlMod - эффективный уровень кастера. EpicLevel - когда становиться эпиком. Package - пресеты. cls_atk_* - таблица изменения BAB (Base Attack Bonus) cls_bfeat_* - таблица получения "бонусных" фитов ___________________________________ cls_feat_* - таблица отвечающая за набор фитов для каждого класса. ___________________________________ cls_pres_* - набор "ограничений" для класса ReqType - тип переменной (тип требования) ReqParam1, ReqParam2 - требуемый параметр 1 и 2 соответственно. Наборы примерно такие: FEAT - фит/ в качестве параметра указывается ИД из Feat.2da FEATOR - один из фитов/ в качестве параметра указывается ИД из Feat.2da RACE - расса/ в качестве параметра указывается ИД из Racialtypes.2da BAB - собственно BAB/ в качестве параметра указывается число ARCSPELL - возможность колдовать тайные (arcane) заклинания/ в качестве параметра указывается требуемый уровень заклинаний SKILL - скилл/ в качестве первого параметра указывается ИД из Skills.2da, в качестве второго необходимое значение скилла CLASS - класс/ в качестве параметра указывается ИД из Сlasses.2da CLASSOR - один из классов/ в качестве параметра указывается ИД из Сlasses.2da VAR - локальная переменная на персонаже/ в качестве первого параметра указывается имя переменной, в качестве второго необходимое значение DIVSPELL -? SKILLOR - ? ____________________________________ cls_savthr_* - таблица спасов для каждого класса. Level - уровень игрока FortSave - RefSave - WillSave - ____________________________________ cls_skill_* - таблица скиллов для каждого класса SkillLabel - внутр. название скила SkillIndex - ИД из Skills.2da ClassSkill - определаяет расход скил пойнтов на скилл ____________________________________ creaturesize.2da - ACATTACKMOD - модификатор атаки. ____________________________________ creaturspeed.2da 2DAName - имя используемое в других 2да WALKRATE - частота шагов (перемещение при этом указывается в appernace.2da) RUNRATE - частота бега (перемещение указывается в apperance.2da) ____________________________________ damagehitvisual.2da VisualEffectID - виз.эффект для оружия ближнего боя (итендификатор из visualeffects.2da ) RangedEffectID - виз.эффект для оружия дальнего боя ( итендификатор из visualeffects.2da ) ____________________________________ defaultacsounds.2da Label - собственно АС ArmorType - тип брони (см. ____________________________________ des_ * ///////////////////////////////////// ____________________________________ Disease.2da First_Save - Subs_Save - Incu_Hours - Dice_1 - Dam_1 - Type_1 - Dice_2 - Dam_2 - Type_2 - Dice_3 - Dam_3 - Type_3 - Type - End_Incu_Script - 24_Hour_Script - __________________________________ domains.2da Level_1-9 - определяет халявные заклинания, GrantedFeat - каким фитом даётся домен ????? CastableFeat - __________________________________ doortypes.2da Model - модель двери TileSet - тайлсет к которой она относится TemplateResRef - ресреф модели по умолчанию (если имееется) StringRefGame - BlockSight - VisibleModel - видимость модели SoundAppType - звук ( ИД из __________________________________ ...................... __________________________________ Feat.2da FEAT - имя фита (ид из tlk) MINATTACKBONUS - минимальный BAB для получения фита. MINSTR, MINDEX, MININT, MINWIS, MINCON, MINCHA - мин. характеристики. MINSPELLLVL - минимальный уровень заклинаний PREREQFEAT1, PREREQFEAT2 - требуемый фит, для взятия этого. GAINMULTIPLE - можно ли брать фит несколько раз. (1-да 0 - нет) EFFECTSSTACK - "накапливаемость" фита ALLCLASSESCANUSE - может ли фит использоваться всеми классами CATEGORY - MAXCR - SPELLID - ид из Spells.2da (фактически там указывается действие фита) SUCCESSOR - CRValue - USESPERDAY - сколько раз в день можно использовать фит. MASTERFEAT - TARGETSELF - OrReqFeat0 - почти то же что и PREREQFEAT1, но требуется только один из них, а не обязательно оба REQSKILL - требуемый скилл (ИД из ReqSkillMinRanks - требуемое минимальное значение скила Constant - константа фита TOOLSCATEGORIES - HostileFeat - MinLevel - минимальный требуемый уровень игрока. MinLevelClass - класс для минимального требуемого уровня игрока. MaxLevel - максимальный уровень (после него фит нельзя взять) MinFortSave - PreReqEpic - требование к "эпичности" персонажа. __________________________________ footstepsounds.2da Label - тип персонажа Dirt0, Grass0, Stone0 и далее - это типы поверхности (указываются звуковые файлы шагов, для этих поверхностей) __________________________________ genericdoors.2da ////////////////////////////// __________________________________ hen_companion.2da BASERESREF - ресреф с хенчем (имя стандартного utp файла) __________________________________ IPRP_ * - эти файлы отвечают за некоторые инструменты и функции в тулсете, большенство из них несут просто текстово/ресрефовую информацию, но некоторые черезвычайно полезны, в основном за счёт так называемого модификатора цены cost, а так же возможности дополнить их недоступными ранее свойствами либо разрешить использование каких либо ранее запрещённых свойств, например: iprp_lightcost.2da Если в нём изменить значение Cost = 0.5 у Type:_Bright_(20m), на скажем (минус) "- 10", - то добавление у свойств предмета самого яркого света, будет не увиличевать стоимость предмета (как в голдах, так и в левлах), а наоборот понижать её. Или к примеру, можно расширить список iprp_onhitspell.2da, что бы добавить новые (возможно даже самодельные) спеллы к оружию. __________________________________ parts_* COSTMODIFIER - множитель цены ACBONUS - бонус к АС А так же в случае с parts_robe.2da HIDEFOOTR, HIDEFOOTL и т.д - определяют какие части модели брони скрывать при использовании робы. __________________________________ placeableobjsnds.2da ArmorType - тип материала из которого изготовлен плейсибл. Opened - звук при открытии плейсибла Closed - соответственно при закрытии Destroyed - уничтожении Used - использовании Locked - запирании __________________________________ placeable.2da ///////////////////////////////////////////////////// __________________________________ poison.2da Save_DC Handle_DC Dice_1 Dam_1 Default_1 Script_1 Dice_2 Dam_2 Default_2 Script_2 Cost OnHitApplied VFX_Impact __________________________________ polymorph.2da AppearanceType - модель для замены (ИД из apperance.2da) RacialType - раса (ИД из RacialTypes.2da) PortraitId - портрет (ИД из Portraits.2da) Portrait - прямое имя портрета CreatureWeapon1 - оружие существа (файл либо ресреф) HideItem - броня в слоте Hide(шкура) (файл либо ресреф) EQUIPPED - экиперовка оружием (файл либо ресреф) STR, CON, DEX - приобретаемые характеристики NATURALACBONUS - бонус к АС HPBONUS - бонус к НР SoundSet - набор звуков (ИД из SPELL1, SPELL2, SPELL3 - активные фиты (спеллы) приобретаемые с полиморфом(ИД из spells.2da) MergeW - остаётся возможность менять оружие MergeI - остаётся возможность менять предметы (кольца, амулеты и т.д) MergeA - остаётся возможность менять броню __________________________________ portraits.2da /////////////////////////////////////// __________________________________ race_feat_* FeatLabel - название фита. FeatIndex - ID из Feats.2da __________________________________ racialtypes.2da Abbrew - Сокращенное название. Name - имя расы. NamePlural - имя во множественном числе. Description - описание. Appearance - дефолтная модель.(ID из Appearance.2da) StrAdjust - поправка на силу. DexAdjust - то же для ловкости. ConAdjust - для телосложения. IntAdjust - для интеллекта. WisAdjust - для мудрости. ChaAdjust - для харизмы. Favored - Favorite Class для этой расы. ( ID класса из classes.2DA.) FeatsTable - таблица фитов рассы. Biography - биография. (ID из dialog.tlk). PlayerRace - может ли игрок выбрать расу. Constant - константа рассы. Age - примерный возраст. __________________________________ restduration.2da LABEL - уровень DURATION - длительность отдыха __________________________________ skills.2da Untrained - подготовленость в данном скиле. KeyAbility - ключевая характеристика для скилла. ( STR (сила), DEX (ловкость), CON (телосложение), INT (интеллект), WIS (мудрость), CHA (обаяние).) ArmorCheckPenalty - дает ли пенальти надетая броня при использовании скилла. 0 — нет, 1 — да. AllClassesCanUse — все ли классы могут использовать этот скил. Если поставить 0 — нет, если 1 — да. Constant - константа умения. HostileSkill - __________________________________ Sound* ////////////////////////////////////////////////////////////////// __________________________________ spells.2da ////////////////////////////////////////////////////////////////// форум __________________________________ spellschools.2DA Letter - буква идентификатор школы(исп-ся для других 2da) StringRef — имя в игре (ID из tlk) Opposition — противоположная школа магии. ( ID другой школы ). Description — описание(ID из tlk) __________________________________ surfacemat.2da Label - тип поверхности Walk - можно ли ходить по данной местности (1-да 0 -нет) WalkCheck - LineOfSight - используется ли на данном типе местности LineOfSight Sound - звук издаваемый на данной поверхноти (значение из IsWater - определяет воду Visual - виз. эффект на месте следов (да и сами следы в том числе) __________________________________ *_edge.2da //////////////////////////////////////////////////////////////// __________________________________ traps.2da TrapScript - скрипт ловушки SetDC - DetectDCMod - DisarmDCMod - TrapName - ResRef - IconResRef - __________________________________ vfx_persistent.2da ///////////////////////////////////////////////////////////////// __________________________________ visualeffects.2da Type_FD - тип эффекта: f - fire and forget d - duration b - beam p - permament OrientWithGround - Imp_HeadCon_Node - модель эффекта которая будет прикреплина к хелперу head (т.е голове) Imp_Impact_Node - модель эффекта которая будет прикреплина к хелперу Impact (который находится на туловище) Imp_Root_S_Node, Imp_Root_M_Node, Imp_Root_L_Node, Imp_Root_H_Node - модель которая будет прикреплина к Root-у, где S,M,L,H - для разных размеров персонажа. ProgFX_Impact - SoundImpact - звук при ProgFX_Duration - SoundDuration - длительность звука ProgFX_Cessation - SoundCessastion - звук при Ces_HeadCon_Node - модель эффекта которая будет прикреплина к хелперу head (т.е голове) при ... Ces_Impact_Node - модель эффекта которая будет прикреплина к хелперу Impact (который находится на туловище) при ... Ces_Root_S_Node и т.д - ShakeType - тип эффекта "землетрясения" ShakeDelay - задержка "землетрясения" ShakeDuration - длительность "землетрясения" LowViolence - LowQuality - ___________________________________ weaponsounds.2da ////////////////////////////////////////////////////////////////// ___________________________________ продолжение пишется ... то описание чего отсутствует или помеченно //////////, - будет в скором времени дополнено. ___________________________ |
Да пожалуй займусь.
Хорошие описания, Респект
Было бы ОЧЕНЬ здорово.
Наверное в тутор надо все таблицы разобрать (каждый столб что значит) и примеры.
Чем больше, тем лучше. В идеале для каждой таблицы пример кастомной строки.
Так намного легче изучать.
Хм, где здесь Айс публиковал список безопасных ID для 2da'шек? Очень нужно racialtypes и appearance
Vhall’rafein
Это есть среди статей у нас на сайте вроде бы... Просмотри, будет быстрее.
Спасибо за мастера, дали в тихую - я и не заметил.
Lex
"Куча" - это хорошо, но лучше мы это все здесь детально разберем, для редактирования неточностей и пропусков.
Ну да ладно, продолжаем с классами.
Еще немножко таблиц, нужных для создания класса (они простые, но есть моменты)
CLS_ATK_*.2da - таблица зависимости базового модификатора атаки от уровня персонажа
Level - Это не ид, а уровень персонажа (столбец не имеет метки, 0=1-му уровню)
BAB - базовая атака для этого уровня
CLS_ATK_1.2da - таблица для файтеров
CLS_ATK_2.2da - таблица для клириков
CLS_ATK_3.2da - таблица для магов
CLS_BFEAT_***.2da - таблица задающая получение дополнительных фитов персонажа
Level - уровень персонажа
Bonus - количество дополнительно получаемых фитов на этом уровне
CLS_SAVTHR_***.2da - таблица, задающая зависимость сэйвов данного класса от уровня
Id - Ид
Level - уровень персонажа
FortSave - соответствующий уровню спас.бросок по стойкости
RefSave - соответствующий уровню спас.бросок по рефлексам
WillSave - соответствующий уровню спас.бросок по воле
CLS_SKILL_***.2da - таблица, задающая классовые и внеклассовые навыки персонажа
Id - Ид
SkillLabel - метка(название) навыка
SkillIndex - индекс навыка в таблице skills.2da
ClassSkill - является ли навык классовым (1-да и стоит одно очко для повышения; 0-нет и стоит 2 очка)
Замечание: Если какие-то навыки надо сделать недоступными классу, то соответствующие строки не должны включаться в таблицу (например, UMD)
Кроме того, надо редактировать таблицу skills.2da (будет ниже)
CLS_SPGN_***.2da - таблица зависимости доступных слотов заклинаний от уровня персонажа
Id - Ид
Level - уровень персонажа
NumSpellLevels - текущий максимальный уровень заклинаний (1..10, т.к. кэнтрипы считаются 1-го уровня)
SpellLevel0,SpellLevel1,...,SpellLevel9 - количество доступных слотов для заклинаний данного уровня (а тут кэнтрипы считаются 0-го уровня)
Значение **** вместо нуля, это так к слову.
CLS_SPKN_***.2da - таблица, задающая максимальное количество заклинаний в книге, которые может выучить Сорк/Бард для конкретного уровня опыта
Id - Ид
Level - уровень персонажа
SpellLevel0,SpellLevel1,...,SpellLevel9 - количество доступных для изучения заклинаний соответствующего уровня при повышении уровня персонажа
Совет: не ставте число большее, чем число всех возможных заклинаний данного уровня - результат может быть непредсказуемый.
Можно ставить меньшее число, чем на предыдущем уровне - персонаж должен будет отказаться от заклинаний (у меня просто обрезало последнее известное заклинание)
PackSP***.2da - таблица с заклинаниями, выбираемыми персонажем по умолчанию
Id - Ид
SpellIndex - индекс заклинания в spells.2da
Label - текстовая метка заклинания
Замечание: Это не только заклинания в книге, но и "любимые" по приоритету для кастования (так что табличку для клериков тоже делать прийдется)
PackFT***.2da - таблица c фитами, которые будут выбранны персонажем по умолчанию
Id - Ид
FeatIndex - индекс фита в feat.2da
Label - текстовая метка фита
Замечание: Нужно перечислить все возможные для класса фиты (а их может быть ой как много), т.к. этот приоритет выбора должен учитывать фиты, выбранные вручную
Замечание 2: В принципе можно и не все, но тогда есть шанс краша (хоть его вероятность близка к нулю), но обязательно не меньше чем максимальное количество фитов, которые может выбрать персонаж на максимальном уровне (из доступных).
PackSK***.2da - таблица c распределением очков навыка по умолчанию (точнее приоритета навыков)
Id - Ид
SkillIndex - индекс навыка в skills.2da
Label - текстовая метка навыка
Замечание: если все перечисленные в таблице навыки уже нельзя повышать, то очки навыков останутся не распределенными.
PackEQ***.2da - таблица, перечисляющая все итемы в стартовом инвентаре персонажа
Id - Ид
Label - таг вещи, например NW_IT_TORCH001 для факела (хотел бы я знать где они все перечисляются, ведь где-то же они это делают)
Дальше больше...
DBColl
В статьях нет и тему 2da FAQ удалили (распределили). Весело
ambientmusic.2da - 150
ambientsound.2da - 200
ammunitiontypes.2da - 75
appearance.2da - 750
appearancesndset.2da - 50
baseitems.2da - 200
bodybag.2da - 20
chargenclothes.2da - 40
classes.2da - 50
creaturesize.2da - 20
crtemplates.2da - 20
defaultacsounds.2da - 20
disease.2da - 30
domains.2da - 50
doortypes.2da - 300
effecticons.2da - 175
environment.2da - 50
feat.2da - 2000
footstepsounds.2da - 30
genericdoors.2da - 20
hen_companion.2da - 20
hen_familiar.2da - 20
iprp_feats.2da - 50
iprp_spellcost.2da - 300
iprp_spells.2da - 750
itempropdef.2da - 150
itemprops.2da - 150
loadscreens.2da - 150
masterfeats.2da - 30
metamagic.2da - 20
packages.2da - 150
parts_belt.2da - 30
parts_bicep.2da - 30
parts_chest.2da - 75
parts_foot.2da - 30
parts_forearm.2da - 40
parts_hand.2da - 20
parts_legs.2da - 30
parts_neck.2da - 20
parts_pelvis.2da - 50
parts_shin.2da - 30
parts_shoulder.2da - 50
placeableobjsnds.2da - 50
placeables.2da - 1000
poison.2da - 75
polymorph.2da - 150
portraits.2da - 2000
racialtypes.2da - 50
skills.2da - 50
spells.2da - 1500
spellschools.2da - 20
surfacemat.2da - 50
traps.2da - 100
vfx_persistent.2da - 50
visualeffects.2da - 750
PS
Никому не кажется что эта тема немного не там где должна быть, всётаки 2да это как никрути контент.
Айс, я все таки за то, чтобы 2да переместить в Тулсет.
В Макс+НВН оставить только моделинг и интегрирование его в НВН. (+ сопутствущие 2да. Но не таблицы классов, расс и тд.)
По 2да народ в основном лезет (по вполне понятной причине) в Тулсет, а не в Макс. И не находя ответы, создает новые темы и тд.
Ice Blade
Спасибо, прямо выручил
Кстати, ни у кого нет уже размеченного с 400 до 750 appearance.2da?
Или кто-нибудь может предложить рациональный вариант разметки...
QUOTE (Vhall’rafein @ Jan 5 2005, 18:32) |
Кстати, ни у кого нет уже размеченного с 400 до 750 appearance.2da? Или кто-нибудь может предложить рациональный вариант разметки... |
skills.2da - таблица, отвечающая за все доступные в игре навыки.
Id - индекс
Label - текстовая метка навыка
Name - ссылка в файле tlk на название навыка
Description - ссылка в файле tlk на описание навыка
Icon - имя ресурса с иконкой навыка
Untrained - позволяется ли использование навыка без присвоения ему очков при повышении или выборе уровня (бонусы не учитываются)(1-да, 0-нет)
KeyAbility - характеристика, ответственная за навык (от нее будут зависеть бонусы и пенальти к навыку)
ArmorCheckPenalty - накладываются ли на навык пенальти от брони (значение в поле ACCHECK таблицы armor.2da) (0-нет, 1-да)
AllClassesCanUse - доступен ли навык всем классам (1-да, 0-нет)
Замечание: Это значение взаимно перекрывается строкой в CLS_SKILL_***.2da: т.е. если стоит 1 и строка навыка в CLS_SKILL_***.2da отсутствует, то навык все равно будет добавлен классу как внеклассовый, что позволяет сокращать строки в CLS_SKILL_***.2da; если стоит 0, но строка в CLS_SKILL_***.2da есть, то навык будет доступен по правилам CLS_SKILL_***.2da; для того чтобы навык был не доступен необходимо поставить 0 И убедиться что соответствующая строка в CLS_SKILL_***.2da отсутствует.
Category - категория навыков из таблицы categories.2da (надо исправить в feat.2da - была ошибка в названии)
Предположение 1: Биовари зарезервировали этот столбец для возможной группировки навыков, аля "hide"+"move silently"=stealth. Возможно, хотя спорно, это было бы полезно для скриптов, но на практике во всех строках стоит **** (н/а по нашему) и столбец не используется.
Предположение 2: (более вероятное, и я на 99% уверен что так оно и есть, - по аналогии с feat.2da) Есть, например, такая функция GetCreatureTalentBest(), определяющая для AI лучший активный фит или действие по категории исходя из их CR() - теоретически это можно продолжить и на скилы. По категории определяем из каких навыков будем выбирать возможное действие и сравниваем CR.
MaxCR - "рейтинг крутости"(Challenge Rating) для данного навыка. Внутри функции GetCreatureTalentBest() мы выбираем действие, имеющее наиболее приближенный снизу (меньший или равный) maxCR к заданному из одной категории. (Еще один плюс к предположению 2, но возможно более опытные скриптеры меня поправят)
Замечание: Похоже эти две строки хотели применять для определения навыков, годных к использованию во время боя, а именно - animal empathy, heal, parry, taunt.
Constant - имя константы SKILL_***, определяющей навык.
HostileSkill - Является ли навык враждебным по природе и, соответственно, требующим проверки на реакцию объекта (возможно негативную к персонажу, пример - "pick pocket") (0-нет, 1-да)
На этом разбор таблиц для создания класса закончен - следующим будет пример (как только его оформлю).
K.SpecTr
Так в чем проблема? я торможу что-то...
в этой теме, по моему, лежит все, что надо, для нового класса.
и сразу предупреждаю свой класс я делал варварскими методами, так что вряд ли что мудрое посоветую.
Тут у меня несколько вопросов. Подскажите пожалуйста.
1. Как прописывается (создается) subrace?
2. Можно ли задать субрасе собсвенную модель?
3. Можно ли изменить модель обычной (сущесвующей) расы?
4. Как изменить параметры существующей расы?
Vhall’rafein Вобщето саб раса вводится при создании игрока. Затем скриптами можно ее читать (GetSubRace) и уже в зависимости от нее творить с игроком все что тебе нужно.
Vhall’rafein
Можно изменить модель или создать свою. Модельки составные вида pZYn_<bodypart>XXX, где:
P - это из столбца MODELTYPE в appearance.2da, если ставим не P, то модель считается не составной, и в RACE стоит RESREF на полную модель кричи (.mdl и текстура одноименные для P - .plt-текстура, для не P - .dds или .tga),
Z - буква для определения пола,
Y - берется из столбца RACE appearance.2da для соответствующей расы,
n - это цифра, что она задает я не разобрался, но вроде это фенотип (0-обычный, 1-толстый),
дальше часть тела (например, chest),
XXX - три цифры, задающие номер модели (для типов одежды, брони и т.д. "надетых" на модель)
Параметры расы меняются в racialtypes.2da.
Вот только как добавить кнопочку в меню рас я не знаю.
Ага... всем спасибо.
K.SpecTr
А что если модель будет цельная (без возможности изменения цвета волос, головы и т.д.) и из оригинальных? Возможно ли просто прописать ее в racialtypes?
ЗЫ Кнопку для дополнительной расы сделать нельзя. Это вшито в движок. Но можно изменить одну из стандартных, сделав тем самым новую полноценную расу
Усем БАААЛЬШОЕ здарово!!! Или, как говорится, Hello, All! Вот и вышел Я из запоЯ!
А вы, блин, пацаны, вааще, я погляжу, оборзели! Я же тут посты за ПЕРВОЕ ЯНВАРЯ нашел!!!
Вы чего - трэзвенники, что-ли??? Но все-равно. Очень рад вас всех снова... хм... читать?!
Vhall’rafein: Ну нифига вы тут с Chimeric'ом за две недели наворотить успели!!! Еле-еле все прочитал!
QUOTE |
... Кнопку для дополнительной расы сделать нельзя. Это вшито в движок. Но можно изменить одну из стандартных, сделав тем самым новую полноценную расу... |
QUOTE |
Можно уже потихоньку оформлять в русский мануаль по 2да |
Только что опробовал систему замены расы. Все нормально кроме самой кнопки. Она ссылается на оригинальный диалог и никак не относится к racialtypes. Кто знает как ее заоверрайдить?
Вал, скорее всего придется расковырять станадартный диалог.тлк и припаять его к твоему модулю... По-крайней мере, я делал это с Проклятием, готовя его к СД-версии.
Хм, а вот это уже интересно...
Припаять весь или только нужные строчки? Как это осуществить, не мог бы расписать? Хотя бы примерно
БИГ респект за создание и продлевание етой темы до 3 страницы!
теперь снова займусь 2DA
QUOTE (Vhall’rafein @ Jan 11 2005, 21:50) |
Хм, а вот это уже интересно... Припаять весь или только нужные строчки? Как это осуществить, не мог бы расписать? Хотя бы примерно |
QUOTE |
XXX - три цифры, задающие цвет1+цвет2+номер модели(для типов одежды, брони и т.д. "надетых" на модель) |
DBColl
Твой dialog.tlk был кастомным с нужными тебе исправлениями или заменял оригинальный?
QUOTE |
Только что опробовал систему замены расы. Все нормально кроме самой кнопки. Она ссылается на оригинальный диалог и никак не относится к racialtypes. Кто знает как ее заоверрайдить? |
Выходит для прошивания оригинального ТЛК его нужно полностью скопировать? Это еще +4 мега в наш хак?
К сожалению... Зато, он хорошо жмется!
Lemegeton
QUOTE (Lemegeton @ Jan 12 2005, 16:52) |
DBColl: А какую вы рассу для Проклятья делали? |
Так. Вот сейчас я задам провокационный вопрос:
Дабавляется ли новый (созданный) класс к списку все классов. Его можно будет выбрать? Или опять заменять придется?
Vhall’rafein:
Класс добавить вполне можно. Выбираться он будет. Заменять не надо. Только, как и с рассой, его название и описание берется только из DIALOG.TLK. Какая, блин, жалкость.
DBColl:
Гы, забавно. А что, хинты и подписи тоже только из DIALOG.TLK берутся?
Lemegeton
Скажи пожалуйста, а какие должны быть иконки для фитов и классов?
Добавлено в [mergetime]1105604245[/mergetime]
какой размер
32х32х32b в формате TGA (любой Фотожопой делается).
QUOTE (Lemegeton @ Jan 13 2005, 09:46) |
DBColl: Гы, забавно. А что, хинты и подписи тоже только из DIALOG.TLK берутся? |
QUOTE |
Хинты - да. |
QUOTE |
А подпись - это что? |
Своим я читал файлы, на которых NWN2daedit спотыкался))). Могу скинуть с исходниками(на С#). Соответственнно, требуется .Net Framework.
Предупреждаю сразу.... Для работы нужен .Net Framework. Прога умеет делать автозаполнение... Аккуратнее с удалением(по кнопке Дел), оно работает без подтверждения.... Новые 2да создавать нельзя, хотя пункт меню есть... Можно открыть несколько 2да... Ща вышлю версию... Комментарии, просьбы, пожелания, баги на мыло tovasya@mail.ru. Учту и доработаю...
Фрейм ворк качается с Microsoft.com Занимает примерно 25 мегов... Советую скачать... Под него довольно много программ есть....
Номер аси 149586972
А где храняться иконки классов и фитов в НВН? Допустим при использовании nwnexplorer
Для дебага кидай в Оверрайд. А так добавляй в хак-пак либо создавай новый.
Когда жмешь на TAB подсвечиваются предметы, игроки, и НПС. Хочу убрать подсветку и слышал, что есть 2да-шка в которой эта подсветка настроена. Не подскажие как этот файл называется?
Аваддон, смотря наверное с чего именно ты хочешь убрать подсветку. То есть от типа объекта зависит...
QUOTE |
Аваддон, смотря наверное с чего именно ты хочешь убрать подсветку. То есть от типа объекта зависит... |
Имхо это разве не движковое?
QUOTE |
Имхо это разве не движковое? |
QUOTE (Leon PRO @ Jan 12 2005, 12:05) |
Не верно, это просто нумерация. |
QUOTE (Clement Astilon @ Jan 15 2005, 17:13) |
это разве не движковое? |
Vhall’rafein:
QUOTE |
А где храняться иконки классов и фитов в НВН? Допустим при использовании nwnexplorer |
Хочу узнать мнение, нужна ли следующая таблица Age_categories.2da ?
CODE |
2DA V2.0 LABEL BASE_AGE MIDDLE_AGE OLD_AGE VENERABLE 0 Dwarf 40 125 167 250 1 Elf 100 175 233 350 2 Gnome 60 100 133 200 3 Halfling 20 50 67 100 4 Half_Elf 15 62 83 125 5 Half_Orc 15 35 47 70 6 Human 15 45 60 90 |
Я бы просто на скриптах это сделал, без 2да.
Просто с .2da можно редактировать не открывая модуль, вот я и в сомнениях.
Кто-нибудь все-таки знает, какая 2da'шка содержит параметры айтемов?
QUOTE |
Кто-нибудь все-таки знает, какая 2da'шка содержит параметры айтемов? |
properties вещи
QUOTE |
properties вещи |
На самом деле мне нужно добавить в этот список свой параметр
Скорее всего это *.utp файл типа палитры для тайлсета *.itp.
Нет, это в 2дашке делается...
itemprops вроде.
Добавить не сможешь (те может и сможешь, но я так тебе навскидку не скажу, как), сможешь только включить все, что там есть (но могут быть недостыпны для данного типа вещей).
QUOTE (Lex @ Jan 25 2005, 23:30) |
Добавить не сможешь |
вобщем делаешь свой скрипт, а-ля магия. и в itemprops его закидываешь.
Требуется достоверная инфа про %AnimSlash + Weapon Type + WeaponWield. (baseitems.2da)
Те %AnimSlashS, %AnimSlashR, %AnimSlashL - что каждое из них значит.
И какая боевая анимация используется при разных сочетаниях этих элементов.
Ну вроде это процентный шанс какая анимация будет использована этим орудием.
Правда Слэш это вроде просто рубить. Разве нет еще подобного? Далеко 2да не посмотреть.
QUOTE (Lex @ Jan 27 2005, 22:46) |
Требуется достоверная инфа про %AnimSlash + Weapon Type + WeaponWield. (baseitems.2da) |
1 пирс, 2 бладжон, 3 - слэш, 4 - пирс&слэш
Добавлено в [mergetime]1106930769[/mergetime]
QUOTE (K.SpecTr @ Jan 28 2005, 19:33) |
AnimSlashX - действительно вероятность срабатывания данной анимации, но не в %, а относительная. |
Значит сумма может быть любая: 65+65+35=165
Чтобы float не использовать .
а расчет как происходит? Относительно суммы?
Делаю 2 параметра 0, а один 100. (%AnimSlashL - 100, ост 0)
Идут с короткой дистанции колющие удары. Издалека с замахом сверху.
А ставлю %AnimSlashR 100, а остальные 0, то он и колющие делает выпады и боковые удары.
Ставлю %AnimSlashS 100, а остальные 0, выходит так же, как с пред. вариантом.
Анимация как то завивит от Weapon Type?
Те если оружие колющее, то удары соотв и нет режущих боковых ударов (например копье то же)
А от WeaponWield? Если поставить там 9 (Creature weapon) то что будет с анимацией?
Мне собсна вот такая инфа и нужна...
ЗЫ: я мог тут че-то и напутать.
Надо попробовать...
Что-то там с любимой дистанцией еще есть...
Помоему, я что-то перепутал...
Так, проверил я это дело.
В общем я все правильно писал, только одна поправка:
Похоже, что если в двух параметрах не 100, то шанс выпадения третьего эффекта !=0, независимо от того что в тот столбец вставили.
Т.е. если у меня 100-100-0, то третий не выпадает, но если 100-50-0 - то первые два выпадают в отношении 2:1, а третий как захочет.
Почему, не знаю, хотя в теории четко сказано "will not" для 0.
P.S. Первый удар всегда идет сверху-вниз, если дистанция до цели больше оптимальной (также вроде для AoO).
Класс! А о связи с WeaponWield и Weapon Type есть что-нить?
Какой параметр placeables.2da отвечает за появление новых моделей во вкладке custom?
А какой параметр отвечает за то, что бы pls_ мог дестроиться на локе в свойствах? Очень надо.
Vhall’rafein если ты про синьку, то это utc файл, что наглядно видно в СЕР-е.
Vhall’rafein
Никакой!
Если я правильно понял вопрос, то редактируется placeablepalcus.itp для своего модуля. Только одними руками это не сделать.
Добавлено в [mergetime]1107280741[/mergetime]
Aiwan
Какой параметр где? utc - вроде только для крич.
Добавлено в [mergetime]1107280887[/mergetime]
plc_* или pls_*?
QUOTE (K.SpecTr @ Feb 1 2005, 23:55) |
Какой параметр где? utc - вроде только для крич. |
QUOTE (Aiwan @ Feb 1 2005, 20:53) |
А какой параметр отвечает за то, что бы plс_ мог дестроиться на локе в свойствах? Очень надо. |
QUOTE (K.SpecTr @ Feb 1 2005, 23:55) |
plc_* или pls_*? |
QUOTE (K.SpecTr @ Feb 2 2005, 00:22) |
Не совсем понял, что имеется в виду? |
QUOTE (Aiwan @ Feb 1 2005, 21:22) |
Просто я на гребаном диалапе почасовом |
QUOTE (Aiwan @ Feb 1 2005, 21:22) |
В свойствах стандартного плейса, есть опция дестроиться. |
QUOTE (K.SpecTr @ Feb 1 2005, 20:47) |
А static это разве не она? |
Не, Айв говорит про state объекта. У дверей это Closed, Open 1, Open 2, Destoyed. Ну и у других объетов бывают свои наборы состояний.
Но имхо это отдельно не прописывается, или я не прав? (те состояние destroyed может быть у каждого плэйса)
Как создать свой раздел в плейсах?
В placeabletypes.2da уже добавил строку, но наверняка существует еще какой-то хитрый itp. =/
А после того как раздел все таки появится, возможно ли ассоциировать с ним плейсы?
QUOTE (Vhall’rafein @ Feb 21 2005, 20:54) |
А после того как раздел все таки появится, возможно ли ассоциировать с ним плейсы? |
Я немного не об этом говорю...
Мне нужно дополнить стандартный раздел а не кастомный
А зачем? Чем кустомный не нравится?
Да вот, в голову взбрело
Кстати, за это отвечают placeablepal.itp и placeablepalstd.itp
QUOTE |
1 пирс, 2 бладжон, 3 - слэш, 4 - пирс&слэш |
Кому-нибудь тут программка для конвертации 2.b->2.a и обратно, с возможностью редактирования, нужна? Знаю, что это на будущее, но вдруг кто-то захочет KotoR поломать.
QUOTE |
Кому-нибудь тут программка для конвертации 2.b->2.a и обратно, с возможностью редактирования, нужна? Знаю, что это на будущее, но вдруг кто-то захочет KotoR поломать. |
QUOTE |
Мне нужно дополнить стандартный раздел а не кастомный |
QUOTE (Vhall’rafein @ Feb 21 2005, 21:54) |
В placeabletypes.2da уже добавил строку, но наверняка существует еще какой-то хитрый itp. =/ А после того как раздел все таки появится, возможно ли ассоциировать с ним плейсы? |
Wakeful
1. Находишь с помощью Эксплорера в HotU Main Data файл placeablepalstd.itp (раздел templates)
2. Скачай ERF\GFF Editor
http://nwncraft.uk-kubenergo.ru/nwnfiles/utils/ufe.rar
3. Открой itp файл во вкладке GFF
4.
Добавь Element в MAIN (правый клик -> Add Note)
Добавь параметр LISTA в Element (правый клик -> Add Element -> LISTA) -> Затем замени его название с "......" на LIST
DWORD в Element (Add Element -> UINT32) -> Измени название на DWORD и в value впиши ссылку на строку из dialog.tlk
BYTE в Element (Add Element -> UINT8) -> название BYTE. Понятие не имею на что влияет value но с 17 отлично работает
5.
Добавь Element в LIST
CEXOSTRING в Element (Add Element -> SRING32) -> имя NAME, value - файл плейса без расширения
RESREF в Element (Add Element -> SRING8) -> имя RESREF, value - синька по умолчанию
Один плейс прописан
Большое спасибо.
QUOTE (Vhall’rafein @ Mar 22 2005, 22:44) |
и в value впиши ссылку на строку из dialog.tlk |
QUOTE (Wakeful @ Mar 22 2005, 23:00) |
Своё название можно? |
QUOTE (Wakeful @ Mar 22 2005, 23:00) |
А можно на примере конкретного плэйса? pardon.gif |
QUOTE (Wakeful @ Mar 22 2005, 23:00) |
Большое спасибо. smile.gif |
QUOTE (Wakeful @ Mar 22 2005, 23:00) |
В placeabletypes.2da перед этими действамиями нужно строку добавлять? Всё это добро потом с хак кидать соответственно? |
QUOTE (Vhall’rafein @ Mar 22 2005, 23:43) |
Через DWORD. StrRef равен 0 (т.е. текст "Bad Strref") http://www.rpgplanet.ru/forums/index.php?a...pe=post&id=3030 |
Вот в Hordes of the Underdark ожно было из простых предметов делать заготовки, а потом соединять их. Как я понимаю это можно сделать в 2da таблицах, а как? О-очень надо...
DEM: Тебя интересует система крафта? Это весьма и весьма непросто. Поищи по форуму (есть кнопочка поиска) или по ваулту - должны быть готовые системы крафта.
Если, все-таки, хочешь "ручками" сделать - "ковыряй" des_conf_*.2da - практически весь крафт - там.
Lemegeton, спасибо... ПОпробую...
Итак...
packsk*
packft*
cls_bfeat_*
Как они обрабатываются?
Я так понял, что packft* идет сверху вниз и берет первое, что удовлеитворяет условиям взятия фита, так?
packsk наверное аналогично.... Так?
А вот 3-ий я не догоняю.
В cls_feat_* что значит -1 в GrantedOnLevel и что значит столб List ? Так там вроде все ок.
Где прописано, какой класс берется по рекомендации? В classes.2da не нашел.
Хм..было что-то еще...потом вспомню..
QUOTE (Lex @ May 2 2005, 15:48) |
Я так понял, что packft* идет сверху вниз и берет первое, что удовлеитворяет условиям взятия фита, так? |
QUOTE (Lex @ May 2 2005, 15:48) |
А вот 3-ий я не догоняю. (cls_bfeat_*) |
QUOTE (Lex @ May 2 2005, 15:48) |
-1 в GrantedOnLevel |
QUOTE (Lex @ May 2 2005, 15:48) |
Где прописано, какой класс берется по рекомендации? В classes.2da не нашел. |
QUOTE (Lex @ May 2 2005, 15:48) |
что значит столб List ? |
QUOTE (K.SpecTr @ May 3 2005, 14:20) |
А что тут догонять, первая колонка уровень, вторая - количество дополнительных фитов, которые мы на этом уровне получим. |
CODE |
appearance cls_skill_# domains placeableobjsnds repute tailmodel cls_pres_# packages bodybags repadjust wingmodel cls_spgn_# packeq# cursors soundset creaturesize cls_spkn_# packft# placeabletypes soundsettype creaturespeed hen_companion packsk# traps prioritygroups phenotype hen_familiar packsp# ambientsound sounddefaultspos footstepsounds feat fractionalcr ambientmusic sounddefaultstim racialtypes masterfeats portraits lightcolor baseitems classes categories gender prpsettings itempropdef cls_atk_# race_feat_# ranges loadscreens itemprops cls_thr_# skills doortypes skyboxes iprp_ammotype cls_feat_# spells genericdoors environment iprp_feats cls_bfeat_# spellschools placeables encdifficulty iprp_spells spellshl iprp_costtable subtype table iprp_bonuscost iprp_chargecost damagecost damvulcost immuncost meleecost monstcost neg5cost neg10cost onhitcost redcost resistcost soakcost spellcost srcost weightcost iprp_paramtable param table onhitdur weightinc itemvalue skillvsitemcost capart armor weaponsounds appearencesndset defaultacsounds |
QUOTE (K.SpecTr @ May 3 2005, 15:20) |
racialtypes.2da - столбец Favored, где индекс на строку в classes.2da |
QUOTE (defolt @ May 4 2005, 08:27) |
если 2 - фит может быть выбран только как бонусный фит класса; |
QUOTE (K.SpecTr @ May 3 2005, 15:20) |
количество дополнительных фитов |
QUOTE (Lex @ May 4 2005, 11:13) |
Вот не очень понял что за бонусные фиты |
QUOTE (Lex @ May 4 2005, 11:13) |
А где основные? |
Сенькс..а дальше?
QUOTE (defolt @ May 4 2005, 11:45) |
а основные это не те которые каждые три лева даются? на 3,6,9 и т.д левах? |
QUOTE (defolt @ May 4 2005, 07:27) |
а вот во втором столбце либо 1 (бонусный фит дается),либо 0 (не дается)... |
QUOTE (defolt @ May 4 2005, 07:27) |
Но на некоторых уровнях (начиная где-то от 7-го) в фит листе ничего нету на выбор, хотя можно взять 1 фит... |
QUOTE (Lex @ May 4 2005, 11:13) |
И еще, у магов например когда поднимаешь уровни, там иногда бывает укороченный список фитов, только мажеские... Это с пред. моментом как-то связано? Как это правильно прописать? |
QUOTE (defolt @ May 4 2005, 07:27) |
короче есть краткая инфа по следующим 2DA (для некоторых очень краткая, для других по паре страниц формата А4) |
Надо все по 2да собрать в 1 топик типа тутор. Описание столбцов 2дашкек, примеры работы и прочее
Кто займется?
А что стало с этим?
QUOTE (Clement Astilon @ Jan 4 2005, 19:41) |
Да пожалуй займусь. |
Чтоб я знал
QUOTE (K.SpecTr @ May 4 2005, 17:01) |
Где? Если не дублируется с тем что уже есть - давай сюда. |
Простите, а где в 1.65 версии.... престиж классы в 2да таблицах?
Добавлено в [mergetime]1116852778[/mergetime]
Гы... простите за туповатый вопрос... стоило лишь в экспеншионах порыться
QUOTE |
Id,LABEL - Id и метка ReqType - Параметр, который нужно сравнить с некоторым значением (можно считать это функциями, возвращающими TRUE или FALSE), если результат истинна, то можем выбрать этот класс при повышении уровня. ReqParam1 - первый параметр функции ReqType ReqParam2 - второй параметр функции ReqType Сейчас возможные функции не говорю, но если кому-нибудь интересно могу описать. Нужно? |
QUOTE (balrog @ May 24 2005, 09:51) |
И ещё вопрос, как мне сделать так, чтобы описалово класа, название и пр. Бралось не из Диалог.тлк, а из какого-нибудь другого ТЛК, в папке соответствующей. Я попробовал писать тлк, но в игре мне ничего не пишет, я всё в 2да указывал, класс есть... но не пишет ничего. |
QUOTE (balrog @ May 24 2005, 09:51) |
Было бы классно, если кто-нибудь описал подробно. Иль дайте хоть сцылку какую-нить, где можно почитать =-) |
Lex Действительно, про тлк я не знал, спасибо огромное.
Что касается 2дашки... ещё раз всё просмотрел, и нашёл
Добавлено в [mergetime]1116949483[/mergetime]
Хм... всёравно какято фигня..... Делаю я свой тлк.. ну в этом случае начанаю с самого начала... и пишу там. Название класса -ляляля, описалово и т.п. Потом в класс.2да прописываю 16777216 + номер (1,2,3) и т.п. а это бяка! Росчитав свои 16777216, начанает мне отсчитывать пребавленные мной числа, с етогго жу Диалог ТЛК. не лезит в папку искать другие
Я чёто неверно делаю
если
- тлк к модулю подключен
- все числа верные
то я даже не знаю, почему не работает. У меня все пашет
QUOTE |
если - тлк к модулю подключен |
Простите, а как делать статичные фиты? Фит с магией я сделал.. А например как реализовывается фит, скажим, защита от огня и т.п.?
QUOTE (defolt @ May 4 2005, 21:08) |
http://nwn.bioware.com/developers/#resources Добавлено в 21:46 если что надо- переведу (как смогу) и выложу... |
QUOTE (Nightfall @ Jun 1 2005, 11:38) |
Можно попросить Айвана их выложить отдельно. |
Куда выложить? НА сайт?
Ага. Если понадобится, могу оформить под форум в стиле моих и Лема.
Оформи!
Если речь идет о Bioware_Aurora_2DA_Format_Rus.doc и Bioware_Aurora_TalkTable_Format_Rus.doc, то их надо однозначно на сайт. Но у меня с defolt'ом речь шла о содержании конкретных таблиц, а не структуре формата в целом, этого я у Nightfall'а не нашел.
Или плохо искал, или придется таки объединять инфу Ice Blade'а с моей и Лема, дайте мне недельку.
Инфу по 2da и не только искать тут:
http://ccg.dladventures.com/index.php/Main_Page
и
http://nwn.bioware.com/forums/main.html
На сайте по первой ссылке есть куча информации по всем ресурсам нвн, в частности, по 2да таблицам. Если там чего нету, то надо идти на форумы биоварей и там искать ветки, посвященные их редактированию.
QUOTE (balrog) |
Простите, а как делать статичные фиты? Фит с магией я сделал.. А например как реализовывается фит, скажим, защита от огня и т.п.? |
rdx
Речь идет о русском варианте.
А посылать нас на форум Биоварей, значит совсем нас не уважать.
QUOTE (K.SpecTr @ Jun 2 2005, 01:13) |
rdx Речь идет о русском варианте. А посылать нас на форум Биоварей, значит совсем нас не уважать. |
Если не подключен tlk:
QUOTE (rdx @ Jun 2 2005, 01:36) |
bad stref |
У меня вопрос. Буду благодарен если кто-нибудь поможет. )
Вопрос про связь спеллов из таблицы itempropdef.2da c их же скриптами.
Например, в таблице в строчке под номером 35, стоит спелл "Haste". Так вот, как игра узнает какой скрипт ей надо запускать?
Спасибо заранее.
QUOTE (Kalian @ Jun 18 2005, 18:25) |
Вопрос про связь спеллов из таблицы itempropdef.2da c их же скриптами. |
QUOTE (Lex @ Jun 18 2005, 18:26) |
ты путаешь немного. Haste там это свойство вещи, не закл. а вот в iprp_spells.2da хранится вроде те заклы, что можно на вещь повесить (те список того, что есть в Cast Spell закладке свойст). Ну а тут уже ссылка на spells.2da, а там скрипты. |
QUOTE (Lex @ Jun 18 2005, 18:26) |
Haste там это свойство вещи, не закл. |
QUOTE (Lex) |
Haste там это свойство вещи, не закл. |
QUOTE (Lex) |
а вот в iprp_spells.2da хранится вроде те заклы, что можно на вещь повесить (те список того, что есть в Cast Spell закладке свойст). |
а вот с этим как раз и проблема
я всю документацию перерыл,а ничего . что могло бы решить вопрос не нашел
так что ждем Lexa
Ждем... )
Айван: дорогой Kalian, тут не болтологией люди занимаются. Такое считается у нас флудом. Особенно в таких форумах как этот. На первый раз предупреждаю...
QUOTE (defolt @ Jun 18 2005, 20:17) |
так что ждем Lexa |
QUOTE (Kalian @ Jun 18 2005, 20:13) |
Ну хорошо, пускай Haste не спелл, а свойство вещи ) , но для него же тоже должен быть скрипт, наверно? |
Лююди, кончайте путать.
Эти таблицы лишь определяют свойства, но они не указывают на скрипты. Они больше для того, чтобы в тулсете появлялись новые группы и подгруппы, чем актуальная связь.
Тут определение свойств, их внешнего вида и описания в окошке итема, его стоимость для предмета, шансы срабатывания и еще всяко разное.
Но обработка на уровне движка: либо переопределяется в спелл, либо в эффект, либо в режим, либо статус, либо фиг знает еще что.
Может я чуть ошибаюсь, но я не нашел другого применения. А искал.
Добавлено в [mergetime]1119130754[/mergetime]
В смысле связь конечно есть, но лишь для некоторых (например, заклинаний) она явная.
QUOTE (K.SpecTr @ Jun 19 2005, 00:36) |
Может я чуть ошибаюсь, но я не нашел другого применения. А искал. |
Так что же, добавить какое-нибудь новое свойство нельзя?
Такс вот тебе инфа:
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 на описание свойства итема. |
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) |
Где там? Ссылку давай. |
Ага, ложил, но я хочу конкретную, к именно этим докам.
Т.е. не http://nwn.bioware.com/developers/#resources, а глубжее.
Мне с телефоном там рыться не с руки.
Нам английский не по чем -
Врежем в морду кирпичем!
Вмиг по нашему запляшут,
Все что надо нам расскажут.
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) |
Только я че-то не понял из какого это файла? |
У меня еще вопрос...
Можно ли где-нибудь настроить кол-во восстанавливаемых ХП при отдыхе? Ну чтобы не полностью восстанавливалось, а частично? Или это движковое?
Спасибо заранее.
Kalian Это помоему движковое. Можно скриптами прерывать отдых через пару секунд от его начала. Но тогда надо както восстонавливать заклинания и т.п.
не прерывать отдых, а в конце отдыха делать дамаг, как везде и сделано.
Есть у кого либо реальный опыт создания кастерского класса? Конкретно интересует занесение его в spells.2da.
Возможно ли создать пассивный фит?
Всем доброго времени суток!
_____________________________
Сделал я класс, все по посту в этой ветке...почти у меня нет некоторых колонок в 2дашке...(PreReqTable)
у меня нет таких 2да вообще даже:CLS_PRES_***.2da
У меня WinXp+NWN HOTU1.65...
Я предполагаю, что из-за данных недостатков мой класс нельзя выбрать при создании перса...
SadoMazaXist Качай с ваулта НВН Эксплорер, открывай ресурсы.... ХотУ экспеншион пак, там первая ветка, там ГеймДата(2да тобишь), там будут ВСЕ 2да
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) |
Сделать кастерский класс, который бы не был престижем нельзя. |
И у него будет стандартная сетка заклинаний базового класса, к которому он престиж.
Создать новую не выйдет, в spells.2da они определены только для следующего (что, думаю, вы заметили уже):
CODE |
Bard Cleric Druid Paladin Ranger Wiz_Sorc |
Товарищи, можно ли как-нибудь сделать, чтоб при нажатии на кнопку отдыха не появлялась надпись "Отдых", а при отмене отдыха не появлялась, соответственно, надпись "Отдых отменен"?
PS Или может кто знает, откуда игра ссылается на эти строчки в dialog.tlk ?
Опять же заранее спасибо. )
Kalian
просто затри эти строки в dialog.tlk любым tlk-editor'ом. индексы строк - 7952, 7957.
QUOTE (Kalian @ Jul 30 2005, 14:52) |
PS Или может кто знает, откуда игра ссылается на эти строчки в dialog.tlk ? |
QUOTE (dumbo @ Jul 31 2005, 05:17) |
просто затри эти строки в dialog.tlk любым tlk-editor'ом. индексы строк - 7952, 7957. |
Kalian, я не зря упомянул nwmain.exe: надписи реста - это движковое и, насколько я знаю, никак не конфигурится.
Странно, а почему в "русской" версии НВН там пишется "Начало отдыха" и "Конец отдыха"???
Valleo, зри в корень. а точнее - предыдущий мой пост.
под "движковым" подразумевалось само появление этих надписей.
А, ты про это. Ну убрать тогда толдько из диалог.тлк их можно... Только зачем? Вот я не понимаю
Всем большое приветствие.
Вопрос: Где можно снять ограничение на уровень? Ну или поднять планку до 200'го...
Спаасибо...
Не совсем понял твой вопрос. Видимо ты хочешь прокачатся дальше 40 уровня? Хочу, тебя обидеть, это НЕВОЗМОЖНО.
Привет, А как прокачаться до 40 левела.. у меня в ПЛ 20-максимальный... но ПЛ оговорено про Эпический класс...где 40 возможен... помогите!
QUOTE (Dik Morris @ Aug 17 2005, 06:19) |
Хочу, тебя обидеть, это НЕВОЗМОЖНО. |
Мне необходимо добавить +2 к Bluff и Intimidate пассивным фитом. Как это сделать?
В 2da я полный ноль, но вещь эта полезная и поэтому хочу разобраться. И так, ламерские вопросы:
1) Зачем вообще нужны 2da, что они делают. То есть, что с помощью них делают - это понятно, а вот как ОНИ это делают? Ну скажем, при создании скрипта, ты описываешь что в скрипте задействованно и дальше пишешь команды, которые они будут выполнять? Вот какую-нить аналогию с 2da можно провести.(не знаю объяснил ли, что хочу или нет )
2) Как взаимодействуют tlk и 2da?
3) Где найти 2da, ни в одной папке не нашел?
Пока вроде все. Мне бы главное принцып понять и тогда дело пойдет(темку скачал). Можно кое что сделать читая описание в этой теме, но делать что-то бездумно и не понимая как это делается я не хочу.
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, то что надо на первых порах, почему его тут не написали? |
Хех, Вал дай ссылку на твой Балдурс Легаси Удобный редактор вроде.
Туторил вроде была такая идея, только вроде самое интересное где-то было разобрано одним усидцивым парнем. Вот не помню где точно, зайте поиск.
Да не вроде, а точно удобный
http://www.wrg.ru/files/?cr=./toolset
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 или по крайне мере, ссылок на отмеченную строку. |
Ну так как вам? Я еще и про tlk нашел. Их бы на сайт выложить или в отдельную темку, помоему для человека ни разу в глаза не видавшему 2da и tlk(как я) это просто спасение. И вы от многих совсем ламерских вопросов освободитесь
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, указанном в Заголовке файла и продолжается до конца этого файла. Весь локализованный текст располагается в Таблице Контента Строк в виде строк без нулевых символов. Как только заканчивается одна строка, начинается другая. |
Привет всем, зашла в этот раздел форума и решила внести предложение. Информация здесь наверно довольно полезная, но думаю что для болшинтсва новичков, в том числе и для меня,непонятная. Может стоить сделать отдельную тему о 2DA таблицах, хотя бы самое основное: где находятся, зачем нужны, что с помощью них можно сделать и как, и т.д. Я узнала о них буквально день назад в одном из сообщений прочитала, думаю другие новички тоже о них мало знают, а ведь им это может пригодиться. Мастера, может у кого-то из вас найдётся свободное время создать такую темку? Заранее спасибо!
Кстати может такая тема есть, а я её не видела?
При попытки открыть chargenclothes.2da выдается ошибка
Run-time error '380'
invalid property value
Почему так?
Чем отрываешь то?
QUOTE (Vhall @ Sep 24 2005, 19:25) |
Чем отрываешь то? |
QUOTE |
Name - Идентификатор из tlk файла. Если из кастомного то к идентификатору надо добавить 16777216 (это расспространяется на ЛЮБУЮ ссылку на tlk). |
-fenix- , дай ссылочку на BLToolkitStd, у мну до сих пор TLKEdit 1.0, даже поиска нет А идентификатор из tlk - это... ну проще говоря ID строки.
Добавлено в [mergetime]1127578269[/mergetime]
Ну помнишь в тулсе есть функция
void SpeakStringByStrRef(int nStrRef, int nTalkVolume=TALKVOLUME_TALK)
так nStrRef - это и есть идентификатор строки
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, где его найти? |
Я вот решил попробовать сделать полиморф в драконов, как описал Lemegeton и у меня вопрос
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) |
И еще в написанном скрипте у меня ошибки выдает на строках |
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)