Собственно, можно ли выполнить конвертацию rmf в map через командную строку? Понятно, что в теории возможно, но интересуют готовые реализации, может быть, есть утилита какая или можно хаммер по-особому вызвать.
параметр -na добавлять обязательно, иначе этот hlfix посчитает себя умнее пользователя и начнёт исправлять "ошибочные браши", после чего, десятки часов в поисках блуждающих компланар плэйнов гарантированы.
Может кому надо, бат для джека. rmf не хранит пути до вада, hlfix брал пути к вадам из записей реестра к хаммеру, джек же хранит их в конфиге. Имя карты берётся из имени бата
@echo off
set mapname=%~n0
set modname=cstrike
::пути без кавычек
set hlpath=C:\Program Files (x86)\Steam\steamapps\common\Half-Life
set zhltpath=C:\Gamedev\Soft\Valve Hammer Editor\tools
set hlfixpath=C:\Gamedev\Soft\Valve Hammer Editor\tools
::номер нужного конфига в VDKGameCfg.ini ([Config0])
set config_num=0
set jack_config=C:\Gamedev\Soft\J.A.C.K\VDKGameCfg.ini
::извлекаем строки с .wad между [Config0] и [Config1] (если номер конфига 0) из Джека (VDKGameCfg.ini) и сохраняем в utf8 wad.txt для hlfix
powershell -Command "$in=0; Get-Content '%jack_config%' -Encoding Default | Where-Object { if ($_ -eq '[Config%config_num%]') {$in=1} elseif ($_ -eq '[Config'+(1+[int]$config_num)+']') {$in=0} $in -and $_ -match '\.wad' } | ForEach-Object { $_ -replace 'Parcel\d+=','' -replace '^[A-Z]:','' -replace '\\','/' } | Out-File wad.txt -Encoding UTF8"
::конвертируем rmf в map
echo convert %mapname%.rmf to MAP
::na - не фиксить браши, а то будут глюки
"%hlfixpath%\hlfix_0.81b" -na %mapname%.rmf
::смена кодировки мапы, для компиляторов. Иначе не будет поддержки длинных путей до вадов (hlcsg: Error: Token too large on line 2)
echo %mapname%.map: utf8 to ansi (win1251)
powershell -c "Get-Content '%mapname%.map' -Encoding UTF8 | Set-Content '%mapname%_win1251.map' -Encoding Default"
del %mapname%.map
::удаляем ? из путей (ошибка при смене кодировки)
echo %mapname%.map fix
powershell -c "(gc '%mapname%_win1251.map' -Encoding Default).Replace('?','') | sc '%mapname%.map' -Encoding Default"
del %mapname%_win1251.map
::map создан, список текстур больше не нужен
del wad.txt
::удаляем временные файлы компиляции
del %mapname%.b0
del %mapname%.b1
del %mapname%.b2
del %mapname%.b3
del %mapname%.ext
del %mapname%.hsz
del %mapname%.p0
del %mapname%.p1
del %mapname%.p2
del %mapname%.p3
del %mapname%.pln
del %mapname%.prt
del %mapname%.wa_
::del %mapname%.err
del %mapname%.log
::перемещаем карту в игру
copy %mapname%.bsp "%hlpath%\%modname%\maps"
del %mapname%.bsp
::удаляем map
del %mapname%.map
::pause
::запускаем карту в игре
"%hlpath%\hl.exe" -game %modname% +map %mapname%
::удаляем всякий мусор
del steam_appid.txt
del debug.log
rmdir /s /q htmlcache
Я всегда пользовался экспортом из самого редактора. И проблемы были у меня только один раз, на определённой версии джека из-за большого размера карт. Пропадали некоторые фейсы после компиляции. Я уж испугался, что это у меня кривые руки, оказалось была ошибка с точностью координат при экспорте из джека. Ксер подсказал, я переключился на бету - проблема ушла.
на самом деле у меня где-то год назад была с этим проблема: при сохранении в rmf джек сохранил пустой файл. Но за всё время это случилось только один раз, да и на крайняк ж остаётся rmx