Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с 2da таблицами
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset > Custom Content
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
Lemegeton
Lex: Не-а, нельзя после 50-той написать 200-тую. Это вытекает из Биоварного описания 2да-шек, где написано:
QUOTE
Never delete a row.

Перевод: Никогда не удаляйте строку.
(Если рассмотреть абстрактную ситуацию, что строки с 50 по 200 существуют, то пожелание написать после 50 сразу 200 есть ничто иное как удаление строк с 51 по 199.)

А как картинки-то добавлять? В каком формате и с каким именем файла?
DBColl
Lemegeton
Колонка ID, где идут номера, фактически ничего не значит. Можно чтобы номера шли и непоследовательно. Все будет работать wink.gif.
Leon PRO
В принципе номера колонок вообще ни на что не влияют...
Если будет такая ситуация

1
2
3
4
699

то на самом деле при считывании файла получится

1
2
3
4
5

поэтому и пишут обычно

1
2
3
4
5
6 **** **** ****
7 **** **** ****
---//---//---//---
---//---//---//---
698 **** **** ****
699 бла бла бла
Lex
а что там с полиморфом у меня?
CODE

Прописываю в 2дашке polimorph пару своих строк (на безопасных строках), однако константы полиморфа, которые я прописал в этом файле, не появились в скрипт эдиторе и я не смог сдлать эффект с моей констатной.
Вопрос:
что я сделал не так?
(в 2да все правильно написал. Взял строку, которая там есть и поменял имя констаты..все остальное не трогал. Потом ее копию, сменил имя и модель (все согласно appearence.2da))

Lemegeton
Lex: Дык, братишка, опаньки... Надо же еще эту константу в скрипты вписать. Обычно в nwscripts.nss. Вроде:
CODE
const int POLYMORPH_xxx_xxx = <номер строки в 2да>.
Lex
ясно. Спасибо.
Ice Blade
QUOTE (Lemegeton @ Dec 3 2004, 19:44)
Дык, братишка, опаньки... Надо же еще эту константу в скрипты вписать. Обычно в nwscripts.nss. Вроде:

Не правильный ответ - Лекс(хотя это больше к ДБ) впомни сколько матов вызывало использование nwscript.nss в первых вариантах хаков Левора. Тем более что решение гораздо проще, - я же давал описание к константам всевозможного полиморфа в хаках. - Lemegeton - правильно сказал это константа вида int POLYMORPH_xxx_xxx = <номер строки в 2да>. (без const само собой) - только вот ошибся местом,- трогать nwscript.nss ненужно достаточно дать эту константу в самом скрипте с полиморфом smile.gif
Lex
ну..я сам не нашел этот nwscripts.nss поэтому запихнул консту в скрипт полиморфа.. :-)
Lemegeton
Была славная тема на старом Форуме. Ее еще Ice Blade вел. К сожалению она прекратилась на самом интересном месте - на spells.2da.

В связи с этим у меня возник вопрос.

help.gif help.gif help.gif

Как сделать новое заклинание???

Вроде со всеми столбцами (ну почти) разобрался. Где не разобрался, подставил значения из наиболее похожих заклинаний (строк), а вот на скрипте взял, да и запоролся. То есть, я его обозвал (в десятом столбце), создал файл с таким же именем+nss, а он, зараза такая, не вызывается. Что я сделал не так? dntknw.gif
Chimeric
Мегетончик, ты меня так не пугай. Ты мне по полиморфу сколько советов надавал, а теперь оказывается, что ты не волшебник, а только учишься? aggressive.gif
Клемент Астилон
У меня вроде остались старые Лексовские темы. Если хочешь можешь скачать их Тут 2,69мб
А что конкретное спрашивай. Я с ними в свое время возился.

Смотря откуда вызываешь. Я хотел сделать как в ПРЦ фит в контекстном меню, вызываюший спелл.
Вот у меня все было как надо кроме появления фита в контекстном меню. Ты конкретный код показывай. Так не разобраться.
Lemegeton
Chimeric: Не беспокойся. Меня просто где-то переклинило по-черному. Разберусь.

Clement Astilon: Гы. Я этот форум ВЕСЬ скатал.
Про конкретность:
Ну всю строку спела не надо, надеюсь? Спел у меня в книге появляется. Как ни крути.
В десятой строчке (ImpactScript) ставлю имя. Создаю скрипт <имя>.nss. В нем пишу что-нибудь типа speakstring('Da, da, da!') - стопудово должно работать же?! Ан не работает!!!
Lemegeton
Нижайше прошу прощения за то, что обращаюсь к Вам со столь Ламерским вопросом. Я его уже отпостил где только мог. Хоть "караул" кричи.

Пытаюсь сделать новое заклинание.

Вроде со всеми столбцами (ну почти) разобрался. Где не разобрался, подставил значения из наиболее похожих заклинаний (строк), а вот на скрипте взял, да и запоролся. То есть, я его обозвал (в десятом столбце), создал файл с таким же именем + nss, а он, зараза такая, не вызывается. Что я сделал не так?

Заклинание появляется в книге как и должно. Если ставить стандартные скрипты - вызываются. Мой - нет. Для проверки я уже чего только туда не пихал. Вплоть до SpeakString. Не вызывается.

help.gif help.gif help.gif
Ice Blade
Ну думаю ты сам догадался что тут всего нескольк вариантов:
- Либо чего-то нитуда поставил в 2да-шке ( проверить просто - берёш первое попавшеся заклинание и меняешь ему только имя скрипта - больше ничего нетрогая)
- Либо чего-то перемудрил со скриптом ( проверить тоже очень просто- достаточно скопировать код любого из работающих заклинаний и попробовать запустить с ним, если несработает значит дело не в скрипте )
- Ну и последний вариант - это так называемая "криворукость" (редко но бывает почти у всех biggrin.gif - у меня в том числе ),- сделал что-то мелкое и противное на что обычно никто не обращает внимания, причём возможно и ты сам незамечаешь хотя и знаешь что так нельзя сделать. Тут может помочь только полный - нет.. АБСОЛЮТНО полный пересказ своих действий, без "кратких" изложений.
Leon PRO
Помню, в молодости сам делал новый закл, дык вот на скрипте постоянно спотыкался, пока не понял, что он просто напросто не компилируется из-за ошибки =).

З.Ы. Больше ничем не могу помочь, т.к. все было давно.
Anker
Люди, помогите плиз! this.gif

Расскажите как редатировать 2da файлы в хаках. А то у меня после подключения некоторых из них получается заместь грибов деревья, а заместь заборов столы! dntknw.gif

good.gif
Lemegeton
Anker: Старайся не редактировать строки, а добавлять их. Избежишь много-много неприятных "глюков". Да, не забывай обновлять копии в хаке. biggrin.gif

По поводу спелла: в-принципе-то, я правильно скрипт подключаю???
Anker
QUOTE (Lemegeton @ Dec 17 2004, 09:20)
Anker: Старайся не редактировать строки, а добавлять их. Избежишь много-много неприятных "глюков". Да, не забывай обновлять копии в хаке.  biggrin.gif


Спасибо за совет, но мне кажется ты не совсем понял в чём проблема. good.gif

Я подключил хак из "Проклятья Левора" к своему модулю, и после загрузки модуля у меня заместь заборов столы, а заместь фонарей на улеце кресла. dntknw.gif Тоесть обьекты хака заменили мне объекты стандартной палитры. Меня интересует как сделать так, что бы объекты добавлялись к стандартным, а не заменяли их?
Кроме того я совсем не врубаюсь, как енто можно сделать? Я так понял, что надо редактировать 2da файл хака, но как, что и где надо прописать я не знаю. dntknw.gif
Вот. this.gif

pilot.gif
DBColl
Anker
У нас в Проклятии собственная палитра. Мы не пользовались стандартной и вообще забили на нее, продублировав все объекты в Custom Palette, попутно переводя их на русский язык. Так что выход один - экспортировать палитру из Проклятия и импортировать ее к себе. И пользоваться после этого объектами из Custom Palette.
Anker
QUOTE (DBColl @ Dec 17 2004, 15:35)
Anker
У нас в Проклятии собственная палитра. Мы не пользовались стандартной и вообще забили на нее, продублировав все объекты в Custom Palette, попутно переводя их на русский язык. Так что выход один - экспортировать палитру из Проклятия и импортировать ее к себе. И пользоваться после этого объектами из Custom Palette.

Пасиба! Попробую. yes.gif

Но всё же как редактировать хаки что бы не было такой фигни как у меня? pilot.gif
Ghost
QUOTE (DBColl @ Dec 17 2004, 15:35)
Так что выход один - экспортировать палитру из Проклятия и импортировать ее к себе. И пользоваться после этого объектами из Custom Palette.

У меня стоит СоУ и Хоту по отдельности. Я хочу использовать Хак Левора в ХотУ, но идет наложение, как у Anker'a. Я экспортирую файлы из СоУ и пытаюсь Вставить в Хоту но он пишет что не находит нужного дополнения.
DBColl
Ghost
Хм... Какого дополнения? Хака нашего? Или ресурсов Expansion Pack 1?
Ghost
Expansion Pack 1
DBColl
Вывод. Хех, надо ставить СоУ... buba.gif drag.gif
Anker
Люды добрі! aggressive.gif
Тож скажите как редактировать хаки?! dntknw.gif
У меня такая фигня не только с Леворовским хаком!

Пли-и-и-и-з!!!

shout.gif shout.gif shout.gif
Ghost
QUOTE (DBColl @ Dec 21 2004, 17:30)
Вывод. Хех, надо ставить СоУ... 

Угу, но наличие 40 уровней для прокачки Очень весомый довод в пользу ХотУ.
DBColl
Anker
Что тебе именно нужно? Плэйсэблы? Монстры?
1. Открываешь соответственно стандартные placeables.2da и appearance.2da. Достать их нужно из 2da.bif NWN Explorer'ом или NWN Viewer'ом.
2. Открываешь эти же 2да-шки, лежащие в хаке.
3. В стандартный файл добавляешь те строчки из хаковского, которые в нем отсутствуют. Таким образом ты прилепишь ресурсы хака к стандартному 2да файлу.
4. После этого сохраняешь получившийся файл и пихаешь его в свой хак.

Вообще вся эта работа на примерах расписана в туториале Айвана у нас на сайте. Посмотри для начала его pdf-ку.
Добавлено в [mergetime]1103644479[/mergetime]
Ghost
Я имел в виду, надо ставить совместно СоУ+ХотУ и все у тебя будет в шоколаде! good.gif
Ghost
QUOTE (DBColl @ Dec 21 2004, 18:53)
Я имел в виду, надо ставить совместно СоУ+ХотУ и все у тебя будет в шоколаде!

Шоколад у меня оказался просроченным. Я 20 раз совмещал обе версии (сначала Соу на ХотУ, потом ХотУ на СоУ) Игра нормально отображает обе версии в одной, но Аврора злобно матерясь предлагает только 4 локации (Город,деревня,подземелья,лес) открываю Левора и опять ругань Авроры. Локации открываются только доступные для создания, а все остальные пустое окно просмотра локации.
DBColl
Ghost
Что-то у тебя вообще с НВН не то... sad.gif Вообще у народа вроде бы все нормально с отображением Левора в тулсе... Странно. Тебе надо бы искать сначала баги в том, почему же все-таки не ставятся нормально СоУ + ХотУ... buba.gif
Anker
Ой пасиба пасибочки!!! yahoo.gif

yes.gif yes.gif yes.gif

Lemegeton
clapping.gif clapping.gif clapping.gif clapping.gif clapping.gif
Урррряяяя, заработало!!!
clapping.gif clapping.gif clapping.gif clapping.gif clapping.gif

Понял! Нельзя "внешние" (в виде файлов) скрипты пихать. Если внутренние - все ОК, иначе - тупик!!! dntknw.gif

Ффуу. Думал, сошел с ума.... Крэйзанулся, по-ихнему. crazy.gif
DBColl
КУЛ! МОЛОТОК. Поделись здесь опытом, плиз. Научи еще народ wink.gif.
Lemegeton
DBColl: Подкалываешь, да? aggressive.gif
Вообще-то, я собирался добавить серию новых заклинаний полиморфа NPC-Henchman'ов (но не самого кастователя!) в различные виды драконов (дабы офигенно мощных NPC можно было делать на несколько ходов)... Чему тут учить-то? dntknw.gif Если грабли найду, тогда отпостю.
DBColl
QUOTE (Lemegeton @ Dec 23 2004, 18:44)
DBColl: Подкалываешь, да?

Даже и не собирался. Более того, мне и самому хочется почитать, как это делается. yes.gif
QUOTE (Lemegeton @ Dec 23 2004, 18:44)
Чему тут учить-то?Если грабли найду, тогда отпостю.

Может оформишь в виде статьи (со скриншотами)? На новый сайт выложим wink.gif.
Lemegeton
Лирическое отступление: Первые грабли, на которых я попрыгал, являли собой недостаток информации про сам 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


Ффу... Вроде все.
DBColl
Ох, Блин! Греатест РЕСПЕКТ! good.gif good.gif good.gif Молодец. Оформим в виде статьи wink.gif. Может твои комментарии в ходе работы еще добавишь? Чего избегать и тп..?
Lemegeton
По заказам трудящихся, но БЕЗ картинок.

Создание заклинания

1. Постановка задачи:
(Задача выдумана и реальной ценности не имеет, поскольку внесет слишком большой дисбаланс)
Создать заклинание полиморфа игрока в синего, красного и зеленого дракона. Заклинание должно быть радиальным и использоваться Колдуном/Волшебником на первом уровне.

2. Необходимые инструменты:
а. Любая программа, которая позволит достать SPELLS.2DA. Например NWN Viewer, если лень другой искать. Либо сам 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));
}


4. Проверка:
У меня работает!
Ice Blade
Lemegeton - good.gif good.gif good.gif - Эх.. вот и смена растёт, давненько уже ник-то туторов по 2да не писал,- хоть и без картинок smile.gif и некоторых мелочей(ввиде явного примера строки 2да-шки), но зато и без ошибок, я примерно год назад точно-так же делал - только задачка была чуть посложней biggrin.gif. Наградить тебя особо нечем, но кое чего я тебе всётаки дам. См. приват.
DBColl
Lemegeton
ПУЛЯ! КРУТО. good.gif Слов нет. Абсолютное пособие для самых маленьких. Для меня yes.gif.
Lemegeton
У меня сейчас случится припадок мании величия! crazy.gif biggrin.gif biggrin.gif biggrin.gif
DBColl
Фигня! Опустим на землю при случае lol.gif lol.gif lol.gif. Смотри не увлекайся wink.gif. Хыхыхы.
Ice Blade
И я первый опущу если что не так (хоть я уже и незанимаюсь НВН). Просто давненько небыло как бы это выразится "залётных", которые хотябы процентов на 50% своими силами осилили что-то существенное в 2да-шках (а спелы это и есть существенное) и более того подробно описали. Фактически за всё время что я связан с НВН таких залётных можно персчитать по пальцам одной руки biggrin.gif ), но сильно нос не задирай - т.е есть ещё ОЧЕНЬ многое чего ты ещё незнаешь и если не продолжишь свои иследования, а будешь как большенство ждать что в чём-то за тебя разберутся, то далеко не уйдёшь. Заклинания заклинаниями, но пока хотябы сложные комбинации классов с фитами не осилишь - ты будишь не более чем начинающим мастером. Так что удачи. good.gif

PS
Айв или ДБ - дайте ему "мастера контента".
Lemegeton
QUOTE
Смотри не увлекайся

Эх, блин, поздно. Уже увлекся. swoon.gif

Ну что же. Вдохновённый успехом в Выссшем эшалоне, решил создать теперь свой фит (то же заклятие, но в виде фита). Тут есть несколько проблемм. Не понял про CR(Character Reputation, что-ли?) и про MinFortSave (какие-то спасброски). Но это не главное.

Итак, по традиции,

Его величество FEAT.2DA

FeatId - Ну это понятно. Кстати, это значение ПОЛНОСТЬЮ ИГНОРИРУЕТСЯ!!! Чего я только туда не писАл crazy.gif Движок просто подсчитывает номер строки и забивает на значение в этом столбце.

LABEL - Метка. Текстовое название.

FEAT - Название фита. Ссылка на строку в TLK - файле. Добавить 16777216, если строка должна браться из кастомного TLK.

DESCRIPTION - Описание фита. Ссылка на строку в TLK - файле. Добавить 16777216, если строка должна браться из кастомного TLK.

ICON - Имя файла иконки (32x32)

MINATTACKBONUS - Минимальный бонус атаки, который нужно иметь для получения фита

MINSTR, MINDEX, MININT, MINWIS, MINCON, MINCHA - Минимальные бонусы Силы, Ловкости, Интеллекта, Мудрости, Живучести и Харизмы, соответственно, для получения фита.

MINSPELLLVL - Минимальный уровень заклинаний, который необходимо иметь для получения фита.

PREREQFEAT1, PREREQFEAT2 - Предварительно необходимые фиты для получения фита. Нужно иметь ОБА эти фита.

GAINMULTIPLE - Можно ли получить несколько раз? 1 - да, 0 - нет

EFFECTSSTACK - Непонял. Но похоже на то, что если стоит 1, то эффект не суммируется с другими при высоких сложностях.

ALLCLASSESCANUSE - Все ли классы могут использовать этот фит? 1 - да, 0 - нет. Если 0 - необходимо добавить фит в соотвестствующий cls_feat_***.2da файл.
З.Ы. Тут есть сложность. В этом файле (cls_feat_***.2da) описывается, где будет находится "иконка" активного фита. Непонятно, как сделать активный фит, который могут использовать ВСЕ классы?!

CATEGORY - Категория. Берется из category.2da.

MAXCR - Кто - нибудь, объясните, что такое CR???

SPELLID - Идентификатор заклинания для активных фитов. Все активные фиты создаются через этот параметр. Он, по сути дела, косвенно "связывает" фит со скриптом.

SUCCESSOR - Если один фит заменяет другой, здесь указывается номер строки этого фита.
З.Ы. При проверке более "низкого" фита, когда уже получен более высокий, все равно возвращает TRUE!

CRValue - Еще раз этот CR! Статистика говорит что значения ставятся на:
0,2 - рассовые фиты
0,5 - классовые фиты (не всегда)
1,0 - остальные фиты.

USESPERDAY - Количество использований фита в день. Только для активных фитов.

MASTERFEAT - Ссылка на masterfeats.2da. При использовании "подфитов" как, например, фокусировка на оружии (т.е. экранчик, на котором выбирается подфит).

TARGETSELF - Тяжелый случай. При 1, фит не может быть использован не на себе. Но наблюдались и другие эффекты!

OrReqFeat0, OrReqFeat1, OrReqFeat2, OrReqFeat3, OrReqFeat4 - То же, что и PREREQFEATх, но нужно иметь хотя бы ОДИН из этих фитов.

REQSKILL - Необходимый скилл. Хм, похоже, что игрок просто должен иметь ДОСТУП к скилу (например, маг не имеет доступ к "Сочувствию к животным"). Гы.

Constant - Константа для использования в скриптах.

TOOLSCATEGORIES - Где будет появляться фит в тулсете (только для тулсета!!!).
1 - Combat Feats
2 - Active Combat Feats
3 - Defensive Feats
4 - Magical Feats
5 - Class/Racial Feats
6 - Другие фиты (наиболее удобно)

HostileFeat - Определяет, рассматривается ли действие фита как атака. 1 - да, 0 - нет.

MinLevel - минимальный левел игрока для получения фита.

MinLevelClass - Ссылка на classes.2da. Левел какого класса будет рассматриваться в строке MinLevel. Если **** - будет браться суммарный левел персонажа.

MaxLevel - Максимальный уровень персонажа, при котором можно получить этот фит. Похоже, суммарный.

MinFortSave - Какие-то спас-броски.

PreReqEpic - Нужен ли эпический персонаж для получения фита. 1 - да, 0 - нет.

Ну, все, что знал, рассказал. Про cls_feat_***.2da и пример создания фита - позже.
Lemegeton
Эх, нравится мне в 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.

Вот и все.
Goblin
CR - Челендж Рейтинг - что-то вроде крутости. Ну например (хотя пример конечно кривоват unsure.gif но что поделаешь.) итак есть у нас лич, сначала у него ЦР 100, а потом мы ему сделали ЦР 1. К личу подваливает чел 40 лвла (я хз скока у него считается ЦР, но допустим 40). В первом случае лич увидит перса, сравнит его цр со своим и скажет (иметь мои старые костыли - да это же лам) и ломанет на перса в рукопашную без обкастовки. Иное дело когда у лича Цр 1 - он посмотрит на перса 40 лвла и подумает (вот теперь ко мне снова смерть пришла, только на этот раз я походу костями не отмахаюсь). и после этого выдаст в перса весь набор спеллов которые только натолкали в него с помощью тулса.

Т.о. вот это "MAXCR" - если тупо переводить, можно перевести как - максимальный челендж рейтинг

, а вот с этим "MinFortSave" проще - это минимальный спас на Форту ака Стойкость ака Fortitude. Хм, только что-то мне не припоминаются фиты которые требуют спасы ... dntknw.gif

Гы, воровские сныки crazy.gif сделаны с помощью SUCCESSOR

"TARGETSELF - Тяжелый случай. При 1, фит не может быть использован не на себе. Но наблюдались и другие эффекты!" - например ?

"EFFECTSSTACK - Непонял. Но похоже на то, что если стоит 1, то эффект не суммируется с другими при высоких сложностях." - скорее всего - если фит используют несколько раз то будет ли стаковаться (складываться) эффект друг с дружкой или нет.

"ALLCLASSESCANUSE - Все ли классы могут использовать этот фит? 1 - да, 0 - нет. Если 0 - необходимо добавить фит в соотвестствующий cls_feat_***.2da файл.
З.Ы. Тут есть сложность. В этом файле (cls_feat_***.2da) описывается, где будет находится "иконка" активного фита. Непонятно, как сделать активный фит, который могут использовать ВСЕ классы?!" --- а поставить 1 ???

"SPELLID - Идентификатор заклинания для активных фитов. Все активные фиты создаются через этот параметр. Он, по сути дела, косвенно "связывает" фит со скриптом." - поясни плз

Все таки дойдут у меня руки сделать чтобы девастат на лук был от ловкости, а не от силы - это ж бред чистой воды.
DBColl
Lemegeton
РЕСПЕКТИЩЕ!.. Отлично! good.gif good.gif good.gif yes.gif
Lemegeton
Спасибо. Но это еще не все. Я еще до расс и классов не добрался. spiteful.gif Разберу по косточкам. Ишь, взяли моду - не отвечать на вопросы! diablo.gif

Goblin
1. Спасибо за CR.

QUOTE
мне не припоминаются фиты которые требуют спасы ...

Сбивание с ног.

QUOTE
"TARGETSELF - Тяжелый случай. При 1, фит не может быть использован не на себе. Но наблюдались и другие эффекты!" - например ?

Например, пропадает курсор, и спелл, привязаный "на себя" кастуется без "наводки".

QUOTE
Непонятно, как сделать активный фит, который могут использовать ВСЕ классы?!" --- а поставить 1

Имеется в виду АКТИВНЫЙ фит, присутствующий в радиальном меню. А где ты поставишь OnMenu??????? dntknw.gif

QUOTE
"SPELLID - Идентификатор заклинания для активных фитов. Все активные фиты создаются через этот параметр. Он, по сути дела, косвенно "связывает" фит со скриптом." - поясни плз

Все активные фиты по сути дела являются заклинаниями.
SPELLID указывает на строчку из spells.2da, а спелл, в свою очередь, вызвывает скрипт. biggrin.gif Вот и все.

QUOTE
Все таки дойдут у меня руки сделать чтобы девастат на лук был от ловкости, а не от силы - это ж бред чистой воды.

Э, батенька, это уже на скриптах решать надобно. Да и почему бред? Ты лук видел? А тетиву натянуть пробовал? Там нужна сила. А ловкость, скорее на скорость.
K.SpecTr
Ух ты, а вот это интересно.
Вспомнил одну вещь, которая у меня когда-то не получилась.
Имеем классовый фит, например полиморф Шифтера или Огн.дыхание RDD. Данный фит является активным и появляется, в собственном радиальном меню класса. Однако, объединив предидущие посты имеем следующий результат:
Даем классу RDD в его классовую таблицу фитов фит полиморфа в дракона. Прописываем скрипт, наподобие приведенного выше. Скажем появление нашего фита запланировано с уровня N персонажа. Первый собственный активный фит (аля Огн.дыхание дается на уровне M). И тут проблема: если M>N, то радиальное меню классовых фитов не появляется вообще (хотя в нем должен был появляться наш фит), если M<=N, то меню появляется и в нем мы видим оба фита (наш и родной). Изменение M на формулу не влияет, т.е. наш фит появляется в меню только если оно уже появилось в силу родного фита.
Сам фит работает и скрипт работает, могу выложить строку из 2da.
Собственно вопрос: в чем причина такой дискриминации кустомного фита?
Lemegeton
IMHO глюка. Выкладывай все ТРИ строки. Из spell, feat, cls_feat_x.

З.Ы. Как я превращался в дракона:

Фото 01
Фото 02
Фото 03
Фото 04
Фото 05
Фото 06
Фото 07
Фото 08
Фото 09
Фото 10

Сорри за народ.рю и невбубенные картинки.
Anker
Ех! this.gif Рано я обрадовался aggressive.gif
У меня всё равно ни чего не вышло. Я всё зделал как мне советовал и как расписано в туториале Айван, но проблема осталась. this.gif Только теперь заместь грибов уже другое дерево.
У меня возник новый вопрос.
В 2daшке из хака "Пр. Лев." я заметил (также как и в некоторых других), что номерация строк идёт не по порядку. В данном случае стандартные заканчиваются 201-ой строкой, а дописаные начинаются 300-ой. Почему 300, а не 202? Может в ентом вся загвоздка?

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