Перейти к контенту

sasha47007

Пользователи
  • Число публикаций

    8
  • Регистрация

  • Последнее посещение

О sasha47007

  • День рождения 12.10.1993

Контакты

  • ICQ
    473377308

Информация

  • Город
    Ижевск
  1. Сообщество Мапперов

    Lexa395, Давно уже есть в паке локаций
  2. Уроки по модостроению

    Для начала нужно создать диалог, сделаем его у Волка: Заходим в gamedata\config\gameplay\dialogs_escape.xml и в самом конце до строчки </game_dialogs> пишем: <dialog id="escape_volk_ak74u_quest"> <has_info>esc_kill_bandits_quest_done</has_info> <dont_has_info>escape_volk_ak74u_start</dont_has_info> <phrase_list> <phrase id="0"> <text>escape_volk_ak74u_quest_0</text> <next>1</next> </phrase> <phrase id="1"> <text>escape_volk_ak74u_quest_1</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>escape_volk_ak74u_quest_2</text> <give_info>escape_volk_ak74u_start</give_info> <action>new_life.spawn_ak74u</action> </phrase> <phrase id="3"> <text>escape_volk_ak74u_quest_3</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> <dialog id="escape_volk_ak74u_quest_completed"> <precondition>new_life.escape_volk_ak74u_have</precondition> <has_info>escape_volk_ak74u_have</has_info> <dont_has_info>escape_volk_ак74u_done</dont_has_info> <phrase_list> <phrase id="0"> <text>escape_volk_ak74u_quest_completed_0</text> <next>1</next> </phrase> <phrase id="1"> <text>escape_volk_ak74u_quest_completed_1</text> <next>2</next> </phrase> <phrase id="2"> <text>escape_volk_ak74u_quest_completed_2</text> <give_info>escape_volk_ak74u_done</give_info> <action>new_life.give_volk_ak74u</action> <next>3</next> </phrase> <phrase id="3"> <text>escape_volk_ak74u_quest_completed_3</text> <action>new_life.complete_volk_quest</action> </phrase> </phrase_list> </dialog> Теперь нужно прописать эти диалоги Волку, для этого заходим в gamedata\config\gameplay\character_desc_escape.xml и находим профиль Волка(он называется esc_wolf), перед строкой </specific_character> пишем: <actor_dialog>escape_volk_ak74u_quest</actor_dialog> <actor_dialog>escape_volk_ak74u_quest_completed</actor_dialog> Нам понадобятся два диалога: 1 для получения квеста, 2 для передачи автомата. <dialog id="escape_volk_ak74u_quest"> - Это название диалога <has_info>esc_kill_bandits_quest_done</has_info> - эта строка означает что квест появится только если получен инфопоршень esc_kill_bandits_quest_done <dont_has_info>escape_volk_ak74u_start</dont_has_info> - эта строка означает что если получен инфопоршень escape_volk_ak74u_start, то этот диалог больше не появится. <text>escape_volk_ak74u_quest_0</text> - это ссылка на текст фразы меченого <next>1</next> - это ссылка на текст с id= 1 , а id= 1 это <text>escape_volk_ak74u_quest_1</text> (ссылка на текст Волка) <next>2</next> <next>3</next> - эти две строчки означают что идет разветвление диалога <give_info>escape_volk_ak74u_start</give_info> - выдача инфопоршня, после которого начинается квест <action>new_life.spawn_ak74u</action> - функция вызываемая из скрипта new_life, в данном случае спаунится предмет AK74У <action>dialogs.break_dialog</action> - функция отвечающая за выход из диалога Во втором диалоге есть строка <precondition>new_life.escape_volk_ak74u_have</precondition> - она отвечает за появление диалога если выполняется функция escape_volk_ak74u_have Теперь нужно сделать текст диалога на русском языке, для этого заходим в gamedata\config\tex\rus\stable_dialogs_escape.xml и в нём пишем следующее(в конце перед </string_table>): <string id="escape_volk_ak74u_quest_0"> <text>Здорова Волк, для меня есть какая-нибудь работа?</text> </string> <string id="escape_volk_ak74u_quest_1"> <text>Да, есть одно дело: вобщем шёл сюда в лагерь к Сидырычу, решил пройти через тоннель чтоб воякам денег не платить, а там собак было штук десять. Ну я начал отстреливаться, где-то шестерых убил и патроны кончились, пришлось АКСУ выкинуть, чтоб от стаи собак убежать. Таки лежит там наверно АКСУ. \nНу как, возьмёшься? Только осторожней там, после последнего выброса появились в тоннеле перещающиеся аномалии электра.</text> </string> <string id="escape_volk_ak74u_quest_2"> <text>Да, я как раз буду рядом проходить, конечно принесу...</text> </string> <string id="escape_volk_ak74u_quest_3"> <text>Нет, Волк, сам туда иди...</text> </string> <string id="escape_volk_ak74u_quest_completed_0"> <text>Привет, Волк, ну как оно?...</text> </string> <string id="escape_volk_ak74u_quest_completed_1"> <text>Сидор водку не даёт, хе хе, а так всё хорошо.</text> </string> <string id="escape_volk_ak74u_quest_completed_2"> <text>Вот, нашел я твой АКСУ.</text> </string> <string id="escape_volk_ak74u_quest_completed_3"> <text>Эх спасибо тебе Меченый, вот держи, может на что-нибудь хватит.</text> </string> Итак, диалог готов, теперь нужно сделать сам квест, для этого заходим в gamedata\config\gameplay\tasks_escape.xml и в самом конце пишем: <game_task id="escape_volk_ak74u"> <title>Найти потерянный АКСУ</title> <objective> <text>Найти потерянный АКСУ</text> <icon>ui_iconsTotal_weapons</icon> <infoportion_complete>escape_volk_ak74u_done</infoportion_complete> <article>tex_escape_volk_ak74u</article> </objective> <objective> <text>Найти АКСУ</text> <function_complete>new_life.escape_volk_ak74u_have</function_complete> <infoportion_set_complete>escape_volk_ak74u_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>escape_volk_ak74u_done</infoportion_complete> </objective> </game_task> <game_task id="escape_volk_ak74u"> - id квеста; <title>Найти потерянный АКСУ</title> - название квеста; <text>Найти потерянный АКСУ</text> - название подзадачи; <icon>ui_iconsTotal_weapons</icon> - иконка задания; <infoportion_complete>escape_volk_ak74u_done</infoportion_complete> - квест будет выполнен, если был получен инфопоршень escape_volk_ak74u_done; <article>tex_escape_volk_ak74u</article> - ссылка на текстовый файл с описанием задания; <text>Найти АКСУ</text> - название подзадачи; <function_complete>new_life.escape_volk_ak74u_have</function_complete> - проверка на наличие предмета; <infoportion_set_complete>escape_volk_ak74u_have</infoportion_set_complete> если функция new_life.escape_volk_ak74u_have выполнилась, то выдаётся инфопоршень escape_volk_ak74u_have и выполняется подзадача; <text>Принести АКСУ Волку</text> - название второй подзадачи; <map_location_type hint="Волк">blue_location</map_location_type> - указатель на Волка; <object_story_id>Escape_novice_lager_volk</object_story_id> - id Волка в Файле gamedata\config\game_story_ids.ltx[/i][/b]; <infoportion_complete>escape_volk_ak74u_done</infoportion_complete> - если будет получен этот инфопоршень, то выполнится подзадача и соответственно сам квест. Нужно сделать инфопоршни, заходим в gamedata\config\gameplay\info_l01escape.xml и в нём в конце до строчки </game_information_portions> пишем: <info_portion id="escape_volk_ak74u_start"> <task>escape_volk_ak74u</task> </info_portion> <info_portion id="escape_volk_ak74u_have"></info_portion> <info_portion id="escape_volk_ak74u_done"></info_portion> Теперь нужно сделать описание квеста, заходим в gamedata\config\gameplay\storyline_info_escape.xml и пишем в конце: <article id="tex_escape_volk_ak74u" name="Найти потерянный ак74u" article_type="task"> <texture x="0" y="800" width="200" height="100">ui\ui_icon_equipment</texture> <text>tex_escape_volk_ak74u</text> </article> Сделаем описание на русском, заходим в stable_dialogs_escape.xml и в конце до строки </string_table> пишем: <string id="tex_escape_volk_ak74u"> <text>Волк попросил принести потерянный в туннеле АКСУ</text> </string> Теперь создадим скриптовый файл new_life в gamedata\scripts\new_life.script и пишем: function spawn_ak74u() amk.spawn_item("wpn_ak74u",vector():set(-78.85,-1.29,154.74),163,189935) -- спавн ak74u в тоннеле на кордоне end function escape_volk_ak74u_have() return sak.have_item_namber("wpn_ak74u",1) ~= false -- проверка на нахождение предмета в рюкзаке end function give_volk_ak74u(first_speaker, second_speaker) -- передача предмета sak.out_item_namber("wpn_ak74u", 1) end function complete_volk_quest(first_speaker, second_speaker) -- получение награды dialogs.relocate_money(second_speaker, 1500, "in") end Чтобы эти скрипты заработали, нужно создать файлы amk.script и sak.script. В аmk.script пишем: 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 В sak.script пишем: 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 amk.remove_item_from_inventory(item, actor) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end Всё! Можно тестировать. Примечание!!! Если вы делаете такой квест на оригинальном сталкере, то ОБЯЗАТЕЛЬНО нужно создать файлы amk.script и sak.script. Если вы делаете квест на amk моде, то нужно создать только файл sak.script Автор: sasha47007
  3. Скриптование

    Как сделать логику вертолёту чтоб он летел за ГГ и атаковал его? Помогите пожалуйста))
  4. Скриптование

    Как через all.spawn заспаунить space_restrictor чтобы при заходе в него выдавался инфопоршень, и чтоб сам space_restrictor заспавнился после получения инфопоршня?
  5. Ссылка на этот патч сдохла----Патч для "НС3 ДЛЯ AMK1.4.1"(обязательно ставьте иначе будет вылетать при разговоре с Захаром)от 15 августа

    Можешь перезалить? или сказать как исправить ручками?

    Пожалуйста

  6. Создание квеста

    Как сделать условие для выполнения диалога?
  7. Создание квеста

    Как сделать чтоб после выполнения квеста сразу начинался новый? Как сделать чтоб после нажатия на определённую ветку диалога квест выполнился?
  8. Создание квеста

    Почитал что сдесь написано, но мне надо чтоб квест появился при старте новой игры, то есть, я появляюсь, и появляется квест-поговорить с Барменом
  9. Создание квеста

    Помогите пожалуйста создать квесты Вобщем я появляюсь на локации бар,и появляется первый квест-поговорить с Барменом,потом после диалога с ним появляется второй-прийти к Сидырычу и дальше основная сюжетная линия Если не сложно,помогите так сделать...
×