![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#551
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия ![]() |
Не дошел до последней страницы, однако, увлекательно, задумал переписать возможности стандартных классов под себя, в частности скрестить монка с AA, так сказать, под себя, а то нехочется создавать монка\визарда\AA, имхо, извращение (IMG:style_emoticons/kolobok_light/wacko.gif)
Выдернул я cls_feat_monk.2da и вписал туда фиты арчера: Код 28 FEAT_PRESTIGE_ENCHANT_ARROW_1 445 3 -1 0 29 FEAT_PRESTIGE_ENCHANT_ARROW_2 446 3 2 0 30 FEAT_PRESTIGE_ENCHANT_ARROW_3 447 3 7 0 31 FEAT_PRESTIGE_ENCHANT_ARROW_4 448 3 12 0 32 FEAT_PRESTIGE_ENCHANT_ARROW_5 449 3 19 0 33 FEAT_PRESTIGE_EMBUE_ARROW 450 3 7 0 Запихнул файлик в оверайд, воуля, никаких изменений в игре (IMG:style_emoticons/kolobok_light/wacko.gif) В чем может быть проблема? В этом случае нужно убирать нулевое значение в ALLCLASSESCANUSE что бы фиты были доступны всем? И еще вопрос. EMBUE ARROW, ну тобиш, пропитать стрелу, после появления у монка появится где в радиальном меню? Там появится иконка арчера или нужно будет править сам фит (тк фит чисто арчеровский)? |
![]()
Сообщение
#552
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Правильнее будет так:
Код 28 FEAT_PRESTIGE_ENCHANT_ARROW_1 445 3 1 0 В cls_feat_*.2da колонки обозначают следующее:29 FEAT_PRESTIGE_ENCHANT_ARROW_2 446 3 2 0 30 FEAT_PRESTIGE_ENCHANT_ARROW_3 447 3 7 0 31 FEAT_PRESTIGE_ENCHANT_ARROW_4 448 3 12 0 32 FEAT_PRESTIGE_ENCHANT_ARROW_5 449 3 19 0 33 FEAT_PRESTIGE_EMBUE_ARROW 450 3 7 1 FeatIndex - номер фита (из feat.2da); List - тип фита (0 - можно взять только на общих фитах (каждые 3 уровня), 1 - можно взять на любых фитах, 2 - можно взять только на бонусных (как метамагия у мага или избранный враг у рейнджера), 3 - выдаётся нахаляву); GrantedOnLevel - уровень, на котором выдаётся фит (только для типа 3, для остальных это значение игнорируется); OnMenu - является ли фит активируемым (1 - активируемый, 0 - пассивный), если выставлено 1 - фит появляется в радиальном меню класса (в примере выше в радиальном меню для абилок монка). Цитата Запихнул файлик в оверайд, воуля, никаких изменений в игре Нужно как минимум убрать и взять заново уровни монка у конкретного чара.
Сообщение отредактировал Ilerien - May 23 2010, 22:49 |
![]()
Сообщение
#553
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия ![]() |
Благодарю за ответ, и правда, я немного напутал с цифрами. Все работает как надо (IMG:style_emoticons/kolobok_light/smile.gif) (пишу с телефона - прошу прошение за возможное неудобство при чтении)
правда я столкнулся с небольшой проблемой. Решил попробовать дать монаху возможность вызывать кого нибудь. Что бы долго не думать взял и приписал в фиты вызов тени от танцора тени. Однако сама тень исчезает сразу после вызова. Стал смотреть что приписанно в spells.2da по этому поводу - там заметил ссылку на скрипт x0_s2_shadsum. Изменил там номер класса, который учитывается при повышении уровня тени и бросил скрипт в оверайд. Толку 0. Может кто знает что тут нужно сделать? |
![]()
Сообщение
#554
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Стал смотреть что приписанно в spells.2da по этому поводу - там заметил ссылку на скрипт x0_s2_shadsum. Изменил там номер класса, который учитывается при повышении уровня тени и бросил скрипт в оверайд. Толку 0. Может кто знает что тут нужно сделать? Да, бросать в оверрайд надо не исходник (*.nss), а скомпилённый скрипт (*.ncs).
|
![]()
Сообщение
#555
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия ![]() |
Скачал для этих целей nwnnsscomp.Exe - названия оригинального не знаю, в архиве кроме экзешника, увы, ничего не было. Как использовать не разобрался - после запуска программы черное окно пропадает мгновенно.
И еще вопрос. Можно ли сделать фит основаный на спеле, такой, что бы персонаж сам по себе получал вампирскую регенерацию, а не через оружие? Или это скрипты? |
![]()
Сообщение
#556
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Скачал для этих целей nwnnsscomp.Exe - названия оригинального не знаю, в архиве кроме экзешника, увы, ничего не было. Как использовать не разобрался - после запуска программы черное окно пропадает мгновенно. Там используются определённые аргументы командной строки, какие - точно не скажу, что-то вроде -c file.nss file.ncs. Хелп там встроен в экзешник, достаточно запустить в терминале nwnnsscomp.exe без аргументов. Есть вполне стабильный standalone компилятор от биоварей, /utils/clcompile.exe. Если не нравится интерфейс командной строки, можно скомпилить в своём модуле в тулсете и после этого (пока модуль открыт) взять нужный файл из директории /modules/temp0/.Цитата И еще вопрос. Можно ли сделать фит основаный на спеле, такой, что бы персонаж сам по себе получал вампирскую регенерацию, а не через оружие? Или это скрипты? Можно. Скрипты. Более того, кастомизация (или создание нового) спелла (вне зависимости от того, спелл это, активируемый фит, абилка моба или итема) подразумевает скриптинг. Более того, вампирская регенерация как эффект бывает (насколько я понимаю, итемпроперты с точки зрения движка - это интерфейсы для эффектов, поэтому для каждого итемпроперта существует свой эффект), но стандартными скриптовыми конструкторами эффектов не создаётся -> нужен NWNX, поэтому игра не стоит свеч (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Ilerien - May 24 2010, 13:48 |
![]()
Сообщение
#557
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия ![]() |
Спасибо, со скриптами разобрался - отредактировал скрипт в новом модуле и сохранил с компиляцией, потом вытащил из соответствующей директории с помощью нвнэксплолера (IMG:style_emoticons/kolobok_light/smile.gif)
насчет регенерации очень жаль. И правда, это не стоит такой мороки. Спасибо большое за помощь (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#558
|
|
Level 2 ![]() Класс: Монах Характер: Chaotic Evil Раса: Баатезу ![]() |
Вопрос такой. Нужно было переписать описания скиллов. Дабы не марать диалог.тлк, сделал кастомный. Написал нужную инфо, заменил в скилл.2да ссылки на нужные (начиная с 16777216), подключил в модуле. Итог. В игре все отображается как положено (т.е. когда заходим в описания чара и смотрим скиллы). При заходе на сервер и при первом лвлапе(дальше не проверял еще) вместо инфо пишет всякую хню (монах, паладин, воин и т.д.), т.е. как я понял, считывается инфо не с 16777216+ строки, как нужно, а с 2,3 и т.д.
Возможно ли как-то это исправить? Заранее спасибо за помощь (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#559
|
|
Level 5 ![]() Класс: Клерик Характер: Lawful Good Раса: Человек NWN: Контент ![]() |
|
![]()
Сообщение
#560
|
|
Level 2 ![]() Класс: Монах Характер: Chaotic Evil Раса: Баатезу ![]() |
к модулю на сервере тлк разумеется присоединен? Разумеется. Писал же. "подключил в модуле". Насколько я понял нвн хаки и тлк грузит после захода, поэтому и вылазит такая байда, что при заходе и создании чара выдает не нужную инфо, а уже при загруженном модуле все норм. Как это обойти можно? Стандартный диалог.тлк править не хочется, чтобы игроку не пришлось перетыкивать потом его, если захочет на другом серве поиграть. А если добавить нужные строки в стандартный диалог.тлк и давать его игроку вместе с хаками будет результат? |
![]()
Сообщение
#561
|
|
Level 5 ![]() Класс: Клерик Характер: Lawful Good Раса: Человек NWN: Контент ![]() |
А если добавить нужные строки в стандартный диалог.тлк и давать его игроку вместе с хаками будет результат? так значит речь про создание чара до захода в первую локацию? тогда только стандартный править, или тщательно подбирать строки из него (IMG:style_emoticons/kolobok_light/crazy.gif) |
![]()
Сообщение
#562
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Neutral Раса: Человек ![]() |
можно ли редактировать фиты? (бонусы, которые они дают)
если да, то где? в feat.2da и cls_feat.2da ничего такого нет (нету самих характеристик фита) |
![]()
Сообщение
#563
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Фиты вшиты в движок. Для изменения делаются новые, а бонусы даются посредством разных скриптовых костылей.
|
![]()
Сообщение
#564
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Neutral Раса: Человек ![]() |
к примеру есть фита:
FEAT_SPELL_POWER фита красного волшебника из второй части, увеличивающая nCasterLevel мага на 1,2,3,4,5 за каждые 2 лвла. (+5 на 10ом лвле красного волшебника) Какого типа должен быть скрипт, чтобы создать что то наподобие этого. Интересует реализации nCasterLevel как левельной структуры, чтобы кастерлвл(другими словами, число влияющее на дамаг кастера) рос с левельностью. Хотелось бы просто копию этого фита, только своими числами немного (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#565
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
1.Обычно делается инклюд, с необходимой функцией, который потом подрубается к необходимому скрипту
Тебе придется добавить инклюд и изменение в каждый скрипт спелла, в котором будет это использоваться 2. Может быть, можно сделать как-то через NWNX написав свой плагин. Сообщение отредактировал Laajin - Aug 28 2011, 18:43 |
![]()
Сообщение
#566
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата 1.Обычно делается инклюд, с необходимой функцией, который потом подрубается к необходимому скрипту Тебе придется добавить инклюд и изменение в каждый скрипт спелла, в котором будет это использоваться К каждому скрипту? Это же до старости ковыряться можно. Есть же спеллхук. |
![]()
Сообщение
#567
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Только спеллхук проблему не решает - как минимум нужна кастомная функция расчета кастерлевела, которую нужно пихнуть в скрипт каждого заклинания. А ещё есть скрипты на АОЕ, с которыми тоже нужно возиться. Собственно, таким образом в текущем модуле Гема сделана заплатка на кастерлевел ПМа.
|
![]()
Сообщение
#568
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Ilerien, если мне память не изменяет, спеллы в основном считают кастер левел по HD от OBJECT_SELF - зависят от него, во всяком случае. Не пробовали перехватывать спелл и вызывать его от имени невидимого NPC-заглушки с нужными бонусами? Просто менять каждый спелл вручную это как-то... слишком.
UPD: вспомнил про GetCasterLevel(), но принцип тот же. Цитата А ещё есть скрипты на АОЕ, с которыми тоже нужно возиться. А там какие тонкости? Сообщение отредактировал Talarasha - Aug 28 2011, 21:24 |
![]()
Сообщение
#569
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Проблема в том, что скрипт заклинания неявно принимает на вход не только собственно уровень заклинателя (а не хитдайс, к слову), но ещё и кучу других параметров, таких, как класс сложности, метамагия, наличие у кастера всяческих спелл пенетрейшенов и т. д.
На самом деле, правка делается несложно - простенькой программой, которая в каждом файле заменяет вхождения функции GetCasterLevel() на вхождения кастомной и добавляет директиву #include, если нужно. В новом модуле я писал кастомное спелловое ядро, где в спеллхуке определяются все параметры заклинания и вешаются локалкой на кастера, откуда их читает скрипт заклинания кастомными функциями-заменителями. |
![]()
Сообщение
#570
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата Проблема в том, что скрипт заклинания неявно принимает на вход не только собственно уровень заклинателя (а не хитдайс, к слову), но ещё и кучу других параметров, таких, как класс сложности, метамагия, наличие у кастера всяческих спелл пенетрейшенов и т. д. Хитдайс тоже берется, просто не везде. Я же не с потолка про него вспомнил, а открыв наугад спелл. (IMG:style_emoticons/kolobok_light/rolleyes.gif) А все эти параметры также можно в спеллхуке проверить и добавить заглушке через ItemProperty, какие проблемы? |
![]()
Сообщение
#571
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А там какие тонкости? Если в скрипте мгновенного действия, скажем, для поднятия кастерлевела ПМу по 3.5 достаточно заменить функцию на такую:Neverwinter Script int FR_GetCasterLevel(object oCreature) { int nPMLevel = GetLevelByClass(CLASS_TYPE_PALE_MASTER, oCreature); int nCL = GetCasterLevel(oCreature); int nCasterClass = GetLastSpellCastClass(); if( !GetIsObjectValid(GetSpellCastItem()) && nPMLevel > 1 && (nCasterClass == CLASS_TYPE_WIZARD || nCasterClass == CLASS_TYPE_SORCERER || nCasterClass == CLASS_TYPE_BARD) ) nCL += nPMLevel - 1; return nCL; } , то в скриптах на АОЕ этот код будет работать правильно только до тех пор, пока валиден объект-кастер, создавший эту АОЕ. Решается установкой на АОЕ локалки при создании. Цитата Хитдайс тоже берется, просто не везде. Я же не с потолка про него вспомнил, а открыв наугад спелл. Хитдайс кастера? Возможно, я с ходу не могу назвать ни одного дефолтного заклинания, в котором он используется. (IMG:style_emoticons/kolobok_light/sad.gif) Впрочем, не суть, у меня в кастомных заклинаниях кое-где и другие параметры кастера используются, вроде элайнмента.Цитата А все эти параметры также можно в спеллхуке проверить и добавить заглушке через ItemProperty, какие проблемы? Хм, как именно? И как в таком случае предлагается вообще скрипт перехватывать? Если запускать его от имени другого объекта через ExecuteScript(), функции, которые определяют параметры заклинания, вернут всякую чушь. Если через ActionCastSpellAt*(), подставной непись должен быть как минимум в той же локе, что и кастер, и предвижу проблему с летящими из ниоткуда фаерболами.
|
![]()
Сообщение
#572
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата Хм, как именно? И как в таком случае предлагается вообще скрипт перехватывать? 1)Игрок кастует спелл, спеллхук перехватывает. 2)Скрипт делает проверку кастер-левела, ДЦ, фитов и всего такого прочего. 3)Создаем невидимую НПС-заглушку из шаблона по координатам того же PC со шкуркой, в которую записываем проверенные данные через итем-проперти. 4)В случае, если у игрока бонус к кастер левелу, добавляем левелов заглушке. 5)Вызываем спелл через ActionCastSpellAt* от имени созданной заглушки (с ExecuteScript() я не смог сходу придумать, как получать имя скрипта спелла) 6)Убиваем заглушку. |
![]()
Сообщение
#573
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата 2)Скрипт делает проверку кастер-левела, ДЦ, фитов и всего такого прочего. Допустим, добавить на шкурку фиты можно, если их предварительно прописать в iprp_feats.2da. А как добавлять уровней подставному неписю?3)Создаем невидимую НПС-заглушку из шаблона по координатам того же PC со шкуркой, в которую записываем проверенные данные через итем-проперти.4)В случае, если у игрока бонус к кастер левелу, добавляем левелов заглушке. В любом случае, это а) куча неписей разного уровня и разных классов в палитре; б) создание/удаление объекта-непися при касте каждого спелла игроком, что плохо с точки зрения производительности. Всякие projectile-заклинания вроде фаерболов будут визуально летать от кастера дважды. Соответственно, в 2 раза увеличится время достижения цели. Цитата с ExecuteScript() я не смог сходу придумать, как получать имя скрипта спелла Neverwinter Script Get2DAString("spells", "impactscript", GetSpellId())
Сообщение отредактировал Ilerien - Aug 28 2011, 22:28 |
![]()
Сообщение
#574
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата А как добавлять уровней подставному неписю? Хенчам в XP2 же как-то добавляли. Цитата В любом случае, это а) куча неписей разного уровня и разных классов в палитре; Это еще почему? Мы создаем заглушку по шаблону, а фиты и левелы ей даем динамически скриптом. В палитре будет один-единственный объект (крич). Цитата б) создание/удаление объекта-непися при касте каждого спелла игроком, что плохо с точки зрения производительности. Это будет зависеть от того, как способ будет действовать на практике. Производительность дело такое, вполне может быть так, что никакого заметного снижения не будет. За Get2DAString спасибо. Цитата Всякие projectile-заклинания вроде фаерболов будут визуально летать от кастера дважды. Тогда ExecuteScript() от имени заглушки. Сообщение отредактировал Talarasha - Aug 28 2011, 22:32 |
![]()
Сообщение
#575
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Хенчам в XP2 же как-то добавляли. Там есть функция LevelUpHenchman, которая не обладает достаточной гибкостью - непись апается согласно прописанному пакаджу, а это означает, что придётся ещё и свой пакадж для каждого кастерского класса делать. И опять же - производительность, кроме создания/удаления имеем энное число левелапов.Цитата Тогда ExecuteScript() от имени заглушки. И возвращающие параметры заклинания функции скорее всего вернут чушь.Использование другого объекта в качестве кастера порождает кучу подводных камней. Например, заклинания Dominate Person/Monster/Animal внезапно будут добавлять контролируемое существо во фракцию подставного объекта, всякие вызывающие существ заклинания - тоже. Как себя поведет ResistSpell() - непонятно. Я уже не говорю о том, что придётся переписывать функцию, которая определяет, действует ли заклинание на конкретный объект (всякие там no-pvp локации). |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 18:25 |