Многоуважаемые Модостроители и те кто увлекается модмэйкерством, скажи можноли в игру Модом добавить новые квесты? я просто ничего подобного делать не умею и хочу узнать у знающих людей. И если можно, то почему бы не заняться написанием сценариев квестов!?
Ну для рывка давайте обсудим пару статей из журнала Игромания.
Создание типовых квестов
Автор:
Эдуард Клишин
На PDA Меченого поступило очередное задание — найти и уничтожить в глухой чащобе волка-отшельника. Темный-темный лес. Звенящая тишина. Отсутствие видимых признаков жизни. Внезапно Меченый видит на опушке домик, заходит внутрь и встречается с хозяином, который рассказывает главному герою обо всех ужасах, творящихся в здешних местах.
Нет, это не сюжет продолжения «Сталкера», а всего лишь одна дополнительная миссия, разработанная в нашей игрострой-лаборатории. В прошлых статьях по модифицированию «Сталкера» мы изучили интерфейс редактора карт из официального SDK, а также научились конструировать несложные уровни для игры на основе стандартных объектов и новых сцен, изготовленных в 3DS Max. Сегодня мы двинемся дальше — осветим тему написания несложных типовых квестов для игры.
Быстрый старт
Поскольку официальный редактор не позволяет править уровни одиночной игры, а как следствие — редактировать файлы скриптов, путей следования NPC и другие ресурсы, мы будем п**50012a1699cd**50022a**500**500**500**500**500**500**500**501**501**501**501**501**501**501**501**501**501**502**502**502**502**502**502**502**502**502**502**503**50312a1699cdd64639ea**
Зона поражения 3 (когда ни будь в другой реальности...)
Arhet А ты знаеш как делать не примитивные? тогда может поможеш? Поскольку я в Кодах и програмировании ни шарю:-G, то могу писать только сценарии к квестам...да и не только я, а все желающие могут писать свои сценарии.:-)
Много трёпа ненужного. Писать руководство, так по делу. Статью писать надо пошагово и не использовать малознакомые термены. Что б любой новичок мог спокойно пошагово добавить квест, а затем его изменить. И не однотипный, а сложный. Предлогаю автору темы этим и заняться. Сначало попробывать добавить , а потом отписаться об успехах и написать как он делал, на понятном всем языке. Привёдённая статья не очень. На мод Wiki лучше.
Создание квестов и диалогов
Создание базового диалога
Итак, приступим к созданию диалога, в котором нам будет выдаваться новый квест. Участвующие лица: Сидорович (С) и Меченый (М)
М: Здравствуй, Сидорыч! Есть работенка?
С: О, неужели заглянул к нам на огонек, Меченый? Ладно... ближе к телу... эээ, к делу. У меня к тебе следующая просьба: сбегай к Волку, у него что-то намечалось.
М: Без проблем! Уже бегу.
Будем считать, определились с фразами базового диалога. Теперь необходимо добавить его в соответствующем виде, чтобы игре он был «понятен».
Создание «скелета» диалога.
Для того, чтобы добавить наш диалог, необходимо открыть для редактирования файл gamedata\config\gameplay\dialogs_escape.xml
Для тех, кто знаком с языком XML структура данного файла будет ясна с первого взгляда. Но, поподробнее об этом.
Для того, чтобы добавить в игру диалог предусмотрены так называемые тэги. В данном случае, тэгами являются такие конструкции:
1. и закрывающий к нему -
2.
3. -
4. -
5.
6.
В принципе, этих конструкций уже достаточно для того, чтобы создать диалог. Но, диалог, созданный на основе этих конструкций, не сможет стать основой для нового квеста. Для того, чтобы во время диалога вам выдавался квест, есть соответствующий тэг. Но об этом – чуть позже.
Поясню, что обозначает каждый тэг в отдельности.
1. Определяет содержимое файла (в данном случае, говорит о том, что файл содержит диалоги);
2. Определяет новый диалог с id = «». Где содержимое кавычек есть идентификатор диалога. Идентификатор диалога задается в файлах типа character_description_***.xml ;
3. Этот тэг говорит XML-парсеру игры о том, что далее следуют фразы диалога. Иными словами, между и содержатся фразы диалога;
4. Этот тэг определяет фразу с id = «». Внутри кавычек содержится идентификатор фразы (ВНИМАНИЕ: идентификатором в данном случае могут быть ТОЛЬКО цифры);
5. Внутри этих двух тэгов содержится ссылка на соответствующий данной фразе текст (пример, esc_trader_talk_info_123). Сам текст берется из файлов типа stable_dialogs_*****.xml, в котором содержатся все фразы в текстовом виде. О создании текста фразы поговорим позже;
6. Внутри этого тэга содержится ссылка (в числовом формате) на следующую (или следующие) фразы.
Теперь приступим к тэгам, позволяющим производить какие-то действия во время диалога.
. Представляет собой предусловие, в случае выполнения которого (то есть предусловие вернуло ИСТИНУ) данный диалог, или фраза будут появляться в списке доступных во время игры у NPC.
. Данный тэг позволяет производить какое-либо действие во время диалога (например, передачу предметов между общающимися... так же позволяет производить более сложные действия). Внутри тэга располагается ссылка на какую-либо функцию (например, dialogs. actor_set_dolg сделает игрока членом группировки Долг).
. Позволяет выдавать игроку во время диалога так называемые info_portion'ы (кстати, инфопоршны можно выдавать так же и через , только это потребует создания специальной функции). info_portion – является основой для квестов, info_portion’ы определяются в файлах типа info****.xml. Инфопоршны могут, как начинать квест, так и заканчивать (завершать) его. Так же, с помощью инфопоршнов можно отслеживать действия игрока, для того, чтобы, например, вывести в нужное время диалог. и являются предусловиями для текущей фразы/диалога. Первый тэг проверяет наличие данного инфопоршна у игрока, второй – отсутствие.
Ну что, теперь мы можем создать диалог, в котором нам будет выдаваться квест. Но мы не создали самих info_portion'оф, которые позволяет активировать квест.
Создание info_portion'ов
Итак, открываем файл gamedata\config\gameplay\ info_l01escape.xml. Что мы там видим? Правильно, все ту же структуру XML. В данном файле нас интересуют только два тэга:
Первый объявляет сам info_portion. Второй – объявляет задание (идентификатор задания id содержится внутри тэга )
Для примера, создадим 3 info_portion, которые понадобятся нам для будущего квеста:
new_task
Это инфопоршн с именем new_task_started. Он активирует квест с именем new_task.
Создание нового квеста
Сами квесты содержаться в файлах типа tasks_*****.xml
Откроем файл gamedata\config\gameplay\tasks_escape.xml. Структура – все тот же XML.
Для примера исследуем уже существующий квест: esc_help_wounded_from_raid esc_help_wounded_from_raid_0 ui_iconsTotal_esc_help_wounded_from_raid escape_tasks.task_fox_complete garbage_meetstalker_start esc_fox_help
Задает имя (id) нового квеста. В данном случае, esc_help_wounded_from_raid. prio = “” задает приоритет задачи. Чем выше приоритет, тем больше вероятность того, что текущий маркер квеста будет переключен на ваше задание.
esc_help_wounded_from_raid
Задает заголовок квеста. Т. е. его название. Название можно прописать в виде текста, либо в виде ссылки. В данном случае используется ссылка на текст, который хранится в файле string_table_tasks_escape.xml.
escape_tasks.task_fox_complete
Вызывает функцию из файла escape_tasks.script под именем task_fox_complete. При выполнении данной функции дается info_portion, который завершает данную подзадачу, в случае, если все условия функции соблюдаются.
escape_fox_heal
Текущее подзадание будет завершено в случае, если игроку будет дан этот info_portion.
esc_dogs_return
Текущее подзадание будет провалено в случае, если игроку будет дан этот info_portion.
green_location
Создает указатель на карте с подсказкой esc_fox и типом green_location.
Escape_stalker_from_raid
Указывает на sid из файла gamedata\config\game_story_ids.ltx
garbage_meetstalker_start
Автоматически устанавливает данную подзадачу в положение «Выполнено», если у игрока есть данный info_portion. //!!!!!!Не уверен – не пользовался не разу.
esc_help_wounded_from_raid_0
Содержит описание подзадачи. Может содержать внутри как текст, так и ссылку на текст.
Создадим задание, которое потребуется нам для диалога: Поговорить с Волком Вернуться к Сидорычу blue_location Escape_Trader player_complete_new_task infoportion_complete>
Поговорить с Волком green_location Escape_novice_lager_volk player_talked_with_wolf infoportion_complete>
Вернуться к Сидорычу blue_location Escape_Trader player_complete_new_task infoportion_complete>
Теперь создадим скелеты диалогов для нашего квеста. Потребуется три: один для Волка и два для Сидорыча.
Все «скелеты» добавляем в файл dialogs_escape.xml. Между и
Вот ещё одна
Создание квестов (базовый уровень)
Вступление
Перед изучением этого урока советую освоить находящийся несколько выше урок "Создание диалогов".
Небольшие правила, следуя которым, можно сберечь себе много нервов:
- всегда сохраняйте резервные копии модифицируемых файлов - старайтесь почаще тестировать внесенные изменения - так проще понять, в чем вы ошиблись (если активно работать пару часов без остановки, не разу не протетировав внесенные изменения, то потом будет очень сложно понять - почему же, черт возьми, игра вылетает при попытке поговорить с Сидоровичем?) - перед началом работы создайте новую папку gamedata, а свои моды спрячьте подальше: работать с "чистой" версией игры не в пример удобнее и проще; особенно противопоказан Repair Mod, который с новыми диалогами часто конфликтует. О том, как создать диалоги и квесты, исключающие возможность конфликта с другими подобными модами, см. часть 4.
Создание базового диалога
Начнем создание квеста с написания небольшого линейного диалога.
Открываем файл gamedata\config\gameplay\character_desc_escape.xml и проводим такие манипуляции:
- находим строку "escape_trader_done_blockpost_box" - добавляем после нее новую - "escape_trader_oops" - сохраняем изменения
Мы добавили к Диалогу с Сидоровичем новую ветку, вернее, только ссылку на неё. Сама внутренняя структура ветки хранится в файле gamedata\config\gameplay\dialogs_escape.xml, который мы открываем и производим:
- находим в любом месте файла промежуток между и
отредактировал(а) G.S.T.: 02-02-2008 15:50 GMT3 час.
Люди, особенно те из вас, кто умеет делать квесты (не типовые,однотипные ещё их зовут), подскажите, как сделать в квесте на убийство монстров, чтобы при их убийстве или при диалоге с работодателем после их убийства, выдавался инфопоршн на его выполнение. У меня есть догадка, что нужна скриптовая функция, которая будет проверять во время диалога, убиты ли монстры. Но как её выполнить? Плиз, ваши советы и догадки по функции и по осуществлении квеста в целом.
Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
В том та и фишка, что с етим файлом я ниче не делал. Когда выдало ошибку, то всунул туда, что думал нужным и тоже самое
Вообщем я про квестостроение больше ниче и нечитал, кроме вышеприведенных статей. Если я сделал елементарную ошибку, то прошу не смеятся
Arhet я пробовал сделать новую группировку и квесты на них как на твоей статье было указыно, но при включение игра вылетает. Может я квесты для них не правильно сделал?
добавлено спустя 45 секунд
Вроде эти квесты у долга все пошли!
отредактировал(а) _strelok_: 19-04-2008 10:56 GMT3 час. Я живу ради жизни, я умираю ради новой жизни.
Вопрос такой: пишу квест, всё работает, инфопоршны и подсказки выдаются, НО...
При попытке открыть в ПДА вкладку "Задачи" происходит вылет с чистым логом. Кто в курсе, с чем это может быть связано???
Загляни вжурнали будет тебе счастье!!! Terra Incognita M.O.D.(T.I.M.O.D.)
dans , ты прав, такого я в таске не писал. Сейчас попробую изменить. И ещё, не можешь подсказать - ещё пара минусов - при получении квеста у Сидора мне выдаётся подсказка типо "Сходить к Волку". А после того, как я поговорю с Волком - нет. Просто кончается диалог, а там - иди куда хочется. И ещё - в квесте Волк даёт мне что-нибудь, и после этого я иду к Сидору. Скриптовая функция пашет, выдача, к примеру, ствола, происходит, но никакой инфы наподобие "получен предмет..." не появляется. Не знаешь, как всё это сделать? Я в квестах покопался(стандартных), но ничего похожего не нашёл.
Загляни вжурнали будет тебе счастье!!! Terra Incognita M.O.D.(T.I.M.O.D.)
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.