Помощь - Поиск - Пользователи - Календарь
Полная версия: ПОСТРОЕНИЕ СКРИПТОВЫХ СЦЕН
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5
Aiwan
Джампом. И больше никак. В статье я описал как джамп делать и как возвращаться В ТОЧКУ НАЧАЛА диалога. Я блин два месяца писал статью и хрен кто читает pleasantry.gif Но если ты хочешь ИДТИ пешком, то бишь гуськом за НПС, то тут есть скрипт в базе скриптов мой, по вейпам идем вслед НПС. Ищи...
Добавлено в [mergetime]1093702954[/mergetime]
Пауза в диалоге+ возврат в диалог... это про возврат.
Raven
Мож кто находил более лучшее решение делать старт катсцены сначала модуля кроме как делать паузу при начале игры ?
DBColl
QUOTE (Raven @ Dec 20 2004, 19:27)
Мож кто находил более лучшее решение делать старт катсцены сначала модуля кроме как делать паузу при начале игры ?

Это как?! wacko.gif Ставь триггер под точку старта и на него (OnEnter) вешай сцену...
Raven
QUOTE (Aiwan @ May 9 2004, 14:27)
Убедительно прошу не ставить скрипты роликов на OnEnter стартовой локации при начале модуля! Если у вас большая необходимость в этом, то просто напишите задержку на несколько секунд для выполнения вашей скриптовой сценки. Дело в том, что при старте модуля движок игры выполняет внутренние команды необходимые для старта и ваш скрипт пройдет при неуправляемой камере, которая упрется в пол или еще куда.


Я вот по поводу этого и спрашиваю
Aiwan
Ставь на триггер.
MasterMage
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On:
//::///////////////////////////////////////////////
void main()
{
    //------------------------------Objects----------------------------
    object oPC=GetEnteringObject();
    object oD=GetObjectByTag("Djegan");
    object oK=GetObjectByTag("Kalaxana");
    object oWP1=GetWaypointByTag("impire_point_1");
    object oWP2=GetWaypointByTag("impire_point_2");
    object oWP3=GetWaypointByTag("impire_point_3");
    object oWP4=GetWaypointByTag("impire_point_4");
    object oWP5=GetWaypointByTag("point_dj");
    object oWPpc1=GetWaypointByTag("pc_point_1");
    object oWP6=GetWaypointByTag("impire_point_6");
    object oWPpc2=GetWaypointByTag("pc_point_2");
    object oWPpc3=GetWaypointByTag("pc_point_3");
    //-------------------------------Location---------------------------
    location Loc1=GetLocation(oWP1);
    //-------------------------------Effects----------------------------
    effect eCutInv = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);
    effect oE1=EffectVisualEffect(VFX_IMP_TORNADO);
    effect oE2=EffectVisualEffect(VFX_IMP_UNSUMMON);
    //-------------------------------Script-----------------------------
    if (!GetIsPC(oPC)||GetLocalInt(oPC,"impire_rolic")==TRUE)
    return;
    {
    AssignCommand(oPC,ClearAllActions());
    SetLocalInt(oPC,"impire_rolic",TRUE);
    SetLocalLocation(oPC,"impire",GetLocation(oPC));
    SetCutsceneMode(oPC);
    AssignCommand(oPC,JumpToObject(oD));
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eCutInv,oPC);
    DelayCommand(4.5, AssignCommand(oPC,SetCameraFacing(0.0,12.0,49.0,CAMERA_TRANSITION_TYPE_MEDIUM)));
    DelayCommand(10.0,AssignCommand(oD,ActionMoveToObject(oWP5,FALSE)));
    DelayCommand(11.0,AssignCommand(oPC,ActionMoveToObject(oWP5,FALSE,1.5)));
    DelayCommand(14.0,AssignCommand(oPC,SetFacingPoint(GetPosition(oWP1))));
    DelayCommand(17.0,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,oE1,Loc1,2.5));
    DelayCommand(17.1,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,oE2,Loc1,2.6));
    DelayCommand(17.5,AssignCommand(oK,JumpToObject(oWP1)));
    DelayCommand(18.0,AssignCommand(oK,ActionSpeakString("Джегань! Где тебйа носит?")));
    DelayCommand(18.5,AssignCommand(oD,SetFacingPoint(GetPosition(oK))));
    DelayCommand(19.0,AssignCommand(oPC,ActionMoveToObject(oK,FALSE,1.5)));
    DelayCommand(20.0, AssignCommand(oPC,SetCameraFacing(20.0,7.0,55.0,CAMERA_TRANSITION_TYPE_SLOW)));
    DelayCommand(23.0,AssignCommand(oD,ActionMoveToObject(oK,FALSE,0.5)));
    DelayCommand(24.0,AssignCommand(oD,ActionSpeakString("Калахана!")));
    DelayCommand(25.0,AssignCommand(oK,ActionMoveToObject(oWP2,FALSE,15.0)));
    DelayCommand(27.5,AssignCommand(oPC,ActionMoveToObject(oWP2,FALSE,16.0)));
    DelayCommand(34.5,AssignCommand(oPC,SetFacingPoint(GetPosition(oD))));
    DelayCommand(35.5,AssignCommand(oD,ActionMoveToObject(oPC,TRUE,0.5)));
    DelayCommand(40.0,AssignCommand(oD,ActionSpeakString("Что это за поведение?")));
    DelayCommand(41.5, AssignCommand(oPC,SetCameraFacing(270.0,15.0,45.0,CAMERA_TRANSITION_TYPE_FAST)));
    DelayCommand(44.0,AssignCommand(oK,ActionSpeakString("Мать Исповедница что-то замышлйает!")));
    DelayCommand(45.0,AssignCommand(oD,ActionSpeakString("Это не дает тебе повода так бесцеремонно обращатьсйа со мной!")));
    DelayCommand(47.0,FadeToBlack(oPC,FADE_SPEED_FASTEST));
    DelayCommand(47.3,AssignCommand(oD,ActionMoveToObject(oWP2,TRUE,15.0)));
    DelayCommand(47.4,AssignCommand(oPC,JumpToObject(oWPpc1)));
    DelayCommand(47.5,AssignCommand(oPC,SetFacing(200.0)));
    DelayCommand(47.7,FadeFromBlack(oPC,FADE_SPEED_SLOW));
    DelayCommand(48.0, AssignCommand(oPC,SetCameraFacing(200.0,15.0,55.0,CAMERA_TRANSITION_TYPE_SLOW)));
    DelayCommand(51.0, AssignCommand(oPC,SetCameraFacing(125.0,15.0,55.0,CAMERA_TRANSITION_TYPE_SLOW)));
    DelayCommand(54.0,FadeToBlack(oPC,FADE_SPEED_FASTEST));
    DelayCommand(54.3,AssignCommand(oPC,JumpToObject(oWP2)));
    DelayCommand(54.4,AssignCommand(oPC,SetFacingPoint(GetPosition(oK))));
    DelayCommand(54.5, AssignCommand(oPC,SetCameraFacing(270.0,7.0,49.0,CAMERA_TRANSITION_TYPE_FAST)));
    DelayCommand(54.8,FadeFromBlack(oPC,FADE_SPEED_SLOW));
    DelayCommand(55.0,AssignCommand(oK,ActionMoveToObject(oWP2,FALSE,0.3)));
    DelayCommand(55.1,AssignCommand(oD,ActionMoveToObject(oWP6,FALSE,0.3)));
    DelayCommand(59.0,FadeToBlack(oPC,FADE_SPEED_FASTEST));
    DelayCommand(60.3,AssignCommand(oPC,JumpToObject(oWPpc2)));
    DelayCommand(60.4,AssignCommand(oPC,SetFacing(180.0)));
    DelayCommand(60.6,AssignCommand(oK,ActionMoveToObject(oWP3,FALSE)));
    DelayCommand(60.6,AssignCommand(oD,ActionMoveToObject(oWP3,FALSE)));
    DelayCommand(60.7,FadeFromBlack(oPC,FADE_SPEED_SLOW));
    DelayCommand(62.1, AssignCommand(oPC,SetCameraFacing(180.0,3.0,79.0,CAMERA_TRANSITION_TYPE_FAST)));
    DelayCommand(64.0,AssignCommand(oPC,ActionMoveToObject(oWPpc3,FALSE)));
    DelayCommand(67.0,AssignCommand(oK,ActionMoveToObject(oWP4,FALSE)));
    DelayCommand(67.1,AssignCommand(oD,ActionMoveToObject(oWP4,FALSE)));
    DelayCommand(73.0,AssignCommand(oPC,ActionMoveToObject(oWP4,FALSE,3.0)));
    DelayCommand(80.8,AssignCommand(oK,SetFacingPoint(GetPosition(oD))));
    DelayCommand(81.0,AssignCommand(oD,SetFacingPoint(GetPosition(oK))));
    DelayCommand(82.0,AssignCommand(oK,ActionSpeakString("Я искала тебйа везде. Где ты был? У менйа есть план, как убрать Ричарда с дороги...")));
    DelayCommand(89.0,AssignCommand(oD,ActionSpeakString("Дела были. Только сегоднйа приехал. Говори, что за план. Йа так устал, что ничему не удивлюсь.")));
    DelayCommand(95.5, AssignCommand(oPC,JumpToLocation(GetLocalLocation(oPC,"impire"))));
    DelayCommand(95.5,SetCutsceneMode(oPC,FALSE));
    DelayCommand(98.5,RemoveEffect(oPC,eCutInv));

}
}

мой первый ролик, смотрите!! Класный, но простой...wink.gif
DBColl
DelayCommand(98.5,RemoveEffect(oPC,eCutInv)); - эта конструкция у тебя отрабатывает??? this.gif Странно ты как-то эффект удаляешь...
MasterMage
DBColl
а что странногоwink.gif....Просто время невидимости расчитывать мне влом было, поэтому воспользовался удалением... biggrin.gif
DBColl
Так она действительно работает? У меня не получалось... dntknw.gif Возможно из=за СоУ... black eye.gif
MasterMage
DBColl dntknw.gif сам не знаю, но она работает тутулька в тутельку...Все прекрасно..... yes.gif
DBColl
Отлично. yes.gif Очень удобно. good.gif
Раньше просто эффекты надо было удалять по его ID, в цикле проверяя каждый. А с вижуалами - так вообще дело было туго... black eye.gif swoon.gif
MasterMage
DBColl рад, что помог biggrin.gif
Nokoll
Здравствуйте, я долго писал эту статью, перебирая всё возможное и невозможное.
И так к делу многие спрашивают зачем нужна знаменитая инклюда,
Neverwinter Script Source
#include "x2_inc_cutscene"

Дак вот и поесьню, инклюда значительно упрощает исполнение определённых команд.
В инклюде есть…
Neverwinter Script Source
CutActionAttack
CutActionMoveAwayFromObject
CutActionMoveToObject
CutActionMoveToLocation
CutApplyEffectAtLocation
CutBlackScreen
CutDeath
CutRemoveEffects

И многое, многое другое.Чем же упращает эта инклюда.
Да тем что не надо в ней ставить ни DelayCommand(, ни AssignCommand и т.д.
Вот пример например использование
Neverwinter Script Source
CutActionMoveToObject!

Neverwinter Script Source
CutActionMoveToLocation(15.5, oЧТОНИБУДЬ, , FALSE);
//всё очень просто ставите действие и время выполнения.
Ещё пример.. Лёгкое наложения эффекта/
Neverwinter Script Source
CutApplyEffectAtLocation(31.5, oPC, DURATION_TYPE_INSTANT, 464, oWP);

Однако CutApplyEffectAtLocation, отличается от CutApplyEffectToObject. А вот чем
CutApplyEffectToObject с этой функцией стало, заметно проще использовать эффекты. Без занесения эффекта, В память.
Вот пример…
Neverwinter Script Source
CutApplyEffectToObject(27.0,DURATION_TYPE_INSTANT,VFX_FNF_SCREEN_BUMP, oPC);
и заносить в пямять effect ненадо..
Я продолжу свою статью если её сочтут нужной .
slavaz
QUOTE (Nokoll @ Mar 11 2005, 14:55)
И так к делу многие спрашивают зачем нужна знаменитая инклюда,
Neverwinter Script Source
#include "x2_inc_cutscene"


Выложи где-нить эту знаменитую инклуду, чтобы посмотреть на неё хотя бы... yes.gif
Nokoll
Neverwinter Script Source
#include "x2_inc_cutscene"
вот она я же выложил поставь её перед скриптом и сам увидиш что в тулсе, изменится.
slavaz
QUOTE(Nokoll @ Mar 11 2005, 18:45)
NSS
#include "x2_inc_cutscene"
вот она я же выложил поставь её перед скриптом и сам увидиш что в тулсе, изменится.

Если я поставлю эту строку в своём скрипте , то компилятор выдаст мне сообщение об ошибке - потому что СОДЕРЖИМОГО файла x2_inc_cutscene.nss у меня нет. Этот файл есть только у тебя. Поэтому для того, чтобы я попробовал функции твоей библиотеки, мне нужен этот файл. Вернее, его содержимое.
Вот это содержимое я и прошу у тебя.
Aiwan
Nokoll в теме готовых катсцен выкладывай.
Nokoll
Скажите Нужно ли мне дальше писать статью про инклюду?
dumbo
вполне достаточно было бы сказать, что находится она(x2_inc_cutscene) в .\data\xp2_scripts.bif - весит почти 100k, посему постить ее, пожалуй, не стоит.
Добавлено в [mergetime]1111983333[/mergetime]
ps. более свежая (+1строкаpardon.gif версия лежит в xp2patch.bif smile.gif
Lemegeton
А вот если ты ее опишешь... Какая ф-ция что делает и для чего может применяться... biggrin.gif
Nokoll
QUOTE
вполне достаточно было бы сказать, что находится она(x2_inc_cutscene) в .\data\xp2_scripts.bif - весит почти 100k, посему постить ее, пожалуй, не стоит

dumbo Не ты не понел я имел в виду, не вешать инклюду целую, а описать все её функцыи, как я зделал это выше.
QUOTE
А вот если ты ее опишешь... Какая ф-ция что делает и для чего может применяться...

ДА!
Nokoll
С позволения форума я продолжу.. biggrin.gif wink.gif
Итак: diablo.gif
Построение Скриптовых сцен с помощью инклюды «x2_inc_cutscene».

Разберём ещё несколько функций.
Neverwinter Script Source
StartCutscene
вместо старого родного
Neverwinter Script Source
SetCutsceneMode(oPC);.

Neverwinter Script Source
StartCutscene
на мой взглят делается сложнее.
В начале задаём параметр
Neverwinter Script Source
void StartCutscene(object oPC, int iCut);
затем делаем int и ПК соответственно, делаем это так:
Neverwinter Script Source
void main()
{
    object oPC = GetPCSpeaker();
    int iCut = 1;

Бывало много случаев когда много человек не идут куда надо старой функцией
Neverwinter Script Source
DelayCommand(1.0,
Neverwinter Script Source
AssignCommand(oPC, ActionMoveToLocation (oCam1)));

Здесь же всё на мой взгляд проще.
Запоминаем точку, для этого делаем так.
Neverwinter Script Source
// Waypoints.
location lPCStart = GetLocation(GetNearestObjectByTag("pc_start_wp", oPC));

Далее эту location тобеж точку WP можно использовать скока угодно без лишнего повтора. Вот приведу пример. wink.gif
1.
Neverwinter Script Source
CutJumpToLocation(3.0, oPC, lPCStart);
Всё просто Функция время исполнения.
2. И ненадо никаких нудных DelayCommand(3.5, AssignCommand и т.д
3.
Neverwinter Script Source
CutActionMoveToLocation(3.5, oPC, lPCStart, FALSE);
Вот ПК идёт к Запомненной точьке, и сейчас простая функция время исполнения. Если кому не понятно я разберу.
Neverwinter Script Source
CutActionMoveToLocation(3.5, oPC, lPCStart, FALSE);

Neverwinter Script Source
CutActionMoveToLocation
сама функция инклюды, (3.5, время исполнения, как и в

Neverwinter Script Source
DelayCommand(3.5..
тока проще, oPC наш любимый игрок, lPCStart, Точька ВП куда пойдёт ПК, FALSE это означает что он будет идти медленно.
Neverwinter Script Source
CutBlackScreen(0.0, oPC);
очень просто чёрный экран.
Neverwinter Script Source
CutFadeFromBlack(3.5, oPC, FADE_SPEED_MEDIUM);
Очень просто его снимаем FADE_SPEED_MEDIUM Означает что чёрный экран пройдёт достаточно быстро!
Neverwinter Script Source
CutPlayAnimation(12.8, oPC, ANIMATION_FIREFORGET_HEAD_TURN_LEFT, 2.0);
Очень простое введение Анимации которую будет делать игрок.
Neverwinter Script Source
CutClearAllActions(26.0, oPC, TRUE);
Потрём все Актион У Игрока.
Neverwinter Script Source
CutPlaySound(27.2, oPC, "vs_nfenthim_dead");
На удивление очень простое проигрование любого звука. «vs_nfenthim_dead» Это тег звука.
Neverwinter Script Source
CutDeath(27.2, oDead2, FALSE);
На удивление просто Убиение существа без добавления эффекта.
Neverwinter Script Source
CutJumpToObject(43.5, oPC, oСа1);
Простейший Джамп ПК. rolleyes.gif
Neverwinter Script Source
CutFadeOutAndIn(43.1, oPC, 1.5);
Снятие Сцены с ПК.
Очень важно.. Сложное соединение и распределение по времени Любых эффектов.
Neverwinter Script Source
void CutCreateFire(int iCut, object oPC).
Задаём постоянную заново.
Neverwinter Script Source
{
int x = 1;
Равен х Значет эффект будет через од.
Задаём всего одну точьку или нев Об с одним тегом.
Neverwinter Script Source
object oWP = GetNearestObjectByTag("Efv", oPC, x);

Neverwinter Script Source
float fDelay = 0.0;
не переменяется.
Neverwinter Script Source
if(iCut == GetLocalInt(oPC, "nCutsceneNumber"))
    {
      while(GetIsObjectValid(oWP))
      {
          DelayCommand(fDelay, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), GetLocation(oWP)));
          fDelay = fDelay + 0.13; 8(
          x = x + 1;
          oWP = GetNearestObjectByTag("hx_crsytal_cut_fire", oPC, x);
      }
    }
}

Таким Образом Эффекты будут бить через 1 секунду.на +1. Это очень полезно.
Чем по сто раз делать точьки с тегами.
-----------------------------
Neverwinter Script Source
MultiJump
в основном служит для точного и быстрого перемещения в локу. Пример.
Neverwinter Script Source
AssignCommand(oPC, MultiJump(oPC, "PC_START"));

Neverwinter Script Source
CutActionCastFakeSpellAtObject(116.5, SPELL_WEIRD, oWа, oPC, PROJECTILE_PATH_TYPE_DEFAULT);

Насколько я помню функция позволяющая сразу нескольким существам, кастовать 1 Заклинание. Очень удобно.
Фу Чивото я под устал, обязательно буду узнавать новое про эту инклюду, и постить здесь biggrin.gif
Спасибо За внимание! blush.gif blush.gif stink.gif victory.gif biggrin.gif

Добавлено в [mergetime]1112481707[/mergetime]
Я ОЧЕНЬ НАДЕЮСЬ ЧТО ЭТО КАМУНИБУДЬ ПРИГОДИТСЯ!!
MasterMage
Кстати, если есть в твоей инклюде такая чточка, чтобы если я прыгаю к точке, то сразу смотрел бы куды надо, чтобы не затемнять экран. Знаешь, как в фильмах... Камера просто смотрит уже в другое место...
А то неинтересно. Может надо точку стрелочкой ставить туды, куды надо смотреть?
В основном, мы и раньше обходились без этого, здесь просто добавлена возможноть устанавливать время...
Но ты молодец... Потом готовую статью посмести в топик с мануалами, правда, когда мы приведем его в порядок. Будут тама статьи для ньюбов yes.gif
Nokoll

MasterMage Поставь Точьку с градусами куда надо, То.е, куда смотрел бы ПК.
Я уверяю ПК Этой функцией прыгает и автоматом поворачивается т.к поставлена точка.

Neverwinter Script Source
CutJumpToLocation(3.0, oPC, lPCStart);

Но мож надо ещё потереть все Актион, я просто непомню.
MasterMage
Nokoll в том-то и дело, что поворачивается, а надо, чтобы не было поворота камеры... Или я тебя не понял? black eye.gif
Nokoll
А дак ты про это, попробуй поставить функцыю камеры SNAP!
Nokoll
Мастер маге попробуй так.
Neverwinter Script Source
CutSetCamera(28.8, oPC, CAMERA_MODE_TOP_DOWN, 270.0, 3.0, 75.0,                   CAMERA_TRANSITION_TYPE_FAST);                                     
CutSetCamera(29.8, oPC, CAMERA_MODE_TOP_DOWN, 270.0, 3.0, 75.0,                   CAMERA_TRANSITION_TYPE_SNAP);                                     




LEX: Кнопку NSS на что дали, а?
Shoihet
ребяты, такой вопрос
Делаю катсцену - герой приходит в город, и камера облетает по этому городу.
Делаю естчественно через пробег невидимого героя по вейпойнтам

И такая возникла проблема.
на каждом вейпойнте герой останавливается на полсекунды. При этом, неважно, где находится следующий вейпойнт - просто команды по вейпойнтам кладутся в стек.

Как этого избежать? Как сделать плавное неостанавливающееся движение?
Aiwan
Поставь РС в центр и просто прокрути самой дальней камерой весь твой путь. По другому НИКАК.
DEM
ПОМОГИТЕ!!! shout.gif shout.gif help.gif !! Пытался сделать кут-сцену(третий раз), всё как бы шло нормально (что странно), а потом набираю "SetCutsceneMode(oPC);", а он пишет "ОШИБКА: НЕТ ЛЕВОЙ СКОБКИ В СПИСКЕ"
Вот что я пока написал...
Neverwinter Script Source
void main()
{
//--------------------------Creature-----------------------------
object oPC = GetEnteringObject();
object oWHO = GetNearestObjectByTag("Guild_WHO"); //спрашивающий
object oTO = GetObjectByTag("Guild_TO");  //отвечающий
object o3 = GetObjectByTag("Guild_MAG1");
object o4 = GetObjectByTag("Guild_MAG2");
object o5 = GetObjectByTag("Guild_WARRIOIR");
object o6 = GetObjectByTag("Guild_Rpgue");
//---------------------------Location----------------------------
location lClose = GetLocation(GetObjectByTag("CLOSE_ARENA"));
location lTrone = GetLocation(GetObjectByTag("Open_ARENA"));
//---------------------------Waypont-----------------------------
object oWPwho1 = GetObjectByTag("WP_WHO_01");
object oWPwho2 = GetObjectByTag("WP_WHO_02");
object oWPwho3 = GetObjectByTag("WP_WHO_03");
object oWPto1 = GetObjectByTag("WP_TO_1");
object oWPto2 = GetObjectByTag("WP_TO_2");
object oWPpc1 = GetObjectByTag("WP_PC_1");
object oWPpc2 = GetObjectByTag("WP_PC_2");
object oWPpc3 = GetObjectByTag("WP_PC_3");
object oWPpc4 = GetObjectByTag("WP_PC_4");
//----------------------------Effect------------------------------
effect eCutPar = EffectCutsceneParalyze();
effect eSlow = EffectSlow
//----------------------------НАчало------------------------------
SetCutsceneMode(oPC);

}

Добавлено в [mergetime]1122360681[/mergetime]
И еще, какая команда затемняет экран что бы герой мог спокойненько телепортироваться в другой вейпонт?
Archangel
QUOTE
ПОМОГИТЕ!!!    !! Пытался сделать кут-сцену(третий раз), всё как бы шло нормально (что странно), а потом набираю "SetCutsceneMode(oPC);", а он пишет "ОШИБКА: НЕТ ЛЕВОЙ СКОБКИ В СПИСКЕ"
Вот что я пока написал...

Исправь вот это, как я написал:
Neverwinter Script Source
effect eSlow = EffectSlow();

Поставь такую вот проверку на наличие игрока:
Neverwinter Script Source
object oPC = GetEnteringObject();
if (!GetIsPC(oPC))
return;

QUOTE
И еще, какая команда затемняет экран что бы герой мог спокойненько телепортироваться в другой вейпонт?

Затемнение:
Neverwinter Script Source
DelayCommand(2.0,FadeToBlack(oPC, FADE_SPEED_FASTEST));

Убрать затемнение:
Neverwinter Script Source
DelayCommand(5.0, FadeFromBlack(oPC, FADE_SPEED_FASTEST));

Работай дальше, теперь все должно быть Ок! wink.gif
Мефистофель
DEM Так меньше багов в действительности. помойму стандартное скриптописание не совсем для кут сцены сделано. так багов в 100% меньше я только так всё с 1ого раза получается.
Neverwinter Script Source
// Activate dem cut-scene

int CUTSCENE_NUMBER = 1;

#include "x2_inc_cutscene"

void CallPlayAnimation2(int nCutscene, object oObject, int nAnimation, float fLength)
{
    if(nCutscene == GetLocalInt(oObject, "nCutsceneNumber"))
    {
        AssignCommand(oObject, PlayAnimation(nAnimation, 0.3, fLength));
    }
}

void CutPlayAnimation2(float fDelay, object oObject, int nAnimation, float fLength, int iShift = TRUE)
{
    int nCutscene = GetActiveCutsceneNum();
    fDelay = CutCalculateCurrentDelay(fDelay, nCutscene);
    DelayCommand(fDelay, DelayCommand(GetShift(oObject, iShift), CallPlayAnimation2(nCutscene, oObject, nAnimation, fLength)));
}

void main()
{
    int nDoOnce = GetLocalInt(GetArea(OBJECT_SELF), "NPC1");
    if(nDoOnce == 1)
        return;
    SetLocalInt(GetArea(OBJECT_SELF), "NPC2", 1);

    object oMor = GetObjectByTag("Sa");
    object oCamera1 = GetObjectByTag("wp_camera1a");
    object oCamera2 = GetObjectByTag("wp_camera2a");
    object oPC = GetEnteringObject();
    object oCameraM = GetObjectByTag("camera_");
    object oNPC1 = GetObjectByTag("NPC1");
    object oNPC2 = GetObjectByTag("NPC2");
    object oCopyPC = GetObjectByTag("PC_COP");//Sozdaiot copiu PC s tegom/
    effect eVis = EffectVisualEffect(VFX_DUR_DEATH_ARMOR);

    CutSetActiveCutscene(CUTSCENE_NUMBER, CUT_DELAY_TYPE_CUMULATIVE);
    CutSetActiveCutsceneForObject(oPC, CUTSCENE_NUMBER, TRUE);
    CutSetActiveCutsceneForObject(oNPC1, CUTSCENE_NUMBER);
    CutSetActiveCutsceneForObject(oNPC2, CUTSCENE_NUMBER);
    CutSetCutsceneMode(0.2, oPC, TRUE, CUT_CAMERA_HEIGHT_MEDIUM, TRUE, TRUE);
    CutApplyEffectToObject2(0.0,и так-далее, я думаю полный мой скрипт тебе ненужен.


на первый взгяд сложно но если понять настолько просто. Пиши в приват нучу писать Куты чтоб с первого раза получались.
DraX
Меф
А ты сваяй какой-нибудь туториал по кут-сценам. А че, звучит здорово? Может малек и запаришся, зато народ уважать будет good.gif
ЗЫ: Мож и я подучусь на старости лет, так сказать...
Добавлено в [mergetime]1123493805[/mergetime]
Помогите, кто знает.
Создавал я как-то кут-сценку в которой был жестокий бой между Чемпионом Костяных Големов и отважным хероем. Так вот, делал все по стандартке: игрока и его компаньонов сделал невидимыми, парализовал (только компаньонов) и прыгал игроком с точки на точку, меняя при необходимости камеру.
Так вось, когда я тестил свое творение, я нашел один баг: Чемпион Големов кастит "Перст Смерти", а он у него 17 уровня (хорошо что игрок бессмертен на время biggrin.gif ). Но когда я проходил недалече от этой парочки, Голем как раз кастует этот спелл и получается неприятная ситуация. Идет себе сцена, идет... вот Голем колдует спелл... и бац, визуальный эффект от спелла захватывает не только хероя, но и игрока. В результате крааасивый эффект от спелла появляется на невидимом месте (как раз там, где и стоит игрок). Вопрос на засыпку: как устранить баг?
Aiwan
QUOTE (DraX @ Aug 8 2005, 13:15)
А ты сваяй какой-нибудь туториал по кут-сценам. А че, звучит здорово? Может малек и запаришся, зато народ уважать будет

А зачем ваять Мефу, если он уже сваяен? dntknw.gif Иди в раздел ссылок в этом форуме и сливай туториал на русском мой. Там есть примеры и прочее по сценкам.
DraX
Спасибо Aiwan! Бегу качать... smile.gif
DEM
Народ! Подскажите плиз! Как зделаьб что бы камера вращалась 2 секунды? black eye.gif
Добавлено в 22:35
УРА! Я сделал свою первую кат-сцену... Я не помню использовал ли я ту инклюду, но лучше поставить biggrin.gif

Aiwan: Дем, я удалил твой код. Пожалуйста здесь только вопросы. Не надо все свои катсцены сюда выкладывать, иначе невозможно читать топик. Ок? Надеюсь ты не обидишься.
-fenix-
Тоесть вращалась 2 секунды? А вообще есть несколько скоростей поворота камеры, вот их и подгадывай.
CAMERA_TRANSITION_TYPE_CRAWL
CAMERA_TRANSITION_TYPE_FAST
CAMERA_TRANSITION_TYPE_MEDIUM
CAMERA_TRANSITION_TYPE_SLOW
CAMERA_TRANSITION_TYPE_SNAP
CAMERA_TRANSITION_TYPE_VERY_FAST
CAMERA_TRANSITION_TYPE_VERY_SLOW
А где ты тут камеру устанавливаешь?
DEM
Вот у меня проблема.... Сделал кат-сцену, всё идёт ОК, НО после того как она проиграет, вся непись повторяет свои действия... Ну например, идёт слуга к королю, что нить говорит и уходит в другой край карты сказать, что-то другой НеПиСи. ПОТОМ ОНА ВОЗВРАЩАЕТЬСЯ К КОРОЛЮ И ГОВОРИТ ТОЖЕ САМОЕ, ПОТОМ КО ВТОРОЙ НеПиСи и т.д.
Aiwan
Поставь локалку на триггер. Смотри как я описал все в туториале.
MasterMage
DEM да, ты стоишь на триггере. Скорее всего.
DraX
Хочу спросить, можно ли каким-либо способом контролировать время движения камеры, кроме как скоростями (CAMERA_TRANSITION_TYPE) или нет? Если нет, то начать ли мне делать ее? Заранее спасибо.
MasterMage
Можешь использовать Delay команды, для расстановки по времени. Там настрой промежутки задержки. А скорость движения
QUOTE (DraX @ Aug 12 2005, 13:06)
(CAMERA_TRANSITION_TYPE)

этим и юзай. smile.gif
DEM
Скажите пожалуйста, как зделать что бы когда игрок загрузил модуль, была анимация, что он лежит, а потом встаёт...
-fenix-
Ставь на OnClientEnter в модульных св-вах, что тебе нужно.
Не знаю, естьли анимация лежания(на моей версии такой нет), можно использовать ANIMATION_LOOPING_DEAD_FRONT, только тогда время проигрывания побольше и черный экран в начале.
DraX
На onClientEnter некоторые скрипты иногда и глючат. Лучше всего использовать такой вариант:
1. Рисуем триггер вокруг точки, в которой должен появиться игрок.
2. Соответствующий скрипт ставим в onEnter триггера, заведомо включив проверку скрипта на единождую активацию.
Не то, чтобы я был против идеи ставить скрипт на onClientEnter. Просто люди советовали, да и свой опыт тоже имеется. Поэтому, прошу сильно не бить black eye.gif

ЗЫ: Еще лучше сделать выход из затемнения. Этакое интро. smile.gif
-fenix-
DraX, могу тебя уверить, что скрипт, пусть даже стоящий на OnEntere тригера может в данном случае глючить(особенно большой скипт), потому что дело не в том, где стоит скрипт, а когда он выполняется. В данном случае и в первом и во вотором варианте он выполняется в самом начале модуля, так сказать при загрузки игры.
И скрипт просто мизерный.
Хотя, на григере багов возможно и меньше будет.
QUOTE (DraX @ Aug 25 2005, 16:58)
ЗЫ: Еще лучше сделать выход из затемнения. Этакое интро.

А ка же, если его не снимать!? Снимать надо обязательно!?
Chimeric
Neverwinter Script Source
void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

if (GetLocalInt(oPC, "hallwayfirstvisit")== 0)

{
SetLocalInt(oPC, "hallwayfirstvisit", 1);
DelayCommand(0.2, SetCutsceneMode(oPC));
AssignCommand(oPC, SetCameraFacing(120.0, 8.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP));
AssignCommand(oPC, DelayCommand(1.0, SetCameraFacing(180.0, 25.0, 40.0, CAMERA_TRANSITION_TYPE_FAST)));

DelayCommand(4.5, SetCutsceneMode(oPC, FALSE));
}
}


Требуется, чтобы при появлении в зоне (с крошечным отступлением, чтобы не глючило) запускался фильм. При этом камера бы смотрела на северо-запад (120) с увеличением 8. Через секунду камера должна начать подниматься и поворачиваться в западном направлении, пока не будет смотреть строго на запад с высоты 25. Получается такой пируэт. Вместо этого выходит так, что камера начинает, смотря на запад, так же и поднимается на высоту 25, а по истечении времени сценки, то есть через 4.5 секунд, резко переключается на вид, который должен был быть начальным - северо-запад на высоте в 8. Кстати, во время всего процесса персонаж так и стоит лицом к западу из-за направления вэйпойнта. Что, в принципе, меня устраивает.
Aiwan
Надо камеру поставить незаметно в нужное положение. Ведь ты мог ее дернуть мыхой и она пошла крутиться... А потом сценка и все идет по инерции. Ставь затемнение, ставь камеру в нужное положение и вперед по сценарию. Проверенный способ. Все остальное ненадежно. Главное очисти все акции у РС перед сценкой, тогда и инерцию камеры уберешь.
Neverwinter Script Source
void main()
{
  if(GetIsPC(oPC) && !GetLocalInt(OBJECT_SELF, "TRIGGER"))
    {
    FadeToBlack(oPC, FADE_SPEED_FASTEST);
    SetLocalInt(OBJECT_SELF, "TRIGGER", TRUE);
    AssignCommand(oPC, ClearAllActions());
    DelayCommand(1.5, SetCutsceneMode(oPC, TRUE));
    DelayCommand(2.2, AssignCommand(oPC, JumpToObject(oWp)));
    DelayCommand(2.3, AssignCommand(oPC, SetCameraFacing(120.0, 8.0, 40.0, CAMERA_TRANSITION_TYPE_SNAP)));
    DelayCommand(3.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
    DelayCommand(4.0, AssignCommand(oPC, SetCameraFacing(180.0, 25.0, 50.0, CAMERA_TRANSITION_TYPE_SLOW)));

    ///  и так далее...
RoHaN
Здравствуйте. Во-первых, я бы хотел спросить - Аищан, у меня в Навигаторе есть статья, чудным образом похожая на твою (один в один), поясни пожалуйста.И во-вторых - я сейчас делаю модуль, думаю, что на него уйдет ещё много времени, сейчас это не важно. Важно то, что у меня перестали работать Цутсценьы !!!!!!!!!!!!! Что такое ??????!!!!!!!!! :сщоон:
Dik Morris
QUOTE
Аищан, у меня в Навигаторе есть статья, чудным образом похожая на твою (один в один), поясни пожалуйста.

Вообщето это и есть статья Айвана... "Звезда по Имени Аврора". (Так по моему.)
QUOTE
И во-вторых - я сейчас делаю модуль, думаю, что на него уйдет ещё много времени, сейчас это не важно. Важно то, что у меня перестали работать Цутсценьы !!!!!!!!!!!!! Что такое ??????!!!!!!!!! :сщоон:

А вот тут поподробнее. Что именно не работает? Опиши ситуацию.
(Где стоит скрипт, что конкретно не идет, приведи код.)
QUOTE
А ка же, если его не снимать!? Снимать надо обязательно!?

PS: Феникс, давно хотел ответить но повода как то не было. smile.gif
Он имел ввиду, не FadeFromBlackа, а наоборот, сначала FadeToBlack(!) потом FadeFromBlack(!). Получается оч. красиво. yes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.