Перейти к контенту

Создание квеста


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

 

 

Что нужно написать

Писать не надо, надо прочитать "Уроки по модостроению"(и "Справочник по ф-циям и классам" до кучи), там полно примеров и разъяснений...

Ссылка на комментарий


function complete_----_(first_speaker, second_speaker) -- получение предмета
dialogs.relocate_money(second_speaker, 1500, "in") 
end 
Вроде будет так, если не ошибся.)

Ссылка на комментарий
function название(first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "предмет","in")
end

Получение предмета через диалог.

function название(first_speaker, second_speaker)
    dialogs.relocate_money(second_speaker, 2000, "in")
end

Получение денег через диалог 2000 руб.

Изменено пользователем alkogolik
Ссылка на комментарий

Посоветуйте пожалуйста кто может.

Первый раз пишу стандартные квесты - пойди/принеси. Вроде бы все делаю правильно, по инструкции. Работает все как надо. Но вот маленькая неувязочка - куда вставляю последнюю функцию action - выдать награду, после той фразы остальной диалог прокручивается и окно диалога закрывается. В журнале ПДА все последующие фразы видны. Проблема не критичная, но хочется посмотреть в окне диалога награду, а ее не успеваешь увидеть - мелькает за секунду. Проверил оригинал ТЧ, там такая же беда, когда Волк выдает оружие, то окно диалога сразу же закрывается, не успеваешь в окне увидеть, что-же он тебе дал. Инфопоршн и сдача квестого предмета так себя не ведут, а вот выдача награды - да.  К чему-то выдача награды привязана с такими последствиями?

 

Может немного непонятно получилось? Вот диалог

 

    <dialog id="shilov_kvest_finish">
        <has_info>shilov_kvest_start</has_info>
        <dont_has_info>shilov_kvest_end</dont_has_info>
        <precondition>kramer_kvest.shilov_precond</precondition>
        <phrase_list>
            <phrase id="0">
                <text>shilov_kvest_5</text>
                <action>kramer_kvest.shilov_give_disk</action>
                <next>1</next>
            </phrase>
            <phrase id="1">
                <text>shilov_kvest_6</text>
                <give_info>shilov_kvest_end</give_info>
                <next>2</next>
            </phrase>
           <phrase id="2">
                <text>shilov_kvest_7</text>
                <action>kramer_kvest.shilov_reward</action>
                </phrase>
        </phrase_list>
    </dialog>


 

фраза 0 - "принес диск" (отдача), фраза 1 - "давай сюда", вот награда (задание окончено), фраза 2 - "спасибо", выдача награды. В таком порядке после "спасибо" награда мелькает в окне диалога, как в оригинале ТЧ с Волком. Когда я пытался функцию "выдача награды" передвигать в ранние фразы, то все равно происходило то же самое, даже спасибо не успевал сказать. А в в журнале ПДА это "спасибо", сказанное мной, было.

Изменено пользователем kramer
Ссылка на комментарий

@kramer, поменяй action'ы выдачи награды и закрытия диалога местами. Тогда первым делом закроется диалог, а потом появятся уведомления о полученных предметах.

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

Пробовал, вроде бы логично. Но эффект такой же, только еще и функция об окончании задания не срабатывает. По этим трем фразам я эти три функции туда обратно гонял множество раз, в разных комбинациях. Постоянным остается только реакция окна диалога на функцию награды - закрывается :)

Пробовал и еще инфопоршн добавлять в конце, добавляя пару фраз диалога, чтобы удержать окно открытым. Не помогает.

 

 

 

11687332.jpg

 

 

Вот так могу удержать окно открытым. Если вместо предыдущих дву функций (которые на скрине) добавлять или менять местами с наградой - проскакивает.


 

P.S.

