Pihan13 9 Опубликовано 3 Сентября 2009 Поделиться Опубликовано 3 Сентября 2009 Не знаю как вы, но лично я задавался вопросом как создать простой квест в Чистом Небе? Вот я и накатал "инструкцию": [spoiler=Создание примитивного квеста в ЧН.]Инструкция основана на моде "SEMKI", который выложили ещё давным - давно на официальном форуме. квест прост: активируется скриптом (action'ом в диалоге), при появлении инфопрошня считается выполненным. Создаём в папке gamedata\scripts файл ваше_название_скрипта.script, в него пишем: function ваше_название_функции() xr_effects.give_inited_task(nil, nil, {"storyline", "name_of_your_quest", "bandit"}) end name_of_your_quest - будет название квеста из tm_***.ltx bandit - группировка (при наведении на точку в ПДА (т.е. которая "Весит" на рестрикторе например.) будет высвечиваться описание квеста и какая группировка её дала.) далее берём файл gamedata\configs\misc\tm_***.ltx от соотв. локации и пишем в начале под строчку [list_tm_***]: name_of_your_quest и далее внизу аналогично существующим: [name_of_your_quest] type = storyline task_type = additional prior = 10 icon = ui_mt_image_attack_tower target_cond = true name = youself_quest_name text = youself_quest_text condlist_0 = {+info_for_done} complete target_story_ids = 724 auto_name = false auto_faction = true type = storyline - тип: сюжетная линия (тут можно указать "Принести предметы, уничтожить смарт" итд...) task_type = additional - тип: дополнительный (если напишете storyline, то будет отображаться, как сюжетка ) prior = 10 - приоритет (значение того, что при появлении квеста он автоматически будет активным) icon = ui_mt_image_attack_tower - иконка, хотя я что толкьо не писал, получается стандартная target_cond = true name = youself_quest_name - имя из xml-массива text = youself_quest_text - описание condlist_0 = {+info_for_done} complete - при получении (+) инфопрошня info_for_done считать выполненным target_story_ids = 724 - стори ИД на которого вешается метка (может быть тайник, труп, НПС, рестриктор, неважно...) auto_name = false auto_faction = true прописываем описания в файлы из gamedata\configs\text\rus также прописываем инфопрошни в игру (у нас это info_for_done) P.S. target_story_ids = 724 - ID Йоги, лидера бандитов в диалоги: <action>ваше_название_скрипта.ваше_название_функции</action> -активируем <give_info>info_for_done</give_info> - завершение P.S. буду обновлять этот пост. завтра распишу всё детально, "как прописать тексты, инфопрошни...", возможно выложу пример файликом 2 Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
zickey 0 Опубликовано 14 Сентября 2009 Поделиться Опубликовано 14 Сентября 2009 Спасибо за ветку. Надеюсь вы продолжите, как обещали... Ссылка на комментарий
Stalkeroff 0 Опубликовано 8 Октября 2009 Поделиться Опубликовано 8 Октября 2009 Гы... а условие активации квеста где? Ссылка на комментарий
Pihan13 9 Опубликовано 8 Октября 2009 Автор Поделиться Опубликовано 8 Октября 2009 Stalkeroff, какие условия??? активируем фразой из диалога, там на фразу можно поставить <has_info></has_info>или <dont_has_info></dont_has_info> вот те условие и ещё можно на фразы прекондишоны вешать если ты не знаешь Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
Stalkeroff 0 Опубликовано 8 Октября 2009 Поделиться Опубликовано 8 Октября 2009 (изменено) Работоспособность своего творения проверяли, уважаемый? И где описаны ревардные функции? Изменено 8 Октября 2009 пользователем Stalkeroff Ссылка на комментарий
Pihan13 9 Опубликовано 8 Октября 2009 Автор Поделиться Опубликовано 8 Октября 2009 Stalkeroff, работает всё отлично. сам делал по простейшему моду SEMKI http://ifolder.ru/14391580 , который выложили давно на форуме gsc кто выложил - не помню И где описаны ревардные функции? в скрипт прописываешь выдачу предмету актору, и дальше уже action-ом в диалоге Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
Stalkeroff 0 Опубликовано 8 Октября 2009 Поделиться Опубликовано 8 Октября 2009 Ай да молодец! Не думай что издеваюсь, просто я через логику и all.spawn делал. Описывать не решусь - нудно очень. Ссылка на комментарий
sabir 0 Опубликовано 6 Октября 2010 Поделиться Опубликовано 6 Октября 2010 (изменено) Инструкция основана на моде "SEMKI" Так может лучше было бы указать где этот мод валяется чем инструкции страчить? Маловато что-то для такого гоголя как квест. Изменено 6 Октября 2010 пользователем sabir Ссылка на комментарий
RDS 11 Опубликовано 5 Февраля 2012 Поделиться Опубликовано 5 Февраля 2012 (изменено) Проверено, работает. А есчё какие-нибудь примеры квестов по сложнее есть? (именно для CS) Ну так, а голова на что? Сочиняй, обдумывай, твори. ColR_iT Изменено 5 Февраля 2012 пользователем ColR_iT «Разумная храбрость — это катахреза» из повести Стругацких «Стажёры» http://rghost.ru/45827792 5-этажка + школа №4 (из Припяти) Ссылка на комментарий
*Shoker* 322 Опубликовано 5 Февраля 2012 Поделиться Опубликовано 5 Февраля 2012 Может тему закрепить в шапке? А то вроде как под формат подходит, хоть и коротко. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
RDS 11 Опубликовано 6 Февраля 2012 Поделиться Опубликовано 6 Февраля 2012 Хотелось б создать квест на болотах, в самом начале, после того как ГГ очнулся после выброса. Заходит он к торговцу а тот ему сливает координаты телепорта на другую локацию (Восток Янтаря), за кокую-нибудь мелочь. Собственно вопрос: Можно ли прописать к диалогу спаун на этот телепорт? «Разумная храбрость — это катахреза» из повести Стругацких «Стажёры» http://rghost.ru/45827792 5-этажка + школа №4 (из Припяти) Ссылка на комментарий
RDS 11 Опубликовано 5 Апреля 2012 Поделиться Опубликовано 5 Апреля 2012 Возникли вот такие вопросы по квестам: 1) Как прописать выдачу инфопорции при входе в определённый сектор(портал) в здании. 2) Как прописать выдачу инфопорции при входе в определённый спэйс рестриктор. 3) Как прописать выдачу инфопорции по выбору из двух (не рандомно, а по наличию квестового персонажа в определённой точке). Пока вроде всё. «Разумная храбрость — это катахреза» из повести Стругацких «Стажёры» http://rghost.ru/45827792 5-этажка + школа №4 (из Припяти) Ссылка на комментарий
ColR_iT 171 Опубликовано 5 Апреля 2012 Поделиться Опубликовано 5 Апреля 2012 (изменено) RDS 1. Никак. Сектора и порталы нужны лишь для рендеринга карты и отследить вхождение в оные невозможно, разве что на их месте спавнить аналогичные по размерам рестрикторы. 2. Выдача инфопорции при вход в спейс рестриктор можно осуществить при помощи следующей логики определённых у этих рестрикторов: [logic] active = sr_idle [sr_idle] on_actor_inside = nil %+info_portion_name% При входе в рестриктор будет единожды выдана инфопорция, после чего схема уйдёт в nil, дабы не повторять выдачу многократно. 3. Вероятно одним из наиболее правильных решений, будет выдать нужный тебе инфопоршень именно в определённой точки непосредственно от самого НПС. Т.е. в логике персонажа, будучи на одной из точек, посредством on_info = %+info_portion_name% и выдать нужную тебе инфопорцию. P.S. ИМХО, вопросы больше в ковырялку... Изменено 5 Апреля 2012 пользователем ColR_iT Ссылка на комментарий
Kirgudu 1 217 Опубликовано 5 Апреля 2012 Поделиться Опубликовано 5 Апреля 2012 (изменено) 2. Можно и другим способом, не связанным с логикой, зато требующим работы со скриптом. Например: if sr:inside(db.actor:position()) then ... end где sr - ссылка на искомый рестриктор. А так это и на мой взгляд больше для ковырялки инфа. Изменено 5 Апреля 2012 пользователем Kirgudu Инструмент Ссылка на комментарий
ColR_iT 171 Опубликовано 5 Апреля 2012 Поделиться Опубликовано 5 Апреля 2012 (изменено) Kirgudu, считаю, что спавнить рестрикторы через скрипт, не что иное как, расточительство, а если спавнить рестриктор через all.spawn, то почему бы для него разом и логику не написать, предварительно вынеся его в отдельный файл? Изменено 5 Апреля 2012 пользователем ColR_iT Ссылка на комментарий
Kirgudu 1 217 Опубликовано 5 Апреля 2012 Поделиться Опубликовано 5 Апреля 2012 ColR_iT, согласен. Но я имел в виду тот частный случай, когда рестриктор в all.spawn мы уже имеем, а логики на нём нет (редактировать же all.spawn по каким-либо причинам нежелательно), или она нужна более сложная, завязанная на скрипты. Примером может служить симуляция и обработка рестрикторов на защиту. Инструмент Ссылка на комментарий
нерон 0 Опубликовано 14 Апреля 2016 Поделиться Опубликовано 14 Апреля 2016 (изменено) Составлял квест дошло дело допрописи текстов ,но вот незадача информация о квесте в пда не отобразилась. Предыдущий свой квест делал так же, но все работало и отображалось. В чём причина не пойму . В файле stable_bio_name прописал <string id="Sidor_qvest1"><text>этот урод утомил Волка ,замочи его.</text></string><stringid="Sidor_qvest_text"><text>Проберись в подвалыагропрома</text> </string><stringid="Sidor_qvest_title"><text>Найти сталкера имя</text></string><string id="Sidor_qvest_text2"><text>верниськ Cидоровичу</text> </string> В файле storyline_info_escape.xml прописал <article id="Sidor_qvest56" name="Sidor_qvest_text" article_type="task"group="Sidor_qvest_title"> <text>Sidor_qvest_tex1</text> </article> Если кто знает в чом причина объясните. Изменено 14 Апреля 2016 пользователем нерон Ссылка на комментарий
Mr. KoT 43 Опубликовано 26 Августа 2016 Поделиться Опубликовано 26 Августа 2016 Одно не понял - теперь нужно создавать предмет/нпс/тайник для задания? А как? Ссылка на комментарий
gruber 2 481 Опубликовано 26 Августа 2016 Поделиться Опубликовано 26 Августа 2016 (изменено) , В дереве диалога есть оператор action (смотри в примерах из игры) далее идет ссылка на функцию спавна, прописанную в одном из файлов скриптов (чаще в treasure meneger script). Или как вариант, в диалоге выдается infoporcion, которая и служит сигналом для спавна или перевода объекта в он-лайн, если он спавнится через ал-спавн. Извиняюсь, не заметил, что тема CS, но там суть та же. Изменено 26 Августа 2016 пользователем gruber 1 Ссылка на комментарий
Stalker_Monolit 58 Опубликовано 12 Января 2017 Поделиться Опубликовано 12 Января 2017 (изменено) ЧН: Квест "Найти и принести два предмета". Сегодня постараюсь подробно расписать создание задания "Найти и принести". Квест будет активироваться через диалог секцией <action></action>, и завершаться выдачей инфопорции <give_info></give_info>, думаю вам стоит прочесть статью по написанию диалогов. Список необходимых файлов и папок в папке gamedata: configs\gameplay\ character_desc_marsh.xml dialogs_marsh.xml info_marsh.xml configs\misc\ tm_marsh.ltx configs\text\rus\st_quest_bring_vodka_medkit.xml ;--\ Создать файл. scripts\quest_bring_vodka_medkit.script ;--\ Создать файл. Прописываем диалоги в "Характер нужного нам НПС'а", пусть это будет Холод: Файл: character_desc_marsh.xml Секция: <specific_character id="mar_csky_barman" team_default = "1"> После строки: <actor_dialog>treasure_dialog</actor_dialog> Пишем: <actor_dialog>quest_find_vodka_medkit</actor_dialog> <actor_dialog>quest_bring_vodka_medkit</actor_dialog> Все, с этим файлом закончили, сохраняем и закрываем за не надобностью. Теперь нам нужно создать два диалога, на поиск "quest_find_vodka_medkit" и на принесение предмета "quest_bring_vodka_medkit": Файл: dialogs_marsh.xml В самом низу перед строкой "</game_dialogs>" создаем диалоги: <dialog id="quest_find_vodka_medkit"> <dont_has_info>quest_vodka_medkit_give</dont_has_info> <!-- При получение инфопорции "quest_vodka_medkit_give" блокировать диалог. --> <precondition>quest_bring_vodka_medkit.not_have_vodka_medkit</precondition> <!-- Прекондишин для проверки скриптом на отсутствие предметов у ГГ. Если нет необходимых предметов диалог будет активен. --> <phrase_list> <phrase id="0"> <text>Мне нужна работа, есть что на примете?</text> <next>1</next> </phrase> <phrase id="1"> <text>Есть, нужна бутылка водки и аптечка.</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>Хорошо, принесу.</text> <next>4</next> </phrase> <phrase id="3"> <text>Я передумал.</text> <action>dialogs.break_dialog</action> <!-- Экшен на завершение диалога. --> </phrase> <phrase id="4"> <text>Вот и славненько.</text> <give_info>quest_vodka_medkit_give</give_info> <!-- Получение инфопорции. --> <action>quest_bring_vodka_medkit.give_quest_bring_vodka_medkit</action> <!-- Экшен на выдачу квеста. --> </phrase> </phrase_list> </dialog> <dialog id="quest_bring_vodka_medkit"> <has_info>quest_vodka_medkit_give</has_info> <!-- Проверка, есть ли у нас инфопорция, при получение инфопорции "quest_vodka_medkit_give" диалог будет активен. --> <dont_has_info>quest_vodka_medkit_done</dont_has_info> <!-- При получение инфопорции "quest_vodka_medkit_done" блокировать диалог. --> <precondition>quest_bring_vodka_medkit.have_vodka_medkit</precondition> <!-- Прекондишин для проверки скриптом на наличие предметов у ГГ. Если есть необходимые предметы диалог будет активен. --> <phrase_list> <phrase id="0"> <text>Задание выполнено, держи предметы.</text> <action>quest_bring_vodka_medkit.quest_bring_vodka_medkit_bring_object</action> <!-- Экшен на передачу предметов НПС'у. --> <next>1</next> </phrase> <phrase id="1"> <text>Благодарю, держи награду.</text> <action>quest_bring_vodka_medkit.quest_bring_vodka_medkit_get_money</action> <!- Экшен на получение награды. --> <give_info>quest_vodka_medkit_done</give_info> <!-- Получение инфопорции, получили инфопорцию "quest_vodka_medkit_done" завершили квест. --> </phrase> </phrase_list> </dialog> Все, с этим файлом закончили, сохраняем и закрываем за не надобностью. Создание инфопорции: Файл: info_marsh.xml В самом низу перед строкой "</game_information_portions>" создаем инфопорции: <info_portion id="quest_vodka_medkit_give"></info_portion> <info_portion id="quest_vodka_medkit_done"></info_portion> Все, с этим файлом закончили, сохраняем и закрываем за не надобностью. Создание самого квеста: Файл: tm_marsh.ltx В секцию [list_tm_marsh] вписываем: quest_bring_vodka_medkit_1 quest_bring_vodka_medkit_2 В самом низу пишем: [quest_bring_vodka_medkit_1] auto_name = false ;--\ Автоматическое имя, не совсем понятно зачем здесь эта строка. type = storyline ;--\ Тип задания, есть варианты "bring_item - Принести предмет", "recover_item - Вернуть предмет", "eliminate_smart - Уничтожение смарта", "defend_smart - Защита смарта", "capture_smart - Захват смарта", "take_reward - Получение награды", "storyline - Сюжетное задание". task_type = additional ;--\ Тип задания, есть вырианты "storyline - Сюжетное задание", "additional - Второстепенное задание". name = quest_find_vodka_medkit_name ;--\ Название задания, из text\rus\st_*.xml документа. text = quest_bring_vodka_medkit_text ;--\ Описание задания, из text\rus\st_*.xml документа. target_cond = {=actor_on_level(marsh)} true ;--\ Условие для маркера. target_story_ids = 302 ;--\ Установка маркера на объект по его story_id, список story_id'ов game_story_ids.ltx. prior = 10 ;--\ Приоритет задания, чем выше это число, тем приоритетней задание. condlist_0 = {=actor_has_item(vodka)=actor_has_item(medkit)} complete ;--\ Условие выполнения квеста, в данном случаи проверка на нахождение двух предметов у ГГ. on_complete = %=give_inited_task(storyline:quest_bring_vodka_medkit_2:csky)% ;--\ По завершению поиска необходимых предметов вклучаеться следующий квест "quest_bring_vodka_medkit_2". [quest_bring_vodka_medkit_2] auto_name = false type = storyline task_type = additional name = quest_bring_vodka_medkit_name text = quest_bring_vodka_medkit_text target_cond = {=actor_on_level(marsh)} true target_story_ids = 302 prior = 10 condlist_0 = {+quest_vodka_medkit_done} complete ;--\ Условие выполнения квеста, в данном случаи при получение инфопорции "quest_vodka_medkit_done" считается выполненным. Все, с этим файлом закончили, сохраняем и закрываем за не надобностью. Создание описания для квеста: Файл: st_quest_bring_vodka_medkit.xml Пишем: <?xml version="1.0" encoding="windows-1251" ?> <string_table> <string id="quest_find_vodka_medkit_name"> <text>Найти водку и аптечку для Холода.</text> </string> <string id="quest_bring_vodka_medkit_name"> <text>Принести водку и аптечку Холоду.</text> </string> <string id="quest_bring_vodka_medkit_text"> <text>Найти и принести бутылку водки и аптечку.</text> </string> </string_table> Все, с этим файлом закончили, сохраняем и закрываем за не надобностью. Создание скрипта на активацию квеста, проверку предметов и выдачу награды: Файл: quest_bring_vodka_medkit.script Пишем: function give_quest_bring_vodka_medkit() xr_effects.give_inited_task(nil, nil, {"storyline", "quest_bring_vodka_medkit_1", "csky"}) end -- возвращает false при проверке на наличие в инвентаре ГГ двух необходимых предметов function not_have_vodka_medkit(first_speaker, second_speaker) return ((db.actor:object("vodka") == nil) and (db.actor:object("medkit") == nil)) end -- возвращает true при проверке на наличие в инвентаре ГГ двух необходимых предметов function have_vodka_medkit(first_speaker, second_speaker) return ((db.actor:object("vodka") ~= nil) and (db.actor:object("medkit") ~= nil)) end -- передача предметов НПС'у function quest_bring_vodka_medkit_bring_object(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "medkit") end -- получение награды function quest_bring_vodka_medkit_get_money(first_speaker, second_speaker) dialogs.relocate_money(first_speaker, 800, "in") end Все, с этим файлом закончили, сохраняем и закрываем за не надобностью. Ну вот урок по квесту "Найти и принести" завершен. Автор урока и примера: ThirteenDogs ThirteenDogs.spaces.ru Скачать урок и пример можно тут: https://yadi.sk/d/5vra5UtC38e9ff Изменено 12 Января 2017 пользователем Stalker_Monolit 1 1 AtmosFear 3 for Clear Sky Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти