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

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


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

Вопрос - как зделать так, чтоб диалог активировался только при наличии предмета?
В скрипте делаешь функцию, проверяющую наличие и в диалоге ставишь precondition. Допустим, есть скрипт wawka_dialog, в нём функция:

function chemodan_have(first_speaker, second_speaker)
      return first_speaker:object("chemodan") ~= nil
end

Где - chemodan - нужный предмет. Тогда в диалоге этот прекондишн будет выглядеть:

    <precondition>wawka_dialog.chemodan_have</precondition>

Вставляй его в самое начало (для примера - кусок диалога):

<dialog id="chemodan_dialog">
    <precondition>wawka_dialog.chemodan_have</precondition>
    <phrase_list>
        <phrase id="0">
            <text>chemodan_dialog_0</text>
            <next>1</next>
        </phrase>

Геныч, для этого нужно создать task - как пример, загляни в game_task.xml. Строки, которые отвечают за отметку:

            <map_location_type hint="Волк">blue_location</map_location_type>
            <object_story_id>Escape_novice_lager_volk</object_story_id>

В первой - пишешь имя\название, во второй имя объекта из all.spawnа или файла game_story_ids.ltx blue_location - значит, что отметка будет бледно голубой, green_location - зелёной.

Геныч, по поводу вопроса в "Ковыряемся", загляни в xr_effects.script (чтоб сон сделать), а чтоб его активировать и чтоб заставить непися стоять на месте, почитай Wiki, статьи "настройка логики". Так долго объяснять - но нужно для непися создавать логику, да и для активации сна при нажатии на ворота, нужно редактировать логику этих ворот. Сон, ролик - разницы никакой.

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

WAWKA, спасибо

Еще вопрос - как (через action, чтоли?) сделать, ну например когда диалог заканчивается игроку дали деньги (например, 1) и забрали предмет (например, чемодан)

на примере этого диалога (тоисть - проверяем наличие предмета, после забераем предмет и даем деньги)

<dialog id="chemodan_dialog">

<precondition>wawka_dialog.chemodan_have</precondition>

<phrase_list>

<phrase id="0">

<text>chemodan_dialog_0</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>chemodan_dialog_1</text>

</phrase>

</phrase_list>

The srp 0.3 is a lie! The AMK 2.0 is a lie!

In NLC 6.0 we trust

Ссылка на комментарий
как создать непися и заспавнить?
Вот пример самого простого и на тот же момент, правильного спавна (ну на мой взгляд из всех вариантов спавна через скрипт). Здесь заспавнится обычный сталкер новичок, секцию которого взял из spawn_sections.ltx. Заспавнится он как раз в домике на болоте:

function spawn_npc() 
local obj=alife():create("esc_stalker_respawn_1",vector():set(101.435539245605,-8.38547039031982,164.284591674805),396523,1643)
local params=amk.read_stalker_params(obj)
params.custom="[logic]\ncfg = scripts\\mil_npc.ltx"
amk.write_stalker_params(params,obj)
end

Добавляй её куда-нибудь в диалог, в виде <action>имя_скрипта.spawn_npc</action> и всё.

Но сначала, создай файл логики (здесь, как пример, файл mil_npc.ltx, который находится в gamedata\config\scripts\) и заполни его нужной тебе логикой (Wiki, Настройка логики, ч.1). Как самый простой пример:

[logic]
active = walker

[walker]
path_walk = mil_zomb_stalker_walk1
path_look = mil_zomb_stalker_look1

mil_zomb_stalker_walk1 и mil_zomb_stalker_look1 - это пути сумасшедшего сталкера (взял из алл.спавна),который в доме на болоте тусуется. То есть, это готовый, работающий пример - только для полного счастья, доработать надо - а именно, доделать логику (поставить игнорирование врагов, дополнительные пути, диалог, фразы приветствия и т.п.), ну и профиль создать отдельный для непися.

БоБеР, да, через action - для примера функции сдачи\получения денег, загляни в любой *_dialog скрипт (к примеру, в escape_dialog.script)

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

WAWKA, посмотрел escape_dialog.script

написал в например в том же wawka_dialog.script

 

function otday_chemodan (first_speaker, second_speaker)

dialogs.relocate_item_section(second_speaker, "chemodan", "out")

end

 

function dengi_chemodan(first_speaker, second_speaker)

dialogs.relocate_money(second_speaker, 3000, "in")

end

 

так как нужно в соответствии с этим екшн написать чтоб забрал итем дал деньги (так понимаю - какие 2 екшна)

 

<dialog id="chemodan_dialog">

<precondition>wawka_dialog.chemodan_have</precondition>

<phrase_list>

<phrase id="0">

<text>chemodan_dialog_0</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>chemodan_dialog_1</text>

<action>???</action>

<action>???</action>

</phrase>

</phrase_list>

The srp 0.3 is a lie! The AMK 2.0 is a lie!

In NLC 6.0 we trust

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

БоБеР:

<action>имя_скрипта.otday_chemodan</action>
<action>имя_скрипта.dengi_chemodan</action>

Только вот я не знаю, эти экшены вешать надо на строку ответа ГГ или на строку ответа непися-квестодателя (и туда и туда попробуй).

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

Еще когда в ТЧ играл с разными модами, была мысль насчет нелинейного квеста на базе квеста "убить сталкера". Допустим, нпс дает контракт, я его принимаю, но здесь неплохо бы ввести свободу выбора, например подойти к заказаному, сказать так мол и так (первое задание автоматически провалено с изменением репы, а то и статуса перед заказчиком), с последующим получением в знак благодарности денег или хабара, либо глобальным изменением репы у группировки заказанного с вытекающими, которые тоже можно придумать. Такое технически возможно?

Ссылка на рабочий acdc и сочинение на тему "Как я распаковал оллспавн"
Ссылка на комментарий

Expression : start_node && path

Function : CXml::NavigateToNode

File : D:\xray-svn\xrXMLParser\xrXMLParser.cpp

Line : 97

Description : NavigateToNode failed in XML file

Arguments : gameplay\game_tasks.xml

 

пытался реализовать в игре тот квест, что на Wiki описан - сделал всё как там описано и при попытке поговорить с Сидоровичем происходит вылет!что делать :dash2:?

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

Даров всем. Извините за тупой вопрос: как сделать в диалоге у Бармена(новый диалог) пронумерованный список,скажем так "услуг",чтобы они отображались столбцом, а не в строчку,например:

1.А

2.Б и т.д. Всё уже перепробовал,всё равно отображает одной строкой...

Ссылка на комментарий
Даров всем. Извините за тупой вопрос: как сделать в диалоге у Бармена(новый диалог) пронумерованный список,скажем так "услуг",чтобы они отображались столбцом, а не в строчку,например:

1.А

2.Б и т.д. Всё уже перепробовал,всё равно отображает одной строкой...

Вот это вставляешь перед строкой, которую надо перенести и она начнется с другой строки

 

\n

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

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

Пробую создать простой диалог на обмен вещей. Вот функция на проверку наличия в созданом мной weapons_barter:

 

 

function_have_af_baloon ()

 

 

return weapons_barter. have_item_namber ("af_baloon",1) ~= false

 

 

end

 

 

Вылет:

 

 

Argument: ... scripts/weapons_barter. script: 6: attempt to call field 'have_item_namber' (a nil value)

 

 

Грамматических ошибок в скрипте нет, посмотрел у других - все пользуются этой функцией.

 

 

С ошибкой справился, скопировав часть чужого скрипта, но понимания то не прибавилось. Так что если кто то сможет, обьясните, отчего она возникала.

Изменено пользователем Stalker1977
Ссылка на рабочий acdc и сочинение на тему "Как я распаковал оллспавн"
Ссылка на комментарий
Доброго всем... Какую функцию использовать для воспроизведения звук. файла при каком либо действии?

-- Звуковое сопровождение

local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\human_03\stalker\talk\leave\leave_5]])

snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

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

Подскажите функцию на проверку у гг нужного кол-ва патронов. Вставляю в стандартный ammo_5.45, вылет без определенного лога, проверка выдает ошибку что то вроде .45 скриптом не распознается, и ругается на то, что количество я определяю как ,5 т.е. пять коробок. Со скриптами это первые опыты.

Ссылка на рабочий acdc и сочинение на тему "Как я распаковал оллспавн"
Ссылка на комментарий

Есть ли какой скрипт чтоль, чтоб ГГ после диалога (ну или посое выбора строки) вылечивался?

The srp 0.3 is a lie! The AMK 2.0 is a lie!

In NLC 6.0 we trust

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

Здрасте всем. Никак не могу понять как надо прописывать чтобы после не большого диалога у ГГ появился какой либо предмет?

допустим пример такоц:

- Слушай, Сидорович а где моя бутылка водки?

- Водка? А ну да - водка. Вот она держи.

P.S. Стоит у меня мод АМК 1.4.1

Ссылка на комментарий
Здрасте всем. Никак не могу понять как надо прописывать чтобы после не большого диалога у ГГ появился какой либо предмет?

допустим пример такоц:

- Слушай, Сидорович а где моя бутылка водки?

- Водка? А ну да - водка. Вот она держи.

P.S. Стоит у меня мод АМК 1.4.1

Надо после разговора активировать вот такую функцию:

 

function esc_kostya_ammo()

local obj = alife():create("ammo_12x70_buck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

end

 

И тогда у ГГ в рюкзаке появится то, что ты пропишешь.

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

Ссылка на комментарий
Надо после разговора активировать вот такую функцию:

 

function esc_kostya_ammo()

local obj = alife():create("ammo_12x70_buck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

end

 

И тогда у ГГ в рюкзаке появится то, что ты пропишешь.

 

А для этой функции нужно создавать новый скриптовый файл или можно его вставить, то в какой?

Ссылка на комментарий
А для этой функции нужно создавать новый скриптовый файл или можно его вставить, то в какой?

Скрипты можно вставлять в любой скриптовый файл. Главное потом ссылку на него дать. Но можешь и свой создать. Его нигде прописывать не придется. Создаешь файл название.script в папке gamedata/scripts. И пишешь в него свои функции. А потом по ссылкам задействуешь их.

Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет!

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

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

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

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

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

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

Войти

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

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...