• Страница 1 из 1
  • 1
Форум » Форум IP » Теория модостроения » Диалоги: создание и редактирование (Учебник от IP Team # 3)
Диалоги: создание и редактирование
MillerДата: Сб, 31.12.2011, 14:00 | Сообщение # 1
Администратор
Группа: Администратор
Сообщений: 199
Репутация: 1029
Статус: Offline
Здесь вы научитесь создавать новые диалоги, редактировать их и пр.

Автор: Vova Miller [IP Team]

1. Начну с того, как привязать диалог к НПС.
Открываем характер НПС. Предположим наш диалог называется (id) mod_my_first_dialog. В характере ниже </supplies> пишем:

Code
  <start_dialog>mod_my_first_dialog </start_dialog>


или

Code
  <actor_dialog>mod_my_first_dialog </actor_dialog>


</start_dialog> - это диалог, в котором первую ветку самого диалога будет говорит НПС (не забывайте, что </start_dialog> может использоваться у каждого НПС только один раз).
</actor_dialog> - это диалог, в котором первая фраза будет твоя (можно использовать на одном НПС сколько угодно).

2. Теперь переходим к самому диалогу.
Откраем config\gameplay\dialogs_(локация).xml
Листаем в самый низ, и вставляем диалог перед </game_dialogs> и после </dialog> (</dialog> - закрывает предыдущий диалог, а между <game_dialogs> и </game_dialogs> содержаться все диалоги).
Вот пример простейшего диалога, который можно сделать за 5 секунд (пример с </actor_dialog>):

Code
    <dialog id="mod_my_first_dialog">    
            <phrase_list>    
                <phrase id="0">    
                    <text>Глупый НПС, дай денег!</text>    
                    <next>1</next>    
                </phrase>    
                <phrase id="1">    
                    <text>Нету денег. Все уже раздал.</text>    
                    <next>2</next>    
                </phrase>    
                <phrase id="2">    
                    <text>Ладно, завтра отдашь.</text>    
                    <action>dialogs.break_dialog</action>    
                </phrase>    
            </phrase_list>    
        </dialog>


Т.к. мы привязали этот диалог к НПС как actor_dialog, то у нас будет возможность сказать НПС: "Глупый НПС, дай денег!", в ответ получим: "Нету денег. Все уже раздал.", и снова мы можем ответить: "Ладно, завтра отдашь.". На последней фразе диалоговое окно зароется, т.к. на ней прописана функция:
<action>dialogs.break_dialog</action>
Напомню что бы было, если бы я прописал это не как actor_dialog, а как start_dialog, чтобы у вас в голове прояснилось в чем разница:
НПС: "Глупый НПС, дай денег!" (сказал бы сразу при открытие диалогового окна)
ГГ: "Нету денег. Все уже раздал." (и при нажатии на фразу диалог бы закрылся, т.к. в последней фразе стоит функция.)

Теперь посмотрим на ID фраз. Первую фразу всегда лучше начинать с 0. Это будет первая фраза. В ней же (в нашем примере) стоит: <next>1</next> , то есть следующая фраза под ID 1. Предположим если первая фраза выглядела бы вот так:

Code
             <phrase id="0">    
                    <text>Глупый НПС, дай денег!</text>    
                    <next>1</next>    
                    <next>2</next>    
                </phrase>


То НПС мог бы нам ответить как и фразой с ID 1, так и с фразой ID 2 (в игре мы уже не сможем проконтролировать как конкретно ответит НПС). Если бы фразу "Глупый НПС, дай денег!" сказал бы НПС, то у нас бы было два варианта, как ответить ему фразами 1 и 2.

Если вы ничего не поняли, или просто лень разбираться в тексте, то предлагаю вам самим тестировать разные варианты в игре (например так я и научился создавать диалоги).

3. Построим диалог по-длиннее, чтобы вы поняли, как дополнять ещё фразы.
Вот пример (actor_dialog):

Code
    <dialog id="mod_my_first_dialog">    
            <phrase_list>    
                <phrase id="0">    
                    <text>Привет, Сталкер!</text>    
                    <next>1</next>    
                </phrase>    
                <phrase id="1">    
                    <text>Привет!</text>    
                    <next>2</next>
                    <next>7</next>
                </phrase>    
                <phrase id="2">    
                    <text>Как дела?</text>    
                    <next>3</next>
                </phrase>    
                <phrase id="3">    
                    <text>Да вроде бы нормально, а ты как?</text>    
                    <next>4</next>
                   <next>5</next>
                </phrase>    
                <phrase id="4">    
                    <text>Тоже нормально.</text>    
                    <next>6</next>
                </phrase>    
                <phrase id="5">    
                    <text>Плохо очень.</text>    
                    <next>6</next>
                </phrase>    
                <phrase id="6">    
                    <text>Ясно. Пока!</text>    
                    <next>7</next>
                </phrase>
                <phrase id="7">    
                    <text>Ладно, пока!</text>    
                    <action>dialogs.break_dialog</action>    
                </phrase>    
            </phrase_list>    
        </dialog>


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

4. Здесь чуть позже научу вас как прописывать функции в диалог (забирает деньги, даёт деньги, даёт предметы или забирает и т.д.) и др.

Примечания:

1: start_dialog может использоваться только на одном диалоге у определённого НПС.

2: В конфиге диалога нельзя писать большие тексты, иначе будет вылет. Чтобы написать большой текст во фразу и чтобы не было вылета, в конфиге диалога на месте текста, напишите, например: mod_long_phrase_1
Откройте config\text\rus\stable_dialogs.xml, листай в самый низ, и вставьте следующий код после </string> и перед </string_table>:

Code
    <string id="mod_long_phrase_1">
     <text>Большой текст нужно писать сюда</text>
    </string>


Такой принцип может использоваться не только для больших текстов.

3: Замечали, что в оригинале ТЧ в некоторых диалогах воспроизводился голос? Вы можете сделать то же самое.
Пользуясь схемой, как в п. 2, делаем такую же фразу для НПС, на которой проиграется звук (не работает на фразах ГГ). Предположим мы между <text> и </text> прописали: mod_long_phrase_2.
Открываем папку: sounds\characters_voice\dialogs\ и туда добавляем нужный нам звук с названием mod_long_phrase_2.ogg.

4 (Инфопоршни): Как же сделать, чтобы в ветке диалога выполнялся инфопоршень, и чтобы диалог не повторялся бесконечно? Помогут "инфопоршни".
Как поставить выполнение инфопоршня в диалог? - В определённую ветку диалога ниже текста вставляем:
Code
                <give_info>ID_инфопоршня</give_info>

Как сделать чтобы диалог не повторялся? - В созданном диалоге выше <phrase_list>, но ниже строки с ID диалога вставляем:
Code
                <dont_has_info>инфопоршень_1</dont_has_info>

И в ветку диалога, после которой он больше не будет повторятся вставляем выполнение инфопоршня "инфопоршень_1". То есть для диалога мы указали, чтобы он отображался, если "инфопоршень_1" не выполнен.
Как сделать чтобы какой-либо диалог отображался только после другого диалога? - В первый диалог, после которого откроется другой, в нужную ветку вставляем выполнение инфопоршня, например, "инфопоршень_2". Во второй диалог, который должен появится после первого, выше <phrase_list>, но ниже строки с ID диалога вставляем:
Code
                <has_info>инфопоршень_2</has_info>

То есть, мы сделали так, чтобы второй диалог не отображался, пока не выполнится "инфопоршень_2".

Кстати, теги <has_info> и <dont_has_info> можно использовать не только для всего диалога, но и для отдельной ветки диалога. Тогда, их нужно вставлять выше тега текста.

ID инфопоршней прописываются в config\gameplay\info_*******.xml


 
botikДата: Сб, 31.12.2011, 16:52 | Сообщение # 2
Прибывший
Группа: Сталкер
Сообщений: 1
Репутация: 0
Статус: Offline
Miller, спс помог smile
 
МарсДата: Вс, 12.02.2012, 11:53 | Сообщение # 3
Прибывший
Группа: Сталкер
Сообщений: 3
Репутация: 0
Статус: Offline
А где "Характер"Взять?
 
MillerДата: Вс, 12.02.2012, 12:49 | Сообщение # 4
Администратор
Группа: Администратор
Сообщений: 199
Репутация: 1029
Статус: Offline
Марс, характер НПС это как бы место, где прописывает его группировка, оружие, звуки, форма, иконка и пр.
Ну вот например Характер Волка находится в файле config\gameplay\character_desc_escape.xml
Второй характер - это Волк.
Начинается вот так:


 
МарсДата: Вс, 12.02.2012, 16:51 | Сообщение # 5
Прибывший
Группа: Сталкер
Сообщений: 3
Репутация: 0
Статус: Offline
Miller, Спасибо.Ща попробую.
 
Форум » Форум IP » Теория модостроения » Диалоги: создание и редактирование (Учебник от IP Team # 3)
  • Страница 1 из 1
  • 1
Поиск:

Истинный путь Team © 2024