Случайная подборка модов
Priboi story
4.1
Объединенный Пак - 2
3.7
Sleep Of Reason - Zulus Story 0.5
2.4
Call of Pripyat Complete
3.7
S.T.A.L.K.E.R. F.M.
4.4
Another Zone Mod. Пролог
4.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 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
  • »
Поиск: