1) Надо создать наш диалог. Ищем файл stable_dialogs_bar(путь
gamedata\config\text\rus) и в конце пищем два диалога примерно вот
таких:
<string id="bar_ohran_propusk_0"> <text>Дружище послушай, у меня очень ценная информация для твоего командира, давай как-нибудь договоримся?</text> </string> <string id="bar_ohran_propusk_1"> <text>В
принципе можно,но услуга за услугу.Дело у меня есть к тебе меченый.У
меня клиент есть, хорошо платит но ему нужны только ценные артефакты.
Сможешь мне принести артефакт Панцирь?</text> </string> <string id="bar_ohran_propusk_2"> <text>Ну ты и ... ладно жди достану тебе панцири, черепаха ты наша.</text> </string> <string id="bar_ohran_propusk_3"> <text>Ну ты и жлоб поглядывай за углами вдруг шальная пуля прилетит.</text> </string>
<string id="bar_friend_propusk_0"> <text>Привет сержант не забыл наш уговор?.</text> </string> <string id="bar_friend_propusk_1"> <text>Да помню-помню было такое,долго же ты,а еще меня черепахой называл,а сам... ну ладно принес?.</text> </string> <string id="bar_friend_propusk_2"> <text>А как же держи,попотеть пришлось.</text> </string> <string id="bar_friend_propusk_3"> <text>Ну в нашем деле не без этого проходи че стоишь.</text> </string>
Первый называется bar_ohran_propusk, а второй bar_friend_propusk. Учтите все диалоги должны начинаться со слов меченого. 2)Находим файл dialogs_bar(путь gamedata\config\gameplay) и составляем скелет нашего диалога опять же в конце файла: <dialog id="bar_ohran_propusk"> <phrase_list> <phrase id="0"> <text>bar_ohran_propusk_0</text> <next>1</next> </phrase> <phrase id="1"> <text>bar_ohran_propusk_1</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>bar_ohran_propusk_2</text> </phrase> <phrase id="3"> <text>bar_ohran_propusk_3</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> <dialog id="bar_friend_propusk"> <phrase_list> <phrase id="0"> <text>bar_friend_propusk_0</text> <next>1</next> </phrase> <phrase id="1"> <text>bar_friend_propusk_1</text> <next>2</next> </phrase> <phrase id="2"> <text>bar_friend_propusk_2</text> <next>3</next> </phrase> <phrase id="3"> <text>bar_friend_propusk_3</text> </phrase> </phrase_list> </dialog> Все у нас есть диалог. Вот эта строчка <action>dialogs.break_dialog</action> означает что из скриптового файла dialogs вызывается функция break_dialog. Т.е. если мы откажемся нести арт Пличко то диалог прерывается. Все если мы правильно сделали то сохраняем наши изменения. 3) Находим файл character_desc_bar и ищем Пличко(тот что нас не пускает к Воронину) и добавляем ему два диалога:
<actor_dialog>bar_ohran_propusk</actor_dialog> <actor_dialog>bar_friend_propusk</actor_dialog> - это наши диалоги. <start_dialog>bar_dolg_base_guard_start</start_dialog> <actor_dialog>bar_dolg_base_guard_talk</actor_dialog> <actor_dialog>bar_dolg_base_guard_story</actor_dialog> <actor_dialog>bar_dolg_base_guard_rules</actor_dialog> #include "gameplay\character_dialogs.xml" Сохраняем наши изменения и запускаем игру если мы сделали все правильно то у него появиться два диалога.
Диалог мы сделали, но нам теперь нужно сделать так чтобы он нас пустил к Воронину т.е. приделать Пличко квест. В
папке gameplay есть много файлов таких как
info_known_objects,info_l05dark_valley и т.д. Это все инфопоршни игры
без них квест не получиться. Нам надо создать свои инфопоршни. Создадим
свой файл где будут лежать наши инфопоршни.Я назвал сой файл
info_dan_way(не забудь те прописать его в файле system т.е. добавить к
остальным файлам с инфопоршними свой файл) Внутри он будет выглядеть примерно так
<game_information_portions>
<info_portion id="bar_dolg_propusk_start"> это наши инфопоршень №1 <task>bar_dolg_propusk</task> это цель задания которая указывается в game_tasks </info_portion>
<info_portion id="bar_dolg_propusk_have"></info_portion> это наши инфопоршень №2
<info_portion id="bar_dolg_propusk_done"></info_portion>это наши инфопоршень №3
</game_information_portions>
Дальше открываем game_tasks и после всех инклудов вписываем наш квест
<game_task id="bar_dolg_propusk"> <title>Принести арты Пличко</title> <objective> <text>Найти артефакт панцирь</text> <icon>ui_iconsTotal_artefact</icon> <infoportion_complete>bar_dolg_propusk_done</infoportion_complete> </objective> <objective> <text>Найти артефакт панцирь</text> <icon height="50" width="50" x="100" y="50">ui\ui_icons_task</icon> <function_complete>dan_dialog.bar_dolg_propusk_have</function_complete> <infoportion_set_complete>bar_dolg_propusk_have</infoportion_set_complete> </objective> <objective> <text>Принести артефакт Пличко</text> <map_location_type hint="Пличко">blue_location</map_location_type> <object_story_id>bar_dolg_guard_commander</object_story_id> <infoportion_complete>bar_dolg_propusk_done</infoportion_complete> </objective> </game_task>
Все теперь нам надо добавить инфопоршни в наш диалог, находим dialogs_bar ищем в нем наши диалоги и добавляем инфопоршни; <dialog id="bar_ohran_propusk"> <dont_has_info>bar_dolg_propusk_start</dont_has_info> это значит что диалог не появиться у Пличко <dont_has_info>bar_dolg_propusk_have</dont_has_info> если сработали наши инфопоршни т.е. чтобы <dont_has_info>bar_dolg_propusk_done</dont_has_info> после выполнения задания диалог вновь не появлялся <phrase_list> <phrase id="0"> <text>bar_ohran_propusk_0</text> <next>1</next> </phrase> <phrase id="1"> <text>bar_ohran_propusk_1</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>bar_ohran_propusk_2</text> <action>dan_dialog.bar_dolg_propusk_have</action> т.е. будет выполняться функция <give_info>bar_dolg_propusk_start</give_info> bar_dolg_propusk_have из сриптового файла dan_dialog. </phrase> <phrase id="3"> <text>bar_ohran_propusk_3</text> <give_info>bar_dolg_propusk_start</give_info> информации о получении первого инфопоршня. <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog>
<dialog id="bar_friend_propusk"> <dont_has_info>bar_dolg_propusk_done</dont_has_info> не показывать после получения 3 инфопоршня <has_info>bar_dolg_propusk_have</has_info> показывать если есть второй инфопоршень <phrase_list> <phrase id="0"> <text>bar_friend_propusk_0</text> <next>1</next> </phrase> <phrase id="1"> <text>bar_friend_propusk_1</text> <next>2</next> </phrase> <phrase id="2"> <text>bar_friend_propusk_2</text> <action>dan_dialog.bar_dolg_propusk_done</action> вызывается функция bar_dolg_propusk_done <give_info>bar_dolg_propusk_done</give_info> информация о получения 3 инфопоршня задание выполенено <next>3</next> </phrase> <phrase id="3"> <text>bar_friend_propusk_3</text> <give_info>bar_dolg_base_pass</give_info> это срабатывает инфопоршни о пропуске нас на базу долга. <give_info>bar_dolg_community_start</give_info> <give_info>bar_dolg_community_leader</give_info> </phrase> </phrase_list> </dialog> Теперь
нам надо создать свой скриптовой файл и вписать 2 функции. Одна нужна
для проверки наличия в инвентаре панциря и соответственно включения
инфопоршня bar_dolg_propusk_have. Вторая для передачи Пличко арта. Например dan_dialog и вписать наши функции.
function bar_dolg_propusk_have(task, objective) эта функция проверяет наличие арта if db.actor ~= nil then return db.actor:object("af_armor_3") ~= nil end return false end
function bar_dolg_propusk_done(first_speaker, second_speaker) эта функция отдачи арта Пличко dialogs.relocate_item_section(second_speaker, "af_armor_3", "out") second_speaker:set_relation(game_object.friend, first_speaker) эта строчка делает Пличко другом. end
Ну вот вроде все. Если сделали все правильно, то после того, как принесли арт Пличко, вас свободно пропустят на базу долга.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, function bar_dolg_propusk_done(first_speaker, second_speaker) эта функция отдачи арта Пличко dialogs.relocate_item_section(second_speaker, "af_armor_3", "out",) second_speaker:set_relation(game_object.friend, first_speaker) эта строчка делает Пличко другом. end
Нашел ошибку в этой функции. После слова "out" стоит запятая. Она здесь совсем не нужна.
//////////////////////////////////////////////// //////////////////////////////////////////////// ////////////////////////////////////////////////////
Хммм... С HTML имел дело? Прислони к стене матрас ))
Файл "bar_dialogs.xml" ... <phrase id="1"> -- открываем тело фразы <text>text1</text> -- прописываем, что будет текстом фразы - ссылка на строку <next>2</next> -- ссылка (идентификатор) на следующую фразу - пишем то, что в её параметре id </phrase> -- закрыли тело фразы
<phrase id="2"> -- открываем тело фразы, на которую идёт ссылка из первой <text>text2</text> -- ссылка на строку с текстом этой фразы </phrase> -- закрыли тело фразы ...
Файл "stable_bar_dialogs.xml"
... <string id="text1"> -- открываем тело строки <text>Убейся апстену</text> -- забиваем в неё текст </string> -- закрываем тело строки
<string id="text2"> <text>Ладно, только матрас дай</text> </string> ...
|