Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
9 страниц V  « < 4 5 6 7 8 > »   
Ответить в эту темуОткрыть новую тему
> ПОСТРОЕНИЕ СКРИПТОВЫХ СЦЕН, Основы написания Cutscene
-fenix-
сообщение Mar 29 2006, 16:09
Сообщение #111


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE(Elf-Drow @ Mar 29 2006, 11:30) [snapback]75009[/snapback]
Теперь более менее, а именно так нужно записывать или можно как-нибудь покороче? Я видел пару скриптов которые можно было записывать или мега длинно или коротко...

Ты о чем?

Если о кол-ве параметров в функции, там это смотря устраивают тебя дефолтные или нет.

Стандартно функция выглядет так:
NSS
void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE)

int nSpell и object oTarget, всегда должны быть тобой указаны, так как по умолчанию задать этот параметр не льзя, вернее не имеет смысла.
У всех остальных параметров есть дефолтная настройка, такие как: int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE... Тобишь, если тебя устраивает METAMAGIC_ANY, то ты можешь данный параметр вообще не писать, он по дефолту стоит равным METAMAGIC_ANY.
Но есть одно НО, если тебя не устраивает дефолт кокого-нить параметра, то прейдется писать и все параметры до него. Вот и получается, что если тебя все устраивает ты запишешь
NSS
DelayCommand(21.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC3)));

А если не устраивает последний, то
NSS
DelayCommand(21.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC3, METAMAGIC_FIRE, FALSE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));


Ты об этом спрашивал?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 30 2006, 14:46
Сообщение #112


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Да об этом, все работает, но только не ActionCastSpellAtObject а ActionCastFakeSpellAtObject, то есть иллюзия. Почему НПС не может колдовать, а делает тока иллюзию?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 30 2006, 16:36
Сообщение #113


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE(Elf-Drow @ Mar 30 2006, 15:46) [snapback]75274[/snapback]
Да об этом, все работает, но только не ActionCastSpellAtObject а ActionCastFakeSpellAtObject, то есть иллюзия. Почему НПС не может колдовать, а делает тока иллюзию?

Для колдовства нужно:
1) Чтобы НПС знал и мог пользоваться данным заклинанием.
2) Чтобы он мог достать этим заклинанием до жертвы. Тобишь расстояние подходящие.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 31 2006, 05:31
Сообщение #114


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



При создании сценки я руководствовался тем же. Поставил НПС 30 уровень волшебника, 20 колдуна, на всякий. (IMG:style_emoticons/kolobok_light/biggrin.gif) Потом поставил галочку на то, чтобы файрбол был как бы готов у НПС и он мог его использовать. Но НПС в то, время, когда должен колдовать тупо стоит, а затем продолжает выполнять последующие действия, плевав на колдовство...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 31 2006, 09:07
Сообщение #115


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE(Elf-Drow @ Mar 31 2006, 06:31) [snapback]75425[/snapback]
Но НПС в то, время, когда должен колдовать тупо стоит, а затем продолжает выполнять последующие действия, плевав на колдовство...

QUOTE(-fenix- @ Mar 30 2006, 17:36) [snapback]75301[/snapback]
2) Чтобы он мог достать этим заклинанием до жертвы. Тобишь расстояние подходящие.

Может дело в этом?
Покажи эту строчку с кастом.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 31 2006, 10:05
Сообщение #116


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Вот
NSS
DelayCommand(5.0, AssignCommand(oNPC, ActionCastFakeSpellAtObject(SPELL_FIREBALL, oNPC1)));
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 31 2006, 12:40
Сообщение #117


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



Elf-Drow, ну эта ведь у тебя работает.
У тебя с ActionCastSpellAtObject не работает, так вот, покажи как ты пишешь с ActionCastSpellAtObject. Ты уверен, что непись может скаставать этот закл на нужный объект, ему ни чего не мешает, например расстояние?
Возможно, что ты не правильно настраиваешь закл у мага. Чтобы этого избежать на 100% в функции
NSS
void ActionCastSpellAtObject( int nSpell,object oTarget, int nMetaMagic = METAMAGIC_ANY, int bCheat = FALSE, int nDomainLevel = 0, int nProjectilePathType = PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell = FALSE)

параметр bCheat поставь TRUE. Если так напишешь, то для чтение закла маг не будет обязан его знать.


