Гость
Обновленые темы Популярные темы Активные пользователи Новые пользователи Лента новостей
Area of Decay [10.07.2019]
Xemordio 3583 |  11 |  65
Бармен 43 |  7 |  0
Infe[R]nos 38 |  5 |  1
StraNNik 25 |  1 |  0
Waldemar 12 |  0 |  2
NL-Vincenz 12 |  0 |  3
mawr50 [15.07.2019]
dekmasters013 [15.07.2019]
pkosmatov [15.07.2019]
olegponamariov [14.07.2019]
tommytom0852 [13.07.2019]
trem200 [11.07.2019]

  • Страница 1 из 1
  • 1
Форум » Игры // games » S.T.A.L.K.E.R. » Модостроение сталкер » Урок: Создание Сложных диалогов («S.T.A.L.K.E.R. SOC»)
Урок: Создание Сложных диалогов
Xemordio Offline Дата: Понедельник, 17.12.2018, 13:17 | Сообщение # 1
Администратор
Звание: Маршал [?]
Сообщений: 3583
«Урок: Создание Сложных диалогов»
«S.T.A.L.K.E.R. SOC»

[redb]Внимания, присутствуют грамматические ошибки![/redb]

Добрый день! С вами Westheimer, и сегодня я вам расскажу, как создать сложный диалог start,actor dialog для нашего нового нпс которого мы создали в уроке "Создание НПС и добавление его в смарт", У нас будет диалог с условием допустим актер захочет узнать кое какую информацию у сталкера но сталкер скажет я расскажу тебе но с начало принеси мне артефакт кровь камня и только потом он нам расскажет, и в конце у нашего нпс появится еще один диалог. Начинаем

Часть I - «Создание Скелета Start_dialog»

Для начала мы создадим скелет нашего диалога. Для этого заходим в папку «gameplay» и выбераем файл «dialogs_escape.xml», после чего в самом низу после </dialog> пишем:

Код
<dialog id="str_franger_start_dlg"> <!-- айди нашего диалога пишим любое название-->

<phrase_list> <!-- открывающийся тег -->

<phrase id="0"> <!-- айди номера фразы -->

<text /> <!-- текст <text /> этот символ означает текст не показываем его пропускает переход на следующую фразу -->

<next>1</next> <!-- следующая фраза -- >

<next>10</next> <!-- следующая фраза -- >

<next>16</next> <!-- следующая фраза -- >

</phrase> <!-- закрывающий тег первого скелета диалога-->

<phrase id="1"> <!-- айди скелета -->

<text />

<dont_has_info>str_franger_dont_dlg_1</dont_has_info> <!-- диалог доступен при условии что не получен инфопоршень для доступности диалога есть 3 параметра dont_has_info -- инфопоршень еще не был получен has_info -- инфопоршень уже получен precondition-- прикондишеон -- условие из скрипта проверка на время или проверка инфопоршней итд -->

<next>2</next>

</phrase>

<phrase id="2">

<text>str_franger_start_dlg_1</text>

<next>3</next>

</phrase>

<phrase id="3">

<text>str_franger_start_dlg_2</text>

<next>4</next>

</phrase>

<phrase id="4">

<text>str_franger_start_dlg_3</text>

<next>5</next>

</phrase>

<phrase id="5">

<text>str_franger_start_dlg_4</text>

<next>6</next>

</phrase>

<phrase id="6">

<text>str_franger_start_dlg_5</text>

<next>7</next>

</phrase>

<phrase id="7">

<text>str_franger_start_dlg_6</text>

<next>8</next>

</phrase>

<phrase id="8">

<text>str_franger_start_dlg_7</text>

<next>9</next>

</phrase>

<phrase id="9">

<text>str_franger_start_dlg_8</text>

<give_info>str_franger_dont_dlg_1</give_info> <!-- здесь выдаем инфопоршень что бы наш диалоговой скелет 1 не включился заново при попытке поговорить с нпс еще раз -->

<action>dialogs.break_dialog</action> <!-- активация функции в даном случае обрыв диалог выход из диалога -->

</phrase>

<phrase id="10">

<text />

<has_info>str_franger_dont_dlg_1</has_info> <!-- это диалог включается при условии что доступен инфопоршень -->

<dont_has_info>str_franger_dont_dlg_1_done</dont_has_info>

<next>11</next>

</phrase>

<phrase id="11">

<text>str_franger_start_dlg_9</text> <!-- здесь нпс нам говорит принеси мне артефакт тогда и поболтаем -->

<next>12</next>

<next>13</next>

</phrase>

<phrase id="12">

<text>str_franger_start_dlg_10</text>

<precondition>escape_dialog.str_actor_hasnt_blood</precondition> <!-- проверка из скрипта что у актера нету артефакта фраза доступна, если актер взял артефакт это фраза скрывается -->

<action>dialogs.break_dialog</action>

</phrase>

<phrase id="13">

<text>str_franger_start_dlg_11</text>

<precondition>escape_dialog.str_actor_has_blood</precondition> <!-- фраза я принес артефакт включается при условии что у актера есть артефакт -->

<action>escape_dialog.str_actor_give_blood</action> <!-- активация из скрипта отдаем предмет нпс -->

<next>14</next>

</phrase>

<phrase id="14">

<text>str_franger_start_dlg_12</text>

<next>15</next>

</phrase>

<phrase id="15">

<text>str_franger_start_dlg_13</text>

<give_info>str_franger_dont_dlg_1_done</give_info> <!-- завершаем второй диалог -->

<action>dialogs.break_dialog</action>

</phrase>

<phrase id="16">

<text />

<has_info>str_franger_dont_dlg_1_done</has_info> <!-- диалог привестия доступен после того как нпс говорить там информацию после артефакта сделано специально, потому что если отдать нпс артефакт и узнать информацию и потом с ним поговорить то будет вылет что нету доступных фраз -->

<next>17</next>

</phrase>

<phrase id="17">

<text>str_franger_start_dlg_1</text>

</phrase>

</phrase_list>

</dialog>


Отлично Стартовый диалог с нпс мы написали теперь давайте напиши Actor_dialog с нашим нпс то-есть мы сможешь у нашего нпс спросить еще какую какую информацию но после того как отдадим артефакт и он расскажет там информацию

Часть II создание скелета actor_dialog

В этом же файле dialogs_escape после </dialog> пишем

Код
<dialog id="str_franger_actor_dlg"> <!-- айди нашего диалога-->

<has_info>str_franger_dont_dlg_1_done</has_info> <!-- диалог доступен после того как выполнини поручение нпс и поговорили сним -->

<phrase_list>

<phrase id="0">

<text>str_franger_info_dlg_1</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>str_franger_info_dlg_2</text>

<next>2</next> <!-- сдесь идет развлетвление диалога на фразы -->

<next>5</next> <!-- другая ветка фразы -->

</phrase>

<phrase id="2">

<text>str_franger_info_dlg_3</text>

<next>3</next>

</phrase>

<phrase id="3">

<text>str_franger_info_dlg_6</text>

<next>4</next>

</phrase>

<phrase id="4">

<text>str_franger_info_dlg_5</text>

</phrase>

<phrase id="5">

<text>str_franger_info_dlg_4</text>

<next>6</next>

</phrase>

<phrase id="6">

<text>str_franger_info_dlg_7</text>

<next>4</next>

</phrase>

</phrase_list>

</dialog>


Часть III локализация

Отлично диалоги start и actor dialog мы написали теперь надо написать сам русский текст заходим в папку rus и открываем файл stable_dialogs_escape и в самом низу после </string> пишим

Код
<string id="str_franger_start_dlg_1"> <!-- имя фразы -->

<text>Приветствую тебя Сталкер.</text> <!-- сам текст -->

</string>

<string id="str_franger_start_dlg_2">

<text>Привет. Мне нужна кое какая информация.</text>

</string>

<string id="str_franger_start_dlg_3">

<text>Какая тебя информация интересует.</text>

</string>

<string id="str_franger_start_dlg_4">

<text>Ты знаешь что нибуть о Стрелке?</text>

</string>

<string id="str_franger_start_dlg_5">

<text>Немного я раскажу тебе, но при одном условии.</text>

</string>

<string id="str_franger_start_dlg_6">

<text>Продолжай.</text>

</string>

<string id="str_franger_start_dlg_7">

<text>Найди мне артефакт Кровь Камня, тогда и подилюсь информацией.</text>

</string>

<string id="str_franger_start_dlg_8">

<text>Договорились.</text>

</string>

<string id="str_franger_start_dlg_9">

<text>Ну что там?</text>

</string>

<string id="str_franger_start_dlg_10">

<text>Я еще занимаюсь этим.</text>

</string>

<string id="str_franger_start_dlg_11">

<text>Вот держи я нашол.</text>

</string>

<string id="str_franger_start_dlg_12">

<text>Отлично Сталкер, ты свою часть договора выполнил так что слушай,Действительно есть такой Сталкер по прозвищу Стрелок, ходят слухи что он как то умудрился пройти сквозь выжигатель, и даже бывал в центре зоны, только куда он щас делня никто незнает, но говорят он ниодин все это провернул, они были знакомые Призрак и Клык.</text>

</string>

<string id="str_franger_start_dlg_13">

<text>Спасибо Большое за Информацию.</text>

</string>

<string id="str_franger_info_dlg_1">

<text>Мне нужна кое какая информация.</text>

</string>

<string id="str_franger_info_dlg_2">

<text>Что имено тебя интересует.</text>

</string>

<string id="str_franger_info_dlg_3">

<text>Раскажи мне о Клыке.</text>

</string>

<string id="str_franger_info_dlg_4">

<text>Раскажи мне о Призраке.</text>

</string>

<string id="str_franger_info_dlg_5">

<text>Спасибо за информацию.</text>

</string>

<string id="str_franger_info_dlg_6">

<text>Клык еще один Легендарный Сталкер ходят слухи что вместе со Стрелком прорывались к Центру Зоны, некоторые сталкеры говорят что както видели его в Баре Сто Ненген, попробуй там поспрашивать может что и интересное узнаешь.</text>

</string>

<string id="str_franger_info_dlg_7">

<text>Призрак один из Легендарных Сталкеров, бывал в Центре Зоны, говорят даже что у него какой то уникальный костюм что мол на нем заживает все как на собаке, некоторые сталкеры говорят, что видели его на Янтаре он выполнял какой то задание Ученых, возможно он еще там..</text>

</string>


Часть IV - «Работа со скриптами»

теперь напишим условия для наших диалогов

заходим в папку scripts и открываем файл escape_dialog и в самом низу пишим

Код
-- проверка на то что у актера есть артефакт кровь камня

function str_actor_has_blood(first_speaker, second_speaker)

return db.actor:object("af_blood") ~= nil

end

-- проверка на то что у актера нету предмета

function str_actor_hasnt_blood(first_speaker, second_speaker)

return not str_actor_has_blood(first_speaker, second_speaker)

end

-- функция отдаем предмет нпс

function str_actor_give_blood(first_speaker, second_speaker)

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

end


Часть V выдаем нпс наши диалоги

заходи в профиль нашему новому нпс Gameplay файл character_desc_escape

находим нашего нпс

Код
<specific_character id="str_stalker_franger" team_default = "1">

<name>Егоров</name>

<icon>ui_npc_u_green_stalker_4</icon>

<bio>esc_stalker_novice_bio</bio>

<class>str_stalker_franger</class>

<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>

<rank>400</rank>

<reputation>6</reputation>

<money min="200" max="3200" infinitive="0"/>

<snd_config>characters_voice\human_02\newbie\</snd_config>

<crouch_type>-1</crouch_type>

<visual>actors\novice\green_stalker_4</visual>

<supplies>

[spawn] \n

wpn_bm16 \n

ammo_12x70_buck \n

#include "gameplay\character_items.xml" \n

#include "gameplay\character_drugs.xml" \n

#include "gameplay\character_food.xml"

</supplies>

#include "gameplay\character_criticals_3.xml"

<start_dialog>str_franger_start_dlg</start_dialog> <!-- здесь выдаем диалоги ps: удалите все прочие диалоги типо hello_dialog и characters_dialog так как ваши диалоги не будут отображаться а работать будут только оригинальные типо привет расскажи мне о -->

<actor_dialog>str_franger_actor_dlg</actor_dialog>

</specific_character>


Ну вот и все ребята заходим в игру и смотрим что у нас получилось
Дата регистрации: 22.07.2017
Форум » Игры // games » S.T.A.L.K.E.R. » Модостроение сталкер » Урок: Создание Сложных диалогов («S.T.A.L.K.E.R. SOC»)
  • Страница 1 из 1
  • 1
Поиск: