Как открыть файл quest

Обновлено: 05.07.2024

На PDA Меченого поступило очередное задание — найти и уничтожить в глухой чащобе волка-отшельника. Темный-темный лес. Звенящая тишина. Отсутствие видимых признаков жизни. Внезапно Меченый видит на опушке домик, заходит внутрь и встречается с хозяином, который рассказывает главному герою обо всех ужасах, творящихся в здешних местах.

Нет, это не сюжет продолжения «Сталкера», а всего лишь одна дополнительная миссия, разработанная в нашей игрострой-лаборатории. В прошлых статьях по модифицированию «Сталкера» мы изучили интерфейс редактора карт из официального SDK, а также научились конструировать несложные уровни для игры на основе стандартных объектов и новых сцен, изготовленных в 3DS Max. Сегодня мы двинемся дальше — осветим тему написания несложных типовых квестов для игры.

Быстрый старт

С чего же начать? Первым делом попрактикуемся в создании несложных типовых заданий типа «убить сталкера», «уничтожить лагерь», «найди ценный артефакт».

Запустите «Блокнот» и подгрузите в него файл task_manager.ltx из директории gamedata\config\misc с распакованной игрой (если у вас есть лишь недавно установленная версия «Сталкера», разархивируйте базы данных игры при помощи утилиты S.T.A.L.K.E.R. Data Unpacker).

Файл содержит информацию о простейших игровых заданиях. Структура его следующая. В первой части файла — от оператора [list] до кейворда sar_monolith — объявляются специальные метки, ответственные за подключение новых квестов к игре. Пример одной из таких конструкций — буквосочетание tm_kill_stalker_5, это название типовой миссии. Во второй части файла — после ключевого слова sar_monolith — размещаются тексты заданий: цели, задачи, ссылки на диалоги. Разберем структуру одного из квестов, начинающегося со специальной метки [tm_kill_stalker_3] (обратите внимание, что при объявлении задания в первой части файла квадратные скобки ставить не нужно):

[tm_kill_stalker_3]

type = kill_stalker

community = actor

text = tm_kill_stalker_3_text

description = tm_kill_stalker_3_descr

parent = trader

target = sim_stalker_novice

;reward_money = 1000

reward_reputation = -5

reward_rank = 2

reward_item = af_blood

time = 86400

Рассмотрим основные параметры. Самый первый — type — отвечает за тип задания, в данном случае — уничтожить сталкера (kill_stalker). В игре предусмотрено несколько видов стандартных заданий: уничтожение/защита лагеря (параметр eliminate_lager/defend_lager), убийство сталкера (kill_stalker), поиск артефакта/конечности монстра/предмета (artifact/monster_part/find_item).

Параметр community определяет группировку, к которой принадлежит главный герой. По умолчанию во всех миссиях в качестве значения данной характеристики используется ключевое слово actor (персонаж).

text — название записи в файле stable_task_manager.xml, содержащей текст задания. Текст отображается в диалогах.

description — запись в файле stable_task_manager.xml. Здесь собран текст миссии, выводимый на PDA Меченого.

Следующая настройка — атрибут parent — определяет имя заказчика, в данном случае trader (торговец Сидорович).

target — цель миссии, в текущем квесте — убийство одного из сталкеров — novice (sim_stalker_novice).

reward_money — награда, которую получит игрок после выполнения задания.

reward_reputation — число очков репутации, добавляемое игроку после прохождения квеста. Вы можете понизить Меченому репутацию за выполнение задания, выставив в качестве значения атрибута любое целое отрицательное число.

reward_rank — количество ранговых очков за выполнение миссии.

reward_item — бонусные предметы, вручаемые главному герою, за прохождение квеста.

time — время (в секундах), в течение которого игрок должен пройти миссию.

prior — приоритет данного задания перед остальными. Цифра 1 ставится в том случае, если задание крайне важно, и далее по нисходящей.

Самое время попрактиковаться и модифицировать какой-нибудь оригинальный игровой квест. Отыщите строку [tm_kill_stalker_5] (для вызова меню поиска в «Блокноте» воспользуйтесь комбинацией горячих клавиш Ctrl+F) и модифицируйте параметры данной миссии. Например, вы можете просто повысить/понизить сложность игры, увеличив или уменьшив время, отведенное игроку на выполнение задания (параметр time), снять значок блокировки строки (символ ;), reward_money (денежное вознаграждение) или, скажем, придать параметру reward_reputation значение ноль, чтобы Меченый не терял репутацию в Зоне.

Текстовый беспредел

С правкой исходного кода миссии мы разобрались. Движемся дальше и приступаем к модификации игровых текстов. Загляните в каталог gamedata\config\text\rus установленной игры, отыщите в директории файл stable_task_manager.xml и откройте его при помощи табличного редактора Microsoft Excel.

После запуска программы вы увидите, что вся информация из XML-файла будет распределена по двум столбцам — A и B, которым соответствуют названия id (идентификационный номер) и text (текст). Если спускаться плавно вниз по столбцу id, то нетрудно установить так называемую закономерность. Строки 3, 6, 9 и далее в арифметической прогрессии содержат заголовок типовой миссии. Строки 4, 7, 10, 13, 16 с окончанием _descr — краткое описание (цель задания), выводимое на PDA главного героя. Ну а строки 5, 8, 11, 14 и далее, заканчивающаяся на _text, содержат текст, отображаемый во время диалога с персонажем, у которого вы получили задание.

Таким образом, для изменения текстов того или иного одноуровневого задания, прописанного в файле task_manager.ltx, вам нужно проделать следующие нехитрые манипуляции. Первым делом скопируйте в «Блокнот» название определенной миссии из task_manager.ltx (без квадратных скобок), ее описание для вывода на PDA (параметр description) и текст диалога (text). Затем поочередно отыщите выписанные ключевые слова в XML-файле stable_task_manager.xml и модифицируйте текст каждой из записей. Закончив правку задания, сохраните все изменения и протестируйте квест в игре.

    S.T.A.L.K.E.R. Создание типовых квестов
  • Чтобы оставить свой собственный авторский след в файле task_manager.ltx, да и вообще в любом конфигурационном файле «Сталкера», нужно всего-то лишь поставить в нужном месте (после кода или с новой строки) символ точки с запятой и после него вживить комментарий, например: tm_eliminate_camp_4 ; игроманский комментарий, не удалять.
  • Далеко не все квесты, написанные разработчиками, вошли в оригинальную игру. Что, никогда о таком не слышали? Тогда имейте в виду, что, например, в файле task_manager.ltx содержится ряд закомментированных, но вполне рабочих заданий, цель которых сводится к убийству сталкеров и поиску полезных вещиц. После тщательного прочесывания документа на наличие такого рода заданий мы обнаружили следующие заблокированные квесты:

;--[barmen_eliminate_camp_3]

;--[barmen_find_item_1]

;--[barmen_find_item_2]

;--[barmen_find_item_3]

Квестострой

Теперь, когда вы изучили основы редактирования однотипных игровых заданий, можно попробовать силы в написании своего собственного квеста — создать необходимые записи в менеджере заданий (файл task_manager.ltx), а также снабдить квест текстовыми описаниями.

Запустите «Блокнот» и подгрузите в него файл task_manager.ltx из директории gamedata\config\misc. Отыщите ключевое слово sar_monolith и после него с новой строки добавьте следующую конструкцию:

; Ваш авторский комментарий

[mission_name]

Здесь [mission_name] — произвольное наименование квеста, например, tm_kill_stalker_7.

Для изменения игрового баланса нужно отредактировать коды типовых заданий.

<article name="kill_stalker" article_type="task">

В данном фрагменте кода [descr] — значение параметра description в теле миссии, (в нашем случае — tm_kill_stalker_7_descr).

Осталось внести изменения в файл stable_task_manager.xml, содержащий тексты заданий на русском языке. Перейдите в каталог gamedata\config\text\rus и при помощи любого табличного редактора — скажем, Excel — откройте файл stable_task_manager.xml. Передвиньте ползунок в правой части программы в нижнюю часть документа. В ячейке на пересечении 391 строки и первого столбца введите ключевое слово, соответствующее названию вашего квеста в файле task_manager.ltx. После этого в поле напротив (ячейка B-391) напечатайте название будущего задания.

