создаем скрипит в папке 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
---------------------------квест волка найти динамит------------------------------ 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
ищим волка и вставляем ему новые диалоги ,а точнее сылки на диалоги вотак ------------------------------------------------------------------------------------------]]
<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
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>
Заменил предмет на свой координаты изменил дал диалог квестодателю все работает, но когда побираю предмет ничего не происходит ни появляется следующий шаг квеста, что делать?
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]