Приношу свои извинения за перевод байтов. Если можно стереть мои предыдущие посты по надуманной проблеме, то было бы неплохо. Оказывается, в момент получения награды (пистолета) пистолетный слот был пуст, поэтому при отработке функции "награда", ГГ сразу выхватывал пистолет и выбрасывал из окошка диалога. Убрав пистолет из награды, проблема исчезла.
Еще раз извиняюсь...

Изменено пользователем kramer
  • Нравится 1
Ссылка на комментарий

Здравствуйте ВАМ. Нужна помощь.

Создал квест. Главный вояка на кордоне дал задание выполнять приказы командира агропрома. Командир агропрома дает задание свое. Как сделать активным квест ком. агропрома, т.к. активным светится задание командира кордона?

 

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

Ссылка на комментарий

 

 

Эммм, если я правильно понял вопрос, то тебе надо смотреть в сторону тега "prio"(от слова "приоритет") в конфигах заданий. Я об этом:

<game_task id="val_come_to_trader" prio="395">
    <title>val_come_to_trader_1</title>
    <objective key="0">
    ................
....................
При выдаче задания, если у него будет "prio" выше чем у остальных, ранее выданных, то это задание станет активным.
Ссылка на комментарий

Здравствуйте ВАМ. Разобрался с приоритетами.

Чем меньше цифра, тем выше приоритет квеста. Короче, прио =5 отходит на потом если другой квест имеет прио=1. Может кому то пригодится.

 

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

Ссылка на комментарий

Кто подскажет в чем фигня? Я после взятия квеста, отношу предмет Бармену, но задание не обновляется, как исправить?

 

<game_task id="walk_to_barmen_quest">

<title>Посыльный</title>

<objective>

                       <text>Передать флеш-диск</text>

                       <icon height="50" width="50" x="100" y="50">ui\ui_icons_task</icon>

                <infoportion_set_complete>quest_walktobarman_done</infoportion_set_complete>

                </objective>

                <objective>

                       <text>Передать Бармену флешку</text>

                       <map_location_type hint="bar_barman">blue_location</map_location_type>

                       <object_story_id>bar_Barman</object_story_id>

                <infoportion_complete>quest_walktobarman_one</infoportion_complete>

                </objective>

                <objective>

                       <text>Принести документ Сидоровичу</text>

                       <map_location_type hint="escape_trader">blue_location</map_location_type>

                       <object_story_id>Escape_Trader</object_story_id>

                <infoportion_complete>quest_walktobarman_done</infoportion_complete>

                </objective>

        </game_task>

 

В info_l01escape вот эти инфопоршни

 

 

        <info_portion id="quest_walktobarman_started">

                <task>walk_to_barmen_quest</task>

        </info_portion>

        <info_portion id="quest_walktobarman_one"></info_portion>

        <info_portion id="quest_walktobarman_done"></info_portion>

 

вот Диалог Сидора

 

 

    <dialog id="walk_to_barman">

        <has_info>tutorial_end</has_info>

        <dont_has_info>quest_walktobarman_started</dont_has_info>

        <phrase_list>

            <phrase id="5">

                <text>walk_to_barman_5</text>

            </phrase>

            <phrase id="1">

                <text>walk_to_barman_1</text>

                <next>2</next>

            </phrase>

            <phrase id="2">

                <text>walk_to_barman_2</text>

                <next>3</next>

            </phrase>

            <phrase id="3">

                <text>walk_to_barman_3</text>

                <next>4</next>

                <next>5</next>

            </phrase>

            <phrase id="0">

                <text>walk_to_barman_0</text>

                <next>1</next>

            </phrase>

            <phrase id="4">

                <text>walk_to_barman_4</text>

                <give_info>quest_walktobarman_started</give_info>

                <next>6</next>

            </phrase>

            <phrase id="6">

                <text>walk_to_barman_6</text>

                <action>quest_escape.quest_flash_walktobarman</action>

            </phrase>

        </phrase_list>

    </dialog>

    <dialog id="walk_to_barman_done">

        <has_info>quest_walktobarman_one</has_info>

        <dont_has_info>quest_walktobarman_done</dont_has_info>

        <phrase_list>

            <phrase id="7">

                <text>walk_to_barman_done_7</text>

                <next>8</next>

            </phrase>

            <phrase id="8">

                <text>walk_to_barman_done_8</text>

            </phrase>

            <phrase id="5">

                <text>walk_to_barman_done_5</text>

                <next>6</next>

            </phrase>

            <phrase id="1">

                <text>walk_to_barman_done_1</text>

                <next>2</next>

            </phrase>

            <phrase id="2">

                <text>walk_to_barman_done_2</text>

                <next>3</next>

            </phrase>

            <phrase id="3">

                <text>walk_to_barman_done_3</text>

                <next>4</next>

            </phrase>

            <phrase id="0">

                <text>walk_to_barman_done_0</text>

                <next>1</next>

            </phrase>

            <phrase id="6">

                <text>walk_to_barman_done_6</text>

                <next>7</next>

            </phrase>

            <phrase id="4">

                <text>walk_to_barman_done_4</text>

                <action>quest_escape.quest_doc_walktobarman_dat_item</action>

                <give_info>quest_walktobarman_done</give_info>

                <next>5</next>

            </phrase>

        </phrase_list>

    </dialog>

 

 

 

И Бармена

 

    <dialog id="bar_quest_walk_to_barmen_one">

        <has_info>quest_walktobarman_started</has_info>

        <dont_has_info>quest_walktobarman_one</dont_has_info>

        <phrase_list>

            <phrase id="2">

                <text>bar_quest_walk_to_barmen_one_2</text>

                <next>3</next>

            </phrase>

            <phrase id="1">

                <text>bar_quest_walk_to_barmen_one_1</text>

                <next>2</next>

            </phrase>

            <phrase id="3">

                <text>bar_quest_walk_to_barmen_one_3</text>

                <action>quest_escape.quest_doc_walktobarman</action>

                <next>4</next>

            </phrase>

            <phrase id="0">

                <text>bar_quest_walk_to_barmen_one_0</text>

                <action>quest_escape.quest_flash_walktobarman_dat_item</action>

                <give_info>quest_walktobarman_one</give_info>

                <next>1</next>

            </phrase>

            <phrase id="4">

                <text>bar_quest_walk_to_barmen_one_4</text>

            </phrase>

        </phrase_list>

    </dialog>

 

Изменено пользователем Kirgudu
Добавлено Kirgudu,

Пункты 2.4 и 2.9 правил форума, строгое предупреждение.

Ссылка на комментарий

@QuestRider, замени в верхнем блоке таска

<infoportion_set_complete>quest_walktobarman_done</infoportion_set_complete>
на

<infoportion_complete>quest_walktobarman_done</infoportion_complete>

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Парни, подайте идей для квестов.

Квестодатель: Ридер 

  Группировка: Долг

  Месторасположение: Кордон

Любые квесты, но первые на кордоне.


Вот история:

 

Меченный, я прав? Ну ладно расскажу мою историю... Я долговец, тоесть был им, на Армейских складах я со своим отрядом нарвался на мутантов, их вроде кровососами называют, мы их перестреляли, благо без потер обошлось. Но около водонопорной башни увидели наймов, они явно кого-то выссматривали, ну и нас заметили. Ну, короче я остался без отряда и пошел к начальству говорить, что миссию не смог выполнить, а когда двигался в сторону бара, нарвался на телепорт, представляешь впервые увидел телепорт в зоне, около забора был. Ну после вспышки я оказался на кордоне, ну и решил тут остатся.

 


Вот квест, правильно ли все написал?

Скрипты:

 

function add_dolg ()

alife():create("esc_quest_rider",vector():set(-192.22,-17.96,-137.801),244704,111)
end
 
function artefact_mayatnik_have()
    if db.actor:object("af_medusa") then
        return true
    end
    return false
