mapspl.exe [command] [-option1] [-option2 ...] srcfile [addfile1] [addfile2 ...] [-dest:destfile]
Команды:
mkid создать индексы для сущностей
rmid удалить индексы для сущностей
rmdpid удалить повторяющиеся индексы
extract извлечь из основного файла все то, что отсутствует в добавочных файлах
concat объединить srcfile, addfile1 и т.д. (команда по умолчанию)
help вывести данную помощь
Опции:
-ru переключить сообщения на русский язык
-y отвечать Да на все запросы
-dt/dst/ddt/dat:texture_name удалить все браши с текстурой "texture_name"
для всех/исходного/выходного/дополнительных файлов
-de/dse/dae:(entity_class|ID) удалить все сущности с именем класса "entity_class" либо
идентификатором для всех/исходного/дополнительных файлов
-rptx заменять текстуры
-dest:<filename> задает имя файла назначения
-sc:<filename> подключить файл с опциями
-ba/ea: задать область отсечения для брашей/сущностей
(r|c)/(entity_name|ID|cx/cy[/cz])/rad
прямоугольная/круглая из центра
b/x1/y1[/z1]/x2/y2[/z2] по крайним точкам
m/map_file по брашам из worldspawn
По основным моментам командной строки:
Mapspl.exe [command] [-option1] [-option2 ...] srcfile [addfile1] [addfile2 ...] [-dest:destfile]
srcfile – исходный файл.
addfile1... – дополнительные или добавочные файлы.
destfile – файл назначения. Если он не указан, то результат операции будет помещен в исходный файл.
mkid/rmid
Создать/удалить индекс. Индексирование добавляет каждой сущности параметр «
id» с уникальным значением. Исключение составляет «
worldspawn», который единственный на карту и поэтому сам себе ключ. При операциях извлечения/объединения при наличии индекса происходит поиск по нему. Помимо точного соотношения сущностей это еще добавляет скорости обработки.
Индекс это строковое значение, обязательно содержащее символ «
#» и не содержащее символы «
*» (звездочка) и «
?» (вопросительный знак).
Отсутствие индекса заставляет искать среди всех не индексированных, а это полный перебор всего того, что лежит за пределами «
worldspawn».
rmdpid
Удаление дублирующих индексов. Дублирование индексов может происходить при копировании сущностей.
extract
Технология разбивки на части следующая. Индексируем карту и делаем ее копию. Далее открываем копию в редакторе и вырезаем из нее кусок карты, с которым хотим работать отдельно. Либо наоборот: вырезаем все, кроме куска. Сути это не меняет. Затем запускаем утилиту с параметром
extract указав в качестве добавочного то, что осталось от копии. Результатом операции будет карта, включающая в себя все то, что не содержится в добавочном файле. Т.е. добавочный плюс результирующий должны дать полную карту.
При извлечении происходит поиск для сущности, и если она найдена, то помечается особым образом и уже не сохраняется в результат. Критерием поиска при отсутствии индекса является совпадение свойств «
worldspawn» и «
spawnflags». Если сущность не брашевая, то также учитывается свойство «
origin». В случае с брашами происходит их перебор на совпадение координат и имени текстуры. Сущность, у которой все браши помечены, также не попадает в результат.
concat
Объединение карт. Для каждого добавочного файла делается перебор сущностей. Если сущности нет, то она добавляется. Проверка на совпадение происходит, как и при команде «
extract». Далее происходит проверка наличия брашей. Браш сверяется по координатам и имени текстуры (если не указан параметр
-rptx). Если не нашелся, то добавляется.
При сливании файлов не проверяются свойства. То есть, если в исходном файле присутствует сущность такая же, как в добавочном, то за основу берется сущность из исходного файла, а из добавочного информация теряется. То же самое с двумя добавочными файлами: приоритетнее тот, что указан раньше.
Команда
concat является командой по умолчанию. Т.е. если файл карты и все дополнительные карты имеют расширение, то данную команду можно опустить.
Команда
extract и
concat можно выполнять и без указания дополнительных файлов. Например, для того, чтобы убрать ненужные браши.
-dt/dst/ddt/dat:texture_name
Удаление из всех/исходного/выходного/дополнительных файлов брашей, у которых текстура хотя бы одной из сторон равняется
texture_name. Когда выделяем комнату или регион из всей карты в отдельный файл, появляются естественные дыры. В частности, дверные проемы. Чтобы их не было, можно заделать такие дыры брашами со специальной текстурой. В момент слияния файлов нужно указать данную опцию, и такие браши будут удалены.
В параметре можно использовать символы маски «
*» и «
?».
-de/dse/dae:entity_class
Удаление из всех/исходного/дополнительных файлов сущностей с параметром «
classname» равным
entity_class. Если в параметре присутствует символ «
#», то удаляются сущности с заданным идентификатором, а не именем класса. Использоваться это может для отладки. К примеру, в текущей части карты есть дверь, которая открывается ключом, а ключ располагается в другой части. Чтобы не приходилось вводить что-то типа «
impulse 9» в консоли каждый раз, можно добавить в текущую часть аналогичный ключ, а при слиянии указать опцию
-de/dse/dae, указав нужный класс.
Но самый распространенный случай, скорее всего, это сущность «
info_player_start». Чтобы карта могла стартовать, на ней должна присутствовать данная сущность, причем в единственном экземпляре. Данная опция позволит при слиянии удалить все точки старта, кроме одной.
В параметре можно использовать символы маски «
*» и «
?». Например, следующая команда удалит всех монстров с карты:
mapspl mymap.map –y –de:monster_*
-rptx
Данная опция используется при слиянии карт. Перед тем как добавить браш, команда
concat проверяет наличие этого браша в исходном файле. Если браш найден, то при данной опции в нем будут заменены все текстуры (вместе со сдвигом, положением и растяжением). Данная опция была введена специально для разработки карт несколькими людьми.
Во-первых, это можно использовать для наложения текстур. То есть, один человек делает карту, занимаясь архитектурой и не обращая особого внимания на текстуры. Потом отдает карту второму и второй занимается подгонкой текстур, в то время, как первый продолжает строить карту. После того, как второй завершил свою работу, файл вливается в исходный с указанием опции
-rptx.
Второй способ использования опции - смена архитектуры. Ситуация аналогична предыдущей, но теперь нужно подправить браш. Для этого делаем копию браша и покрываем специальной текстурой, которая в последствии будет удалена из файла с помощью
-ddt. Если позволяет редактор, то скрываем браш (в
GtkRadiant кнопка
H). Далее берем исходный браш и делаем нужные преобразования. После переноса в исходном браше будет заменена текстура, вследствие чего он будет удален, и на его место встанет новый.
Здесь следует быть внимательным, при указании опции удаления браша. Если задать
-dt,
-dst или
-dat, то браш будет удален еще до того, как попадет в выходной файл и подмены текстуры не произойдет. Следовательно, единственной разумной опцией в данном случае будет
-ddt.
-sc
Позволяет подключать файл с правилами преобразования. В принципе, в файле может быть указано все то, что можно написать в командной строке. При этом каждая опция, имя файла и прочее пишутся каждый в своей строке. Перед строкой можно поставить «
//», что будет означать закомментированную строку.
-ba/ea:(r,c,b,m)
Данные опции позволяют отбросить из выходного файла браши/сущности. Областей можно задавать несколько. На принадлежность области проверяется только одна точка. У простой (не брашевой) сущности это свойство «
origin». Для браша или группы брашей вычисляется описывающий параллелепипед, со сторонами параллельными координатным плоскостям, и берется центральная точка.
«
r» и «
c» задают область центром и радиусом. Для «
r» это расстояние в разные стороны от центра до стенок. В данном случае удобно использовать с указанием сущности или класса. (Сущность указывается идентификатором, который отличается от имени класса наличием символа «
#»). Например, я привык перемещать «
info_player_start» туда, где в данный момент происходят построения. Т.е. записал опцию с указанием данной сущности и потом можно не переписывать: сущность подвинул, область тоже подвинулась куда нужно.
Если все же центр задали координатой, то
z можно опустить. Тогда фигура будет бесконечным цилиндром.
«
m» позволяет подключить
map-файл, в котором в качестве областей берутся браши из
worldspawn. Такие области можно нарисовать прямо в карте, а потом сохранить отдельно (через функцию «сохранить выделенные»).
«
b» хороша, если не хотим использовать дополнительные файлы, и прямоугольная область нас устраивает. Здесь можно также опустить
z.
Вообще, опция разрабатывалась как предпроцесс перед компиляцией. Т.е. можно редактировать всю карту, а за счет указания данных областей компилировать только нужную часть.