на главную
об игре

Hammer Editor v.2

В этой теме задаём вопросы и получаем ответы по Hammer Editor, редактору карт для игр на движке Source.

Предыдущая версия темы.

Комментарии:  97
Ваш комментарий

xDDGx
Могу подробнее объяснить как сделать отражения на текстурах или стекло с отражением если надо еще.

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

Можно, для этого можно и только игру использовать. Для спауна нпц надо навести прицел на ровную плоскую горизонтальную поверхность (пол, землю), открыть консоль (~, либо настройки-настройки клавиатуры-включить консоль- ~ ), вписать npc_create npc_metropolice (для копа в данном случае). Если надо стравить двух нпц, надо заспаунить одного, затем другого, навести прицел на первого, вписать в консоли ent_setname *произвольное имя, скажем, cop1*, навести на второго и вписать аналогичное ent_setname (например, cop2), затем, для собственно стравливания, вписать:

ent_fire cop1 setrelationship "cop2 D_HT 99" и ent_fire cop2 setrelationship "cop1 D_HT 99",

по схеме, где первая часть —
команда для нпц, затем
имя нпц, затем
конкретная команда для него (букв. задатьотношение), затем
в кавычках идет имя объекта отношения, затем
тип отношения (D_HT — от hate, ненависть, D_LI — от like, «дружба», D_NT — neutral, нейтральный, D_FR — fear, первый нпц боится второго), а затем
приоритет.

Либо, чтобы, скажем, нпц ненавидил всех нпц определенного типа, вместо имени второго нпц можно напечатать так: ent_fire cop1 setrelationship "D_HT npc_citizen 99" — коп станет ненавидеть и атаковать всех горожан (npc_citizen). Если вписать npc_metropolice — всех своих. А если впечатать и в качестве имени первого, и в качестве имени второго классы — они все стравятся. Например, ent_fire npc_strider setrelationship "D_HT npc_combine_s 99" — ВСЕ страйдеры станут ненавидеть ВСЕХ солдат.

Народ, у всех сейчас траблы с редактором? После перехода халфы на запакованные vpk редактор совсем от рук отбился. Уже меня в геймконфиге путь к новым папкам но все равно не помогает. Искал решения в интернете, предлагают танцы с бубном и то не 100 гарантии. Кто нибудь знает как исправить это или же только ждать чуда остается?

ябы предложил вынести из папки акуанта всё касающееся соурсдка (две-три папки ужуали), и попробовать его запустить в ноль, чтобы он обновил распакованные файлы
//вынутое не удаляй - там все твои вмф, и прочее, потом сможеш акуратно перенести нужное если поможет

Продолжая тему бэкапов.
Всё-таки, разобрался с 7-zip'ом. Поначалу хотел даже задать вопрос на сорсфоржевской странице программы (автор программы - Игорь Павлов - там вполне отвечает), даже гламурную картиночку нарисовал, чтобы пояснить свою проблему... Однако, затем я нашёл там кнопку поиска и решил сперва поискать, может, ответ на похожий вопрос уже был дан. Оказалось, что на том форуме была целая куча сообщений с жалобами на нерабочий ключ -x, и во всех, что я заходил, не было найдено решения проблемы. Один юзер вообще отличился и во всех темах про exclude написал про сломанный -x...
Тем не менее, одна из тем всё-таки мне помогла. И.П. дал пару примеров с файлом-списком эксклюдов, т.е., нужно было использовать не свитч -x!"имена файлов", а -x@"файл-список". Этот файл должен быть обычным текстовым файлом, в котором перечислены (каждый с новой строки) все исключаемы из обработки файлы и папки. Причём, необязательно указывать полные пути, можно использовать и относительные, и маски.
Короче говоря, чтобы _backups_complete.bat заработал так, как я изначально планировал, нужно создать файл, например, backups_exclude.txt, вписать в него:
    bin/backups/
, положить этот файл рядом с батником, а в самом батнике исправить строку вызова 7-zip'a:

misc\7za a -t7z backups\"%filename%".7z .. -x@backups_exclude.txt -mx9

Вот теперь всё работает как надо. На всякий случай, ещё раз полный текст батника, с фиксами: http://pastebin.com/6npadwBw


Т.к. теперь я разобрался с эксклюдами, то наконец-то смог запилить то, что давно хотел: суперультимативный, мегауниверсальный и т.д. батник для бэкапов. Конечно же, называеть его даже просто универсальным и ультимативным нельзя, хотя бы потому, что вам придётся частично переписать его под себя (да ещё и с глюками 7-zip'а побороться), но я постарался сделать его, во-первых, модульным, во-вторых, вынести все важные параметры в переменные.
Ну-с, вот он мой... батничек!

http://pastebin.com/4WUUzshx
Fffuuu, пастебин почему-то выделил комментарии :: тем же цветом что и метки. Лучше скопируйте в блокнот (Notepad2, например) и смотрите там, с нормальной подсветкой.
Батник самодокументирован, есть пара примеров, но совсем без пояснений, пожалуй, не обойтись, потому дам краткую справку по его использованию.

Справка

1. Батник (если вы придержитесь моего образца и не станете переписывать его под относительные пути) можно хранить в любом удобном месте. Я лично поместил в %WINDIR%, чтобы было удобно вызывать его из командной строки или с помощью Win+R, но можно просто добавить путь к батнику в %PATH% (или даже присвоить полный путь к батнику к какой-нибудь переменной и вызывать её, обрамив знаками процента, например, %backup%). Можно, конечно, и ярлык сделать, но батник заточен на ручной вызов из консоли, так что толку от такого ярлыка немного, разве что создать по ярлыку к каждой цели, или бэкапить сразу всё (этот момент станет понятнее ниже).

2. С 7-zip'ом можно поступить так же, как и с батником: либо кинуть 7z/7za в %WINDIR%, либо добавить в %PATH%, либо отредактировать батник и вместо set archiver=7z a -t7z написать:
set archiver="C:\Program Files\7zip\7z.exe" a -t7z
Можно вообще поменять на другой архиватор (тот же rar), но из-за этого, как минимум, придётся переписать параметры архивации.

3. Нужно составить файл exclude.lst (можно назвать его по-другому) и вписать путь к нему в следующую строку:
set optionsпы щь=-x@%WINDIR%\exclude.lst -mx9
Вместо %WINDIR%\exclude.lst нужно подставить свой путь (в кавычках, если он содержит пробелы).
Эксклюды могут понадобиться, если нужно забэкапить содержимое каталога, не включая один или несколько файлов и папок. Особенно это полезно, если нужно забэкапить всё, кроме подкаталога/ов, вложенного/ых в каталог. Можно, конечно, решить это по-другому: скопировать нужные файлы в какое-то другое место с помощью copy и уже затем бэкапить, но думаю, что недостатки такого подхода очевидны.
В своём батнике я использую один эксклюд-файл на всё, но можно завести по отдельному списку для каждого архива. В принципе, второй вариант лучше, поскольку точно не возникнет совпадений пути, исключаемого из одного архива с путём, который включается в другой. С другой стороный, первый вариант несколько удобнее. И хоть я и выбрал его, батник всегда можно исправить.
Пример файла-эксклюда:

C:\Demos\theprodukkt\Werkkzeug3Tex\backup\
C:\Demos\theprodukkt\Werkkzeug3Tex\*export\
C:\Games\Mapping\BSPquakeditor\анти матHalf?Life\textures\
C:\Games\Mapping\BSPquakeditor\анти матtutor_bsp.swf
C:\Games\Minecraft\?minecraft\screenshots\
D:\TempGames\Aether\?minecraft\screenshots\
SourceSDK_Content\generic\mapsrc\dec\
SourceSDK_Content\oldarkinterval\mapsrc\alex\
source\zothers\
wads\cof\
wads\Dmitrich!\
wads\hq2\
wads\q3\
workspace\?metadata\
xDDGx\xcompile\

Я старался использовать полные пути, но из-за глюков 7-zip'a методом тыка пришлось исправить некоторые на относительные. Я не знаю, в чём причина, даже думал, что проблема в пробелах, но 7-zip отказывается распознавать пути эксклюда в самые неожиданные моменты. Ещё была проблема с путём C:\Games\Mapping\BSPquakeditor\анти матHalf-Life\textures\, но я догадался, что ему не понравился дефис, и, так скажем, "зацензурил" слово Half*Life, спрятав дефис символом подстановки. Потом я поменял * на ?, потому что в первом случае под маску подходит больше названий. Впрочем, и вопросительный знак — костыль жуткий, с которым нужно быть поосторожнее (например, если там будет папка Half2Life\textures, она тоже окажется не забэкапенной), но что поделаешь...
С папкой .minecraft тоже самое, только тут пришлось зацензурить точку.

4. Конечно же, нужно исправить путь к папке, в которую будут складываться бэкапы:
set prefix=I:\Uploads\Backups
Можно указать каталог Dropbox'a, Яндекс.Диска, Меги и пр., чтобы автоматически заливать бэкапы в онлайн.

5. Батник создаёт архивы с именами вида имя_день_месяц_год.7z. Если нужно делать бэкапы чаще, чем раз в день, можно добавить где-нибудь над этой строкой такой код:

set currtime=%TIME%
set hours=!currtime:~0,-9!
set minutes=!currtime:~3,-6!
set secondsпы щь=!currtime:~6,-3!

А строку
set postfix=%day%_%month%_%year%.7z
Исправить на:
set postfix=%day%_%month%_%year%__анти мат%hours%_%minutes%_%seconds%.7z

6. По идее, батник должен вызываться так:

батник.бат что_бэкапить1 что_бэкапить2 ... что_бэкапитьN

В качестве параметров ему передаются названия меток, каждая из которых представляет собой сокращённое название того, что нужно бэкапить. Для удобства я буду называть их "целями". Например, если мне нужно забэкапить иконки, которые я столько времени старался, рисовал и ваще, мне достаточно набрать backup icons в командной строке или в меню Win+R. Чтобы сбэкапить майнкрафт со всеми модами, сохранками, батниками и т.д., мне достаточно набрать backup mine. Можно даже набрать сразу backup icons mine, чтобы одновременно забэкапить и иконки, и майн, или вовсе набрать backup all, чтобы обработать вообще всё.
Чтобы сделать как у меня, вам нужно, для начала, создать в батнике свои цели, которые представляют собой эдакие батниковые "подпрограммы" или "функции". Каждая такая "процедурка" начинается с метки с названием и выглядит вот так:

:метка
set name=имя_архива
set paths=пути_архивирования
удаление уже имеющихся бэкапов, содержащих имя %name%_
вызов архиватора %archiver%: архивирование %paths%, создание архива %name%_дата.7z в папке %prefix% с учётом заданных %options%
конец

Подобные шаблоны уже есть в батнике, вам остаётся только поправить их и, при надобности, накопипастить ещё. Как правило, поправить нужно только первые три строки: изменить имя метки на понятное вам, имя архива, и пути архивирования, т.е. пути к файлам и папкам, которые нужно заархивировать. Но вы можете убрать удаление старых бэкапов, если вам это не нужно, добавить дополнительные опции к предпоследней строке, или даже добавить какие-либо дополнительные действия, например, в одном случае мне пришлось менять диск и путь.
Кроме того, после создания всех целей, желательно перечислить их через пробел вот здесь:

if [%1]==[all] (
set cmdline=bsp icons mine src twice
) else (
set cmdline=%*
)

Эта проверка расположена в начале батча. Во вторую строку, после знака "равно" укажите ваши цели. Тогда можно будет просто набрать backup all, чтобы забэкапить всё, иначе работать не будет, поэтому важно не забывать поддерживать этот список в актуальном состоянии...
Ещё полезно перечислить цели в конце батника, там где стоит метка help:

:help

echo.
echo valid options are:
echo all - backup all targets
echo bsp
echo icons
echo mine
echo src
echo twice
echo.

Если вызвать батник без параметров, он выдаст имена всех доступных целей; на случай, если вы забудете, как назвали ту или иную цель, можно дописать короткую расшифровку (чтобы писать по-русски, батник придётся перекодировать в CP-866, в Notepad2 она обозначена как OEM 866).

//касательно дополнительного файла ексклюдов для батника, а не возможно ли какимто образом вшить его в батник, например созданием файла и заполнением ексклюдами а затем удаления после работы, или даже указание самого батника как файла ексклюдов, приэтом вначале чтобы шла секция эксклюдов, какимто образом вычеркнутая из обработки батником, а вконце код самого батника? мысли в слух об унитарности

Ты имеешь в виду простые статичные кубмап-отражения, как в ХЛ2, или дорогие реалтайм-отражения? для кубмапов ты просто в 16 юнитах от поверхности отражающей ставишь Env_cubemap, в свойствах у него там фейс выставляешь нужный, то есть кликаешь там на поверхности стекла, выставляешь при необходимости размер кубмапов, ну а затем в игре при запущенной карте вводишь buildcubemaps (если карта с ХДР, то делаешь кубмапы с ХДР, потом вводишь hdr_enabled 0, ждешь перезапуска карты, снова делаешь кубмапы, затем снова включаешь хдр (значение 2)). Имей в виду, что там размер кубмапа выставленный в Хаммере будет требовать определенное разрешение экрана, то есть на среднем мониторе большие отражения не построишь.

Ежели тебе нужны реалтайм-отражения, то ты делаешь нужную брашь func_reflective_glass, текстуру подбираешь с шейдером Reflect (одна такая в Эп2 есть, битое такое стекло, зовется тоже как-то с рефлективе, можешь посмотреть у неё vmt), но прозрачной сделать такую текстуру скорее не удастся - там альфа-канал будет использоваться не для прозрачности текстуры, а для «плотности» отражения. Хотя можно попробовать, я не пытался делать такие стекла.

Там команды cl_detaildist и cl_detailfade.

pix.PlayGround.ru
pix.PlayGround.ru
pix.PlayGround.ru
pix.PlayGround.ru

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

Выглядит это так:



А в vmf файле текстуры будет выглядеть так:

"$basetexture" "clipodel/brick\cl_brick_wall_shlak"
"$envmap" "env_cubemap"
"$envmapmask" "clipodel/brick\cl_brick_wall_shlak_spec" (путь к текстуре блеска)

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



А в vmf файле текстуры будет выглядеть так:

"$basetexture" "clipodel/brick\cl_brick_wall_shlak"
"$bumpmap" "clipodel/brick\cl_brick_wall_shlak_normal" (путь к карте нормалей)
"$normalmapalphaenvmapmask" "1" (параметр отвечает за то, чтобы карта блеска бралась из альфа-канала карты нормалей)
"$envmap" "env_cubemap"

Ну вот как то так.

А по поводу стекла значит проще.

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

Затем в vmf прописываем параметры:

"$translucent" "1" отвечает за прозрачность стекла
"$envmap" "env_cubemap"

Как смог, так объяснил в целом. Если будут еще вопросы то обращайся.

ЗАГРУЗИТЬ ВСЕ КОММЕНТАРИИ
Новое на форуме Half-Life 2