Еще, проверь объект, на который твой НПС кастует, возможно, ты в скрипте указал не его ТЕГ или написал его с ошибкой.

Сообщение отредактировал -fenix- - Mar 31 2006, 12:50
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 31 2006, 16:56
Сообщение #118


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



NSS
DelayCommand(5.0, AssignCommand(oNPC, ActionCastSpellAtObject(SPELL_FIREBALL, oNPC1)));

Точно так же. Но я проверю с TRUE...
С TRUE работает!!! Но не наносится дамаг НПС
Все хорошо, продолжаю делать модуль...

Сообщение отредактировал Elf-Drow - Apr 8 2006, 16:25
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 4 2006, 17:21
Сообщение #119


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Может быть, этот вопрос уже задавался, но тем не менее: как сделать так, чтобы диалог нельзя было прервать (тот "бокс" в Свойствах не делает ничего) и при этом скрывался интерфейс? Например, с такого разговора начинается модуль Kingmaker. Очень впечатляюще.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 4 2006, 17:52
Сообщение #120


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Нужно просто установить режим кутсцены.
NSS
void SetCutsceneMode(
    object oCreature,
    int nInCutscene = TRUE
);

QUOTE
с такого разговора начинается модуль Kingmaker

Не знаю, не играл. (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Dik Morris - May 4 2006, 17:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 4 2006, 17:56
Сообщение #121


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(Chimeric @ May 4 2006, 18:21) [snapback]80750[/snapback]
тот "бокс" в Свойствах не делает ничего)

он для другого.
зы: не забыть после разговора катсцену снять.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 5 2006, 11:38
Сообщение #122


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Сейчас у меня стоит вот что в ActionTaken первых строк разговора, принадлежащих NPC.

NSS
void main()
{

SetCutsceneMode(GetPCSpeaker(), TRUE);

}


Результат: разговор не происходит, начинается фильм, из которого не выбраться не Эскейпом и никак иначе.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 5 2006, 12:07
Сообщение #123


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Попробуй установить режим кутсцены до начала диалога.
(Например при наступании на триггер, вход в локу и т.п...)

Сообщение отредактировал Dik Morris - May 5 2006, 12:10
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 5 2006, 12:19
Сообщение #124


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Что же мне, каждый раз так изворачиваться? У меня диалогов тьма. Пробовал, между прочим, вписать OWNER_SELF через oTarget вместо игрока, тогда вообще ничего не происходит.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 5 2006, 12:26
Сообщение #125


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



не, зачем же так?
стандартный скрипт на начало разговора nw_c2_default4 берем и впихиваем туда сценку:

NSS
//:://////////////////////////////////////////////////
//:: nw_c2_default4
/*
  Default OnConversation event handler for NPCs.

*/

//:://////////////////////////////////////////////////
//:: Copyright © 2002 Floodgate Entertainment
//:: Created By: Naomi Novik
//:: Created On: 12/22/2002
//:://////////////////////////////////////////////////

#include "nw_i0_generic"

void main()
{
    // See if what we just 'heard' matches any of our
    // predefined patterns
    int nMatch = GetListenPatternNumber();
    object oShouter = GetLastSpeaker();
    object oSelf = OBJECT_SELF;

    if (nMatch == -1)
    {
        // Not a match -- start an ordinary conversation
        if (GetCommandable(OBJECT_SELF))
        {
            if (GetIsPC(oShouter))
                SetCutsceneMode(oShouter, TRUE); // наша катсцена
            ClearAllActions();
            BeginConversation();
        }
    }
    // Respond to shouts from friendly non-PCs only
    else if (GetIsObjectValid(oShouter)
              && !GetIsPC(oShouter)
              && GetIsFriend(oShouter))
    {
        object oIntruder = OBJECT_INVALID;
        // Determine the intruder if any
        if(nMatch == 4)
        {
            oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER");
        }
        else if (nMatch == 5)
        {
            oIntruder = GetLastHostileActor(oShouter);
            if(!GetIsObjectValid(oIntruder))
            {
                oIntruder = GetAttemptedAttackTarget();
                if(!GetIsObjectValid(oIntruder))
                {
                    oIntruder = GetAttemptedSpellTarget();
                    if(!GetIsObjectValid(oIntruder))
                    {
                        oIntruder = OBJECT_INVALID;
                    }
                }
            }
        }

        // Actually respond to the shout
        RespondToShout(oShouter, nMatch, oIntruder);
    }

    // Send the user-defined event if appropriate
    if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT))
    {
        SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE));
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение May 5 2006, 15:31
Сообщение #126


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



По моему, достаточно просто сделать так:
З.Ы.:В своем модуле проверял...
NSS
void main()
{
SetCutsceneMode(GetFirstPC());
ActionStartConversation(GetFirstPC(), "Res Ref диалога");
}


Можно на триггер какой-нить поставить или но OnConversation, но дык на энто не пробовал...

Сообщение отредактировал Elf-Drow - May 5 2006, 15:31
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение May 5 2006, 18:11
Сообщение #127


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE(Elf-Drow @ May 5 2006, 16:31) [snapback]80835[/snapback]
Можно на триггер какой-нить поставить или но OnConversation, но дык на энто не пробовал...

Стандартный диалоговый скрипт (nw_c2_default4) есть у каждого НПС после его размещения на карте. Зачем находить себе лишний геморой, если можно одну строчку написать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 5 2006, 18:16
Сообщение #128


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



не знаю как ты проверял, но данный скрипт на триггере запустит диалог с триггером в режиме катсцены. а надо то с НПС.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 5 2006, 18:45
Сообщение #129


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Что ж, рецепт Феникса помог. Штука, конечно, в том, что теперь на все-все ветки в конце придется ставить скрипт, выключающий режим фильма...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Neo
сообщение May 5 2006, 19:09
Сообщение #130



Иконки Групп

Класс: Пьяный Мастер
Характер: Lawful Good
Раса: Тварь
MySQL, PHP, JavaScript
Порядок Времени



Chimeric (IMG:style_emoticons/kolobok_light/wink3.gif) дык есть и стандартный скрипт запускаемый при завершении диалога, добавь еще и туда строчку
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 5 2006, 19:16
Сообщение #131


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Хм. Данную проблему решал давно и с успехом. Извиняюсь что так поздно заглянул в тему...
В каждом диалоге, создаешь служебную корневую строку В САМОМ ВЕРХУ. Она никогда не появится, но будет работать на нас. На нее вешаешь скрипт первый. Самое главное запомни, если на РС навешать функцию катсцены два раза или три то будут глюки. Это даже в комментах биовар есть. Второй скрипт вешаешь на строку в диалоге. Все.
NSS
//:://////////////////////////////////////////////
//:: Включаем РС режим катсцены
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 30.12.2005
//:://////////////////////////////////////////////

int StartingConditional()
{
    object oPC = GetPCSpeaker();
    object oSelf = OBJECT_SELF;
//-------------------------------------------------------
    if(GetCutsceneMode(oPC)==FALSE)
    {
      SetCutsceneMode(oPC, TRUE);
      AssignCommand(oSelf, ClearAllActions(TRUE));
      AssignCommand(oSelf, ActionStartConversation(oPC));
    }
    return FALSE;
}


NSS
//:://////////////////////////////////////////////
//:: Отключает РС режим катсцены
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 30.12.2005
//:://////////////////////////////////////////////

void main()
{
    object oPC = GetPCSpeaker();
    if(GetCutsceneMode(oPC)==TRUE)
    {
      SetCutsceneMode(oPC, FALSE);
    }
}


QUOTE(Chimeric @ May 5 2006, 21:45) [snapback]80877[/snapback]
выключающий режим фильма...

Проверь на хертбите НПС, если он разговаривает и с объектом РС, то ретурн. Если не разговаривает то катсцену удали у РС. Так в ПЛ было.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 5 2006, 21:46
Сообщение #132


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(Aiwan @ May 5 2006, 20:16) [snapback]80883[/snapback]
Проверь на хертбите НПС, если он разговаривает и с объектом РС, то ретурн. Если не разговаривает то катсцену удали у РС. Так в ПЛ было.

там было на хб модуля
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение May 5 2006, 22:05
Сообщение #133


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



А еще проще поставить Alternative Core и все глобальные события как на ладоне. (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 9 2006, 22:53
Сообщение #134


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



привет,
доскажите почему на определенной фразе разговора не запускается КатСцена?
Такая же как на первой страничке первая катСцена от Айвана..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 9 2006, 23:37
Сообщение #135


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



в режиме диалога катсцена не врубается, насколько я знаю. Надо до, или после.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

9 страниц V  « < 4 5 6 7 8 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 7th July 2025 - 12:08