Главная » Статьи » Статьи » Моддинг

создание квеста найти принести для сталкер тч
всем привет для вас kail сегодня я научу вас создавать квесты типа найти принести сегодня мы создадим квест для волка найти и вернуть динамит

1.
---------------------------------------------------------[[
список файлов которые понадобятся

gamedata/scripts/aln_quest --создадим,
gamedata/scripts/quest -- cоздадим,
gamedata/scripts/quest_aln --- cоздадим,
gamedata/config/gameplay/character_decs_escape,
gamedata/config/gameplay/info_l01escape,
gamedata/config/gameplay/dialogs_escape,
gamedata/config/gameplay/storyline_info_escape,
gamedata/config/gameplay/tasks_escape,
gamedata/config/text/rus/stable_dialogs_escape
---------------------------------------------------------]]

2. вот все файлы которые нужны и так приступаем

создаем скрипит в папке gamedata/scripts/aln_quest

в скрипт пишим функцию
----------------------------------------------------------------------]]
function spawn_item(spawn_item, pos, gv,lv)
if gv==nil then gv=db.actor:game_vertex_id() end
if lv==nil then lv=db.actor:level_vertex_id() end
return alife():create(spawn_item, pos, lv, gv)
end
function remove_item_from_inventory(remove_item,npc)
if npc==nil then npc=db.actor end
if remove_item~=nil then
--npc:mark_item_dropped(remove_item)
alife():release(alife():object(remove_item:id()), true)
return true
end
return false
end
----------------------------------------------------------------------]]

скрипт готов

p.s то-что я обвожу пунктиром и квадратными скобками в скрипт это невписываем иначе игра небудет видеть нашу функцию

3. теперь создаем скрипт quest в папке gamedata/scripts

в него пишим

------------------------------------------------------------------------[[
local items_count=0
local itemin=nil
function have_item_namber(itm,need_namber)
local actor=db.actor
items_count=0
itemin=itm
actor:iterate_inventory(cheking_item,actor)
if items_count>=need_namber then
return true
else
return false
end
end
function cheking_item(actor,item)
local items=item:section()
if items==itemin then
items_count=items_count+1
end
end
function create_items(npc,section,number)
for i=1,number do
alife():create(section,
npc:position(),
npc:level_vertex_id(),
npc:game_vertex_id(),
npc:id())
end
end
local reloc_params={}
local stalk
function out_item_namber(itm_section,need_number)
reloc_params.itm_section=itm_section
reloc_params.itm_cnt=need_number
reloc_params.itm_cnt_found =0
db.actor:iterate_inventory(checkout_items_count,db.actor)
reloc_params.itm_cnt_found=0
if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
db.actor:iterate_inventory(out_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
end
function relocate_item_namber(stalker,itm_section,need_number)
stalk=stalker
reloc_params.itm_section=itm_section
reloc_params.itm_cnt=need_number
reloc_params.itm_cnt_found=0
db.actor:iterate_inventory(checkout_items_count,db.actor)
reloc_params.itm_cnt_found=0
if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
db.actor:iterate_inventory(reloc_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
end
function checkout_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section then
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end
function reloc_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then
db.actor:transfer_item(item, stalk)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end
function out_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then
aln_quest.remove_item_from_inventory(item, actor)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end

------------------------------------------------------------------------]]

готово

4.создаем скрипт quest_aln в папке gamedata/scripts

в него пишим скелет квеста

--------------------------------------------------------------------------[[

---------------------------квест волка найти динамит------------------------------
function spawn_dynamite()
aln_quest.alife():create("dynamite",vector():set(106.24745178223,-7.1400456428528,2.6464221477509),407116,119)
end
function esc_wolf_dynamite_have()
return quest.have_item_namber("dynamite",1) ~= false
end
function give_esc_wolf_dynamite(first_speaker, second_speaker)
quest.out_item_namber("dynamite",1)
end
function complete_esc_wolf_quest(first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, 2000, "in")
dialogs.relocate_item_section(second_speaker, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(second_speaker, "ammo_5.45x39_fmj","in")
end
--------------------------------------------------------------------------]]

готово

ps корды можите неменять динамит при взятие квеста будет лежать на атп где еще шустрый сидит

в награду за квест дадут 2000 руб
патроны к пм и патроны к ак

5.идем дальше

создание диалога для волка
идем сюда

gamedata/config/gameplay/character_decs_escape

ищим волка и вставляем ему новые диалоги ,а точнее сылки на диалоги вотак
------------------------------------------------------------------------------------------]]

<actor_dialog>esc_wolf_dynamite_quest</actor_dialog>
<actor_dialog>esc_wolf_dynamite_quest_completed</actor_dialog>
------------------------------------------------------------------------------------------[[

6.готово создадим скелет диалога

идем сюда

gamedata/config/gameplay/dialogs_escape

открываем и пишим два скелета диалога один для выдачи квеста второй для завершения и получения награды вообщем

пишим после тага </dialog>

пишим
----------------------------------------------------------------------[[
<dialog id="esc_wolf_dynamite_quest">
<dont_has_info>esc_wolf_dynamite_start</dont_has_info>
<phrase_list>
<phrase id="0">
<text>esc_wolf_dynamite_quest_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_wolf_dynamite_quest_1</text>
<next>2</next>
<next>3</next>
</phrase>
<phrase id="2">
<text>esc_wolf_dynamite_quest_2</text>
<give_info>esc_wolf_dynamite_start</give_info>
<action>quest_aln.spawn_dynamite</action>
</phrase>
<phrase id="3">
<text>esc_wolf_dynamite_quest_3</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
<dialog id="esc_wolf_dynamite_quest_completed">
<precondition>quest_aln.esc_wolf_dynamite_have</precondition>
<has_info>esc_wolf_dynamite_have</has_info>
<dont_has_info>esc_wolf_dynamite_done</dont_has_info>
<phrase_list>
<phrase id="0">
<text>esc_wolf_dynamite_quest_completed_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_wolf_dynamite_quest_completed_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_wolf_dynamite_quest_completed_2</text>
<action>quest_aln.complete_esc_wolf_dynamite_quest</action>
<give_info>esc_wolf_dynamite_done</give_info>
<action>quest_aln.give_esc_wolf_dynamite</action>
<next>3</next>
</phrase>
<phrase id="3">
<text>esc_wolf_dynamite_quest_completed_3</text>
<action>quest_aln.complete_esc_wolf_quest</action>
</phrase>
</phrase_list>
</dialog>

----------------------------------------------------------------------------]]

7.готово запишим русский текст идем сюда

gamedata/config/text/rus/stable_dialogs_escape

открыли и после тага </string>

пишим

------------------------------------------------------------[[

<string id="esc_wolf_dynamite_quest_0">
<text>Привет Волк работа есть для меня?</text>
</string>
<string id="esc_wolf_dynamite_quest_1">
<text>да как раз найдется для тебя работенка тут такое дело наши ребята нашли динамит но попути когда они тащили динамит сюда в лагерь на них бандиты на пали и динамит забрали ты немог бы вернуть динамит ребята сказали что видели что бандиты динамит всторону атп тащили, вообщем верни динамит ,а я отблагадарю. ну что согласен?</text>
</string>
<string id="esc_wolf_dynamite_quest_2">
<text>Хорошо попробую найти динамит</text>
</string>
<string id="esc_wolf_dynamite_quest_3">
<text>в другой раз</text>
</string>
<string id="esc_wolf_dynamite_quest_completed_0">
<text>привет Волк</text>
</string>
<string id="esc_wolf_dynamite_quest_completed_1">
<text>ну как нашол?</text>
</string>
<string id="esc_wolf_dynamite_quest_completed_2">
<text>да. нашол тяжелый немного держи</text>
</string>
<string id="esc_wolf_dynamite_quest_completed_3">
<text>спасибо меченый ,а вот и награда как я и обещал</text>
</string>
<string id="tex_esc_wolf_dynamite">
<text>Волк попросил найти динамит который украли бандиты</text> -- это запись будет отображатся в пда в кладке подробно о задании
</string>
-----------------------------------------------------------------]]

8.создадим инфопоршни в папке gamedata/config/gameplay/ info_l01escape

открыли пишим после тага </info_portion>

----------------------------------------------------[[

<!--квест Волка найти динамит-->
<info_portion id="esc_wolf_dynamite_start">
<task>esc_wolf_dynamite</task>
</info_portion>
<info_portion id="esc_wolf_dynamite_have">
</info_portion>
<info_portion id="esc_wolf_dynamite_done">
</info_portion>

---------------------------------------------------]]

9. cоздаем историю квеста в папке gamedata/config/gameplay/storyline_info_escape

открыли пишим после тага </article>

<!--квест волка найти динамит-->
<article id="tex_esc_wolf_dynamite" name="найти и вернуть динамит волку" article_type="task"> -- cылка на запись из stable_dialogs_escape мы уже написали что волк просит найти динами
<texture x="200" y="900" width="100" height="100">ui\ui_icon_equipment</texture> -- определяем иконку
<text>tex_esc_wolf_dynamite</text> -- текст задания
</article>

------------------------------------------------------[[

10.финиш создаем в gamedata/config/gameplay/tasks_escape

открыли пишим после тага </game_task>

-------------------------------------------------------------------[[

<game_task id="esc_wolf_dynamite">
<title>Найти украденый бандитами динамит</title> -- текст первого подзадания найти динами
<objective>
<text>Найти украденый бандитами динамит</text>
<icon>ui_iconsTotal_lost_thing</icon>
<infoportion_complete>esc_wolf_dynamite_done</infoportion_complete>
<article>tex_esc_wolf_dynamite</article>
</objective>
<objective>
<text>Найти украденый бандитами динамит</text>
<function_complete>quest_aln.esc_wolf_dynamite_have</function_complete>
<infoportion_set_complete>esc_wolf_dynamite_have</infoportion_set_complete>
</objective>
<objective>
<text>вернуть динамит Волку</text> -- текст второго подзадания гг нашол динамит отнести волку
<map_location_type hint="Волк">blue_location</map_location_type>
<object_story_id>Escape_novice_lager_volk</object_story_id>
<infoportion_complete>esc_wolf_dynamite_done</infoportion_complete>
</objective>
</game_task>

-----------------------------------------------------------------------------------------]]

ну вот и все квест по типу найти принести готов

сильно то неругайте я старался вроде и так все ражевал ,а в рот вы уже сами положите )) незабудьте плюснуть если все увас получится желаю удачи
Категория: Моддинг | Добавил: _Admin_ (01.11.2011)
Просмотров: 8353 | Комментарии: 1 | Рейтинг: 4.8/16
Всего комментариев: 1
vurdalac | Комментарий № 1 | Дата: 02.03.2015 Спам
Заменил предмет на свой координаты изменил дал диалог квестодателю все работает, но когда побираю предмет ничего не происходит ни появляется следующий шаг квеста, что делать?
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Меню сайта

Свежие прохождения






Категории раздела

Мини-чат

Поиск

Статистика

Онлайн всего: 30
Гостей: 30
Пользователей: 0


Сегодня посетили:













Форма входа


Войти Зарегистрироваться