![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#4501
|
|
Level 3 ![]() Класс: Теневой Танцор Характер: Lawful Neutral Раса: Человек ![]() |
Могет быть, могет быть... Но факт, что джам одновременно пары десятков НПС, при входе в локу, повиснет, а создание копий нет. О_о с чего это вдруг??? Первый раз такое слышу, делал кастом сцену с парадом, толпа гоблов маршировала из локи в локу перемещались рядами по 5 гоблов в колонне и ничего |
![]()
Сообщение
#4502
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
И все-таки у меня все глючит.. Половина телепортируется, а половина - нет. Плюс жестко все глючит. Вот мой скрипт на HeartBeat
Neverwinter Script #include "x0_i0_anims" void main() { object oWP= GetWaypointByTag("NO_" + GetTag(OBJECT_SELF)); object oWPD= GetWaypointByTag("DE_" + GetTag(OBJECT_SELF)); ExecuteScript("nw_c2_default1", OBJECT_SELF); if (GetTimeHour()<=6 && GetLocalInt(OBJECT_SELF,"PeN")!=1) { AssignCommand(OBJECT_SELF, ActionJumpToObject(oWP)); SetLocalInt(OBJECT_SELF,"PeN",1); } if (GetTimeHour()>6 && GetLocalInt(OBJECT_SELF,"PeN")!=2) { AssignCommand(OBJECT_SELF, ActionJumpToObject(oWPD)); SetLocalInt(OBJECT_SELF,"PeN",2); } } И еще один вопрос. Как отключить функцию хождения по вейпоинтам? Сообщение отредактировал StasMokos - Mar 9 2011, 15:46 |
![]()
Сообщение
#4503
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата Половина телепортируется, а половина - нет. Попробуй перед прыжком clearallactions сделать.Цитата Как отключить функцию хождения по вейпоинтам? Самое изящное - не ставить неписю вейпоинты. Если надо динамически регулировать, то придётся копать скрипты аи и искать там функцию ходьбы. Можно добавить, к примеру, в неё какой-нить флаг, при котором она не срабатывает.
|
![]()
Сообщение
#4504
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Попробуй перед прыжком clearallactions сделать Это само-собой. Плюс еще нужно опустить в конец скрипта... И все же я рекомендую копирование НПС... Neverwinter Script ExecuteScript("nw_c2_default1", OBJECT_SELF); Про функцию WalkWayPoints читай здесь: http://www.city-of-masters.ru/forums/index...?showtopic=5123 |
![]()
Сообщение
#4505
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Спасибо, теперь все работает)
Но только для тех, кто не по вейпам ходит.. А есть такой вариант типо отправить НПС куда нибудь и запереть за ним дверь? Просто у меня сначала он ходит по точкам, а потом после разговора с игроком должен удалиться в свою комнату и там и остаться. Может еще какие-нибудь лучше варианты есть? |
![]()
Сообщение
#4506
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Еще одна вещь.. Если не очень сложно, кто-нибудь может объяснить мне как оперировать скриптом для сидения НПС на стуле с проигрыванием анимации (скрипт с заниженным стулом, что выложен на сайте http://remmgen.narod.ru в разделе монстры)?
Во-первых, я не понимаю какую роль там играет этот стул, а во-вторых, мне просто нормально никого не посадить, все съезжают.. Сообщение отредактировал StasMokos - Mar 21 2011, 08:44 |
![]()
Сообщение
#4507
|
|
Level 9 ![]() ![]() ![]() Класс: Волшебник Характер: Neutral Good Раса: Эльф ![]() |
Цитата после разговора с игроком должен удалиться в свою комнату и там и остаться. Нарисуй триггер в комнате, а на OnEnter проверку на то, вошел ли туда нужный НПС, и команду чтобы запереть дверь. |
![]()
Сообщение
#4508
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Я так делал, но это очень плохо выглядит, когда кто-то изнутри рубит дверь..Впрочем, я уже разобрался, я просто после ухода НПС удалил все его предыдущие точки маршрута.
|
![]()
Сообщение
#4509
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Я понимаю, что я, наверное, до такой степени уже всех задолбал, что мне уже не отвечают, но появился еще один вопрос.. и не знаю, как решить его самостоятельно.
Дело вот в чем, существует триггер, когда на него попадаешь, то заражаешься болезнью (снижаются хар-ки) и совершается анимация. Тестирую.. Если заходишь на него и останавливаешься, все работает как надо, но стоит просто пробежать мимо, так показываются только анимации и больше ничего не происходит. С чем это может быть связано и как это исправить? Буду очень признатален, если кто-нибудь уделит моему вопросу хоть минутку внимания. |
![]()
Сообщение
#4510
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Давай сюда свой скрипт.
|
![]()
Сообщение
#4511
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Neverwinter Script void CheckItem(object oPC, object oItem)
{ itemproperty ipItem = GetFirstItemProperty(oItem); while(GetIsItemPropertyValid(ipItem)) { if(GetItemPropertyType(ipItem) == ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS) { if(GetItemPropertySubType(ipItem) == IP_CONST_IMMUNITYMISC_LEVEL_ABIL_DRAIN) AssignCommand(oPC, ActionUnequipItem(oItem)); } ipItem = GetNextItemProperty(oItem); } } void HandleItems(object oTarget) { object oItem; oItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_BELT, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_BOOTS, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_CLOAK, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_HEAD, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_NECK, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget); CheckItem(oTarget, oItem); oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oTarget); CheckItem(oTarget, oItem); } void AdvanceDisease(object oEnter) { ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEAD_NATURE), oEnter); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES), oEnter); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_NATURE), oEnter); int Wis_Ch = 5; int Int_Ch = 5; ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect( EffectAbilityDecrease(ABILITY_WISDOM, Wis_Ch)), oEnter); ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect( EffectAbilityDecrease(ABILITY_INTELLIGENCE, Int_Ch)), oEnter); int Str_Ch; int Dex_Ch; int Cha_Ch; int Con_Ch; switch (Random(3)) { case 0: Str_Ch = 0; break; case 1: Str_Ch = 3; break; case 2: Str_Ch = 5; break; } switch (Random(3)) { case 0: Dex_Ch = 0; break; case 1: Dex_Ch = 3; break; case 2: Dex_Ch = 5; break; } switch (Random(3)) { case 0: Cha_Ch = 0; break; case 1: Cha_Ch = 3; break; case 2: Cha_Ch = 5; break; } switch (Random(3)) { case 0: Con_Ch = 0; break; case 1: Con_Ch = 3; break; case 2: Con_Ch = 5; break; } ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect( EffectAbilityDecrease(ABILITY_STRENGTH, Str_Ch)), oEnter); ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect( EffectAbilityDecrease(ABILITY_DEXTERITY, Dex_Ch)), oEnter); ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect( EffectAbilityDecrease(ABILITY_CONSTITUTION, Con_Ch)), oEnter); ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect( EffectAbilityDecrease(ABILITY_CHARISMA, Cha_Ch)), oEnter); SetLocalInt (oEnter, "Wis_Change", Wis_Ch); SetLocalInt (oEnter, "Int_Change", Int_Ch); SetLocalInt (oEnter, "Str_Change", Str_Ch); SetLocalInt (oEnter, "Dex_Change", Dex_Ch); SetLocalInt (oEnter, "Con_Change", Con_Ch); SetLocalInt (oEnter, "Cha_Change", Cha_Ch); } void main() { object oEnter = GetEnteringObject(); if(!GetIsPC(oEnter)) return; int once = GetLocalInt(oEnter, "once"); if(once != 1) { HandleItems(oEnter); DelayCommand(1.0, AdvanceDisease(oEnter)); SetLocalInt(oEnter, "once", 1); } } |
![]()
Сообщение
#4512
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Предполагаю, что дело в том, что не снимается какой-нибудь предмет с иммуном к уменьшению абилок.
Neverwinter Script void HandleItems(object oTarget)
{ object oItem; AssignCommand(oTarget, ClearAllActions(TRUE)); //чистим стек действий oItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oTarget); ... |
![]()
Сообщение
#4513
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Нет, все снимается.
|
![]()
Сообщение
#4514
|
|
Level 6 ![]() ![]() Класс: Клерик Характер: Chaotic Neutral Раса: Животное ![]() |
|
![]()
Сообщение
#4515
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Кажется, да, проблема с этим.
Все снимается, но видимо с задержкой и эффекты не успевают сработать. Я еще отсрочил AdvanceDisease и все вроде работает.. Большое спасибо (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#4516
|
|
Level 1 Класс: Ученик Дракона Характер: Lawful Good Раса: Человек ![]() |
народ, помогите пожалуйста, я начал создавать модуль, а для героя в этом модуле нужна нестандартная профессия! можно ли создавать в nwn новые профессии???
|
![]()
Сообщение
#4517
|
|
Level 3 ![]() Класс: Теневой Танцор Характер: Lawful Neutral Раса: Человек ![]() |
а какие "стандартные " профессии есть в нвн? (IMG:style_emoticons/kolobok_light/wacko.gif)
|
![]()
Сообщение
#4518
|
|
Level 1 Класс: Ученик Дракона Характер: Lawful Good Раса: Человек ![]() |
keks, ну а подумать никак? (IMG:style_emoticons/kolobok_light/rtfm.gif) Воин, варвар, друид, маг, волшебник, плут, и т.д. Это всё стандартные профессии!
|
![]()
Сообщение
#4519
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Классы это, классы.
Делать кастомные можно, но сложно, долго и муторно. |
![]()
Сообщение
#4520
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Я уже задавал этот вопрос, но.. задам еще раз, ибо ответа я не получил.
Добавление портретов в сеповский 2da, по-моему, гиблое дело, все портреты исчезают и все, что бы я не делал. Создаю свой хак, засовываю туда нормальный 2da с сепом и стандартными портретами + одна строчка с новым портретом. Туда же (в хак) засовываю этот самый новый портрет в пяти экземплярах (разного размера). ПОЧЕМУ НИЧЕГО НЕ РАБОТАЕТ? Что я не так делаю? (IMG:style_emoticons/kolobok_light/suicide2.gif) Сообщение отредактировал StasMokos - May 30 2011, 15:11 |
![]()
Сообщение
#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 |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 19:37 |