![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#151
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
QUOTE(Dik Morris @ Jun 1 2006, 20:00) [snapback]83520[/snapback] поиск у меня не юзается,если можно подробно про атаку в катсцене раскажите,работа стоит. |
![]()
Сообщение
#152
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
В ссылке приводимой мною выше смотри посты за 1 мая, там все разобрано.
|
![]()
Сообщение
#153
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Как сделать так, чтобы во время кутсцены начался диалог, и когда он заканчивается, заканчивается и кутсцена? Это как в Кингмэйкере, после битвы (когда заходишь в город).
|
![]()
Сообщение
#154
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Мы тут это уже рассматривали. Я в частности приводил скрипты. Ищи.
|
![]()
Сообщение
#155
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Я все просмотрел, но того, что мне нужно не нашел. Вот, буквально 5 минут назад закончил смотреть.
|
![]()
Сообщение
#156
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Белатрис @ Jun 11 2006, 07:46) [snapback]84402[/snapback] Как сделать так, чтобы во время кутсцены начался диалог, и когда он заканчивается, заканчивается и кутсцена? Это как в Кингмэйкере, после битвы (когда заходишь в город). NSS DelayCommand(Задержка, если нужна конечно, AssignCommand(Тот кто начинает диалог, ActionStartConversation(С кем начинают диалог))); QUOTE(Белатрис @ Jun 11 2006, 09:40) [snapback]84402[/snapback] Я все просмотрел, но того, что мне нужно не нашел. Вот, буквально 5 минут назад закончил смотреть. См. 131 сообщение. Сообщение отредактировал Dik Morris - Jun 11 2006, 08:39 |
![]()
Сообщение
#157
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Делаешь триггер, ставишь на онЕнтр мой код. Таг НПС с которым начинается диалог должен быть равен тагу триггера: TR_CONV_[ТАГ_НПС_ДЛЯ_ДИАЛОГА]. Имя триггера фраза над НПС, типа "Эй, стой засранец!"
NSS //::////////////////////////////////////////////// //:: OnEnter am_ten_convr_npc //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* Старт диалога с РС. Текст над NPC - Name триггера KeyTag - если больше 0, то непись ПОДБЕЖИТ. TR_CONV_[ТАГ_НПС_ДЛЯ_ДИАЛОГА] */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Original idea By: DBColl //:: Created On: 22.04.2005 //::////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); object oTrig = OBJECT_SELF; string sTag = GetTag(oTrig); // Таг триггера string sNPC = GetStringRight(sTag, (GetStringLength(sTag)- 8)); // Таг НПС object oNPC = GetNearestObjectByTag(sNPC); string sSpeak = GetName(oTrig); // Фраза vector vD = GetPosition(oNPC) - GetPosition(oPC); float fDir = VectorToAngle(vD); int bRun = StringToInt(GetLockKeyTag(oTrig)); if (!GetIsPC(oPC)) return; if (GetLocalInt(oTrig, "HAS_OPERATED")) return; if (!GetIsObjectValid(oNPC)) return; if (GetArea(OBJECT_SELF)!=GetArea(oNPC)) return; if (GetIsEnemy(oNPC, oPC)) return; if (GetObjectType(oNPC)!=OBJECT_TYPE_CREATURE) return; FadeToBlack(oPC, FADE_SPEED_FASTEST); AssignCommand(oPC, ClearAllActions()); AssignCommand(oNPC, ClearAllActions()); SetCutsceneMode(oPC); DelayCommand(0.8, AssignCommand(oPC, SetCameraFacing(fDir, 25.0, 60.0, CAMERA_TRANSITION_TYPE_SNAP))); AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(oPC)))); DelayCommand(1.2, FadeFromBlack(oPC, FADE_SPEED_FAST)); DelayCommand(2.0, AssignCommand(oPC, SetCameraFacing(fDir+35.0, 8.0, 50.0, CAMERA_TRANSITION_TYPE_SLOW))); AssignCommand(oPC, ActionDoCommand(SetFacingPoint(GetPosition(oNPC)))); if (GetDeity(oNPC)!="") { int iAnim = StringToInt(GetDeity(oNPC)); DelayCommand(3.0, AssignCommand(oNPC, ActionPlayAnimation(iAnim, 0.8, 2.0))); } DelayCommand(3.5, AssignCommand(oNPC, SpeakString(sSpeak))); DelayCommand(4.5, AssignCommand(oNPC, ActionForceMoveToObject(oPC, bRun))); // DelayCommand(5.5, AssignCommand(oNPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE)))); DelayCommand(6.0, AssignCommand(oNPC, ActionStartConversation(oPC))); SetLocalInt(oTrig, "HAS_OPERATED", TRUE); } На последнюю строку диалога пишешь такой скрипт: NSS //:://////////////////////////////////////////////
//:: Отключает РС режим катсцены //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 30.12.2005 //::////////////////////////////////////////////// void main() { object oPC = GetPCSpeaker(); if(GetCutsceneMode(oPC)==TRUE) { SetCutsceneMode(oPC, FALSE); } } |
![]()
Сообщение
#158
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Aiwan
У него все это происходит в кутсцене, т.е тут триггер не понадобиться. QUOTE Как сделать так, чтобы во время кутсцены начался диалог, и когда он заканчивается, заканчивается и кутсцена? Это как в Кингмэйкере, после битвы (когда заходишь в город).
|
![]()
Сообщение
#159
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
*Шум падающего тела, которое соскребает со стола клавиатуру и матерится неприличными словам*
Я что то не видел, что бы было об этом написано конкретно... Придется заняться телепатией... (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) *Встал на пол, ноги поставил на ширине плеч. Чуть присел. Совершаю вращательные движения тазом.* Раз два три четыре пять. Начинаю телепать! |
![]()
Сообщение
#160
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Как сделать, чтобы сначала на ПС наложилось заклинание "Цепь молний", а потом его убило, чтоб на части разлетелся?..
|
![]()
Сообщение
#161
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Белатрис
Скажи мне, а каким боком это относиться к этой темe...? QUOTE ПОСТРОЕНИЕ СКРИПТОВЫХ СЦЕН. Основы написания Cutscene PS: разлететься на части он никак не сможет, налаживай молнию через: ActionCastFakeSpellAtObject, потом добавляй виз. эффект, (скажем побольше крови), и после этого - EffectDeath();. Сообщение отредактировал Dik Morris - Jun 24 2006, 09:35 |
![]()
Сообщение
#162
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
(IMG:style_emoticons/kolobok_light/bad.gif) Не понял......
|
![]()
Сообщение
#163
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
QUOTE(Lexicon) effect EffectDeath( int nSpectacularDeath = FALSE, int nDisplayFeedback = TRUE ); Parameters nSpectacularDeath If this is TRUE, the creature to which this effect is applied will die in an extraordinary fashion (Default: FALSE) nDisplayFeedback (Default: TRUE) тот самый "разлет" на части... а "взрывать" трупы - это как раз сюда в тему вроде... (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#164
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Белатрис, устное предупреждение за то что вопросы не по теме. Иди в раздел вопросы новичков.
|
![]()
Сообщение
#165
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Доброе утро!Айван,вопрос персонально тебе,так как этого я в этой теме не нашел,а в катсценах дока ты.Так вот,в тулсете есть классный инклюд"x1_?_cutscene"точное название не помню,но найти его в скриптах не проблема.Там очень удобная система cut+действие не надо писать все эти ассигн и делай(добавляешь только время между действиями,а не от начала скрипта)вообщем супер!Написал сценку, еще одну,еще.Первая играет,а вторая...На триге она не запускается,иду на тригер другой третей сценки: запускает 2 сцену!:-|
|
![]()
Сообщение
#166
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
2 Noah
Дык та инклюда не простая (IMG:style_emoticons/kolobok_light/wink3.gif) , там нужно указывать номер сценки (что-то типа того) примеры кодов погляди в СоУ, там точно есть. (IMG:style_emoticons/kolobok_light/wink3.gif) ЗЫ: вообще согласен, библиотечка оч удобная. Сообщение отредактировал Waromon - Aug 30 2006, 10:36 |
![]() ![]()
Сообщение
#167
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
[quote name='Waromon' date='Aug 30 2006, 10:28' post='90753']
2 Noah Дык та инклюда не простая ;), там нужно указывать номер сценки (что-то типа того) примеры кодов погляди в СоУ, там точно есть. ;) Иногда мозг встает и отказывается работать!Как работает этот инклюд?Кто работал подскажите,а то сейчас все сцены не корректно работают,а режим катсцены не работают. |
![]()
Сообщение
#168
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Доброго времени суток всем!
Помогите, плз. опять у меня проблемы. (IMG:style_emoticons/kolobok_light/sad.gif) Пытаюсь написать небольшую катсцену. Игрок сидит в камере. Сам выбраться не может - на двери флажок "plot", чтобы ее открыть, нужен ключ с тэгом "Cell_key". Приходит охранник. После разговора с ПС он должен открыть дверь ключом, выпустить ПС и отвести к коменданту. Ключ от двери у охранника в инвентаре (проверяла неоднократно - он там присутствует, тэги ключа и замка на двери совпадают). Компилится. НО: охранник пытается открыть дверь, но не открывает. Пробовала через ActionUnlockObject(GetObjectByTag("MYCELL")) - результат тот же. Сама катсцена ставится на ActionTaken в беседе с охранником. Выглядит так: NSS void main() { object oPC = GetPCSpeaker(); object oCap = GetObjectByTag("Cap_001"); // Охранник object oWard = GetObjectByTag("Warden"); // Комендант тюрьмы object oDoor = GetObjectByTag("MYCELL"); // Дверь камеры (заперта, нужен ключ) SetCommandable(FALSE, oPC); DelayCommand(20.0, SetCommandable(TRUE, oPC)); AssignCommand(oCap, ActionUnlockObject(oDoor)); AssignCommand(oCap, ActionOpenDoor(oDoor)); AssignCommand(oCap, ActionMoveToObject(oWard)); AssignCommand(oPC, ActionForceFollowObject(oCap)); AssignCommand(oCap, ActionSpeakString("Комендант, заключенный доставлен.")); AssignCommand(oPC, ClearAllActions()); } Что я делаю неправильно? (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) ЗЫ: Только не смейтесь, пожалуйста, над этим шедевром очень громко - у меня тьюториал по катсценам для патчей ниже версии 1.30, а со статьей Aiwan'a мне пока трудно разобраться. |
![]()
Сообщение
#169
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Трудно судить что тебе надо. Ведь не вижу ни расстояний ни предметов рядом и прочее. Нужна очень подробная инфа: НПС подошел, повернулся, пукнул, ойкнул, повернулся, отошел. Сел, поковырял в носу... Как тольк оты составишь эти действия. Написать будет тебе проще.
NSS AssignCommand(oPC, ClearAllActions());
SetLocked(oDoor, FALSE); AssignCommand(oCap, ActionMoveToObject(oDoor)); AssignCommand(oCap, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 0.5, 3.0)); AssignCommand(oCap, ActionDoCommand(AssignCommand(oDoor, ActionOpenDoor(oDoor)))); AssignCommand(oCap, ActionMoveToObject(oWard)); AssignCommand(oCap, ActionDoCommand(AssignCommand(oPC, ActionForceFollowObject(oCap, 1.5)))); AssignCommand(oCap, ActionDoCommand(SetCommandable(FALSE, oPC))); AssignCommand(oCap, ActionSpeakString("Комендант, заключенный доставлен.")); AssignCommand(oCap, ActionDoCommand(SetCommandable(TRUE, oPC))); |
![]()
Сообщение
#170
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Спасибо!!! (IMG:style_emoticons/kolobok_light/thank_you.gif)
Надеюсь, не очень напрягла. Буду, все-таки, с твоей статьей разбираться. |
![]()
Сообщение
#171
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Когда все понятно как 2х2, то ответ не в напряг, было бы время и чувство что ответ не уйдет в песок... Изучай статью. (IMG:style_emoticons/kolobok_light/biggrin.gif)
|
![]()
Сообщение
#172
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Айв, а катсцена глючит... (IMG:style_emoticons/kolobok_light/sad.gif)
В общем, сначала добавила все как ты написал - у меня охранник стал открывать дверь, все нормально, но он почему-то идет не по коридору, а хочет пройти через стену, ПС - за ним. Оччень смешно... (IMG:style_emoticons/kolobok_light/crazy.gif) Ну, подкорректировала я по мере возможности и вот что вышло: NSS void main() { object oPC = GetPCSpeaker(); object oCap = GetObjectByTag("Cap_001"); object oWard = GetObjectByTag("WARD"); object oDoor = GetObjectByTag("MYCELL"); object oLoc1 = GetObjectByTag("CAP_STAND1"); // Иначе выманить охранника object oLoc2 = GetObjectByTag("CAP_STAND2"); // из камеры не было никакой object oLoc3 = GetObjectByTag("CAP_STAND3"); // возможности AssignCommand(oPC,SetCutsceneMode(oPC)); AssignCommand(oPC, ClearAllActions()); AssignCommand(oCap, ClearAllActions()); ActionDoCommand(AssignCommand(oPC, SetCameraFacing(225.0, 20.0, 45.0, CAMERA_TRANSITION_TYPE_MEDIUM))); SetLocked(oDoor, FALSE); ActionDoCommand(AssignCommand(oCap, SetFacingPoint(GetPosition(oPC)))); // Потому что когда вносила первые изменения, мы почему-то открывали дверь, повернувшись к замку спиной AssignCommand(oCap, ActionWait(1.0)); AssignCommand(oCap, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 0.5, 3.0)); AssignCommand(oCap, ActionWait(1.0)); AssignCommand(oCap, ActionDoCommand(AssignCommand(oDoor, ActionOpenDoor(oDoor)))); AssignCommand(oCap, ActionWait(1.0)); ActionDoCommand(AssignCommand(oCap, SetFacingPoint(GetPosition(oLoc1)))); // Это он развернулся к вэйпойнту, к которому сейчас пойдет, ПС в противоположной стороне. AssignCommand(oCap, ActionMoveToObject(oLoc1)); AssignCommand(oCap, ActionMoveToObject(oLoc2)); AssignCommand(oCap, ActionMoveToObject(oLoc3)); AssignCommand(oPC, ActionForceFollowObject(oCap, 1.5)); // Здесь ПС очень прикольно бежит вприпрыжку (IMG:style_emoticons/kolobok_light/sad.gif) AssignCommand(oCap, ActionDoCommand(SetCommandable(FALSE, oPC))); AssignCommand(oCap, ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE)); AssignCommand(oCap, ActionWait(1.0)); AssignCommand(oCap, ActionDoCommand(SetCommandable(TRUE, oPC))); AssignCommand(oCap, ActionSpeakString("Комендант, заключенный доставлен.")); AssignCommand(oCap, ActionWait(1.0)); AssignCommand(oCap, ActionMoveToObject(GetObjectByTag("PRISON_CAP"))); ActionDoCommand(AssignCommand(oCap, SetFacingPoint(GetPosition(oWard)))); // И никуда он не разворачивается AssignCommand(oPC,SetCutsceneMode(oPC,FALSE)); } Вообще, когда в последний раз тестировала в таком виде, получилось нормально так... Но все равно возникает куча вопросов: (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) 1. Почему камера устанавливается, но потом мышью вращается как угодно? 2. Почему из катсцены можно элементарно выйти, просто задав ПС мышью другой маршрут движения? Правда, он потом пытается опомниться и идти все-таки за охранником, но весь шарм теряется... 3. И куда бы на время катсцены убрать эту самую мышь совсем?.. 4. Как сделать, чтобы ПС шел на более медленной скорости? (Прикольно, конечно, что ПС прыгает, как отравленный страус, но, по-моему, это все-таки баг) 5. Как заставить охранника развернуться? 6. А еще, я хотела сделать так, чтобы комендант на реплику чего-нибудь ответил, но он упорно молчит, какую команду я бы ни добавляла... Но не все сразу. |
![]()
Сообщение
#173
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1,2,3 - ты сразу катсцену отрубаешь, ибо
NSS AssignCommand(oPC,SetCutsceneMode(oPC,FALSE)); выполнится сразу. Тебе надо поставить снятие катсцены в очередь. Судя по тому, что у тебя главный персонаж - Охранник, имеет смысл привязать к нему. Например так: NSS AssignCommand(oCap, ActionDoCommand(SetCutsceneMode(oPC,FALSE))); 4. не баг. По умолчанию ПС бегает, ходить он может только если - его замедлить (EffectSlow, EffectMovementDecrease) - его направить в точку, а не к объкту (в принципе тут это можно устроить, у тебя по ходу движения поинты, их можно в точки превратить через GetLocation() и игрока направить не в след за стражником, а по точкам) - включит режим Search (и то если игрок - эльф, все равно будет бегать). 5. поменяй NSS ActionDoCommand(AssignCommand(oCap, SetFacingPoint(GetPosition(oWard)))); // И никуда он не разворачивается на вот это: NSS AssignCommand(oCap, ActionDoCommand(SetFacingPoint(GetPosition(oWard)))); // повернется как миленький 6. Без проблем можно, чтобы комендант ответил. Поставь это в очередь стражника. |
![]()
Сообщение
#174
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Пасибо, Lex. (IMG:style_emoticons/kolobok_light/thank_you.gif)
С тем, где что поменять, понятно. И почему поменять, тоже. Можно, еще спрошу: 4. По точкам уже пробовала отправить ПС, до того, как сюда зашла, так он вообще никуда не идет. Сложновато мне в точки превращать, лучше через эффект буду. Это пойдет NSS AssignCommand(oPC,ApplyEffectToObject(oPC,EffectSlow())); ? Или опять не то?6. Это будет так? NSS AssignCommand(oCap, ActionDoCommand(oWard,ActionSpeakString("Можете идти. я с ним поговорю.")));
|
![]()
Сообщение
#175
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
4 - попробуй разные варианрты (у слоу бяка есть: на персе будут шмотки с имуном к слоу и все обломается (IMG:style_emoticons/kolobok_light/smile.gif) )
ты хоть почитай описание ApplyEffectToObject. Там еще требуется длительность указать (INSTANCE, PERMANENT, TEMPORARY) 6 - нет. Посмотри описание ActionDoCommand - там 1 параметр, а ты передаешь 2. Теоретически там должно быть: NSS AssignCommand(oCap, ActionDoCommand(AssignCommand(oWard,SpeakString("Можете идти. я с ним поговорю.")))); а сработает такая конструкция или нет - черт его знает, я давно в таком ключе сценки делал, уже не помню. попробуй. |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 23:09 |