CoP. Создание квеста — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CoP. Создание квеста — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Разбираем параметры)
(Практика)
Строка 1: Строка 1:
 
MtMHql  <a href="http://ndjwhvhtidxp.com/">ndjwhvhtidxp</a>, [url=http://konxvktntrik.com/]konxvktntrik[/url], [link=http://dmhsojisggfb.com/]dmhsojisggfb[/link], http://fqfdqyinmoxs.com/
 
MtMHql  <a href="http://ndjwhvhtidxp.com/">ndjwhvhtidxp</a>, [url=http://konxvktntrik.com/]konxvktntrik[/url], [link=http://dmhsojisggfb.com/]dmhsojisggfb[/link], http://fqfdqyinmoxs.com/
  
=== Практика ===
+
comment4,
 
+
'''Используемые файлы:'''
+
 
+
*'''configs\gameplay\dialogs_zaton.xml'''
+
*'''configs\gameplay\info_zaton.xml'''
+
*'''configs\gameplay\character_desc_zaton.xml'''
+
*'''configs\text\rus\st_quests_zaton.xml'''
+
*'''configs\misc\tm_zaton.ltx'''
+
*'''scripts\dialogs_zaton.script'''
+
 
+
Открываем файл '''dialogs_zaton.xml''' и добавляем перед '''</game_dialogs>''':
+
 
+
<xml>
+
<dialog id="vodka_quest_dialog">
+
<dont_has_info>quest_vodka_done</dont_has_info>
+
<dont_has_info>quest_vodka_give</dont_has_info>
+
<phrase_list>
+
    <phrase id="1">
+
        <text>Принеси бутылочку</text>
+
        <give_info>quest_vodka_give</give_info>
+
        <action>dialogs_zaton.give_vodka_quest</action>
+
    </phrase>
+
    <phrase id="0">
+
        <text>Привет, тебе водки не принести?</text>
+
        <next>1</next>
+
    </phrase>
+
</phrase_list>
+
</dialog>
+
 
+
<dialog id="vodka_quest_prines">
+
<has_info>quest_vodka_give</has_info>
+
<precondition>dialogs_zaton.is_has_vodka_borode</precondition>
+
<phrase_list>
+
    <phrase id="1">
+
        <text>Спасибо, чувак. Выручил</text>
+
        <give_info>quest_vodka_done</give_info>
+
    </phrase>
+
    <phrase id="0">
+
        <has_info>quest_has_vodka</has_info>
+
        <text>Вот твоя водяра</text>
+
        <action>dialogs_zaton.transfer_vodka_to_boroda</action>
+
        <next>1</next>
+
    </phrase>
+
</phrase_list>
+
</dialog>
+
</xml>
+
 
+
Далее добавляем наши диалоги Бороде.<br/>
+
Открываем файл '''character_desc_zaton.xml'''<br/>
+
Находим строчку '''<actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog>''' и под ней пишем:
+
 
+
<xml>
+
<actor_dialog>vodka_quest_dialog</actor_dialog>
+
<actor_dialog>vodka_quest_prines</actor_dialog>
+
</xml>
+
 
+
Сохраняем.
+
 
+
Открываем файл '''info_zaton.xml''' и добавляем перед '''</game_information_portions>:'''
+
 
+
<xml>
+
    <info_portion id="quest_vodka_give"></info_portion>
+
    <info_portion id="quest_has_vodka"></info_portion>
+
    <info_portion id="quest_vodka_done"></info_portion>
+
</xml>
+
 
+
Открываем файл '''dialogs_zaton.script''' и в начало записываем:
+
 
+
<lua>
+
function give_vodka_quest()
+
  task_manager.get_task_manager():give_task("quest_vodka_give")
+
end
+
function is_has_vodka_borode()
+
    if db.actor:object("vodka") then
+
        return true
+
    end
+
    return false
+
end
+
function transfer_vodka_to_boroda(first_speaker, second_speaker)
+
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka")
+
end
+
</lua>
+
 
+
Сохраняем.
+
 
+
Открываем файл '''tm_zaton.ltx''' и в конец пишем:
+
 
+
<ini>
+
[quest_vodka_give]
+
icon = ui_inGame2_Put_v_pripyat
+
prior = 2
+
storyline = false
+
title = {=actor_has_item(vodka)}vodka_barmen_prinesti_name, vodka_barmen_naiti_name
+
descr = vodka_barmen_descr
+
target = {=actor_has_item(vodka)}zat_a2_stalker_barmen
+
condlist_0 = {+quest_vodka_done} complete
+
</ini>
+
 
+
Открываем файл '''st_quests_zaton.xml''' и добавляем после '''<string_table>''':
+
 
+
<xml>
+
<string id="vodka_barmen_naiti_name">
+
    <text>Найти водку для бармена</text>
+
</string>
+
<string id="vodka_barmen_prinesti_name">
+
    <text>Принести водку бармену</text>
+
</string>
+
<string id="vodka_barmen_descr">
+
    <text>Бармен в тестовых целях попросил найти и принести ему 2 бутылки водки</text>
+
</string>
+
</xml>
+
 
+
Сохраняем.
+
 
+
Автор: '''XMK'''
+
[http://ars-team.ru/index.php?autocom=ibwiki&cmd=article&id=5 Источник]
+
 
+
  
 
=== Примечания ===
 
=== Примечания ===

Версия 10:43, 20 мая 2011

MtMHql <a href="http://ndjwhvhtidxp.com/">ndjwhvhtidxp</a>, [url=http://konxvktntrik.com/]konxvktntrik[/url], [link=http://dmhsojisggfb.com/]dmhsojisggfb[/link], http://fqfdqyinmoxs.com/

comment4,

Примечания

От участника THE_ATLAS

Примечание №1

В варианте диалога от автора статьи есть ненужная строка: <has_info>quest_has_vodka</has_info> - эта функция по идее должна проверять наличие инфопорции quest_has_vodka которая ничем не выдаётся... Наличие (или отсутствие) строчки <has_info>quest_has_vodka</has_info> в структуре диалога ничего не изменит, поэтому она просто не нужна... Тем более что она может стать причиной багов.

Примечание №2

Чтобы скрыть диалог выполнения квеста (vodka_quest_prines) - "Вот твоя водяра" - после выполнения квеста, ниже строчки <has_info>quest_vodka_give</has_info> нужно добавить строчку <dont_has_info>quest_vodka_done</dont_has_info> - то бишь условие - показывать диалог выполнения квеста (vodka_quest_prines) при наличии следующих условий:

<has_info>quest_vodka_give</has_info> - уже выдан квест "Принести водку бармену"

<dont_has_info>quest_vodka_done</dont_has_info> - квест ещё не выполнен

<precondition>dialogs_zaton.is_has_vodka_borode</precondition> - проверка наличия у ГГ нужного предмета (водки).

Примечание №3

Наличие строчки <dont_has_info>quest_vodka_done</dont_has_info> в диалоге активации квеста (vodka_quest_dialog) - "Привет, тебе водки не принести?" тоже не нужно, ибо при активации квеста будет выдана инфопорция quest_vodka_give и функция <dont_has_info>quest_vodka_give</dont_has_info> скроет диалог активации квеста.

Примечание №4

Вот так должен выглядеть диалог без ошибок:

 
<dialog id="vodka_quest_dialog">
<dont_has_info>quest_vodka_give</dont_has_info>
<phrase_list>
    <phrase id="1">
        <text>Принеси бутылочку</text>
        <give_info>quest_vodka_give</give_info>
        <action>dialogs_zaton.give_vodka_quest</action>
    </phrase>
    <phrase id="0">
        <text>Привет, тебе водки не принести?</text>
        <next>1</next>
    </phrase>
</phrase_list>
</dialog>
 
<dialog id="vodka_quest_prines">
<has_info>quest_vodka_give</has_info>
<dont_has_info>quest_vodka_done</dont_has_info>
<precondition>dialogs_zaton.is_has_vodka_borode</precondition>
<phrase_list>
    <phrase id="1">
        <text>Спасибо, чувак. Выручил</text>
        <give_info>quest_vodka_done</give_info>
    </phrase>
    <phrase id="0">
        <text>Вот твоя водяра</text>
        <action>dialogs_zaton.transfer_vodka_to_boroda</action>
        <next>1</next>
    </phrase>
</phrase_list>
</dialog>
 

P.S.: в CoP инфопорции можно и не регистрировать, работать будет и так. RedPython 11:55, 17 января 2011 (UTC)

Другие места
LANGUAGE