![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3396
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Объект с тэгом LIGHT1 точно есть?
Кстати, вместо oLight можно использовать OBJECT_SELF, если этот скрипт висит на его Heartbeat. |
![]()
Сообщение
#3397
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Объект с тэгом LIGHT1 точно есть? Да, есть такой объект. Статичный невидимый объект с этим тэгом. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
![]()
Сообщение
#3398
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
Насколько я знаю, со статичными объектами нельзя проводить скриптовых (да и каких-либо) операций.
|
![]()
Сообщение
#3399
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
можно. Но попробуй сделать объекту другой апиранс, чтобы моделька была, ну стол например.
|
![]()
Сообщение
#3400
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Помогло, когда заменила невидимый объект вполне себе материальным и сняла флажок Static, не отмечая при этом Useable. Спасибо огромное всем.
|
![]()
Сообщение
#3401
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
shadowdweller, не будет лишним запретить работу скрипту, если это сингл и ГГ не находится в одной локе с объектом. Поставьте объекту сюжет и снимите статик, так будет работать стабильно, если скрипт весит на ХБ.
Neverwinter Script Source void main() { object oLight = OBJECT_SELF; int nEffectID; // Если сингл if(GetArea(GetFirstPC()) != GetArea(oLight)) return; // если ПС нет в локе switch(d10()) // Generated number или switch(Random(10)+1) { case 1: nEffectID = VFX_DUR_GLOW_LIGHT_GREEN; break; case 2: nEffectID = VFX_DUR_GLOW_LIGHT_RED; break; case 3: nEffectID = VFX_DUR_GLOW_LIGHT_WHITE; break; case 4: nEffectID = VFX_DUR_GLOW_LIGHT_BLUE; break; case 5: nEffectID = VFX_DUR_GLOW_LIGHT_ORANGE; break; case 6: nEffectID = VFX_DUR_GLOW_LIGHT_PURPLE; break; case 7: nEffectID = VFX_DUR_GLOW_LIGHT_YELLOW; break; case 8: nEffectID = VFX_DUR_GLOW_LIGHT_BROWN; break; case 9: nEffectID = VFX_DUR_GLOW_LIGHT_GREEN; break; case 10: nEffectID = VFX_DUR_GLOW_LIGHT_BLUE; break; } effect eLight = EffectVisualEffect(nEffectID); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLight, oLight, 5.0); } P.S. Звиняйте за тормоза… Сообщение отредактировал gennady - Aug 29 2007, 06:18 |
![]()
Сообщение
#3402
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
Лекс, я не спорю, но какие можно?
ЗЫ QUOTE Static
If true, this placeable can not be modified dynamically in game. It cannot have its inventory accessed, cannot be deleted, add cannot have dynamic collision. |
![]()
Сообщение
#3403
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ну в этом скрипте эффекты рассматриваюца - их можно (что я и сказал). Про остальное надо отдельно разговаривать (IMG:style_emoticons/kolobok_light/smile.gif)
вариант в том, что нивидимый объект не имеет формы, и поэтому на него не кладется например эффект ГостВизаж.. по той причине, что мы результат эффекта просто не увидим. Есть мысль что со светом тоже самое, поэтому я и предложил сделать объект видимым. |
![]()
Сообщение
#3404
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Gennady, спасибо, попробую.
Что касается световых эффектов, то, если я правильно поняла, скрипты с ними не работают собственно на источниках света. На фонаре и на жаровне скрипт Virusman'a не работает, как не работает и немного измененный, где эффекты типа VFX_DUR_GLOW_LIGHT_ХХХ заменены на VFX_DUR_LIGHT_ХХХ_20. Зато прекрасно работают на всех остальных объектах (типа фонтана или алтаря), если отменить им Static. Сообщение отредактировал shadowdweller - Aug 28 2007, 12:32 |
![]()
Сообщение
#3405
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
У меня в системе освещения всё прекрасно зажигалось - и невидимые объекты, и источники света.
Кстати, дайсы d10 кидаются от 1 до 10, а вот Random - действительно с 0. |
![]()
Сообщение
#3406
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Цитата Кстати, дайсы d10 кидаются от 1 до 10, а вот Random - действительно с 0. Спасибо Вирь, что поправил. Сто лет уже скрипты не писал… забыл, да видно и не знал. (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#3407
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
А вот еще такая проблема - нужно, чтобы НПС красивенько лежали бы на полу, но при этом не были бы мертвыми. И чтобы не вскакивали, когда перс пытается с ними разговаривать.
Признаюсь честно - сдула из Shadows of Undrentide вот такой скрипт: Neverwinter Script Source #include "x0_i0_corpses" void main() { effect eKnock = EffectKnockdown(); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eKnock, OBJECT_SELF); } Ставится на OnSpawn. В итоге все неписи стоят на коленях, ложиться не желает ни один. Почему так происходит? |
![]()
Сообщение
#3408
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Если мне не изменяет память - кноки бывают разные - на спину и на колени, от чего зависит - уже не помню. От силы кнока кажется, или рандомно... (IMG:style_emoticons/kolobok_light/vava.gif)
|
![]()
Сообщение
#3409
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
EffectKnockdown всегда ставит на колени.
nwnlexicon.com - там советую поискать константу по её части "FALL". |
![]()
Сообщение
#3410
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
shadowdweller, вот вам два скрипта… Один с эффектом сна, значит с персом нельзя будет говорить. Другой с анимацией и возможностью разбудить перса и поговорить с ним. Сон будет ночью, ну можно и задать свое время сна, т.е. значение int T…
Neverwinter Script Source //::////////////////////////////////////////////////// //:: СКРИПТ ДЛЯ СПЯЩИХ (МОЖНО ГОВОРИТЬ) //:: File name: de_sleep //:: Слот: OnHeartBeat //::////////////////////////////////////////////////// void main() { object oSelf = OBJECT_SELF; if(GetArea(GetFirstPC()) != GetArea(oSelf)) return; // если ПС нет в локе int T = GetTimeHour(); effect eSL = EffectVisualEffect(VFX_IMP_SLEEP); if (GetIsInCombat(oSelf)) return; if (IsInConversation(oSelf)) return; if(T>=7 && T<21) // день { ExecuteScript("nw_c2_default1", oSelf); SetLocalInt(oSelf,"SLEEP_ANIM",0); return; } AssignCommand(oSelf, ClearAllActions(TRUE)); if(GetLocalInt(oSelf,"SLEEP_ANIM")==0) { if(d2()==1) SetLocalInt(oSelf,"SLEEP_ANIM",1); else SetLocalInt(oSelf,"SLEEP_ANIM",2); } if(GetLocalInt(oSelf,"SLEEP_ANIM")==1) ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0); else ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 10.0); ApplyEffectToObject(DURATION_TYPE_INSTANT, eSL, oSelf); } /* Для корректной работы, у ходячих удалить скрипты nw_c2_default9 и nw_c2_default2 */ Neverwinter Script Source //:://////////////////////////////////////////////////
//:: СКРИПТ ДЛЯ СПЯЩИХ (НЕЛЬЗЯ ГОВОРИТЬ) //:: File name: ef_sleep //:: Слот: OnHeartBeat //::////////////////////////////////////////////////// void main() { object oSelf = OBJECT_SELF; effect eSleep = EffectSleep(); effect eSL = EffectVisualEffect(VFX_IMP_SLEEP); if(GetArea(GetFirstPC()) != GetArea(oSelf)) return; // если ПС нет в локе if(GetIsDay()) // день {ExecuteScript("nw_c2_default1", oSelf); return;} AssignCommand(oSelf, ClearAllActions(TRUE)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, oSelf, 10.0); ApplyEffectToObject(DURATION_TYPE_INSTANT, eSL, oSelf); } /* Для корректной работы, у ходячих удалить скрипты nw_c2_default9 и nw_c2_default2 */ |
![]()
Сообщение
#3411
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Gennady, спасибо. (IMG:style_emoticons/kolobok_light/thank_you.gif)
А еще хотелось бы спросить вот что - нужен скрипт, который срабатывал бы на триггере если РС идет по нему один, без хенча. Т.е., если хенч к персу присоединен, не происходит ничего, а происходит только в том случае, если перс один. Все действия написаны, а проверка не получается. В лексиконе не могу найти функцию, которая подходит. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) Подскажите, плз. Сообщение отредактировал shadowdweller - Sep 5 2007, 20:21 |
![]()
Сообщение
#3412
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
навскидку так
Neverwinter Script Source if (!GetIsObjectValid(GetHenchman(oPC))) // если игрок один
|
![]()
Сообщение
#3413
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Lex, спасибо. Попробую.
Продолжаю разбираться со спящими. Дело в том, что мне нужно, чтобы НПС не то, чтобы спали в определенное время суток, а лежали бы раненые (госпиталь у меня там! (IMG:style_emoticons/kolobok_light/rolleyes.gif) ). Немного модифицировав скрипт Gennady, получила вот что: Neverwinter Script Source void main() { int iDoOnce = GetLocalInt(OBJECT_SELF, "iDoOnce"); if (iDoOnce == FALSE) { object oSelf = OBJECT_SELF; effect eSleep = EffectSleep(); effect eSL = EffectVisualEffect(VFX_IMP_SLEEP); AssignCommand(oSelf, ClearAllActions(TRUE)); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSleep, oSelf, 10.0); ApplyEffectToObject(DURATION_TYPE_INSTANT, eSL, oSelf); SetLocalInt(oSelf, "iDoOnce", TRUE); } } На хартбите НПС красиво падает как подкошенный, на OnSpawn работает идеально. При попытке добавить еще и ранение + не разрешить некоторым злобным РС добить беднягу: Neverwinter Script Source void main() { int iDoOnce = GetLocalInt(OBJECT_SELF, "iDoOnce"); if (iDoOnce == FALSE) { object oSelf = OBJECT_SELF; effect eSleep = EffectSleep(); effect eSL = EffectVisualEffect(VFX_IMP_SLEEP); AssignCommand(oSelf, ClearAllActions(TRUE)); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSleep, oSelf, 10.0); ApplyEffectToObject(DURATION_TYPE_INSTANT, eSL, oSelf); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(10), oSelf); SetPlotFlag(oSelf, TRUE); SetLocalInt(oSelf, "iDoOnce", TRUE); } } НПС стоит как вкопанный. То же происходит, если убираю переменную. Почему? (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
![]()
Сообщение
#3414
|
|
Level 4 ![]() ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
SetPlotFlag
он не дает ето зделать, используй лучше SetImmortal |
![]()
Сообщение
#3415
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Спасибо. Что самое интересное - функции эти нахально и тупо тырю из SoU - там работают прекрасно. (IMG:style_emoticons/kolobok_light/crazy.gif)
И еще возник вопрос - скрипт, который выполняется только при отсутствии хенча у перса. Получилось что-то вроде: Neverwinter Script Source #include "nw_i0_generic" void main() { if (!GetIsObjectValid(GetHenchman(oPC))) { object oZOM1 = GetNearestObjectByTag("NPC_MON_FSKEL01"); object oZOM2 = GetNearestObjectByTag("NPC_MON_FSKEL02"); object oZOM3 = GetNearestObjectByTag("NPC_MON_FSKEL03"); object oDr1 = GetObjectByTag("DOOR_ZOM_01"); object oDr2 = GetObjectByTag("DOOR_ZOM_02"); object oDr3 = GetObjectByTag("DOOR_ZOM_03"); object oPoint1 = GetObjectByTag("WP_ZOM1"); object oPoint2 = GetObjectByTag("WP_ZOM2"); object oPoint3 = GetObjectByTag("WP_ZOM3"); object oPC = GetFirstPC(); ChangeToStandardFaction(oZOM1,STANDARD_FACTION_HOS ILE); ChangeToStandardFaction(oZOM2,STANDARD_FACTION_HOS ILE); ChangeToStandardFaction(oZOM3,STANDARD_FACTION_HOS ILE); AssignCommand(oDr1, DestroyObject(oDr1)); AssignCommand(oDr2, DestroyObject(oDr2)); AssignCommand(oDr3, DestroyObject(oDr3)); AssignCommand(oZOM1,ClearAllActions()); AssignCommand(oZOM2,ClearAllActions()); AssignCommand(oZOM3,ClearAllActions()); AssignCommand(oZOM1, ActionAttack(oPC)); AssignCommand(oZOM2, ActionAttack(oPC)); AssignCommand(oZOM3, ActionAttack(oPC)); } } Срабатывает каждый раз - и с хенчем, и без... (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
![]()
Сообщение
#3416
|
|
Level 4 ![]() ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
Во превых где стоит скрипт? на каком евенте и евенте чего?
Во вторых кто такой оПЦ? у тя нет ошибки в скриптах? Neverwinter Script Source object oPC = GetEnteringObject(); // Ето если скрипт на евенте ентера тригера..
if (!GetIsObjectValid(GetHenchman(oPC))) { object oZOM1 = GetNearestObjectByTag("NPC_MON_FSKEL01"); object oZOM2 = GetNearestObjectByTag("NPC_MON_FSKEL02"); object oZOM3 = GetNearestObjectByTag("NPC_MON_FSKEL03"); |
![]()
Сообщение
#3417
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
2 sKaa
Увы, SetImmortal не помогло - НПС как стоял, так и стоит. Тяжелораненый, а на ногах держится (IMG:style_emoticons/kolobok_light/smile.gif) Причем, упрямо продолжает стоять как со строкой Neverwinter Script Source SetPlotFlag(oSelf, TRUE); // или SetImmortal(oSelf, TRUE); так и без нее Скрипт стоит на OnEnter триггера. На самом деле, там так и есть: Neverwinter Script Source #include "nw_i0_generic" void main() object oPC = GetEnteringObject(); // до этого-то я додумалась { if (!GetIsObjectValid(GetHenchman(oPC))) { object oZOM1 = GetNearestObjectByTag("NPC_MON_FSKEL01"); object oZOM2 = GetNearestObjectByTag("NPC_MON_FSKEL02"); object oZOM3 = GetNearestObjectByTag("NPC_MON_FSKEL03"); object oDr1 = GetObjectByTag("DOOR_ZOM_01"); object oDr2 = GetObjectByTag("DOOR_ZOM_02"); object oDr3 = GetObjectByTag("DOOR_ZOM_03"); object oPoint1 = GetObjectByTag("WP_ZOM1"); object oPoint2 = GetObjectByTag("WP_ZOM2"); object oPoint3 = GetObjectByTag("WP_ZOM3"); object oPC = GetFirstPC(); ChangeToStandardFaction(oZOM1,STANDARD_FACTION_HOS ILE); ChangeToStandardFaction(oZOM2,STANDARD_FACTION_HOS ILE); ChangeToStandardFaction(oZOM3,STANDARD_FACTION_HOS ILE); AssignCommand(oDr1, DestroyObject(oDr1)); AssignCommand(oDr2, DestroyObject(oDr2)); AssignCommand(oDr3, DestroyObject(oDr3)); AssignCommand(oZOM1,ClearAllActions()); AssignCommand(oZOM2,ClearAllActions()); AssignCommand(oZOM3,ClearAllActions()); AssignCommand(oZOM1, ActionAttack(oPC)); AssignCommand(oZOM2, ActionAttack(oPC)); AssignCommand(oZOM3, ActionAttack(oPC)); } } Все равно в обоих случаях срабатывает - и когда есть хенч, и когда нету... А нужно, чтобы выполнялся только при отсутствии хенча. (IMG:style_emoticons/kolobok_light/sad.gif) Сообщение отредактировал shadowdweller - Sep 6 2007, 23:01 |
![]()
Сообщение
#3418
|
|
Level 4 ![]() ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
2 sKaa Увы, SetImmortal не помогло - НПС как стоял, так и стоит. Тяжелораненый, а на ногах держится (IMG:style_emoticons/kolobok_light/smile.gif) Причем, упрямо продолжает стоять как со строкой Neverwinter Script Source SetPlotFlag(oSelf, TRUE); // или SetImmortal(oSelf, TRUE); так и без нее Надо ставить Иммортал без Плот флага... Neverwinter Script Source SetPlotFlag(oSelf, FALSE); // или SetImmortal(oSelf, TRUE); Скрипт стоит на OnEnter триггера. На самом деле, там так и есть: Neverwinter Script Source #include "nw_i0_generic" void main() { object oPC = GetEnteringObject(); // до этого-то я додумалась if(GetIsObjectValid(GetHenchman(oPC))) return; // Попробуй возврашение функции если хечмент есть... object oZOM1 = GetNearestObjectByTag("NPC_MON_FSKEL01"); object oZOM2 = GetNearestObjectByTag("NPC_MON_FSKEL02"); object oZOM3 = GetNearestObjectByTag("NPC_MON_FSKEL03"); object oDr1 = GetObjectByTag("DOOR_ZOM_01"); object oDr2 = GetObjectByTag("DOOR_ZOM_02"); object oDr3 = GetObjectByTag("DOOR_ZOM_03"); object oPoint1 = GetObjectByTag("WP_ZOM1"); object oPoint2 = GetObjectByTag("WP_ZOM2"); object oPoint3 = GetObjectByTag("WP_ZOM3"); object oPC = GetFirstPC(); ChangeToStandardFaction(oZOM1,STANDARD_FACTION_HOS LE); ChangeToStandardFaction(oZOM2,STANDARD_FACTION_HOS LE); ChangeToStandardFaction(oZOM3,STANDARD_FACTION_HOS LE); AssignCommand(oDr1, DestroyObject(oDr1)); AssignCommand(oDr2, DestroyObject(oDr2)); AssignCommand(oDr3, DestroyObject(oDr3)); AssignCommand(oZOM1,ClearAllActions()); AssignCommand(oZOM2,ClearAllActions()); AssignCommand(oZOM3,ClearAllActions()); AssignCommand(oZOM1, ActionAttack(oPC)); AssignCommand(oZOM2, ActionAttack(oPC)); AssignCommand(oZOM3, ActionAttack(oPC)); } Все равно в обоих случаях срабатывает - и когда есть хенч, и когда нету... А нужно, чтобы выполнялся только при отсутствии хенча. (IMG:style_emoticons/kolobok_light/sad.gif) А еще если по тргеру мона кликнуть маусом создай такой-же скрипт только вместо GetEnteringOjbect(); GetClickingObject(); - помойму так пишеться и поставь етот скрипт на евент клика тригера |
![]()
Сообщение
#3419
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Добрый день. У меня есть несколько вопросов по поводу игрового движка и создания модов. Есть концепция RP игры и есть необходимость воплотит ее в более менее играбельный вид. Есть желание сделать это в виде мода к нвн. Но практически вся игровая механика отличается от ДнД. Возможно ли полностью изменить систему статов/скилов? Возможно ли введение новых параметров персонажа? Насколько возможно изменить GUI игры? Т.е. хочется узнать насколько гибкий этот движок.
PS Как альтернатива есть вариант создания игры как мод к Unreal 2004, там возможности не ограничены, но информации по этому делу в разы меньше, а русскоязычной практически нет. Neo: информации по UnrealEd море, да - на русском не много, а так... google и узнаешь все, что хочешь (IMG:style_emoticons/kolobok_light/wink3.gif) |
![]()
Сообщение
#3420
|
|
Level 4 ![]() ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
Читай форум, в нвн движок достаточно гибкий..
На форуме все возможности описаны |
![]() ![]() |
Текстовая версия | Сейчас: 2nd August 2025 - 18:51 |