![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#5011
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Надо ковыряться, сравнивать скрипты спавна, возможно там затык.
|
![]()
Сообщение
#5012
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Если бы можно было выковырять родных самонов я бы сделал по аналогии а так не с чем сравнивать. или может есть какой модуль с измененными самонами? взял бы оттуда
|
![]()
Сообщение
#5013
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Попробуй узнать ресрефы существ, может они не те, что ты думаешь. Проверь все варианты, говорю же. Просто есть где-то ошибка. Может переменная стоит где-то и все...
|
![]()
Сообщение
#5014
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Из скрипта на призыв существ 1-9 вот первые два ресфера (или тега):
NW_S_badgerdire NW_S_BOARDIRE Эти мобы есть в палитре, но с другими ресферами (или тегами). Как найти именно этих мобов я не знаю, поэтому юзал мобов с палитры для замены самонов. Как я вижу решение: - либо есть возможность найти именно этих мобов, тогда проблем нет. но я не знаю как их найти. - либо найти скрипты, отвечающие за самонов игрока и добавить их в мобов с палитры. Для этого придется перебирать все скрипты (пока нашел ток один но он ничего не изменил). |
![]()
Сообщение
#5015
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Саммоны в палитре не видны. Раньше был фикс, но сайт с ним закрыли.
Скрипт nw_s0_summon, там все рефы прописаны. У нпс для саммона должен быть нестандартный набор скриптов, на nwn.wikia.com можно поискать по слову summon. |
![]()
Сообщение
#5016
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Биг спс нашел там картинку со всеми скриптами на самона, проверил - работает.
|
![]()
Сообщение
#5017
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Сейчас делаю, чтобы при наличии фита GREAT_SPELL_FOCUS_CONJURATION самонам добавлялось 4силы. Но делаю это через добавление нового самона с увеличенной силой. Есть ли возможность реализовать скрипт, чтобы наличие фита прибавляло силу уже существующему самону? Может даже просто через присвоение фита FEAT_EPIC_GREAT_STRENGTH_4.
|
![]()
Сообщение
#5018
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Сейчас делаю, чтобы при наличии фита GREAT_SPELL_FOCUS_CONJURATION самонам добавлялось 4силы. Но делаю это через добавление нового самона с увеличенной силой. Есть ли возможность реализовать скрипт, чтобы наличие фита прибавляло силу уже существующему самону? Может даже просто через присвоение фита FEAT_EPIC_GREAT_STRENGTH_4. Можно просто эффект наложить. В заклинании Сила быка есть код, но надо тип эффекта сделать, кажется, supernatural, чтобы не диспелилось. Какой именно тип эффекта, можно подсмотреть в заклинании Проклятье (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#5019
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
А где найти эффекты заклинаний? Нашел только spells.2da, vco_lgsprnatr01 sco_lgsprnatr01
Так же хотелось бы не эффектом, чтобы сверху можно было бафать той же силой быка, а так будет кап в 12 ед. |
![]()
Сообщение
#5020
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
А где найти эффекты заклинаний? Нашел только spells.2da, vco_lgsprnatr01 sco_lgsprnatr01 https://nwnlexicon.com/index.php/EffectAbilityIncreaseВ редакторе скрипта справа все функции можно пересмотреть, чтобы оценить возможности. Так же хотелось бы не эффектом, чтобы сверху можно было бафать той же силой быка, а так будет кап в 12 ед. Тогда только отдельная крича. Можно было бы давать итем, но он тоже входит в те 12 капа.
|
![]()
Сообщение
#5021
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
CODE else if(nSpellID == SPELL_SUMMON_CREATURE_III) { nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; sSummon = "z_s3"; //NW_S_WOLFDIRE if(nCasterLevel >= 25) { sSummon = "z_s13"; } if(GetHasFeat(FEAT_GREATER_SPELL_FOCUS_CONJURATION )) //WITH grCONJ +4 to str q { object oTarget = OBJECT_SELF; //OBJECT_SELF // Create the effect to apply effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); // Create the visual portion of the effect. This is instantly // applied and not persistant with wether or not we have the // above effect. effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE); // Apply the visual effect to the target ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); // Apply the effect to the object ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonus, oTarget); } } В данный момент скирпт накидывает силу персу. существует ли константа для призванного монстра, чтобы вставить вместо OBJECT_SELF? Еще заметил, что фокусировка и эпик фокусировка на оружии существо, а так же бонус к атаке и бонус усиления когтя существа не меняет отображаемый бонус атаки в окне призванного существа и судя по всему не действует. Можно ли это исправить? Как вариант решения нашел, можно добавить существу оружие с бонусом атаки\усиления. Сообщение отредактировал zmeylsdn - Jan 10 2019, 19:06 |
![]()
Сообщение
#5022
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Уже после вступления в силу эффекта саммона его объект можно получить через GetAssociate.
Про атаку не знаю, но рекомендую смотреть подобные вещи не в чарнике, а в логе боя. Чарник в нвн не всегда соответствует действительности. |
![]()
Сообщение
#5023
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Можно сделать в 2 разных подхода:
1. В скрипте, где вызываешь саммона после ApplyEffect с эффектом вызова саммона, получаешь саммона через object GetAssociate() и накладываешь на него эффекты через кастомную функцию, или просто. (как описал denis0k) 2. В скрипте спавна саммона ищешь мастера object GetMaster(), делаешь проверки и накладываешь эффекты на саммона уже как на OBJECT_SELF. Оба варианта должны работать |
![]()
Сообщение
#5024
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Может кто в коде показать, как взять ассоциацию на сумона и применить к нему эффект увеличения силы или в скрипте onSpawn сделать то же самое (этот вариант предпочтительнее)? Или может есть какой модуль, где это можно подсмотреть и сделать по аналогии. Чутка погуглил, но так и не понял сам механизм, взял я object GetAssociate() или object GetMaster()
CODE object GetMaster (object oAssociate=OBJECT_SELF) object oAssociate int GetAssociateType (object oAssociate) object oAssociate и дальше что? к чему применять CODE object oTarget = OBJECT_SELF; effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); ? И вопрос, чем извлечь 2да файлы из 2da.bif и после редактирования запаковать обратно? Пробовал разные проги из раздела НВнтул здесь, но там вроде ток просмотр. Или может это делается по другому, чтобы в игре был измененный базовый урон оружия из baseitems.2da например. Сообщение отредактировал zmeylsdn - Jan 17 2019, 17:38 |
![]()
Сообщение
#5025
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
В конце скрипта вызова:
CODE object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED); ApplyEffectToObject(DURATION_TYPE_*, effect, oSummon); 2da из бифов можно извлечь NWN Explorer, или вроде в папке с игрой есть 2da.zip. Запаковывать обратно не надо, нужно либо положить в override, либо создать hak и подключить к модулю. |
![]()
Сообщение
#5026
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
-1- В скрипте nw_s0_summon первый вариант с OBJECT_SELF работает на перса, второй вариант с object oSummon не работает никак, в т.ч. и без DelayCommand(3.0). Использую одновременно только один из вариантов, тут объединил для наглядности.
CODE else if(nSpellID == SPELL_SUMMON_CREATURE_III) { nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; sSummon = "NW_S_WOLFDIRE"; if(nCasterLevel >= 25) { sSummon = "z_s13qq"; } if(GetHasFeat(FEAT_GREATER_SPELL_FOCUS_CONJURATION )) { object oTarget = OBJECT_SELF; effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonus, oTarget); object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED); effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonus, oSummon)); } } -2- В скрипте самона на onSpawn добавил это внутри void main(), никакого эффекта CODE object oMaster = GetMaster(); if(GetHasFeat(FEAT_GREATER_SPELL_FOCUS_CONJURATION , oMaster)) { object oTarget = OBJECT_SELF; effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonus, oTarget); } -3-Пытаюсь изменить ДЦ всех спеллов на эпик лвлах. Ищу в формуле спела GetSpellSaveDC() и меняю на nSpellDC. Докидываю код: CODE int nSpellDC; int nCasterLevel = GetCasterLevel(OBJECT_SELF); if(nCasterLevel <= 20) { nSpellDC = GetSpellSaveDC(); } if((nCasterLevel >= 21) && (nCasterLevel <= 21)) { nSpellDC = GetSpellSaveDC() + 10; } if(nCasterLevel >= 22) { nSpellDC = GetSpellSaveDC() + 20; } и все работает (проверено на NW_S0_WailBansh). Вопрос - возможно ли одним кодом охватить все спеллы? Каждый спелл зависит от #include "X0_I0_SPELLS" #include "x2_inc_spellhook" так что видимо этот код нужно добавлять в один из этих скриптов. Но как этим одним кодом заменить GetSpellSaveDC() каждого спела на nSpellDC? Или может есть другой путь. Сообщение отредактировал zmeylsdn - Jan 19 2019, 19:18 |
![]()
Сообщение
#5027
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Саммон уже вызван на момент применения эффекта? Я вижу вверху строчку с рефом, такое чувство, что эффект вызова саммона ещё не применён.
Все скрипты придётся менять вручную. Даже если поправить инклуд, всё равно все скрипты надо будет перекомпилировать, а этого не сделать, если предварительно не изменить хоть как-то (создать модульную версию). Сообщение отредактировал denis0k - Jan 19 2019, 08:09 |
![]()
Сообщение
#5028
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
-1-Да самон вызван, добавил полный код. Плюс задержка в виде delay command (3.0).
-3-Возникли трудности с добавлением кода в x2_inc_spellhook. Если использую void nSpellDC() или int nSpellDC(), тогда пишет ERROR: NO LEFT BRACKET ON ARG LIST напротив строк "nSpellDC =". Через void main() сохраняет, но т.к. это есть и в каждом спеле, потом проблемы с ДЦ спелла на 21 и 22 лвле (0 или 1). Если вообще без первой строки и скобочек {} (c добавлением int nSpellDC;) пишет INVALID DECLARATION TYPE напротив строки "if" . Neverwinter Script void nSpellDC(){ // проблема в этой строке видимо int nCasterLevel = GetCasterLevel(OBJECT_SELF); if(nCasterLevel <= 20) { nSpellDC = GetSpellSaveDC(); } if((nCasterLevel >= 21) && (nCasterLevel <= 21)) { nSpellDC = GetSpellSaveDC() + 10; } if(nCasterLevel >= 22) { nSpellDC = GetSpellSaveDC() + 20; } } -4-Добавление класса сложности к спеллам избранной школы волшебника-специалиста и увеличение уровней кастера для престиж-классов с чего начинать искать? Сообщение отредактировал zmeylsdn - Jan 23 2019, 21:09 |
![]()
Сообщение
#5029
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата Да самон вызван, добавил полный код. Не вижу (IMG:style_emoticons/kolobok_light/smile.gif) sSummon = "z_s13qq"; есть, а вот его создания - не вижу.А вот с nSpellDC полная каша. Функция должна вернуть значение, значит, она должна быть int, а не void. Также скорее всего триггерит на одинаковое имя функции и переменной. В базе должно быть что-то типа: CODE int GetSpellDC() { бла бла бла spellDC = ххх; бла бла бла return spellDC; } Советую полистать книжки по программированию, самые простые (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Добавление класса сложности к спеллам избранной школы волшебника-специалиста и увеличение уровней кастера для престиж-классов с чего начинать искать? Не понял вопроса. Можно узнать этот уровень кастера и просто прибавить ДЦ. Не знаю, можно ли узнать специализацию, давно этим занимался, всё по памяти.
|
![]()
Сообщение
#5030
|
|
Level 3 ![]() Класс: Бледный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
-1- да в конце скрипта были строки
Neverwinter Script effect eSummonedMonster = EffectSummonCreature(sSummon, nFNF_Effect); return eSummonedMonster; я закинул между ними, в конце, в первой части скрипта (там было ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration))(IMG:style_emoticons/kolobok_light/wink3.gif) но ничего не произошло. Neverwinter Script effect eSummonedMonster = EffectSummonCreature(sSummon, nFNF_Effect); if(GetHasFeat(FEAT_GREATER_SPELL_FOCUS_CONJURATION)) { object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED); effect eBonus = EffectAbilityIncrease(ABILITY_STRENGTH, 4); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonus, oSummon); } return eSummonedMonster; -3-Сделал такой код в спелхук и в спеллах поменял "GetSpellSaveDC()" на "nDC()" - работает. Neverwinter Script int nDC() { int nCasterLevel = GetCasterLevel(OBJECT_SELF); int nSpellDC; if(nCasterLevel <= 20) { nSpellDC = GetSpellSaveDC(); } if((nCasterLevel >= 21) && (nCasterLevel <= 21)) { nSpellDC = GetSpellSaveDC() + 10; } if(nCasterLevel >= 22) { nSpellDC = GetSpellSaveDC() + 20; } return nSpellDC; } -4-Сделал такой код для учета уровней ПМа в кастер лвл. Но для его работы придется во всех спелах изменить "nCasterLevel" на "nCasterLevel()" в т.ч. и в предыдущем скрипте. Neverwinter Script int nCasterLevel() {
int nCL = GetCasterLevel(OBJECT_SELF); int nEpicMod = GetLevelByClass(CLASS_TYPE_PALEMASTER,OBJECT_SELF); if (nEpicMod>0) { nCL += (nEpicMod/2);//missstorm1\2 } return nCL; } Сообщение отредактировал zmeylsdn - Jan 24 2019, 17:41 |
![]()
Сообщение
#5031
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Можно всё-таки полный скрипт саммона, а не куски? От начала до конца.
|
![]()
Сообщение
#5032
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Приветствую всех!
Обращаюсь к вам за помощью со следующей проблемой: не работает функция FadeFromBlack (ну или мы что-то неправильно делаем). Всегда с ней отлично работалось, а тут... Суть вот в чем: ГГ разговаривает с объектом и спутником, в конце диалога они телепортируются на другие точки. Во время телепортации как раз таки нужен черный занавес. Прикрепляю код. Скрипт стоит на разговоре с объектом. Надеюсь на ваш совет! Neverwinter Script void main()
{ object oPC = GetFirstPC(); object oSarg = GetObjectByTag ("sargu_olu"); int iECHO = GetLocalInt (oPC, "snov_echo_n"); //всякое не относящееся к сути вопроса int iECHOn = iECHO + 1; SetLocalInt (oPC, "snov_echo_n", iECHOn); DelayCommand (1.0, DestroyObject (OBJECT_SELF)); GiveXPToCreature(oPC, 15); AddJournalQuestEntry ("DN_snov_echo", iECHOn+1, oPC); CreateObject(OBJECT_TYPE_PLACEABLE, "sno_echo", GetLocation(GetObjectByTag ("snov_krup"))); //удаление спутника, чтобы прыгнуть на разные точки с ГГ RemoveHenchman(oPC, oSarg); //телепортация DelayCommand (1.0, AssignCommand(oPC, JumpToObject(GetObjectByTag("WP_sno_spawn1")))); DelayCommand (1.0, AssignCommand(oSarg, JumpToObject(GetObjectByTag("WP_sno_spawn2")))); SetLocalInt(oPC, "di_sargu_1", 2); //экран AssignCommand(oPC, FadeToBlack(oPC, FADE_SPEED_FAST)); DelayCommand (2.0, ClearAllActions()); DelayCommand (4.0, FadeFromBlack(oPC, FADE_SPEED_FAST)); } |
![]()
Сообщение
#5033
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Просто догадка. В катсценах фейдят как действие, мб объект надо разрушать не через секунду, а через пять, чтобы он последнюю строку успел сделать? (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#5034
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
сделайте так
Neverwinter Script //экран AssignCommand(oPC, FadeToBlack(oPC, FADE_SPEED_FAST)); AssignCommand(oPC, DelayCommand (4.0, FadeFromBlack(oPC, FADE_SPEED_FAST))); как и сказал dens0k вы разрушаете объект и DelayCommand не срабатывает из-за этого, так как она не привязана к герою, а висит на хенче. Поэтому лучше вешать или на модуль или на PC |
![]()
Сообщение
#5035
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Спасибо большое, все получилось!
И заодно стала понятнее логика при работе с DelayCommand (IMG:style_emoticons/kolobok_light/good.gif) |
![]() ![]() |
Текстовая версия | Сейчас: 20th August 2025 - 08:02 |