Показать сообщение отдельно
Старый 27.12.2009, 06:49   #2
Melshin
Приближенный Тира
 
Аватар для Melshin
 
Регистрация: 20.12.2007
Адрес: Санкт-Петербург
Сообщения: 2,096
Власть репутации: 703 Melshin У него еще все впереди!
По умолчанию Re: Учебник (скриптинг)

Цитата таблица spells.2da

Я решил, что по ссылке она разобрана не до конца понятно и посчитал необходимым разобрать эту таблицу полностью и подробно.

Итак, у таблицы есть строки и столбцы. Каждая строка - заклинание. Каждый столбец, точнее, ячейка на пересечении строки n и столбца m - параметр m заклинания со SpellId n.

При работе с таблицами 2да никогда не вставляйте строку между двумя уже существующими. Никогда не ставьте пробелы, если эти пробелы не разделяют 2 параметра. Если параметр пуст, то вы должны заполнить его четырьмя звездочками "****".

Первый столбец означает SpellID заклинания. Ахтунг! На самом деле эта строка сама по себе ничего не означает. Важен именно порядковый номер строки. Т.е. если после строки с ID 1763 вы впишите строку с ID 3, на самом деле ID будет 1764! Это значит, что номер вы вписываете только для того, чтобы не запутаться.

Label. Имя заклинания. Никакой важности не имеет, но вы должны его заполнить такой последовательностью символов, чтобы вам было понятно, что находится в этой строке. Если вам уж очень хочется поставить пробел, то используйте кавычки типа "слово1 слово2", но я рекомендую поставить прочерк внизу типа Acid_Fog.

Name. ID строки в dialog.tlk. Являет собой название заклинания. Можно тут вводить и свой текст.

IconResRef. Имя иконки. Лежат в Neverwinter Nights 2\UI\default\images\icons (icons_X1 и т.п.), просматриваются всем, что читает tga (Adobe Bridge например).

School.

* G - общее (General)
* A - ограждение (Abjuration)
* C - вызов (Conjuration)
* D - предсказание (Divination)
* E - зачарование (Enchantment)
* V - воплощение (Evocation)
* I - иллюзия (Illusion)
* N - некромантия (Necromancy)
* T - превращение (Transmutation)


Можно модифицировать через spellschools.2da

Range. Макс. расстояние до цели.

* T - прикосновение
* S - короткое
* M - среднее
* L - большое.
* P - только на себя.
* I - Infinity (не пробовал)


vs - компоненты заклинания, вербальный и соматический. Вербальный компонент - это голос, подвержено ли воздействию сайленса и глухоты. Соматический компонент - жесты, подвержено ли провалу от доспеха.

Пишется либо ****, либо v, либо s, либо vs

Metamagic. Применяемая метамагия. Для того, чтобы рассчитать конечное число, откроем калькулятор Windows, переведем его в инженерный вид. У каждой метамагии есть свое число:

* 1 - Empower Spell, усиленное заклинание.
* 2 - продленное заклинание (Extend Spell)
* 4 - максимизированное заклинание (Maximise Spell)
* 8 - ускоренное заклинание (Quicken Spell)
* 16 - бесшумное заклинание (Silent Spell)
* 32 - Неподвижное заклинание (Still Spell)
* 64 - постоянное заклинание (Persistend Spell)


Складываем те числа, которые нам нужны и щелкаем "Hex", т.е. переводим в десятеричную систему. Результат записываем в виде 0x*результат*, если у результата число из 1 цифры, подписываем нолик.

Новую метамагию можно вводить в таблице metamagic.2da

Target Type. Возможная цель. Алгоритм вычисления итогового числа такой же, как и у метамагии.

* 1 - можно нацеливать на себя.
* 2 - можно нацеливать на другое существо.
* 4 - можно нацеливать на землю.
* 8 - Можно нацеливать на предмет.
* 16 - можно нацеливать на дверь.
* 32 - можно нацеливать на плэйс.



Impact Script. Сюда мы пишем имя скрипта, который мы хотим, чтобы данное заклинание запускало.