end
 
function artefact_mayatnik_give(first_speaker, second_speaker)
    dialogs.relocate_item_section(second_speaker, "af_medusa", "out")

end

 

Песронаж:

 

character_desc_escape

<!---------------------------------------esc_quest_rider----------------------------------------------------->
<specific_character id="esc_quest_rider" team_default = "1">
<name>esc_quest_rider_name</name>
<icon>ui_npc_u_stalker_do_antigas</icon>
<bio>esc_fanat_bio</bio>
 
<class>esc_rider</class>
<community>dolg</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>678</rank>
<reputation>10</reputation>
<money min="12000" max="20000" infinitive="0"/>
 
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>
<panic_treshold>0</panic_treshold>
 
<visual>actors\dolg\stalker_do_antigas</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
wpn_ak74 \n
ammo_5.45x39_fmj \n
</supplies>
 
#include "gameplay\character_criticals_4.xml"
 
<start_dialog>escape_quest_rider_startdialog</start_dialog>
<start_dialog>dm_hello_dialog</start_dialog>
<actor_dialog>dm_cool_info_dialog</actor_dialog>
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog>
<actor_dialog>quest_ot_ridera_let1</actor_dialog>
<actor_dialog>quest_ot_ridera_let1_done</actor_dialog>

</specific_character>

npc_profile

<character id="esc_quest_rider">
<class>esc_rider</class>

</character>

spawn_section

[esc_quest_rider]:stalker

$spawn =  "respawn\esc_quest_rider"
character_profile = esc_quest_rider
spec_rank = veteran
community = dolg

custom_data = scripts\esc_questriders_log.ltx

Логика в esc_questriders_log 

[logic]

active = remark@base
danger = danger_condition
meet = meet
 
[remark@base]
anim = wait
no_move = true
target = nil 
meet = meet
 
[meet]
meet_state = 10|hello@hail| 10|wait@wait
meet_state_wpn = 10| hello@talk_hello| 10| threat@threat_weap
victim_wpn = 5|actor
use = true

use_wpn = false

 

Квест

 

tasks_escape.ltx

<game_task id="quest_mayatnik_on_ac">
<title>quest_mayatnik</title>
<objective>
<icon>ui_iconsTotal_tutorial_find_artefact</icon>
<article>find_artefact_mayatnik</article>
<infoportion_complete>esc_quest_for_AC_done</infoportion_complete>
</objective>
<objective>
<text>finded_artefact_mayatnik</text>
<function_complete>escape.artefact_mayatnik_have</function_complete>
<infoportion_complete>esc_quest_for_AC_have</infoportion_complete>
<infoportion_set_complete>esc_quest_for_AC_have</infoportion_set_complete>
</objective>
<objective>
<text>finded_artefact_mayatnik_1</text>
<infoportion_complete>esc_quest_for_AC_done</infoportion_complete>
</objective>

</game_task>

Диалоги

    <dialog id="quest_ot_ridera_let1">

        <has_info>startdialog_with_rider</has_info>
        <dont_has_info>esc_quest_for_AC</dont_has_info>
        <phrase_list>
            <phrase id="1">
                <text>quest_ot_ridera_let1_1</text>
                <next>2</next>
            </phrase>
            <phrase id="2">
                <text>quest_ot_ridera_let1_2</text>
                <next>3</next>
            </phrase>
            <phrase id="3">
                <text>quest_ot_ridera_let1_3</text>
                <next>4</next>
            </phrase>
            <phrase id="4">
                <text>quest_ot_ridera_let1_4</text>
                <next>5</next>
            </phrase>
            <phrase id="5">
                <text>quest_ot_ridera_let1_5</text>
                <next>6</next>
            </phrase>
            <phrase id="6">
                <text>quest_ot_ridera_let1_6</text>
                <give_info>esc_quest_for_AC</give_info>
            </phrase>
            <phrase id="0">
                <text>quest_ot_ridera_let1_0</text>
                <next>1</next>
            </phrase>
        </phrase_list>
    </dialog>
    <dialog id="quest_ot_ridera_let1_done">
        <has_info>esc_quest_for_AC_have</has_info>
        <dont_has_info>esc_quest_for_AC_done</dont_has_info>
        <phrase_list>
            <phrase id="4">
                <text>quest_ot_ridera_let1_done_4</text>
            </phrase>
            <phrase id="1">
                <text>quest_ot_ridera_let1_done_1</text>
                <next>2</next>
            </phrase>
            <phrase id="0">
                <text>quest_ot_ridera_let1_done_0</text>
                <next>1</next>
            </phrase>
            <phrase id="3">
                <text>quest_ot_ridera_let1_done_3</text>
                <next>4</next>
            </phrase>
            <phrase id="2">
                <text>quest_ot_ridera_let1_done_2</text>
                <action>escape.artefact_mayatnik_give</action>
                <give_info>esc_quest_for_AC_done</give_info>
                <next>3</next>
            </phrase>
        </phrase_list>

    </dialog>

 

И инфопоршни

 

 

<info_portion id="esc_quest_for_AC">
   <task>quest_mayatnik_on_ac</task>
</info_portion>
<info_portion id="esc_quest_for_AC_have"></info_portion>
<info_portion id="esc_quest_for_AC_done"></info_portion>

Изменено пользователем QuestRider
  • Нравится 1
Ссылка на комментарий

@QuestRider, долговец или должен стремиться вернуться в группировку, или стать одиночкой. Как вариант, первый квест должен быть типа  "я ранен, не могу вернуться к долгу, принеси аптечек", или "у меня сломан КПК, не могу связаться с долгом, будешь проходить мимо бара, передай от меня весточку" а в ответку будет задание отнести новый КПК и помочь вернуться, на эту ветку можно легко навесить еще несколько побочных "сбегай принеси".


@QuestRider, если хочешь больше приключений, то сначала "принеси аптеку, оружие просеял и патроны кончились, потом "чет я притомился от этой долговской дисциплины, вот говорят в ТД лафа", а ГГ "да не вопрос, я слетаю разузнаю чо как", общается со специально созданным бандюком, который враг, но можно поговорить, Боров через него передает запрос на ништяки, ГГ летит к долговцу, тот дает наводку на нычку с ништяками, Боров разрешает придти, но у долговца КПК сломан и невозможно перепрописать группировку (или даже "как вовремя КПК сломался, хочу начать все с нуля", ГГ летит к Сидору просить КПК, тот или посылает,  или совсем посылает, потом ГГ с бывшим долговцем приходят в ТД, а Боров или передумал, или хочет больше; долговец "Ну йо, чувак, ну нафиг, хочу к свободе", ГГ летит к Лукашу...

Ссылка на комментарий

Терзают меня смутные сомненья, прав я или неправ написав в данную тему по поводу квестов. Но сделав шаг, делай второй. Погнали.

Есть во многих модах потребность в ключевых НПС и есть моменты когда эти НПСы мрут по разным не зависящим от нас причинам, тем самым устраивая нам затык в прохождении мода, либо квеста. Так вот эти причины можно исправить, т.е. например грозит опасность "ключу" , Гг получает СМСку " Сталкеру Петрову грозит опасность, осталось жить 25 минут" и вперёд ноги в руки помогать, выручать, лечить, кормить, отстреливать мутиков, наймов, гопарей, снимать с дерева и т.д. Тебе "ключ" нужен, ты и заботится должен о нём, хотя бы на соседних локах. Даже если ты с перегрузом, сам погибай (сбрасывай хабар) , а товарища выручай. Возможно применить таймер. 

Берегите патроны, особенно если он последний.

 

%D1%82%D0%B5%D0%BD%D1%8C121.gif

Ссылка на комментарий

@тень121, и сам потом играть будешь в этот мод. Квесты не должен игрок контролировать, тем более с таймером. Согласен когда ты нажал кнопку взрывателя и надо убежать за 1 минуту, то да. Квесты не должны принуждать игрока к их строгой последовательности. Я считаю, что квесты должны базироваться на фриплее - хочешь выполняй, хочешь нет. А что бы неписи не дохли квестовые, то их надо обезопасить, например зоной как на Скадовске  или бессмертием.

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

 

 

зоной как на Скадовске  или бессмертием.

Позволь не согласиться. Давай Кузнецова с Кардона, Адреналина с Агры и т.д. запрём в резервацию на Свалке, что бы ближе к ним бегать было. С уважением отношусь к ветеранам модостроя, но дружище, тебя сами модеры порвут за такую глупость.  Бессмерные, да один из вариаетов, но не айс, теряем возможность приклеить им квестовую составляющую. 

А вот это

 

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

 

 

и сам потом играть будешь в этот мод

С удовольствием, для меня сюжетники это основа. Например сейчас прохожу новую Соль. Я далёк от той мысли что ты за "пятиминутные" модики, коих развелось как блох на собаке.


@Дизель

Мы с тобой в один день регались. Да бываю же такие совпадения.

Берегите патроны, особенно если он последний.

 

%D1%82%D0%B5%D0%BD%D1%8C121.gif

Ссылка на комментарий

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

Такие моменты должен предусмотреть тот, кто пишет сюжет. Почему игрок должен париться из-за того, что разработчику было лень проработать все возможнве варианты развития событий? Если в игре ГГ - нянькa, которая обязана заботиться о всех подряд, то это уже не игра, а детский сад какой-то.

Я так думаю, по крайней мере. Может, кому-то роль "няньки" и нравится.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

@naxac

Квест (англ. quest), или приключенческая игра (англ. adventure game) — один из основных жанров компьютерных игр, представляющий собой интерактивную историю с главным героем, управляемым игроком. Важнейшими элементами игры в жанре квеста являются собственно повествование и обследование мира, а

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

 


Фриплей не для всех, таких модов несколько. Хотя всё верно на вкус и цвет все фломастеры разные.

  • Согласен 2

Берегите патроны, особенно если он последний.

 

%D1%82%D0%B5%D0%BD%D1%8C121.gif

Ссылка на комментарий

 

 

Если в игре ГГ - нянькa, которая обязана заботиться о всех подряд, то это уже не игра, а детский сад какой-то.
Хорошая формулировка. Точная. На мой взгляд квесты должны быть как-бы ненавязчивыми и свободными. ГГ же не срочник второго месяца, чтоб метаться по зоне как по команде. Да и квести типа принеси/убей без доп. составляющей (как обычно в модах) отбивают всякое желание играть дальше. Можно же заполнить его так, чтобы это была какая-то маленькая история с какой-то интригой, чтоб не просто пошел стрельнул и пришел, а надо и голову поломать, и поднапрчься, и еще даполнительную вводную в процессе получить. И главное -  квесты не должны повторяться.  Нет никакого интереса пойти три раза подряд принести тр разныых пушки, валяющихся в разных местах зоны, по 500 р за ходку.  Тут и должен поработать сценарист,  чтоб не просто например, пойти взять, но и найти надо, и головой поработать. Например, ствол уникальный, известно только в какой области он может быть. А там и все остальное, вплоть до того, что он в инвентаре у какого-нибудь непися. И с риском того, что в случае если непись сгинет и не найдешь ничего. Ну и награда сообветствующая. И квест не должен выполнятья  за 5 мин. игрового времени, 4 из готорых ГГ тратит на путь туда и обратно. 
  • Согласен 2
post-40027-0-15078000-1478698172_thumb.jpg

 

Deader.gif

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
×
×
  • Создать...