Перейти к содержанию
Холод

Вопросница по квестостроению

Рекомендуемые сообщения

 

Данная тема посвящена вопросам касательно квестостроения (как технической части, так и "художественной").

Правила:

  • Стандартные правила сайта
  • Прежде чем задать вопрос, проверьте не задали ли его до вас и есть ли на него уже ответ
  • Если вы задали вопрос, но в итоге решили свою проблему сами, укажите своё решение (редактирование или цитата)
  • Старайтесь, как можно точнее описать проблему. Чем она точнее описана, тем быстрее вы получите ответ
  • Не забывайте благодарить за помощь, но только реакциями или сообщением в лс
Изменено пользователем Холод

spacer.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Здравствуйте, начал знакомиться с модингом на Зов Припяти. И вот вопрос:я хочу сделать такой квест в начале игры:приходишь на точку, запускается кат-сцена, и после неё нужно будет помочь отбиться от врага.

Я искал как сделать такой квест, но не нашёл.

Зарание спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala Тоже в моддинге новичок, и вот сам тут пытался разобраться с похожей идей. Если я правильно понял, то квесты и скрипты не связаны друг с другом напрямую. 

1. Делаешь скрипт точки, по которому запускается кат-сцена.

2. В скрипте кат-сцены прописываешь, что по завершению спавнишь нужных НПС.

3. После запускаешь скрипт, который выдает квест на нейтрализацию НПС.


Ссылочки:

Создание скриптовой сцены (читай, катсцены)

Создание квеста на убийство НПС

Полный разбор создания квестов и само квестостроение

 

Изменено пользователем karlZott

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

karlZott Спасибо за ответ. Но я уже другой проект делаю из-за творческих разногласий со сценаристом XD

Изменено пользователем Skala
  • Смех 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

наткнулся на книгу  47 инструментов сценариста

Цитата

какие инструменты вы найдете в книге:

Ложная завязка, темпо-ритм, смена жанра, тональность, обратный отсчет, катарсис, срезка, сюжетный поворот, "рыба на суше", нелинейное повествование, антигерой, Макгаффин, арка персонажа, Чеховское ружье, ложный след, подсюжет, отложенное событие, комическая разрядка и многие другие.


С примерами из известных фильмов и сериалов и рекомендациями по правильному использованию инструментов, с описаниями типичных ошибок начинающих авторов.

книга 41 мб пдф, может кому пригодится

 

  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

добрый день господа

 

решил я реализовать квест с Угрюмым и Ко как в билде 2232 (где они по деревне шастают и в итоге от контролёра на водонапорной башне погибали выстреливая себе в голову из пистолета)

так то всё работает, но есть одно но - после того, как банда доходит до водонапорки и появляется контролёр, они тупо стреляют куда попало из автоматов, а не садятся на корты и пистолеты к голове подносят (при убийстве ГГ контролёра бойцы как положено подыхают по скрипту, хотя должны сами себя из пистолетов застрелить, когда контролёр спавниться) 

вот логики контролёра и угрюмого с командойнастройка вай-поинтав конечной точке пути охотника (у всех троих он одинаков)

Спойлер

function mil_controller_dead (actor, npc)
    local h = hit ();
    h.power = 1000;
    h.direction = vector():set( 1, 0, 0 );
    h.impulse = 1;
    h.draftsman = npc;
    h.type = hit.strike;
    local hunter = level_object_by_sid (725)
    if hunter ~= nil and hunter:alive () == true then
       printf ("KILL STALKER : %s", hunter:name ()) 
       hunter:hit (h)
    end    
    hunter = level_object_by_sid (726)
    if hunter ~= nil and hunter:alive () == true then
       printf ("KILL STALKER : %s", hunter:name ()) 
       hunter:hit (h)
    end    
    hunter = level_object_by_sid (727)
    if hunter ~= nil and hunter:alive () == true then
       printf ("KILL STALKER : %s", hunter:name ()) 
       hunter:hit (h)
    end    
end

function mil_hunters_psi_hit (actor, npc)
    --if npc == nil then return end
    local c = level_object_by_sid (729)
    if c == nil then return end
    local h = hit ()
    h.power = 100
    h.direction = vector():set( 1, 0, 0 )
    h.impulse = 1
    h.draftsman = c
    h.type = hit.telepatic
    
    local hunter = level_object_by_sid (725)
    if hunter ~= nil and hunter:alive () == true then
       if hunter.psy_health > 0.08 then
          hunter:hit (h)
       end   
    end   
    
    hunter = level_object_by_sid (726)
    if hunter ~= nil and hunter:alive () == true then
       if hunter.psy_health > 0.08 then
          hunter:hit (h)
       end   
    end   

    hunter = level_object_by_sid (727)
    if hunter ~= nil and hunter:alive () == true then
       if hunter.psy_health > 0.08 then
          hunter:hit (h)
       end   
    end   
end

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Здравствуйте я начинающий мододел и решил по гайдам сделать первый квест, со старта игры выдается задание прийти на точку и все, квест выдается метка есть описание есть а вот задание не выполняется я так подозреваю что скорей всего я где то не тот символ прописал, сам искал, но так и не понял причину кто может подсказать или помочь. Если надо могу прислать все файлы.

Изменено пользователем balimovroman3@gmail.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

balimovroman3@gmail. Спросили, выкладывайте правки - кто сможет, тот поможет.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Помогите новичку, хотел создать квест на убийство сталкера, прописал сам квест, зарегистрировал инфо-поршни, написал логику нпс что бы после смерти выдавал инфо-поршень

логика:

[logic]
on_death = death

[death]
on_info = %+npc_kill_info_dead%

но ничего не происходит, инфо тупо не дается.

Что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
12 часов назад, saikkozz67013 сказал:

Помогите новичку, хотел создать квест на убийство сталкера, прописал сам квест, зарегистрировал инфо-поршни, написал логику нпс что бы после смерти выдавал инфо-поршень

логика:

[logic]
on_death = death

[death]
on_info = %+npc_kill_info_dead%

но ничего не происходит, инфо тупо не дается.

Что делать?

[logic]
active = nil

on_death = death

[death]
on_info = %+npc_kill_info_dead%

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

saikkozz67013 Можно прямо в секции сквада:

[npc_squad]:online_offline_group
npc = ...
on_death = %+npc_kill_info_dead%

 

Изменено пользователем denis2000
  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите пожалуйста, делаю спавн сквада на локации с одним НПС через смартерейн, что нужно прописать в самом скваде что бы он при спауне был мертвым? Или прописывать надо в логике?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Sovkastom Для этого есть функция spawn_corpse, применяется в логике рестриктора:

=spawn_corpse(sim_default_zombied_1:jup_b205_dead_zombie_01_way)

 

  • Хабар 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Спойлер

image.png.a447cc8417469ef1f22f5b3b4075fd2d.png

Спойлер

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = spawn_corpse(sim_default_zombied_1:esc_otrad_dead_1_smart_walker_1_walk)

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

Так же создал на всякий случай смарт террейн с именем esc_otrad_dead_1_smart и графпоинт к нему привязаный.

По итогу вылетает ссылаясь на неверную логику.

Тип рестриктора NONE default restirctor.

Хочу реализовать квест на поиск предмета, по задумке предмет будет у мертвого НПС. Прошу помощи, смотрел информацию на ютубе но подобного ничего нет.

Изменено пользователем Sovkastom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, Sovkastom сказал:

Прошу помощи, смотрел информацию на ютубе но подобного ничего нет.

Зачем искать в интернете? В оригинале таких трупов несколько штук!

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = sr_idle@nil %=spawn_corpse(esc_corps_qwest_item:esc_otrad_dead_1_smart_walker_1_walk)% 

[sr_idle@nil]

Где esc_corps_qwest_item - уникальный НПС с квестовым предметом в инвентаре, esc_otrad_dead_1_smart_walker_1_walk - имя пути из одной точки для спавна трупа, если путь из нескольких точек то в функцию можно передать индекс точки пути (по умолчанию это 0). Квестовы предмет обязательно вносите в список [keep_items] файла death_generic.ltx

Изменено пользователем denis2000
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, denis2000 сказал:

Зачем искать в интернете? В оригинале таких трупов несколько штук!


