![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3376
|
|
Level 4 ![]() ![]() Класс: Маг Характер: Chaotic Neutral Раса: Танар'ри ![]() |
Loki87
Уверяю вас, что скрипт этот прекрасно составляется и работает. Он используется по всему модулю, и никаких сбоев пока еще не было. gennady только немного утрировал фразы, но это видимо для наглядности. Единственное в чем я вижу, может быть у вас проблема – это если вы поменяли фразы и написали свои с буквой “я”. В этом случае либо используйте патч DUMBO или вариант Lex, решающий проблему с этой буквой. Все это есть на форуме. Нужно только поискать. Или откажитесь совсем от буквы “я”. А лучше еще раз внимательно прочтите все пояснения к скрипту – он рабочий! |
![]()
Сообщение
#3377
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
|
![]()
Сообщение
#3378
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Artlira - буквы "я" там нет, потому что модуль я пишу на английском - след. все диалоги на англ.
Lex - Вот как выглядит скрипт. Я поменял только фразы диалога + комментарии. Neverwinter Script Source ///////////////////////////////////////////////// //:: Janeth starts talking to PC. //:: File name: camera_dialog //::////////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); object oSP = GetHenchman(oPC); vector vFace = GetPosition(oPC); string sName = GetLockKeyTag(OBJECT_SELF); int i = 1; float fTime; object oDL = GetNearestObjectByTag(sName, oPC, i); int iA = GetGoodEvilValue(oPC); if (!GetIsPC(oPC)) return; while (GetIsObjectValid(oDL)) { if (!GetIsInCombat(oPC)&&!GetIsInCombat(oDL)&&!GetIsEnemy(oPC, oDL)&& !GetIsDead(oDL) && GetObjectType(oDL) == OBJECT_TYPE_CREATURE) { fTime = GetDistanceBetween(oPC, oDL); SetLocalInt(OBJECT_SELF,"VALID",1); break; } i++; oDL = GetNearestObjectByTag(sName, oPC, i); } if (GetLocalInt(OBJECT_SELF, "VALID") != 1) return; // check if(fTime < 5.0) fTime = 7.5; string sPC = "???"; if (iA>30 && iA<70) sPC = "Get lost!"; if (iA>=70 && iA<100) sPC = "What? What's going on?"; if (iA==100) sPC = "Sure."; AssignCommand(oDL, ClearAllActions()); AssignCommand(oDL, SetFacingPoint(vFace)); AssignCommand(oDL, ActionPlayAnimation(ANIMATION_LOOPING_PAUSE, 1.0, 2.5)); AssignCommand(oDL, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING) ; AssignCommand(oDL, ActionWait(fTime-3.0)); AssignCommand(oDL, ActionStartConversation(oPC)); // PC dialog AssignCommand(oDL, ActionDoCommand(SetCommandable(TRUE, oDL))); // unblock chain DelayCommand(0.1, SetCommandable(FALSE, oDL)); // block chain DelayCommand(0.2, SetCutsceneMode(oPC, TRUE)); DelayCommand(0.3, AssignCommand(oPC, ClearAllActions(TRUE))); DelayCommand(0.4, AssignCommand(oSP, ClearAllActions(TRUE))); DelayCommand(1.5, AssignCommand(oPC, ActionForceMoveToObject(oDL, FALSE, 1.0, fTime-2.0))); DelayCommand(1.5, AssignCommand(oSP, ActionForceMoveToObject(oPC, FALSE, 1.0, fTime-2.0))); DelayCommand(2.0, AssignCommand(oDL, SpeakString("<c>Hey, stranger, can I ask you for something?</c>"))); DelayCommand(fTime-3.5, AssignCommand(oPC, SpeakString(sPC))); DelayCommand(fTime, SetCutsceneMode(oPC, FALSE)); DelayCommand(fTime, SetCommandable(TRUE, oDL)); // unblock chain DelayCommand(fTime+0.1, AssignCommand(oPC, ActionStartConversation(oDL))); // PC dialog DestroyObject(OBJECT_SELF, fTime+1.0); } этот скрипт я ставлю на onEnter триггера, который очерчен вокруг самой Janeth (НПС которая и должна заговорить с ПС). |
![]()
Сообщение
#3379
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Loki87, почему в твоем последнем сообщение, шла речь совсем о другой ошибке? Впрочем ладно, делов-то; внимательно осмотри строку №39. Там есть небольшой ляп (кстати говоря, которого в скрипте автора и нет совсем, так что думай сам, кто не прав) в виде отсутствия скобки и точки с запятой (в строке №40 - убери знак).
Сообщение отредактировал Dik Morris - Jul 30 2007, 14:09 |
![]()
Сообщение
#3380
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
это так написалось в посте криво, в редакторе все ок с запятыми.
угар, щас нажал - save - приколитесь, но он скомпилировался, хотя я нифига не правил!!! чудеса науки! еще кое что - попробовал я теперь это дело в игре. работает, но не так как я хотел. заходя на триггер я вижу только всплывшие на головами строчки с текстом. а сам диалог НПС не начала. Сообщение отредактировал Loki87 - Jul 30 2007, 14:43 |
![]()
Сообщение
#3381
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
DelayCommand(fTime+0.1, AssignCommand(oPC, ActionStartConversation(oDL)));
попробуй сделать с указанием файла диалога. Или наоборот, чтобы НПС начал разговор, а не игрок. |
![]()
Сообщение
#3382
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
подскажите
вот что сделать надо у меня естьнекий НПСи в закрытой локе мне бы сформировать пати из мобов и плееров так что бы главой пати был этот НПСи из закрытой локи. сооответвенно не нашел как добавитьв однопати плеера и моба (( |
![]()
Сообщение
#3383
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
есть функции которыми можно померятьдистанцию между объектами
вопрос определить чему равна единица этогоизмерения чему скажем например равено ребро квадрата мазайки или же сколько видет моб с длинной средней или короткой зоной видимости ??? да еще вот у меня получилось два поста подряд с разными по сути вопросами правильно было делитьна два поста или надо было редактирыватьпервый ??? Сообщение отредактировал Teranozavr_REX - Aug 9 2007, 13:08 |
![]()
Сообщение
#3384
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
есть функции которыми можно померятьдистанцию между объектами В редакторе скриптов над списком всех функций есть окошко для поиска, впишите туда слово "distance" - и увидите эти функции. Единица измерения -- "метр". Размер тайла -- 10x10. --- Если это поможет: GetObjectSeen(...) позволяет определить видит моб что-то или нет без всяких вычислений дистанций, зон видимости и т.п. |
![]()
Сообщение
#3385
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
спасибо за исчерпывающий ответ но поиском меня уже научили пользоваться
QUOTE Единица измерения -- "метр". Размер тайла -- 10x10. а вот за это огромное пасибо, а не простоспасибо (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
![]()
Сообщение
#3386
|
|
Level 2 ![]() Класс: Воин Характер: Neutral Evil Раса: Человек ![]() |
Вопрос глупый, но тем не менее. Как зайти на локальный шард ДМ-ом, что такое ДМ, и как он ведет квесты?
|
![]()
Сообщение
#3387
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вопрос глупый, но тем не менее. Как зайти на локальный шард ДМ-ом, что такое ДМ, и как он ведет квесты? Данжеон Мастер. В общем, это человек который ведет а попросту организовывает все в игре, в данном случае на шарде, модуле. Он отвечает за квесты, диалоги и все события вокруг игроков. Что то вроде админа Забыбтых Королевств (IMG:style_emoticons/kolobok_light/smile.gif) Искать их надо здесь или на шардах. Но хороший ДМ это редкость... |
![]()
Сообщение
#3388
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Цитата Как зайти на локальный шард ДМ-ом Запускаешь NWN Launcher там выбираешь DM Client и коннектишься к шарду через стандартный интерфейс. Само собой если это твой шард. Если чужой - то у тебя просто не будет ДМ пасса, чтобы зайти. Сообщение отредактировал Leon PRO - Aug 22 2007, 14:58 |
![]()
Сообщение
#3389
|
|
Level 2 ![]() Класс: Воин Характер: Neutral Evil Раса: Человек ![]() |
Вот я и хотел бы узнать каким образом организовывать события, диалоги, квесты. Посредством каких-либо команд или специальной программы.
|
![]()
Сообщение
#3390
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Доброго времени суток всем!
Столкнулась с такой проблемой - хотела сделать светильник, который светит разными цветами и переключается с одного на другой в случайном порядке OnHeartbeat каждые 5 секунд. Подумала и написала вот что: Neverwinter Script Source int iRollTen = d10(1); // Action would be chosen at random from the 10 variants void main() { switch(iRollTen) // Generated number { case 1: effect eLight1 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 2: effect eLight2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 3: effect eLight3 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_WHITE); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 4: effect eLight4 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 5: effect eLight5 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 6: effect eLight6 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 7: effect eLight7 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 8: effect eLight8 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 9: effect eLight1 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); break; case 10: effect eLight4 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE); object oLight1 = GetObjectByTag("LIGHT1"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight oLight1, 5.0); } } Ставлю на слот хартбит невидимого статичного объекта с соответствующим тэгом. Скрипт не компилируется, выдает Код ERROR: SKIPPING DECLARATION VIA "case" STATEMENT DISALLOWED. Что это за ошибка такая? Как от нее избавиться? Вообще, возможно ли в принципе то, что я задумала? Сообщение отредактировал shadowdweller - Aug 27 2007, 23:08 |
![]()
Сообщение
#3391
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Где объявлен eLight?
Ещё советую определить переменные до case. |
![]()
Сообщение
#3392
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Virusman, сделала так, как вы посоветовали. Цифры после "eLight" упорно съедает редактор постов. (IMG:style_emoticons/kolobok_light/smile.gif)
Код int iRollTen = d10(1); // Action would be chosen at random from the 10 variants void main() { switch(iRollTen) // Generated number { effect eLight1 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN); effect eLight2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED); effect eLight4 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE); effect eLight5 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE); effect eLight6 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE); effect eLight7 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW); effect eLight8 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN); object oLight1 = GetObjectByTag("LIGHT1"); case 1: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight1,oLight1, 5.0); break; case 2: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight2,oLight1, 5.0); break; case 3: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight1,oLight1, 5.0); break; case 4: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight4,oLight1, 5.0); break; case 5: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight5,oLight1, 5.0); break; case 6: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight6,oLight1, 5.0); break; case 7: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight7,oLight1, 5.0); break; case 8: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight8,oLight1, 5.0); break; case 9: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight1,oLight1, 5.0); break; case 10: ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight4,oLight1, 5.0); } } Результат тот же - ERROR: SKIPPING DECLARATION VIA "case" STATEMENT DISALLOWED. Выдается прямо на case 1: (IMG:style_emoticons/kolobok_light/unknw.gif) Сообщение отредактировал shadowdweller - Aug 27 2007, 23:33 |
![]()
Сообщение
#3393
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
virusman, ты проще объясняй. Человек только начинает это вкуривать. Ей по пол литры не осилить каждый день. (IMG:style_emoticons/kolobok_light/declare.gif)
|
![]()
Сообщение
#3394
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Да, в смысле до switch.
Neverwinter Script Source void main() Можно даже без свитча, но так понятнее.
{ object oLight = GetObjectByTag("LIGHT1"); effect eLight; int nEffectID; int iRollTen = d10(1); // Action would be chosen at random from the 10 variants switch(iRollTen) // Generated number { 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; } eLight = EffectVisualEffect(nEffectID); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLight, oLight, 5.0); } Сообщение отредактировал virusman - Aug 27 2007, 23:30 |
![]()
Сообщение
#3395
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Virusman, Aiwan, cпасибо (IMG:style_emoticons/kolobok_light/thank_you.gif)
Компилируется, а работать не хочет... (IMG:style_emoticons/kolobok_light/sad.gif) Сообщение отредактировал shadowdweller - Aug 27 2007, 23:42 |
![]()
Сообщение
#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. Спасибо огромное всем.
|
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 19:16 |