Суббота, 19.07.2025, 19:12

Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Мои статьи [0]
Моддинг [8]
Мастерская ЧН [0]
продолжать делать моддиг по сталкеру
Всего ответов: 51

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Моддинг

диологи
Сложность: Легко
Как сделать простой диалог.
1. Открываем, например файл dialogs_escape.xml (gamedata/config/gameplay) и пишем в конец: 
<dialog id="test_dialog">
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
            </phrase>
        </phrase_list>
    </dialog>
Это скелет диалога. В нём будут написаны все инфопоршни и actions.
<dialog id="test_dialog"> - это название диалога, которое нужно будет написать НПС.
<phrase id="0"> - номер фразы.
<text>test_dialog_0</text> - это текст фразы.
<next>?</next> - переход к фразе.
2. Теперь нужно написать тексты диалога. Заходим в файл stable_dialogs_bar.xml (gamedata/config/text/rus) и пишем в конце:
<string id="test_dialog_0">
        <text>Это тэстовый диалог</text>
    </string>
    <string id="test_dialog_1">
        <text>Угу.</text>
    </string>
<string id="test_dialog_0"> - это то, на что ссылается скелет диалога.
<text>Это тэстовый диалог</text> - собственно текст.
3. Теперь нужно прописать этот диалог НПС. Например Бармену. Открываем файл character_desc_bar.xml и находим секцию Бармена. Она идёт самой первой. 
После всех <actor_dialog>???</actor_dialog>, прописываем свой:
<actor_dialog>test_dialog</actor_dialog>


Сложность:Средне 
Как создать диалог посложнее.
Как создать диалог с разными вариантами ответов.
Как создать диалог который исчезнет после прочтения.
1. Открываем, например файл dialogs_escape.xml (gamedata/config/gameplay) и пишем в конец:
<dialog id="test_dialog">
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
        <next>2</next>
        <next>3</next>
            </phrase>
            <phrase id="2">
                <text>test_dialog_2</text>
            </phrase>
            <phrase id="3">
                <text>test_dialog_3</text>
            </phrase>
        </phrase_list>
    </dialog>
<next>2</next> и <next>3</next> - это возможные ответы Меченого.
2. Теперь нужно написать тексты диалога. Заходим в файл stable_dialogs_bar.xml (gamedata/config/text/rus) и пишем в конце:
<string id="test_dialog_0">
        <text>Как дела?</text>
    </string>
    <string id="test_dialog_1">
        <text>Нормально, а у тебя?</text>
    </string>
    <string id="test_dialog_2">
        <text>Нормально</text>
    </string>
    <string id="test_dialog_3">
        <text>Хреново.</text>
    </string>
3. Чтобы этот диалог не появлялся, пишем инфопоршень. Например в файле info_l01escape.xml, пишем:
<info_portion id="test_pogovoril"></info_portion>
4. Дописываем инфопоршень в скелет диалога:
<dialog id="test_dialog">
<dont_has_info>test_pogovoril</dont_has_info>
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
        <next>2</next>
        <next>3</next>
            </phrase>
            <phrase id="2">
                <text>test_dialog_2</text>
      <give_info>test_pogovoril</give_info>
            </phrase>
            <phrase id="3">
                <text>test_dialog_3</text>
      <give_info>test_pogovoril</give_info>
            </phrase>
        </phrase_list>
    </dialog>
<dont_has_info>test_pogovoril</dont_has_info> - если ГГ получил инфопоршень, диалог не показывать.
<give_info>test_pogovoril</give_info> - дать ГГ инфопоршень.
Получается, что когда ГГ скажет любую из 2 фраз, диалог больше не появится.


Сложность:Сложно 
-Как сделать разные action в диалогах.
1.Создаём обычный диалог:
<dialog id="test_dialog">
<dont_has_info>test_pogovoril</dont_has_info>
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
        <next>2</next>
        <next>3</next>
        <next>4</next>
            </phrase>
            <phrase id="2">
                <text>test_dialog_2</text>
            </phrase>
            <phrase id="3">
                <text>test_dialog_3</text>
            </phrase>
            <phrase id="4">
                <text>test_dialog_4</text>
            </phrase>
        </phrase_list>
    </dialog>
C такими текстами:
<string id="test_dialog_0">
        <text>Я тестю функции.</text>
    </string>
    <string id="test_dialog_1">
        <text>Ок, какую?</text>
    </string>
    <string id="test_dialog_2">
        <text>Дать деньги</text>
    </string>
    <string id="test_dialog_3">
        <text>Дать ПМ</text>
    </string>
    <string id="test_dialog_4">
        <text>Заспавнить ПМ</text>
    </string>
2.Создаём свой скрипт в папке gamedata/script например test.script и пишем в него 3 функции:
function dat_dengi(first_speaker, second_speaker)
    dialogs.relocate_money(second_speaker, 3000, "in")
end
Это функция отдачи денег ГГ. На месте 3000 любое число. На месте dat_dengi любое название.
------------------------------------------------------------
function dat_item(first_speaker, second_speaker)
    dialogs.relocate_item_section(second_speaker, "wpn_pm", "in")
end
Это функция отдачи предмета ГГ. На месте wpn_pm любой предмет. На месте dat_item любое название.
------------------------------------------------------------
function spawn_item_or_monster_or_stalker()
alife():create("wpn_pm",vector():set(pos),lvid,gvid)
end
Это функция спавна чего либо. На месте wpn_pm любой предмет,монстр или сталкер. На месте (pos),lvid,gvid) любые координаты. На месте spawn_item_or_monster_or_stalker любое название.
------------------------------------------------------------
Так же функция может быть одна, но с несколькими действиями. Например:
function all(first_speaker, second_speaker)
    dialogs.relocate_money(second_speaker, 3000, "in")
    dialogs.relocate_item_section(second_speaker, "wpn_pm", "in")
    alife():create("wpn_pm",vector():set(pos),lvid,gvid)
end
Значит что одновременно ГГ дадут 3000 рублей, ПМ и по заданным координатам заспавнится ПМ.
------------------------------------------------------------ 
3. Впишем функции в диалог:
<dialog id="test_dialog">
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
        <next>2</next>
        <next>3</next>
        <next>4</next>
            </phrase>
            <phrase id="2">
                <text>test_dialog_2</text>
                <action>test.dat_dengi</action>
            </phrase>
            <phrase id="3">
                <text>test_dialog_3</text>
                <action>test.dat_item</action>
            </phrase>
            <phrase id="4">
                <text>test_dialog_4</text>
                <action>test.spawn_item_or_monster_or_stalker</action>
            </phrase>
        </phrase_list>
    </dialog>
Это значит что после после фразы <text>test_dialog_2</text> ГГ дадут 3000руб. А после после фразы <text>test_dialog_3</text>, ГГ дадут ПМ. И после после фразы <text>test_dialog_3</text>, заспавнится ПМ.



Cложность: Сложно.
-Как сделать разные precondition в диалогах.
Прекондишоны - это проверки на появление диалога
1. Создаём обычный диалог:
<dialog id="test_dialog">
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
        <next>2</next>
        <next>3</next>
            </phrase>
            <phrase id="2">
                <text>test_dialog_2</text>
            </phrase>
            <phrase id="3">
                <text>test_dialog_3</text>
            </phrase>
        </phrase_list>
    </dialog>
C такими текстами:
<string id="test_dialog_0">
        <text>Тест прекондишонов.</text>
    </string>
    <string id="test_dialog_1">
        <text>Какой?</text>
    </string>
    <string id="test_dialog_2">
        <text>Эта фраза появляется если у ГГ есть ??? рублей.</text>
    </string>
    <string id="test_dialog_3">
        <text>Эта фраза появляется если у ГГ есть ??? предмет.</text>
    </string>
2. Создаём свой скрипт в папке gamedata/script например test.script и пишем в него 3 функции-прекондишона:
function has_money_???()
  local money = math.floor(200 *
xr_statistic_freeplay.get_freeplay_statistic():get_found_pda_discount())
  return db.actor:money()>=money
end
Это функция проверки количества денег ГГ. На месте 200 любое число.
На месте has_money_??? любое название.
------------------------------------------------------------
function has_item(task, objective)
    if db.actor ~= nil then
        return db.actor:object("wpn_pm") ~= nil
    end
    return false
end
Это функция проверки наличия какого либо предмета у ГГ. На месте wpn_pm любой предмет. На месте has_item любое название.
------------------------------------------------------------
3.Впишем функции в диалог:
<dialog id="test_dialog">
        <phrase_list>
            <phrase id="0">
        <text>test_dialog_0</text>
        <next>1</next>
            </phrase>
            <phrase id="1">
                <text>test_dialog_1</text>
        <next>2</next>
        <next>3</next>
            </phrase>
            <phrase id="2">
                <text>test_dialog_2</text>
        <precondition>test.has_money???</precondition>
            </phrase>
            <phrase id="3">
                <text>test_dialog_3</text>
        <precondition>test.has_item</precondition>
            </phrase>
        </phrase_list>
    </dialog>
Это значит что фраза <text>test_dialog_2</text> появится если у ГГ есть 200рублей
Это значит что фраза <text>test_dialog_3</text> появится если у ГГ есть ПМ.

Категория: Моддинг | Добавил: hog (19.02.2014)
Просмотров: 348 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Копирование материалов ЗАПРЕЩЕНО без размещения ссылки на источник. © SstalkerS.ru Конструктор сайтовuCoz