[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = sr_idle@nil %=spawn_corpse(esc_corps_qwest_item:esc_otrad_dead_1_smart_walker_1_walk)% 

[sr_idle@nil]

Где esc_corps_qwest_item - уникальный НПС с квестовым предметом в инвентаре, esc_otrad_dead_1_smart_walker_1_walk - имя пути из одной точки для спавна трупа, если путь из нескольких точек то в функцию можно передать индекс точки пути (по умолчанию это 0). Квестовы предмет обязательно вносите в список [keep_items] файла death_generic.ltx

Понял, усвоил, труп заспавнился, предмет в нем тоже, но теперь незадача, нужно получить инфопоршень при взятии предмета.

В тот же рестриктор дописал:

Спойлер

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = sr_idle@nil %=spawn_corpse(esc_frolov:esc_otrad_dead_1_smart_walker_1_walk)% 
on_info2 = {=have_item(esc_dead_otrad_racia)} nil %+esc_quest_dead_otrad_give%

[sr_idle@nil]

esc_dead_otrad_racia - это предмет

esc_quest_dead_otrad_give - это нужный мне инфопоршень для дальнейших действий, обновление квеста

При взятии предмета инфо не выдается.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
7 минут назад, Sovkastom сказал:

Понял, усвоил, труп заспавнился, предмет в нем тоже, но теперь незадача, нужно получить инфопоршень при взятии предмета.

В тот же рестриктор дописал:

  Попробовал так. (Скрыть контент)

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = sr_idle@nil %=spawn_corpse(esc_frolov:esc_otrad_dead_1_smart_walker_1_walk)% 
on_info2 = {=have_item(esc_dead_otrad_racia)} nil %+esc_quest_dead_otrad_give%

[sr_idle@nil]

esc_dead_otrad_racia - это предмет

esc_quest_dead_otrad_give - это нужный мне инфопоршень для дальнейших действий, обновление квеста

При взятии предмета инфо не выдается.

 

Смотри: у тебя в sr_idle@spawn есть 2 on_info, и оба переключают секцию при выполнении. Поэтому, когда срабатывает первый on_info - у тебя срабатывает переключение сразу в секцию sr_idle@nil + выполняются функции в процентах (спавн трупа). И после этого следующий апдейт логики - она уже на секции sr_idle@nil, и ей недоступны те on_info, которые были раньше.

Решение (точнее, одно из): сделай промежуточную секцию, например sr_idle@after_spawn. Первый on_info из sr_idle@spawn оставь как есть, только переключение сделай в новую секцию, а не в sr_idle@nil. А вот on_info2 перенеси в новую секцию, вместе с этим исправив её имя на просто on_info, иначе не будет работать.

Вообще, если узнать, что такое "машина состояний" (оно же FSM) - такой математический механизм - то очень легко понять, что логика в сталкере - это самый что не на есть FSM. Ну это так, лирическое отступление. Решение твоего вопроса выше.

Изменено пользователем Prostomod
  • Жму руку 1
  • Спасибо 1

Мод в разработке - X-7: Эпицентр
Дискорд мода - https://discord.gg/mpvs685UYN

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Prostomod сказал:

Смотри: у тебя в sr_idle@spawn есть 2 on_info, и оба переключают секцию при выполнении. Поэтому, когда срабатывает первый on_info - у тебя срабатывает переключение сразу в секцию sr_idle@nil + выполняются функции в процентах (спавн трупа). И после этого следующий апдейт логики - она уже на секции sr_idle@nil, и ей недоступны те on_info, которые были раньше.

Решение (точнее, одно из): сделай промежуточную секцию, например sr_idle@after_spawn. Первый on_info из sr_idle@spawn оставь как есть, только переключение сделай в новую секцию, а не в sr_idle@nil. А вот on_info2 перенеси в новую секцию, вместе с этим исправив её имя на просто on_info, иначе не будет работать.

Вообще, если узнать, что такое "машина состояний" (оно же FSM) - такой математический механизм - то очень легко понять, что логика в сталкере - это самый что не на есть FSM. Ну это так, лирическое отступление. Решение твоего вопроса выше.

Спойлер

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = %=spawn_corpse(esc_frolov:esc_otrad_dead_1_smart_walker_1_walk)% sr_idle@after_spawn

[sr_idle@after_spawn]
on_info = {=have_item(esc_dead_otrad_racia)} nil %+esc_quest_dead_otrad_give% sr_idle@nill

[sr_idle@nil]

В таком случае вылет в начале игры, а если вместе have_item поставить actor_has_item

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = %=spawn_corpse(esc_frolov:esc_otrad_dead_1_smart_walker_1_walk)% sr_idle@after_spawn

[sr_idle@after_spawn]
on_info = {=actor_has_item(esc_dead_otrad_racia)} nil %+esc_quest_dead_otrad_give% sr_idle@nill

[sr_idle@nil]


то при подборе предмета вылетает

 

По итогу работает, всем спасибо.

Спойлер

[logic]
active = sr_idle@spawn

[sr_idle@spawn]
on_info = %=spawn_corpse(esc_frolov:esc_otrad_dead_1_smart_walker_1_walk)% sr_idle@after_spawn

[sr_idle@after_spawn]
on_info = {=actor_has_item(esc_dead_otrad_racia)} %+esc_quest_dead_otrad_give% sr_idle@nill

[sr_idle@nill]

 

Изменено пользователем Sovkastom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования