![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#4521
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Создаю модуль и не могу понять простую вещь... Каким образом задать команду так, что бы во первых: Персонаж нападал на игрока после определённой реплики в диалоге. Во вторых: после того как он напал все неписи находящиеся в одной комнате с игроком и агрессором нападали на игрока так же.
|
![]()
Сообщение
#4522
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
Для того, чтобы NPC атаковал игрока после фразы в диалоге, надо воспользоваться "шляпой" (визардом) во вкладке Action Taken: он самостоятельно создаст скрипт
Neverwinter Script //:://///////////////////////////////////////////// //:: FileName at_001 //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By: Script Wizard //:: Created On: 15.01.2011 0:32:16 //::////////////////////////////////////////////// #include "nw_i0_generic" void main() { // Set the faction to hate the player, then attack the player AdjustReputation(GetPCSpeaker(), OBJECT_SELF, -100); DetermineCombatRound(GetPCSpeaker()); } Для того, чтобы все npc в комнате(или где-либо еще, насколько я понимаю, расстояние роли не играет) атаковали игрока после некой фразы в диалоге, надо поставить этим npc уникальные тэги (в моем примере это будут "NPC1", "NPC2" и "NPC3", а так же NPC, с которым ведется диалог, тэг которого не понадобится) и поставить на вкладку action taken скрипт вроде Neverwinter Script #include "nw_i0_generic" void main() { AdjustReputation(GetPCSpeaker(), OBJECT_SELF, -100); //заставляем NPC, на котором стоит диалог(OBJECT_SELF), возненавидеть говорящего игрока (GetPCSpeaker) AdjustReputation(GetPCSpeaker(), GetObjectByTag("NPC1"), -100); //заставляем NPC с тэгом "NPC1" (GetObjectByTag("NPC1")) возненавидеть игрока AdjustReputation(GetPCSpeaker(), GetObjectByTag("NPC1"), -100); //заставляем NPC с тэгом "NPC2" (GetObjectByTag("NPC2")) возненавидеть игрока AdjustReputation(GetPCSpeaker(), GetObjectByTag("NPC1"), -100); //заставляем NPC с тэгом "NPC3" (GetObjectByTag("NPC3")) возненавидеть игрока DetermineCombatRound(GetPCSpeaker()); } если нужно, могу выложить мини-модуль, в котором реализован второй скрипт (1.69+SoU+HoU) Сообщение отредактировал wirTUS - May 31 2011, 23:59 |
![]()
Сообщение
#4523
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Чувствую я так никогда и не дождусь ответа на мой вопрос по 2da-шникам...
Ну ладно, еще другой вопрос созрел. Не подскажете, почему хэнчман не парализуется такой строчкой? AssignCommand(oDeek, ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_ TEMPORARY, EffectCutsceneParalyze(), oDeek, 30.0)))); |
![]()
Сообщение
#4524
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Чувствую я так никогда и не дождусь ответа на мой вопрос по 2da-шникам... Там косяк где угодно может быть, начиная от кривой строки в 2да и заканчивая наличием такой же 2да в более приоритетном хаке.Цитата Не подскажете, почему хэнчман не парализуется такой строчкой? Косяк где-то в другом месте, эта строчка должна работать.
|
![]()
Сообщение
#4525
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Самым первым хаком я ставлю свой, значит мой 2da будет перекрывать остальные, правильно?
Вот чем заканчивается мой 2da. ("-" обозначаю пустые клетки) 2998 - - - - - cep_reserv 2999 bill_ 1 0 - 0 - Вот фрагмент моего скрипта. Neverwinter Script AssignCommand(oPC, ClearAllActions());
AssignCommand(oDeek, ClearAllActions()); if (oPC==GetMaster(oDeek)) { DelayCommand(1.0, ActionDoCommand(AssignCommand(oDeek, ActionJumpToObject(oWPoHench)))); DelayCommand(1.5, AssignCommand(oDeek, ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_ TEMPORARY, EffectCutsceneParalyze(), oDeek, 15.0)))); } DelayCommand(3.31, ActionDoCommand(AssignCommand(oPC, ActionJumpToObject(oWPoPC)))); Сообщение отредактировал StasMokos - Jun 6 2011, 15:15 |
![]()
Сообщение
#4526
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Ок, как файлы портретов называются?
Поля в 2да пустыми быть не должны ни при каких условиях - дефолтным значением является ****. Думаю, заработает, если убрать нафиг все экшены. Использование Action*() оправдано ровно в 2 случаях: 1) когда хочется (обычно в катсцене - когда мы точно знаем, что никто не помешает) игрока или непися заставить выполнить строго определенную последовательность действий, время выполнения которых заранее не известно; 2) когда нужный функционал в принципе без экшена не доступен, например, ActionCastSpellAt*(). В остальных случаях лучше управляться функцией DelayCommand(). У тебя здесь всем занимаются задержки, и экшены не нужны. Кстати, парализованный непись не сможет прыгнуть на вейпоинт. Сообщение отредактировал Ilerien - Jun 6 2011, 15:39 |
![]()
Сообщение
#4527
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
po_bill_h, po_bill_l, po_bill_m, po_bill_s, po_bill_t
Ну, это я и имею в виду, просто в 2da-редакторе, в котором я все делаю, они показываются как пустые. Поменял везде на вот такую строку DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oDeek, 15.0)); Ничего не изменилось... У меня, кстати, и есть подготовка к катсцене, сначала эта парализация стояла на цикле while, но потом я решил переставить. Вообще, идея в том, что для катсцены герой телепортируется в другую область (после разговора), а хэнчи либо остаются и не телепортируются, либо телепортируются в свою точку. Но в любом случае у меня хэнч оказывается в точке, где должен быть герой. Цитата Кстати, парализованный непись не сможет прыгнуть на вейпоинт. Это я понимаю. |
![]()
Сообщение
#4528
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
С портретами все правильно, должен отображаться в женских дворфских.
Цитата Ничего не изменилось... На неписе флаг plot или immortal, случайно, не стоит?
|
![]()
Сообщение
#4529
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Что-то я сглючил и редактировал не тот 2da-шник. Но проблема все равно не решилась.. Что делать с теми строками, на которых есть пометка USER?
Их заменять или делать следующими строками? (Если честно, попробовал сделать и так и так, но ничего не вышло.) Еще вопрос, есть ли лимит строчек, если есть, то какой? Вроде бы нет.. Я нашел только отмену этого флага в одном месте. |
![]()
Сообщение
#4530
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Что-то я сглючил и редактировал не тот 2da-шник. Но проблема все равно не решилась.. Что делать с теми строками, на которых есть пометка USER? По логике заменять, эти строки в СЕРе оставлены для юзерского контента.Цитата Еще вопрос, есть ли лимит строчек, если есть, то какой? Вероятно, есть, но очень большой - предполагаю, что как минимум 32к.Цитата Вроде бы нет.. Я нашел только отмену этого флага в одном месте. В общем, закомментировать все остальные строки кода и оставить только эффект. Если и тогда не наложится, проблема в неписе, если наложится - в остальном коде.
|
![]()
Сообщение
#4531
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Почему тогда, когда я хоть что-то в них меняю, исчезают вообще все портреты из модуля?
Просто так эффект работает. Может проблема в том, что на той области на OnEnter стоит катсцена? Хотя как это может повлиять.. Короче, вот скрипт. Neverwinter Script void main()
{ object oPC = GetPCSpeaker(); object oSelf = OBJECT_SELF; object oDeek = GetObjectByTag("deeken"); object oWPoPC = GetWaypointByTag("SAMOUB_PC"); object oWPoDestZuits = GetWaypointByTag("SAMOUB_DESTR_ZUITS"); object oWPoHench = GetNearestObjectByTag("SAMOUB_HENCH"); location lLoc1= GetLocation(OBJECT_SELF); SetLocalLocation(oPC, "Return_SAMOUB_ZUITZ", GetLocation(oPC)); AssignCommand(oPC, ClearAllActions()); AssignCommand(oSelf, ClearAllActions()); AssignCommand(oDeek, ClearAllActions()); DelayCommand(0.3, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HARM, FALSE), lLoc1, 0.5)); DelayCommand(0.31, AssignCommand(oSelf, ActionJumpToObject(oWPoDestZuits))); if (oPC==GetMaster(oDeek)) { //DelayCommand(1.0, ActionDoCommand(AssignCommand(oDeek, ActionJumpToObject(oWPoHench)))); DelayCommand(1.8, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oDeek, 15.0)); } DelayCommand(3.31, AssignCommand(oPC, ActionJumpToObject(oWPoPC))); } |
![]()
Сообщение
#4532
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Почему тогда, когда я хоть что-то в них меняю, исчезают вообще все портреты из модуля? Может, редактор капризничает? Проще всего 2да с малым числом столбцов текстовым редактором вроде вордпада править.Кем скрипт выполняется? Neverwinter Script oPC==GetMaster(oDeek) точно возвращает истину?
|
![]()
Сообщение
#4533
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Вот строчки из WordPad
3499 **** **** **** **** **** cep_reserv **** 3500 bill_ 1 0 **** 0 USER **** 3501 **** **** **** **** **** USER Скрипт стоит в разговоре на реплике NPC, который обозначен в моем скрипте как oSelf. Да, я проверял. Еще вопрос возник. Можно ли сделать так, чтобы скрипт все время выполнялся, т.е. проверка все время проходила, в каждую долю секунды? Сообщение отредактировал StasMokos - Jun 7 2011, 10:47 |
![]()
Сообщение
#4534
|
|
Level 3 ![]() Класс: Теневой Танцор Характер: Lawful Neutral Раса: Человек ![]() |
можно через кастомный void с делеем сам на себя, ток зачем каждую долю секунды-то?
насчет портретов, а чем тебе вариант просто запихать в папку портретов не нравится???? |
![]()
Сообщение
#4535
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Цитата можно через кастомный void с делеем сам на себя, ток зачем каждую долю секунды-то? Мне нужно, чтобы если рядом с игроком проходил НПС, то игрок телепортировался. Таким образом проверку же все время нужно делать? Цитата насчет портретов, а чем тебе вариант просто запихать в папку портретов не нравится???? Это способ, в котором портреты могут использоваться только как портреты уже в игре самим игроком? |
![]()
Сообщение
#4536
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Цитата Еще вопрос возник. Можно ли сделать так, чтобы скрипт все время выполнялся, т.е. проверка все время проходила, в каждую долю секунды? ну...э...в принципе можно, но смысл?) Цитата Мне нужно, чтобы если рядом с игроком проходил НПС, то игрок телепортировался. Таким образом проверку же все время нужно делать? Проще сделать, через хербит НПС. наверное, можно через NearestObject Neverwinter Script object oPlayer = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
float fDist = GetDistanceBetween(OBJECT_SELF, oPlayer); if (GetIsObjectValid(oPlayer) && fDist < 10.0f) { // Асталавистабэби } Сообщение отредактировал Laajin - Jun 7 2011, 22:48 |
![]()
Сообщение
#4537
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Цитата Проще сделать, через хербит НПС. наверное, можно через NearestObject Это-то отлично, но только мне нужно, чтобы НПС фактически вплотную сталкивался в героем, соответственно расстояние приходится делать меньше, и тот момент столкновения очень часто попадает на интервал между 6 секундами срабатывания скрипта на Heartbeat. |
![]()
Сообщение
#4538
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Повесь на непися кастомный АОЕ.
В vfx_persistent.2da описаны всяческие туманы и ауры. Добавь туда строку а-ля строка 37, только с радиусом ~2. После этого в спавне непися вызвать такую строку: Neverwinter Script ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectAreaOfEffect(<номер_строки_в_2да>, <скрипт-обработчик_события_захода_в_ауру>), OBJECT_SELF); В скрипте на заход в ауру прописывается нужный функционал - телепортация игрока или что там еще. Сообщение отредактировал Ilerien - Jun 8 2011, 01:20 |
![]()
Сообщение
#4539
|
|
Level 3 ![]() Класс: Теневой Танцор Характер: Lawful Neutral Раса: Человек ![]() |
Это способ, в котором портреты могут использоваться только как портреты уже в игре самим игроком? Да, при создании чара они появляются в картинках портретов, чтобы другие игроки тоже видели твой портрет просто выложи их, чтоб они могли скачать и скопировать их себе в папку портретов тоже. Вариант предложенный Илом лучше моего, ток я бы повесил кастомную ауру на самого чара как супернатурал перманент эффект через кастомный спел, надо вешать 1 раз за рестарт и обновлять после смерти - меньше мороки и легче проверить. |
![]()
Сообщение
#4540
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Вариант предложенный Илом лучше моего, ток я бы повесил кастомную ауру на самого чара как супернатурал перманент эффект через кастомный спел, надо вешать 1 раз за рестарт и обновлять после смерти - меньше мороки и легче проверить. Нет, на самом деле (IMG:style_emoticons/kolobok_light/smile.gif) Насколько я понял, здесь вообще речь о сингле идёт, но даже если не так - АОЕ на игроке даст кучу лишних срабатываний обработчика захода в ауру. Если этот функционал должен жить на одном неписе, то игра не стоит свеч.
|
![]()
Сообщение
#4541
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Цитата Повесь на непися кастомный АОЕ. Сделал, все вроде работает. Правда пришлось еще делать проверку на расстояние уже на самом скрипте, потому что иначе оно все время срабатывало. Еще иногда не срабатывает, но в общем, все получилось. Спасибо огромное. (IMG:style_emoticons/kolobok_light/yahoo.gif) Цитата Да, при создании чара они появляются в картинках портретов, чтобы другие игроки тоже видели твой портрет просто выложи их, чтоб они могли скачать и скопировать их себе в папку портретов тоже. Или я очень туплю, или мы не про то сейчас говорим. Мне нужен портрет не для игрока, а для НПС. |
![]()
Сообщение
#4542
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Привет всем. Я так давно не играл в Невер, что совсем все позабыл. У меня проблема, суть такова. Нужно пропатчить игру, у меня установлен собственно сам Невер, Тени Андрентайда и Орды. Версия игры 1.66. Где скачать патч с этой версии до 1.69? Заранее спасибо.
А тут что, вопросы по игре? Тут написан раздел, вопросы по РЕДАКТОРУ. Сообщение отредактировал Aiwan - Jun 10 2011, 22:21 |
![]()
Сообщение
#4543
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
StasMokos, а ты читал как добавлять портрет в мануале по редактору НВН? Уверен, что все проблемы твои, а не редактора.
|
![]()
Сообщение
#4544
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Цитата StasMokos, а ты читал как добавлять портрет в мануале по редактору НВН? Уверен, что все проблемы твои, а не редактора. Я читал и делаю все по инструкции.. Еще вопрос. Куда засовывать музыку для боя и звуки в разговорах? Сообщение отредактировал StasMokos - Jun 17 2011, 12:57 |
![]() ![]()
Сообщение
#4545
|
|
Level 1 Класс: Волшебник Характер: Chaotic Good Раса: Полуэльф ![]() |
Помогите совсем нубскому нубу, который только эту штуку открыл. ) 182 страницы читать нереально.
Как сделать так, чтобы диалог возвращался к набору тем, исключая только что обговоренную. Как например у стражников, когда говоришь: у меня еще остались вопросы. Какой там нужно использовать скрипт? И еще, когда делаешь квест, он вечно повторяется снова и снова, какой скрипт нужно использовать, чтобы квест проходился один раз, и проходился... Просьба ответить русским нормальным языком... Без всех этих сокращений, иностранных перефразов и прочего, я вообще не знаю где что в этой авроре лежит. ) |
![]() ![]() |
Текстовая версия | Сейчас: 19th August 2025 - 20:43 |