Случайная подборка модов
Arsenal Mod
4.0
Dead Autumn 2: Другая реальность
4.1
Время перемен v1.0
3.8
Anomaly 1.5. Beta 3.0
4.5
Пространственная аномалия (Update 3)
4.0
Камень Преткновения. Пролог
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Архив - только для чтения
Создание сложного квеста "убить сталкера" на ТЧ
  Nikitos817
Вторник, 04.10.2011, 15:56 | Сообщение # 1
Статус:
:
Сообщений:
Регистрация:

Убить сталкера (сложный квест)
Авторы:
Kail
Редактировал:
Nikitos817

Сразу хочу сказать, что данных персонажей в игре нет. Это все для примера. Что бы создать квест, вы должны будете сами выбрать квестодателя и жертву. Давайте сделаем квестодателя Соколовым, а жертвой будет Гарик.
1. Список файлов, которые нужно будет использовать при создании квеста.
gamedata\scripts\new_script – этот скрипт мы создадим
gamedata\config\gameplay\character_desc_локация.xml
gamedata\config\gameplay\dialogs_локация.xml
gamedata\config\gameplay\info_локация.xml
gamedata\config\gameplay\storyline_info_локация.xml
gamedata\config\gameplay\tasks_локация.xml
gamedata\config\text\rus\stable_dialogs_локация.xml
gamedata\config\game_story_ids
gamedata\spawns\all.spawn

ps: вместо all.spawn можно использовать фаил .ltx с логикой вашего сталкера (далее NPC)
pss: Мы думаем, вы знаете, как создавать новых NPC. Эту тему мы пропускаем

2. Начнем по порядку, со скрипта. Назвать скрипт можно по-своему.

Заходим в
gamedata\scripts\
и создаем скрипт с названием new_script

Туда пишем:
--[[---------------------------------------------------------------------------------
--задание от Соколова--
function money_give_sokolov(first_speaker, second_speaker)
dialogs.relocate_money(first_speaker, 7000, "in")
end
-----------------------------------------------------------------------------------]]

Разберем, что написали:
function money_give_sokolov(first_speaker, second_speaker) – название функции
dialogs.relocate_money(first_speaker, 7000, "in") – действие. В данном случае выдача денег главному герою (если вместо in поставить out, деньги отнимут).
end – конец функции.

Работа со скриптом закончена.

3. Далее заходим в:

gamedata\config\gameplay\character_desc_локация.xml

находим там вашего NPC и дописываем ссылки на диалоги.
<actor_dialog>sokolov_kvest_dialog</actor_dialog>
<actor_dialog>sokolov_kvest_dialog_done</actor_dialog>

4. Теперь надо написать скелет диалога.

Заходим в:
gamedata\config\gameplay\dialogs_локация.xml

открываем dialogs_локация.xml и пишем

после
</dialog>
-- Квест
<dialog id="sokolov_kvest_dialog">
<dont_has_info>sokolov_kvest_start</dont_has_info>
<phrase_list>
<phrase id="0">
<text>sokolov_kvest_dialog_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>sokolov_kvest_dialog_1</text>
<next>2</next>
<next>3</next>
</phrase>
<phrase id="2">
<text>sokolov_kvest_dialog_2</text>
<give_info>sokolov_kvest_start</give_info> -- выдаем поршень инфопоршень на начало квеста
</phrase>
<phrase id="3">
<text>sokolov_kvest_dialog_3</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
<dialog id="sokolov_kvest_dialog_done">
<has_info>sokolov_kvest_have</has_info>
<dont_has_info>sokolov_kvest_dialog_done</dont_has_info>
<phrase_list>
<phrase id="0">
<text>sokolov_kvest_dialog_completed_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>sokolov_kvest_dialog_completed_1</text>
<give_info>sokolov_kvest_dialog_done</give_info> -- При получении этого инфопоршня заканчивается квест.
<action>new_script.money_give_sokolov</action> -- активация функции из вашего скрипта (выдача награды ГГ)
<next>2</next>
</phrase>
<phrase id="2">
<text>sokolov_kvest_dialog_completed_2</text>
</phrase>
</phrase_list>
</dialog>

5. Далее идем в:

gamedata\config\gameplay\info_локация.xml

В этом инфопоршне мы должны создать инфопоршни.
открываем info_локация.xml и пишем:

-- Квест с Соколовым --
<info_portion id ="sokolov_kvest_start">
<task>sokolov_kvest</task>
</info_portion>
<info_portion id="sokolov_kvest_have">
</info_portion>
<info_portion id="sokolov_kvest_dialog_done">
</info_portion>

6. 50% уже сделано. Осталось сделать сторилайны.

Заходим в:
gamedata\config\gameplay\storyline_info_локация.xml

открываем и пишем storyline_info_локация.xml

--[[-------------------------------------------------------------------------------------------
<article id="text_sokolov_kvest" name="убить Гарика" -<article_type="task">
<text>text_sokolov_kvest</text>
</article>
---------------------------------------------------------------------------------------------]]

7. Теперь нужно создать информацию о задании.


Заходим в:
gamedata\config\gameplay\tasks_локация.xml

открываем tasks_локация.xml

и пишем

--[[------------------------------------------------------------------------------------------------------
<game_task id="sokolov_kvest">
<title>убить Гарика</title> -- название первого подзадания
<objective>
<text>убить Гарика</text>
<icon>ui_iconsTotal_lost_soldier</icon> -- иконка задания в ПДА
<infoportion_complete>sokolov_kvest_dialog_done</infoportion_complete>
<article>text_gavrilenko_kvest</article>
</objective>
<objective>
<text>убить Гарика</text>
<map_location_type hint="Гарик">green_location</map_location_type> -- сюда напишиие имя своего NPC
<object_story_id>5483</object_story_id> -- стори айди
<infoportion_complete>sokolov_kvest_have</infoportion_complete>
</objective>
<objective>
<text>Доложить о выполнение Соколову</text> -- название второго подзадания
убили сталкера, идем докладывать, что убили
<map_location_type hint="Гарик">blue_location</map_location_type>
<object_story_id>5484</object_story_id> -- стори айди квесто дателя
<infoportion_complete>sokolov_kvest_dialog_done</infoportion_complete>
</objective>
</game_task>

ps:название иконок можно посмотреть в gamedata\config\ui\ui_iconstotal.xml
--------------------------------------------------------------------------------------------------------]]
8. Создание диалогов:

Идем в:
gamedata\config\text\rus\stable_dialogs_локация.xml

открываем stable_dialogs_локация.xml

пишим после тага </string>
--[[-----------------------------------------------------------------------------------------------------
<string id="sokolov_kvest_dialog_0">
<text>Есть ли для меня работа?</text>
</string>
<string id="sokolov_kvest_dialog_1">
<text>Да есть для тебя одно дело нужно найти и убить сталкера по имени Гарик. Оплата гарантирована.</text>
</string>
<string id="sokolov_kvest_dialog_2">
<text>Я берусь.</text>
</string>
<string id="sokolov_kvest_dialog_3">
<text>В другой раз.</text>
</string>
<string id="sokolov_kvest_dialog_completed_0">
<text>Все его больше нет.</text>
</string>
<string id="sokolov_kvest_dialog_completed_1">
<text>Молодец, держи заслуженное.</text>
</string>
<string id="sokolov_kvest_dialog_completed_2">
<text>До встречи.</text>
</string>
<string id="text_gavrilenko_kvest">
<text>нужно найти и убить сталкера по прозвищу Гарик.</text> -- текст задания, которое отображается в пда в вкладке «подробно о задании»
</string>
--------------------------------------------------------------------------------------------------------]]
9. Итак, мы почти написали квест.

Идем в:
gamedata\config\game_story_ids

это файл стори айди. Там записываются сталкеры, которые будут отображатся на пда при взятии квестов, и прочие квестовые объекты…

Итак, отрываем game_story_ids записываем наших сталкеров

--[[----------------------------------------------------------------------------------------------
5483 = "garik"
5484 = "solokov"

ps: смотрите, что бы стори айди не повторялся, иначе будет вылет!!!
-----------------------------------------------------------------------------------------------]]

10. Последнее, что осталось сделать.

Работа с all.spawn. Если вы через скрипт нпс спавнили то надо указать путь к логике (spawn_section.ltx)

Идем в:
gamedata\spawns\all.spawn

в аллспавне или файле с вашей логикой нпс допишем вот что:

[logic]
active = (ваша логика)
on_death = death
combat_ignore = combat_ignore

[death]
on_info = %+sokolov_kvest_have%

!!!!!Это не заменяем, а дополняем к логике!!!!!

!!!!!Это дополнение пишим только к тому сталкеру, которого надо убить!!!!!


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

надеюсь у вас все получится, желаю удачи.

Если один баг. Когда квестодатель (это тот, у которого берете задание) погибает, задание остается. Над проблемой работаем. Как проблема будет решена, статья будет дополнена.

Я это не тестировал, все вопросы к Kailу.
Сообщение отредактировал Nikitos817 - Вторник, 04.10.2011, 16:09
  Злобная реклама
Вторник, 04.10.2011, 15:56
Статус:
Сообщений: 666
Регистрация:
Литва  Mefistorus
Суббота, 23.06.2012, 19:26 | Сообщение # 2
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

мне не поможете?

  Злобная реклама
Суббота, 23.06.2012, 19:26
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  RICK
Суббота, 23.06.2012, 19:30 | Сообщение # 3
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

а какой вылет то лог покажи когда вылетает блоктон открывай и жми cntrl+v
и лог появится и вставляй сюда
  Злобная реклама
Суббота, 23.06.2012, 19:30
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Литва  Mefistorus
Суббота, 23.06.2012, 19:32 | Сообщение # 4
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

Expression : false
Function : CXml::Init
File : E:\stalker\sources\trunk\xrXMLParser\xrXMLParser.cpp
Line : 87
Description : XML file:gameplay\storyline_info_to_diary.xml value: errDescr:Error reading Attributes.
  Злобная реклама
Суббота, 23.06.2012, 19:32
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  RICK
Суббота, 23.06.2012, 19:59 | Сообщение # 5
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

ну вот в этом файле неправильно прописал
  Злобная реклама
Суббота, 23.06.2012, 19:59
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Литва  Mefistorus
Суббота, 23.06.2012, 20:03 | Сообщение # 6
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

gameplay\storyline_info_to_diary.xml

я даже не трогал
  Злобная реклама
Суббота, 23.06.2012, 20:03
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  RICK
Суббота, 23.06.2012, 20:05 | Сообщение # 7
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

а другой файл с названием story_ трогал
  Злобная реклама
Суббота, 23.06.2012, 20:05
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Литва  Mefistorus
Суббота, 23.06.2012, 20:09 | Сообщение # 8
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

gamedata\config\game_story_ids

только...

5483 = "esc_richka_npc"
5484 = "esc_edia_npc"
  Злобная реклама
Суббота, 23.06.2012, 20:09
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  RICK
Суббота, 23.06.2012, 20:11 | Сообщение # 9
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

тогда незнаю явно что то ты намудрил

сначало лучше нпс создай нормально заспавни их потом диалог одному пиши а потом уже квест
  Злобная реклама
Суббота, 23.06.2012, 20:11
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Литва  Mefistorus
Суббота, 23.06.2012, 20:16 | Сообщение # 10
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

я делал вот это:

TUT

но это отдельно
  Злобная реклама
Суббота, 23.06.2012, 20:16
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  RICK
Суббота, 23.06.2012, 20:21 | Сообщение # 11
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

storyline_info_taskmanager.xml в этом файле скорейвего ошибка
  Злобная реклама
Суббота, 23.06.2012, 20:21
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Литва  Mefistorus
Суббота, 23.06.2012, 20:26 | Сообщение # 12
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

<article id="tm_kill_stalker_7_descr" name="kill_stalker" article_type="task">
<text>tm_kill_stalker_7_descr</text>
</article>

только это в нем добавлял и без вашего квеста работало
  Злобная реклама
Суббота, 23.06.2012, 20:26
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  RICK
Суббота, 23.06.2012, 20:28 | Сообщение # 13
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

ну тогда мой квест убирай и тот вставляй
  Злобная реклама
Суббота, 23.06.2012, 20:28
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Литва  Mefistorus
Суббота, 23.06.2012, 20:29 | Сообщение # 14
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

я наоборот попробую
  Злобная реклама
Суббота, 23.06.2012, 20:29
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Российская Федерация  Uyman358
Суббота, 23.06.2012, 20:39 | Сообщение # 15
Закоулки Правды
Статус:
Бывалый:
Сообщений: 1098
Награды: 1
Регистрация: 13.06.2012

Надо будет как-нибудь попробовать сделать что-то вроде этого
  Злобная реклама
Суббота, 23.06.2012, 20:39
Статус:
Сообщений: 666
Регистрация: 13.06.2012
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: