| Hardtmuth | Дата: Пн, 20.02.2017, 19:20 | Сообщение # 1 |   
 
   
 
   
 
 
 
 
 
 
  
 Статус:    |    
  
  |  Создание типовых квестов в Тени Чернобыля
 
  На PDA Меченого поступило очередное задание — найти и уничтожить  в глухой чащобе волка-отшельника. Темный-темный лес. Звенящая  тишина. Отсутствие видимых признаков жизни. Внезапно Меченый  видит на опушке домик, заходит внутрь и встречается с хозяином,  который рассказывает главному герою обо всех ужасах, творящихся в  здешних местах.
  Нет, это не сюжет продолжения «Сталкера», а всего лишь одна  дополнительная миссия.  Сегодня мы двинемся дальше — осветим тему написания несложных  типовых квестов для игры. Быстрый старт
  Поскольку официальный редактор не позволяет править уровни  одиночной игры, а как следствие — редактировать файлы скриптов,  путей следования NPC и другие ресурсы, мы будем писать квесты в...  обычном «Блокноте». У данного подхода есть всего лишь один минус,  который отпугивает большинство модмейкеров, — отсутствие  удобной оболочки, редактора для просмотра содержимого файлов  просто нет. Зато плюсов куда больше: возможность правки любых  параметров, открытые для редактирования исходные коды и многое  другое. Игра стоит свеч.
  С чего же начать? Первым делом попрактикуемся в создании  несложных типовых заданий типа «убить сталкера», «уничтожить  лагерь», «найди ценный артефакт».  Запустите «Блокнот» и подгрузите в него файл task_manager.ltx из  директории gamedata\config\misc с распакованной игрой (если у вас  есть лишь недавно установленная версия «Сталкера», разархивируйте  базы данных игры при помощи утилиты S.T.A.L.K.E.R. Data Unpacker).  Файл содержит информацию о простейших игровых заданиях.  Структура его следующая. В первой части файла — от оператора
  до кейворда 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  prior = 2 
  Рассмотрим основные параметры. Самый первый — type — отвечает  за тип задания, в данном случае — уничтожить сталкера (kill_stalker). В  игре предусмотрено несколько видов стандартных заданий:  уничтожение/защита лагеря (параметр eliminate_lager/defend_lager),  убийство сталкера (kill_stalker), поиск артефакта/конечности  монстра/предмета (artifact/monster_part/find_item).  Поскольку специальных редакторов и утилит для изменения  «Сталкера» нет, приходится править скрипты в «Блокноте», а игровые  тексты — в табличном редакторе Excel. Не очень удобно, но  альтернативы просто нет.  Параметр 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 и  модифицируйте текст каждой из записей. Закончив правку задания,  сохраните все изменения и протестируйте квест в игре.Тонкости  квестостроения Чтобы оставить свой собственный авторский след в файле  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] 
  Для преобразования геймплея S.T.A.L.K.E.R. достаточно поправить  всего лишь несколько параметров каждой типовой миссии в файле  task_manager.ltx. Как вариант, вы можете значительно сократить  время, отведенное на выполнение каждого квеста, занизить очки  репутации за прохождение той или иной миссии, но в то же время в  несколько раз увеличить число бонусов и денежных средств.  Квестострой Теперь, когда вы изучили основы редактирования однотипных  игровых заданий, можно попробовать силы в написании своего  собственного квеста — создать необходимые записи в менеджере  заданий (файл task_manager.ltx), а также снабдить квест текстовыми  описаниями. Запустите «Блокнот» и подгрузите в него файл task_manager.ltx из  директории gamedata\config\misc. Отыщите ключевое слово  sar_monolith и после него с новой строки добавьте следующую  конструкцию:  ; Ваш авторский комментарий  [mission_name] Здесь [mission_name] — произвольное наименование квеста,  например, tm_kill_stalker_7. Для изменения игрового баланса нужно отредактировать коды  типовых заданий. Далее скопируйте какое-нибудь типовое задание, например,  [tm_kill_stalker_2] в буфер обмена и поместите дубликат в самый  конец документа. Измените название клонированной миссии,  заключенное в квадратные скобки, на название квеста, объявленного  вами в списке заданий. Модифицируйте параметры оригинальной  миссии, при необходимости добавьте в код миссии дополнительные  команды. Самое главное — не забудьте поправить значения  параметров text и description, которые соответствуют названиям  текстовых записей в файлах gamedata\config\gameplay\storyline_info_taskmanager.xml и  gamedata\config\text\rus\stable_task_manager.xml. Затем откройте  «Блокнотом» XML-файл storyline_info_taskmanager.xml из каталога  gamedata\config\gameplay с игрой и добавьте в конец файла  следующий блок: 
 
  В данном фрагменте кода [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)  напечатайте название будущего задания.
  В поле A-392 (A — название столбца, 392 — порядковый номер строки)  вбейте название, прописанное в качестве параметра description вашей  миссии, а в области B-392 — текст сообщения, который будет подан на  PDA главного героя. В ячейке A-393 пропишите значение  характеристики text вашей миссии и в поле напротив наберите текст  задания для отображения во время беседы между Меченым и  работодателем. Сохраните изменения и закройте табличный редактор.
 
 
 
  
 
 
    
 |   
|   |  
 |    |