Bard. Сюда мы пишем круг, на котором барду будет доступно это заклинание.

Cleric. Тоже, но для клерика.

Druid.

Paladin.

Ranger.

Wiz_Sorc. У них один спеллбук.

Warlock.

Innate - врожденный круг заклинания (у бардов он, допустим, неправильный).

ConjTime. В миллисекундах - время, требуемое на создание заклинания. Стандартно это полторы секунды, т.е. 1500. В это время игрок не может делать ничего другого (если он что-то сделает или провалит чек скилла концентрации, спелл сорвется).

ConjAnim. Первая анимация, которую проигрывает персонаж (так сказать, на замахе).

* attack - это когда персонаж отводит правую руку назад и потом ведет ее вперед.
* party - персонаж разводит обе руки вниз под углом относительно ног (пример - "Помощь")
* hand - персонаж вытягивает правую руку вниз-вперед ладонью вверх (очарования)
* major - персонаж взлетает
* defensive - персонаж складывает руки снизу ладонями вверх (щиты, доспехи)
* head - персонаж поднимает руки над головой.


ConjVisual0 - VFX, используемый при касте. Можно использовать любой уже готовый (их мнооого), свой или стандартный для спеллов из нижеперечисленных:

* sp_acid_conjure.sef - кислота
sp_enchantment_conjure.sef - зеленая аура школы зачарования
sp_necromancy_conjure.sef - красная аура некромантии
sp_transmutation_conjure.sef - коричневая аура трансмутации
sp_evocation_conjure.sef - белая вспышка воплощения
sp_bless_conjure.sef - желтая вспышка благословения
sp_fire_conjure.sef - огонь
sp_lighting_conjure.sef - молния
sp_inflict_conjure.sef - нанесения ранений
sp_illusion_conjure.sef - сине-серая школа иллюзии
sp_divination_conjure.sef - белая аура прорицания
sp_ice_conjure.sef - лед
sp_cure_conj_w.sef - лечение
sp_darkness_conjure.sef - тьма
sp_abjuratuion_conjure.sef - ограждение
sp_sonic_conjure.sef - звук
sp_holy_conjure.sef - белая священная вспышка


LowConjVisual0 - везде sp_magic_conjure.sef, хз почему

ConjVisual1 - не используется

ConjVisual2 - не используется

ConjSoundVFX - не знаю, что этакое, есть у True Name Scroll (которым риверов в ОС убивали).

ConjSoundMale - голос персонажа, голоса по одной и той же текстовой строке изменяются с кругом заклинания

* vs_chant_conj_hm - все заклинания школы вызова
vs_chant_ench_lm - зачарование
vs_chant_necr_lm - некромантия
vs_chant_evoc_hm - воплощение
vs_chant_illu_lm - иллюзия
vs_chant_conj_lm - ограждение


ConjSoundFemale - то же, что и выше, но для женского пола. Список идентичен, m-ки на конце только менять на f-ки

ConjSoundOverride - хз

CastAnim - анимация каста. Т.е. то, что идет после замаха. Некоторые комбинации могут выглядеть некрасиво.

* area - перс тыкает пальцем
self - перс поднимает руки над головой
general - перс вытягивает обе руки вперед
major - то же самое, но в полете
out - перс вытягивает руку вперед (как при использовании предмета)
defensive - перс разводит руки в сторону (щиты)


CastTime - время на выполнение вышеуазанной анимации. В это время персонаж не отвечает на какие-либо команды. По умолчанию 1000 (1 секунда, итого 2.5 секунды)

CastVisual0 - то же, что и ConjVisual0, только conjure заменить на каст.

LowCastVisual0 - продублировать CastVisual0

CastVisual1, CastVisual2, CastSound - не используется.

Proj - есть ли у заклинания летящий компонент (пример - файрболл). Скрипт заклинания исполнится только тогда, когда этот компонент коснется цели. Обычно сюда указывают 0, иначе вам придется заполнять тьму других строк.

ProjModel - модель компонента. Типично - missingobject, но еще бывают w_arrow01, w_flask, w_dart01, w_shurkn01, w_arrow. Короче говоря, сюда можно хоть домик указать.

ProjSEF

.sef, используемый как VFX, висящий на Projectile. Типичные примеры можно посмотреть все в том же spells.2da, я не буду это описывать, т.к. прожектайлы делают довольно редко.

LowProjSEF - дублируем предыдущее.

ProjType - физическое поведение прожектайла.

* accelerating - ускорение
homing - по ходу тупо летящее
linked - ???, кто-нибудь проверьте и расскажите
burstup - ???, по ходу это когда их много
Еще есть много других, но я забью, т.к. не разбираюсь


ProjSpawnPoint - где появляется прожектайл.

ProjSound - это можно сделать в самом .sef, так что здесь оно нафиг не нужно в принципе.

ProjOrientation - либо path, либо ****, хз что это

ImpactSEF - .sef, проигрываемый при попадании прожектайла в цель (пример - взрыв файрболла)

LowImpactSEF - дублировать

ImmunityType - этот параметр ничего по факту не означает, только для удобства создателя - какой иммунитет делает заклинание неэффективным.

ItemImmunity. Может ли параметр предмета давать иммунитет к заклинанию. Если 1 (да), то допишите параметр в iprp_spellcost.2da

SubRadSpell1, 2, 3, 4, 5 - если вы хотите, чтобы при нажатии на иконку этого спелла запускался не скрипт, а менюшка с выбором нескольких заклинаний - вписывайте сюда SpellId нужных заклинаний.

Category. Смотрите в categories.2da, используется ИИ (точнее, не используется, поскольку АИ от Tony_k работает по-другому)

Master. Если это заклинание вызывается через SubRadSpell, укажите здесь (обязательно) тот SpellID, который его вызывает. Для SubRadSpell2 и далее SpellID писать не обязательно (только для первого)

UserType. Что это за заклинание.


1 - заклинание.
2 - заклинательно-подобная способность.
3 - навык.
4 - что-то другое (сила предмета)

SpellDesc. Строка в dialog.tlk, отвечающая за игровое описание спелла.

UseConcentration. Можно ли прервать спелл, 1/0

SpontaneouslyCast. Можно ли произнести заклинание без подготовки (спонтанные кастеры таких типов - клерик и друид, а заклинания соответственно - хилки и суммоны, вы будете первопроходцем, поработав с этим и последующим параметром)

SpontCastClassReq. Какой класс может произносить этот спелл спонтанно. Писать сюда ID из classes.2da

AltMessage - альтернативное сообщение, отображающееся при использовании этой штуки (по умолчанию кто-то произносит заклинание: *Name*) ID из dialog.tlk сюда пишется

Hostile Setting. Враждебное ли это заклинание или нет? (выводит ли из невидимости, санки и т.п.) 1/0

FeatID. Никакого значения обычно не имеет, для удобства пользователя. Указывает на ID фита, вызывающего скрипт по данному spellid. Есть исключение: навык, вызывающий список навыков (пример: формы друида). Тут уже все сложно и этот параметр заполнять обязательно.

Нужно вставить сюда число, равное: 65536*n+реальный вызывающий FeatID.

n должен быть больше 4999 и данный n не может использоваться больше 1 раза (даже для разных навыков). Если ваш мозг все еще на месте, продолжаем дальше.

Counter1, Counter2 - не пашет.

HasProjectile - есть ли прожектайл... (зачем 2 раза-то спрашивать?)

AsMetamagic - является ли данный спелл метамагией (надо для варлоков), не изучал.

TargettingUI - обращается к ID в spelltarget.2da, в общем-то это отображаемая форма действия заклинания (точнее, форма нацеливания) - реальная форма конечно в скрипте.

CastableOnDead - 1/0, можно ли нацеливать на трупы.

Removed - есть ли в игре, ставить 0, если вы его таки сделали, иначе работать не будет.

Продолжение следует...
__________________
Мера наносит нам поражение.
Melshin is offline   Ответить с цитированием