Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава III. Компиляция (ZHLT).

§ 3.8 Изменение карты без компиляции

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

Прежде всего, необходимо, чтобы у Вас была в наличии официальная версия утилит ZHLT 2.5.3. Сами компиляторы нам не понадобятся, но вместе с ними, в архиве, находится утилита Ripent (ripent.exe), которую мы будем использовать.

В каких случаях полезна утилита Ripent?

... и так далее, примеров можно привести огромное множество.

Представьте ситуацию, когда Вы компилируете карту в течении 2-3 часов, и совершенно случайно в ее свойствах забыли указать название картинки неба. Это означает, что на карте будет использовано стандартное небо (desert), вместо того, какое хотели использовать Вы.

Чтобы не компилировать карту заново, можно воспользоваться утилитой Ripent и дописать в нужном месте название неба.


Как это работает?

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

Наша задача, а, точнее, задача утилиты Ripent заключается в изъятии всей текстовой информации из BSP-файла и обратное внесение измененных данных.

Описание энтитей любой карты начинается так:

Более подробно о значении этих и других параметров мы рассказываем в конце статьи.


Применяем Ripent

Ripent - утилита, работающая из командной строки, не имеющая своего графического интерфейса.

Извлекаем текстовую информацию об энтити-объектах

Строка запуска программы для карты de_dust будет выглядеть так:

Так будет выглядеть строка запуска программы Ripent для экспорта данных


Буквально через несколько мгновений в директории с утилитой и картой появится новый файл, в нашем случае это был бы de_dust.ent, а в общем случаем имя_карты.ent.

Не смотря на расширение, это обычный текстовый файл, который можно отредактировать в любом текстовом редакторе, например, Блокноте. Единственное, не забудьте после внесения изменений сохранить файл с расширением *.ent, а не txt.

Вносим измененную информацию обратно в BSP-карту

Давайте сразу же посмотрим, как проделывается обратная операция по внесению измененных данных в карту.
Выполняем первые 3 пункта, как описано выше, но теперь вместо -export пишем -import (см. рис. ниже).

Так будет выглядеть строка запуска программы Ripent для импорта данных


В этом случае вся информация из файла имя_карты.ent будет внесена в откомпилированную BSP-карту. Изменения Вы сможете увидеть уже при следующей загрузке карты. Файл *.ent можно удалить.


Свойства энтити-объектов внутри BSP-файла

Внешний вид свойств энтити-объектов внутри BSP-файла несколько отличается от того, что мы привыкли видеть в редакторе. Например, вместо параметра Name используется запись в виде "targetname", вместо флагов (small radius, start on, toggle и т.д.) используются цифровой код и т.д. Чтобы Вы могли найти и правильно изменить нужную информацию, необходимо знать соответствия между этими параметрами.

Ниже мы приводим таблицу, где представлены основные свойства энтити-объектов в том виде, как они отображаются в редакторе и внутри BSP-карты.

Таблица основных свойств энтити-объектов, как они выглядят в редакторе и внутри BSP-карты


Таким образом, если нам требуется изменить название картинки неба, мы находим в файле *.ent строку со словом "skyname" и после этого слова точно также в кавычках вписываем название неба.

     Например: "skyname" "desert".

Чтобы изменить степень прозрачности стекла (например, func_breakable с именем glass1), необходимо в файле *.ent найти объект с "targetname" "glass1" и изменить параметр "renderamt" "". Точно также изменяются и все остальные свойства энтити-объектов.

После того, как все необходимые изменения будут внесены, сохраняем *.ent файл и запускаем утилиту Ripent с параметром -import.


Недостатки Ripent

Достоинства Ripent очевидны - не нужно повторять многочасовую компиляцию, если допущена незначительная ошибка в свойствах энтити-объектов. Но есть и свои недостатки.

Используя Ripent, Вы должны помнить, что исходник карты в формате RMF или MAP не обновляется! Обновляется лишь готовая BSP-карта. Соответственно, если затем Вы будете повторно компилировать карту, то сделанные изменения в свойствах энтити-объектов просто пропадут, т.к. исходники карты не меняются! Поэтому или используйте Ripent для внесения незначительных изменений (исправления досадных ошибок и пр.) в окончательный вариант карты, или же записывайте все сделанные изменения и затем в редакторе правьте исходник карты.


Несколько интересных фактов

Думаем Вам интересно будет узнать, что список свойств энтити-объектов каждый раз передается клиенту при подключении к серверу.

Благодаря Ripent мы можем изменить свойства энтити-объектов на любых BSP-картах. Можно, например, сделать мост на De_Aztec (из CS 1.5) прозрачным. Для этого нужно найти объект func_illusionary, отвечающий за изображение моста и выставить параметры: "rendermode" "2" и "renderamt" "0" (в редакторе это выглядело бы как: Render Mode: "Texture" и FX Amount "0"). Мост "исчезнет". Правда, найти нужный func_illusionary, который и является мостом, довольно трудно, т.к. на Ацтеке этих объектов (func_illusionary) несколько.

Помните одно - при подключении к игровому серверу с нормальным Ацтеком, ваш мост НЕ будет прозрачным, т.к. на сервере обычная карта с неизмененными энтити-объектами. Также необходимо знать, что такие параметры, как цвет источника света (light; light_spot; light_environment) менять бесполезно, т.к. освещение просчитывается при компиляции. Ну, а такие параметры, как степень прозрачности объектов, режимы их отображения (texture; solid; additive и т.д.), скорость движения машины, время до автоматического закрытия двери, список объектов внутри multi_manager, просто имена объектов, поле target, название неба и некоторые другие параметры можно менять.

Так что Ripent довольно забавная и полезная штука, если знать как ее использоваться. Ну, а Вы уже знаете :)


Глава III. Компиляция (ZHLT).


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0069 ]