Если появилась ситуация, в которой Вы не можете открыть файл QUEST на своем компьютере - причин может быть несколько. Первой и одновременно самой важной (встречается чаще всего) является отсутствие соответствующей аппликации обслуживающей QUEST среди установленных на Вашем компьютере.

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

В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами QUEST.

Программа(ы), умеющие открыть файл .QUEST

Возможные проблемы с файлами в формате QUEST

Отсутствие возможности открытия и работы с файлом QUEST, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом . Ниже находится список возможных проблем.

  • Повреждение открываемого файла QUEST.
  • Ошибочные связи файла QUEST в записях реестра.
  • Случайное удаление описания расширения QUEST из реестра Windows
  • Некомплектная установка аппликации, обслуживающей формат QUEST
  • Открываемый файл QUEST инфицирован нежелательным, вредным программным обеспечением.
  • На компьютере слишком мало места, чтобы открыть файл QUEST.
  • Драйверы оборудования, используемого компьютером для открытия файла QUEST неактуальные.

Если Вы уверены, что все перечисленные поводы отсутствуют в Вашем случае (или были уже исключены), файл QUEST должен сотрудничать с Вашими программами без каких либо проблем. Если проблема с файлом QUEST все-таки не решена, это может значить, что в этом случае появилась другая, редкая проблема с файлом QUEST. В таком случае остается только помощь специалиста.

Updated 12/31/1969

Похожие расширения

.4zx Genero Zoom Module Settings
.cd5 Chasys Draw Image
.fau Simulation Laboratory Creator Collapsed Fault List
.pekey PhysicsEditor Key
.phc Home Embroidery
.radius Ruby-Radius Scipt
.rpym RenPy Module
.tpkey TexturePacker License
Как связать файл с установленной программой?

Если Вы хотите связать какой-то файл с новой программой (напр. moj-plik.QUEST) Вы можете воспользоваться двумя вариантами. Первый и самый простой - это нажатие правой кнопкой мышки на избранный файл QUEST. Из открытого меню выберите опцию Выбрать программу по умолчанию", затем опцию "Пересматривать" и найти требуемую программу. Всю операцию необходимо утвердить нажатием кнопки OK.

Есть ли универсальный метод открытия неизвестных файлов?

Многие файлы содержат данные в виде текста или чисел. Возможно, что во время открытия неизвестных файлов (напр. QUEST) популярный в системе Windows простой редактор текста, которым является Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.

Большинство владельцев Oculus Quest знают, что есть возможность подключить Quest к компьютеру, чтобы играть в игры PCVR. Однако вы можете не знать, что подключение к компьютеру также позволяет передавать файлы между гарнитурой и компьютером.

Это позволит вам загружать фильмы, музыку, изображения, игровые моды и другой контент на свое устройство. Ниже мы покажем процесс передачи файлов на Quest (и из него).

Как подключить Quest к ПК

  1. Подключите Quest к компьютеру с помощью кабеля USB-C. Если у вашего ПК есть собственный порт USB-C, вы можете использовать кабель USB-C, который идет в комплекте с Quest. Вы увидите Quest в проводнике.

Если вы используете Mac

Вам нужно будет использовать специальное приложение для доступа к файлам, поскольку Apple плохо справляется с устройствами Android.

  1. Загрузите приложение Android File Transfer.
  2. Откройте файл DMG.
  3. Переместите Android File Transfer в папку «Приложения».
  4. Подключите Quest к компьютеру Apple.
  5. Откройте приложение, которое должно обнаружить и отображать ваши файлы как диск.

Если запрос на доступ к файлам не появляется

Убедитесь, что Quest не находится в режиме разработчика, это может помешать появлению опции передачи файлов. Отключите Quest от компьютера и попробуйте выполнить следующие действия:

  1. Откройте мобильное приложение Oculus Quest.
  2. Откройте меню настроек.
  3. Коснитесь изображения подключенного устройства Quest.
  4. Выберите Дополнительные настройки.
  5. Выберите режим разработчика.
  6. Отключить режим.
  7. Наденьте гарнитуру Quest.
  8. Нажмите и удерживайте кнопку питания, затем выберите «Перезагрузить».
  9. Подключите Quest к компьютеру.

Итоги

Хотя подключение Quest к компьютеру — довольно простая задача, она открывает очень большой потенциал для Quest. После того, как вы загрузили изображения, фильмы или подкасты в Quest, вы можете легко получить к ним доступ на устройстве. Вам просто нужно выбрать вкладку «Библиотека», щелкнуть приложение «Галерея Oculus» и выбрать «Внутреннее хранилище». Теперь вы сможете просматривать все, что вы добавили через ПК.

Кроме этого, вы можете загрузить свои лучшие моменты виртуальной реальности из Quest на ПК. Сделайте снимок экрана или запишите видео, чтобы показать друзьям или опубликовать в Интернете, а затем просто подключитесь к компьютеру и перенесите файлы из библиотеки Quest на ПК. Кроме того, прямой контроль над пространством для хранения данных значительно упрощает удаление старых файлов и освобождает место для новых игр и контента.

Все, теперь наш файл My_quests.c интегрирован в игру и можно спокойно писать в нем квесты.

Начнем. Для начала придумаем нехитрый сюжет (возьму из своего квеста к КТДМ): ГГ встречает священника и тот просит найти и помочь девушке за вознаграждение. ГГ находит девушку и во время разговора к нем приходит враждебный НПС, они разговаривают, (кстати будет показано как писать диалог на троих) а потом происходит дуэль между ГГ и НПС. Потом ГГ возвращается к священнику и получает награду.

Самое первое, это создание персонажей, НПС то есть. Вот этим и займемся. Значит, у нас есть священник, в одной локации, девушка в другой локации, а потом еще один НПС прибудет в ту же локацию, что и девушка. Вначале, выберем модельки НПС для нашей истории с помощью программы GM Viewer и прописываем код нашим НПС. (Так как уже существуют уроки по написании НПС и диалогов, объяснять тут, что к чему, уже не буду). Скажу только то, что священника мы сразу помещаем в локацию, остальные НПС возникнут в локациях по мере прохождения квеста, то есть исполнения case квеста. Некоторые выражения, использованные в этом уроке, вообще не нужны для исполнения данного квеста, просто привел их как дополнения, чтобы не описывать отдельно.

Далее пишем диалоги для всех НПС.

CH_Kornelius_dialog.с

Примечание: ChangeCharacterAddress(characterFromID("id НПС"), "None", ""); - убирает НПС из локации.

CH_Konchitas_dialog.с

CH_Genish_dialog.c

Создали НПС, написали диалоги. Перейдем непосредственно к написанию квеста. Квест написан непрерывно, просто по ходу дела, буду вставлять пояснения.

case "ChurchTreasure":
pchar.quest.ChurchTreasure0.win_condition.l1 = "location";
pchar.quest.ChurchTreasure0.win_condition.l1.location = "SanSebastian_door58";
pchar.quest.ChurchTreasure0.win_condition = "ChurchTreasure0";
break;

case "ChurchTreasure": - case квеста и название case
pchar.quest.ChurchTreasure0.win_condition.l1 = "location"; - условие, нахождение в локации
pchar.quest.ChurchTreasure0.win_condition.l1.location = "SanSebastian_door58"; - id локации
pchar.quest.ChurchTreasure0.win_condition = "ChurchTreasure0"; - имя case который будет запущен.

Примечание: pchar.quest.(QuestName).win_condition.l1 = "условие выполнения"; - условия выполнения case для запуска последующего case квеста. Они могут быть различными. В конце урока есть дополнение, где приведены различные win_condition с объяснениями, для чего они нужны.

Lai_setActorType(Pchar); - поменять тип ГГ на актера, отменяет управление
LAi_ActorFollow(Pchar, CharacterFromID("First Church Treas"), "", -1); - ГГ идет в сторону НПС, в нашем случае, к священнику
Lai_setActorType(CharacterFromID("First Church Treas")); - НПС присваивается тип «актер»
LAi_ActorFollow(CharacterFromID("First Church Treas"), Pchar, "ChurchTreasure0a", -1); - НПС идет к ГГ

Lai_setPlayerType(Pchar); - дает ГГ тип «игрока», то есть, есть возможность управлять ГГ в игре
Lai_ActorDialogNow(characterFromID("First Church Treas"), Pchar, "",-1); - начать диалог между НПС и ГГ

SetQuestHeader("ChurchTrs"); - открывает тему квеста в СЖ
AddQuestRecord("ChurchTrs", "1"); - добавляет запись в СЖ под номером 1
Lai_setPlayerType(characterFromID("First Church Treas")); - делает НПС игроком
Lai_setCitizenType(characterFromID("First Church Treas")); - делает НПС горожанином, то есть, НПС ходит туда-сюда
ChangeCharacterAddressGroup(CharacterFromID("Konchitas"), "SanSeb_port_door_4", "goto", "goto2"); - добавляет в игру НПС, в нашем случае, НПС Кончита появляется в локации SanSeb_port_door_4, имеет отношение к группе локаторов goto и стоит точно в локаторе goto2

Locations[FindLocation("SanSeb_port_door_4")].reload.l1.disable = true; - закрывает локацию, что бы ГГ не смог выйти из нее.

DoQuestCheckDelay("ChurchTreasure_4", 0.1); - задержка исполнения case квеста на время 0.1 в секундах

Отсюда начинается диалог на троих. Можно посмотреть взаимосвязь case диалогов и case квестов.

Locations[FindLocation("SanSeb_port_door_4")].reload.l1.disable = false; - открывает локацию, ГГ может выйти
DoQuestReloadToLocation("SanSeb_port", "goto", "goto_24", "ChurchTreasure_14"); - перемещает ГГ в локацию и перегружает исполнение case квеста, в нашем случае, ГГ переместится в локацию SanSeb_port и встанет на локатор goto_24

ChangeCharacterAddressGroup(CharacterFromID("Geneshok"), PChar.location, "goto", "goto_25"); - перемещает НПС в локацию к ГГ, в нашем случае, жених Кончиты оказывается на соседнем локаторе goto_25, около героя.

LAi_SetImmortal(CharacterFromID("Geneshok"), false); - отменить бессмертие НПС
LAi_SetHP(CharacterFromID("Geneshok"), 500.0, 500.0); - задать НПС здоровье
LAi_SetWarriorType(CharacterFromID("Geneshok")); - сделать НПС врагом
GiveItem2Character(CharacterFromID("Geneshok"), "gun3"); - дать НПС пистоль
EquipCharacterByItem(CharacterFromID("Geneshok"), "gun3"); - разрешить пользоваться пистолем
LAi_group_MoveCharacter(CharacterFromID("Geneshok"), "GENESHOKS_BANDA"); - переместить НПС в группу, требуется только если много НПС нападают на ГГ (пишу просто по своему шаблону, поэтому у меня так)
LAi_group_SetRelation("GENESHOKS_BANDA", LAI_GROUP_PLAYER, LAI_GROUP_ENEMY); - устанавливает отношения группы, в данном случае, враждебные отношения. (можно использовать RELATION_FRIEND – дружественные отношения или RELATION_ NEUTRAL – нейтральные.)
LAi_group_FightGroups("GENESHOKS_BANDA", LAI_GROUP_PLAYER, true); - нападение группы на ГГ
PChar.quest.ChurchTreasure_17.win_condition.l1 = "NPC_Death"; - условие, смерть НПС
PChar.quest.ChurchTreasure_17.win_condition.l1.character = "Geneshok"; - id НПС который должен умереть
PChar.quest.ChurchTreasure_17.win_condition = "ChurchTreasure_17"; - название следующего case квеста который будет исполнен

CloseQuestHeader("ChurchTrs"); - закрытие название квеста в СЖ

Вот и все. Теперь вы можете самостоятельно написать не сложный квест.

Некоторые из win_condition:

Можно комбинировать win_condition (например):

Допустим должна произойти дуэль между ГГ и НПС. Прописав такое выражение в case квеста получим два разных результата: если ГГ убьет НПС запуститься case квеста 1, а если сбежит из локации, то case квеста 2

Читайте также: