Как делать двери hammer

Обновлено: 11.05.2024

1 сен. 2018 в 11:57

Как сделать дверь например как на карте rp_bandclaw?
И если есть , хотел бы узнать , где можно найти нормальный гайд по хаммеру (свои текстуры, модели и тд)
и есть ли еще какой более удобный редактор ?

How create door like an rp_bandclaw?
And where i must found normal guide Hammer (own texture, models etc)
and is there any more convenient editor?

1 сен. 2018 в 14:14

Which door do you mean? Post a screenshot/picture of what door.
There is no other editor other than Hammer Editor, so you have to stick with Hammer (for now)

Guides for hammer in general are available on Garry's Mod Guides and among websites on google, you just got to search for them.

Also what game are you creating a RP map for? Garry's Mod, Half-Life 2 : Deathmatch?

I know you are not english so I will simplify if you ask.

1 сен. 2018 в 14:37

Which door do you mean? Post a screenshot/picture of what door.
There is no other editor other than Hammer Editor, so you have to stick with Hammer (for now)

Guides for hammer in general are available on Garry's Mod Guides and among websites on google, you just got to search for them.

Also what game are you creating a RP map for? Garry's Mod, Half-Life 2 : Deathmatch?

I know you are not english so I will simplify if you ask.


ty very much , i try create map for gm
and about door, simply door with handle, all guides what i see show how create door without handle , and its look like a wall that can be opened and it closes itself

1 сен. 2018 в 14:46

Which door do you mean? Post a screenshot/picture of what door.
There is no other editor other than Hammer Editor, so you have to stick with Hammer (for now)

Guides for hammer in general are available on Garry's Mod Guides and among websites on google, you just got to search for them.

Also what game are you creating a RP map for? Garry's Mod, Half-Life 2 : Deathmatch?

To create a brush-based door, create a gap in the wall as a doorspace. See dimensions for sizing. To make the gap, split the wall in half and place a small brush over the top of the doorspace. Make sure that there is floor underneath the doorspace, otherwise there will be a leak.

Door creation 1.jpg

Creating a brush for the door

To start making the door, fill the doorspace with a brush. The brush should be a different texture from the wall (wood wall textures are good).

Door creation 2.jpg

Turning the Brush Into the Door

To turn the brush into a door, right click on it while it is selected in one of the 2D views. Then select 'Tie to Entity' and from the entity list select either func_door_rotating for normal doors or func_door for up/down sliding doors. If the door is to slide, select func_door and scroll down the options until you reach 'Move Direction (Pitch Yaw Roll)' and select either up or down from the small box next to the select options bar. For rotating doors, you'll probably want to adjust the rotation point either by moving the blue ball (in the 3d view) using the 2d view, or by adjusting the 'Origin'.

Once this is done, to open the door (in-game), walk into it. To make it into a "use" door, double click on it in 3d view, select the "flags" tab on the properties window. Select "use opens" and de-select "touch opens."

Making a Button for Your Door

Name your door something like door1 . To make a button for the door, create a small brush (can be any shape you want), and tie it (via Tie to Entity) to func_button . Name your button as well (e.g., door1_button ). Then, once you have selected 'Apply', select 'Outputs' and 'Add Output'. The output should be:


Then press 'Apply' again, to make the button.
When you test the map, walk up to the button and press 'Use'. The door should then open.

Making Double Doors

To make two func_door s or func_door_rotating s open and close together, it is necessary to use a combination of Outputs and logic_relay s. First, make two doors through the process stated above and name them accordingly (e.g., door1 and door2 ). Second, add two logic_relay's somewhere near the doors (the location is not important, but it helps for organizational reasons to keep them close) and name them as well (e.g., door1_relay and door2_relay ). Third, open the properties of the first door, go to the 'Outputs' tab, and add an output similar to the following:


Do this for the other door too, but change the Target Entity to door1 . What these outputs do is open one door when another one is opened (whether that be done via Touch, Toggle, a button, etc.). At this point, you could save and compile to test the doors out if you wanted, but they would only be able to open each other, not close each other. That is where the logic_relay's come in.

Now normally, you would think that you could repeat the process for closing the doors via Outputs (i.e., having one door be closed by the other), but such is not the case. If you try it out for yourself, you will find that the game crashes as soon as you go to close one of the doors. So, to work around this little bug, you need to introduce a logic_relay for each door. If you've followed the above process so far, you should already have the two relays placed and named. Now, open the properties of the first door and add an output similar to this:


Again, repeat this for the other door, changing the Target Entity to door2_relay . Next, open the properties for the first relay and add an output like so:


Repeat this for the other relay, changing the Target Entity to door1 . Now save and compile, and you should have a working set of double doors.

To help you understand this concept of Outputs and logic_relay's better, here is a little diagram for the above example:

Player opens door1 -->The opening of door1 triggers door2 to open via the Output of door1

Player opens door2 -->The opening of door2 triggers door1 to open via the Output of door2

Player closes door1 -->The closing of door1 triggers door1_relay -->The triggering of door1_relay triggers door2 to close

Player closes door2 -->The closing of door2 triggers door2_relay -->The triggering of door2_relay triggers door1 to close

Двери для определенной команды открываются только для какой-либо одной команды, и чаще всего помещаются перед респауном.

Contents

Создание Двери респауна

В этом примере мы будем делать дверь для респауна красной команды, которая откроется только для нее.

Энтити filter_activator_tfteam

Для начала, создадим энтити (Shift+E) filter_activator_tfteam. Эта энтити (фильтр) определит, какая команда может открыть дверь. В его свойствах (Alt+Enter) нужно будет присвоить значения Team (т.е. команды), Name (имя) и Filter mode (способ фильтра) соответствующей команде. В нашем примере Team - Red (красная команда), Filter Mode - Allow entities that match criteria, Name - red_filter (название может быть любым, но советую не мудрить с ним, ибо оно нам еще понадобится).

На одну команду нужен только один filter_activator_tfteam (т.е. всего 2: для красной и синей команды). Все ваши какие-либо ограничения (фильтры) могут быть связаны с этими 2-мя filter_activator_tfteam. Месторасположение этих энтити может быть любое (в игре вы их не увидите), но хорошо было бы поместить эти фильтры в местах, в которых вы их не потеряете. Так что поместите наш готовый filter_activator_tfteam в область респауна команды.

Энтити prop_dynamic


Идем дальше, создайте энтити (Shift+E) prop_dynamic, откройте его свойства Edit -> Properties (Alt+Enter). Жмем двойным щелчком по World Model, далее выделяем вкладку props_gameplay, там находим модель двери door_slide_large_door.mdl жмем ОК - дверь готова.

Энтити func_door


У нас есть дверь, теперь нужно заставить ее открываться и закрываться. С этим нам поможет func_door - браш-энтити. Для создания этой энтити рисуем браш длиной/высотой/шириной примерно в нашу дверь (ну ширину можно чуть побольше сделать). Красим этот браш в текстуру tools/toolsnodraw (для удобства, введите это в Filter в окне выбора текстур), т.к. это будет невидимая преграда в игре. Превращаем браш в энтитю - Tools -> Tie to Entity (Ctrl+T), выбираем в свойсвах func_door. Но это еще не все. Теперь нам нужно покопаться в свойствах (Alt+Enter) func_door:

Свойство Описание Значение
Name Это имя, для удобства оно не должно быть слишком сложным и большим, оно нужно для взаимодействия с другим объектом. door_red_spawn_01
Speed Это скорость, с которой дверь будет открываться/закрываться. Обычно она колеблится около 400-500. 450
Move direction Это свойство определяет, в каком направлении дверь будет открываться, в нашем случае дверь должна двигаться вверх. Up
Lip Эта опция определяет, сколько юнитов отступа (единицы измерения Hammer) делает дверь при открытии. 3
Delay Before Reset Это значение ставьте -1, чтобы дверь не закрылась, когда кто-либо находится в дверном проеме. Иначе вся команда может просто тупо застрять в дверях респауна или вообще заблокировать дверь. -1

Далее, все в тех же свойствах перейдите во вкладочку Flags func_door. И обязательно уберите галочку с Touch Opens, иначе члены другой команды смогут заходить на вражеский респаун.

Теперь мы должны связать наш func_door с моделью двери. Выберите prop_dynamic модель двери, и в ее свойствах (Alt+Enter) установите в значение Parent имя func_door. В нашем случае, это - door_red_spawn_01.

Энтити trigger_multiple


Третья и последняя часть двери - trigger_multiple. С помощью этой браш-энтити дверь будет открываться, когда игрок красной (в нашем случае) команды будет ее касаться и закрываться, когда будет выходить из нее. Получается некая "зона активации двери".

My Output Target Entity Target Input Parameter Delay Only Once
OnEndTouchAll door_red_spawn_01 Close 0.00 No
OnStartTouchAll door_red_spawn_01 Open 0.00 No


Теперь вернемся во вкладку Class Info свойствах trigger_multiple. В опции Name filter (имя фильтра) должно быть имя вашего filter_activator_tfteam, чтобы дверь открывалась для определенной команды. В нашем случае, это - red_filter.

Это все, теперь мы имеем дверь респануа для красной команды.

Теория Дизайна

Размещение

По идее, двери для респауна могут быть помещены в любое место на карте, т.е. вы можете ограничивать доступ в какое-либо место какой-либо команде. Но будьте осторожны, ибо это может очень сильно повлиять на баланс.

Столкновение

Двери на официальных картах - энтити prop_dynamic в свойствах обязательно имееет значение Collisions - Not Solid.

Здания

Можно также добавить func_nobuild браш-энтити в дверной проем. Для чего? Чтобы инженеры не могли строить свои "башни" в дверном проеме. Это опять же дисбаланс и возможные глюки с открытием/закрытием двери.

Чтобы сделать дверь на основе браша, для начала создайте отверстие в стене. Загляните в статью про различные игровые константы, чтобы точно подогнать отверстие под будущую дверь. Чтобы сделать такое отверстие, разделите стену на две половины и разместите небольшой браш над пространством будущей двери. Убедитесь, что под этим пространством есть пол, иначе будет утечка.

Door creation 1.jpg

Создание браша двери

Создайте браш и заполните им все пустое пространство в стене. Желательно покрыть его текстурой, отличной от текстуры стены, хорошо подойдет, к примеру, текстура древесного типа.

Door creation 2.jpg

Превращение браша в дверь

Чтобы сделать из браша дверь, выделите его на одном из окон развертки и щелкните правой кнопкой мыши. Выберите пункт "Tie to entity" и из появившегося списка выберите func_door_rotating для обычной двери или func_door для двери, открывающейся скольжением вверх или вниз. Во втором случае прокрутите вниз окно опций, и вы увидите пункт "Move Direction (Pitch Yaw Roll)" - направление движения; щелкните на нем и выберите вариант 'up' или 'down' в небольшом окошке справа. В случае же с обычной, открывающейся поворотом дверью, вам понадобится настроить центр вращения(синий шарик, его видно в окне трехмерного вида), используя окно развертки или пункт "origin" в окне свойств объекта.

Теперь у нас есть функционирующая дверь. Чтобы открыть такую уже непосредственно в игре, просто подойдите. Чтобы заставить дверь открываться по нажатию кнопки "использовать", дважды щелкните по двери в окне трехмерного вида и из горизонтального списка вверху выберите панель "flags". Поставьте галочку рядом с надписью "use opens" и уберите аналогичную напротив строки "touch opens".

Создание кнопки для управления дверью


Затем еще раз нажмите "Apply".
Когда будете тестировать карту, подойдите к кнопке и нажмите клавишу "использовать". После этого дверь должна открыться.

Создание двойных дверей

Чтобы сделать две скользящие или вращающиеся двери, открывающиеся синхронно, вам понадобится комбинация из output'ов и двух объектов logic_relay(прим. переводчика: на самом деле в этом нет особой необходимости, достаточно лишь дать обеим дверям одинаковое имя). Во-первых, способом, изложенным выше, создайте две двери и назовите их схожим образом, например, door1 и door2 . Во-вторых, добавьте два logic_relay где-нибудь поблизости(расположение не имеет решающего значения, но для простоты имеет смысл держать их поближе) и назовите аналогично, например, door1_relay и door2_relay . В-третьих, откройте окно свойств первой двери, зайдите на панель "Outputs" и добавьте такой output:


Проделайте то же самое со второй дверью, только в поле "Target Entity" впишите door1 . Теперь, когда одна из дверей будет открыта каким-либо способом, вместе с ней автоматически откроется и вторая. На этот моменте вы вполне можете сохранить и протестировать карту, но мы еще не закончили - мы заставили двери открываться вместе, но не закрываться. Для этого нам и понадобятся logic_relay.

Вы, должно быть, сейчас думаете, что вполне можете обойтись без logic_relay, всего лишь написав аналогичные output'ы и для закрытия дверей, как изложено выше. К сожалению, не выйдет. Можете попробовать, но скоро убедитесь, что игра вылетает при попытке закрыть одну из дверей. Придется нам задействовать logic_relay. Если вы следовали инструкциям выше, у вас уже должны быть два таких объекта, размещенных и названных. Откройте свойства первой двери и создайте следующий output:


Проделайте то же самое со второй дверью, заменив Target Entity на door2_relay . Теперь откройте свойства первого logic_relay и добавьте такой output:


Повторить со вторым logic_relay, заменив Target Entity на door1 . Теперь можете сохранить карту, скомпилировать ее и пойти похлопать установленными дверьми.

Чтобы лучше понять механизм взаимодействия Output'ов и logic_relay, изучите следующую таблицу:

Игрок открывает door1 -->Открытие door1 цепляет door2 , заставляя открыться через Output

Игрок открывает door2 -->Открытие door2 цепляет door1 , заставляя открыться через Output

Игрок закрывает door1 -->Закрытие door1 цепляет door1_relay -->Зацепка door1_relay цепляет door2 , заставляя закрыться

Игрок закрывает door2 -->Закрытие door2 цепляет door2_relay -->Зацепка door2_relay цепляет door1 , заставляя закрыться

Маппинг (картостроение) в Counter Strike: Source

Становимся маппером по шагам

Сюда со временем будут добавляться новые туториалы, вы также можете задать вопрос или заказать туториал здесь

Моделинг, моделирование

Автор: Лорд Беккет Понравилось: 30 Не понравилось: 1

Комментарии пользователей сайта:

Народ как сделать spawnkill на mg карте?
Чтобы через какое-то время люди не могли респавниться. : ops:

Профиль пользователя

Месяц назад
 CobuLight

Профиль пользователя

2 месяца назад
 Аристотель

Профиль пользователя

2 месяца назад
 MrGajimurad1

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

Профиль пользователя

8 месяцев назад
 CobuLight

Профиль пользователя

8 месяцев назад
 lolmanlol

Просто лучший русскоязычный сайт по маппингу который только существует! Если что-то ищешь, всегда находишь находишь то, что нужно!

Профиль пользователя

9 месяцев назад
 IFlapper

Профиль пользователя

10 месяцев назад
 dONkaban

Профиль пользователя

10 месяцев назад
 Аристотель

Профиль пользователя

Год назад
 CobuLight

Профиль пользователя

Год назад
 Barney

Профиль пользователя

Год назад
 jiggly

Профиль пользователя

Год назад
 CobuLight

Скорее всего это и есть туннель, и наверно этот туннель многополигональный, от этого и траблы на карте, плюс утечку желательно закрыть

Профиль пользователя

Год назад
 CobuLight

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

Профиль пользователя

Год назад
 CobuLight

Профиль пользователя

Год назад
 loeskee

Профиль пользователя

Год назад
 loeskee

Профиль пользователя

Год назад
 loeskee

CobuLight, У меня частая ошибка Trying to create a non-quad displacement! (entity 0, brush 3398) она в основном в брашах туннеля( у меня карта под метро 2033)

Профиль пользователя

Год назад
 CobuLight

Профиль пользователя

Год назад
 CobuLight

Попробуй сократить количество брашей в func_detail, а если у тебя сложные браши, то сделай для них отдельные func_detail

Профиль пользователя

Год назад
 loeskee

Профиль пользователя

Год назад
 CobuLight

Могу попробовать помочь, но только визуально, хотя давно не видел у себя этой проблемы.
Если так подумать, проблема может быть в переизбытке func_detail, либо ты слишком много брашей запилил в func_

Профиль пользователя

Год назад
 SpacetimeJunglist92

Профиль пользователя

Год назад
 SpacetimeJunglist92

2)На карте слишком много маленьких простых брашей 3)Следует поработать над хинтами, чтобы помочь компилятору разбить карту на vis-листья эффективнее

Профиль пользователя

Год назад
 SpacetimeJunglist92

Сорри,ничего конкретного сказать на эту тему не могу, могу лишь только предположить что 1)карта, пусть и оптимизированная, просто слишком большая и имеет множество зон

Профиль пользователя

Год назад
 loeskee

Профиль пользователя

Год назад
 loeskee

Профиль пользователя

Год назад
 loeskee

SpacetimeJunglist92, в основном нарушение лимитов по брашам, но когда делаю в func_detail,также пишет что привеш лимит.

Профиль пользователя

Год назад
 SpacetimeJunglist92

Профиль пользователя

Год назад
 loeskee

Профиль пользователя

2 года назад
 CobuLight

Профиль пользователя

2 года назад
 Nubuhu

Профиль пользователя

2 года назад
 Nubuhu

Профиль пользователя

2 года назад
 CobuLight

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

Профиль пользователя

2 года назад
 CobuLight

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

Профиль пользователя

2 года назад
 Nubuhu

Профиль пользователя

2 года назад
 Nubuhu

Такая проблема после компиляции карты, при запуске ее на пк все отражения норм всё как надо, но при загрузке в мастерскую и запуске ее оттуда все отражения на предметах яркие и совсем не те что нужны

Профиль пользователя

2 года назад
 CobuLight

Профиль пользователя

2 года назад
 Nubuhu

Профиль пользователя

2 года назад
 NobCamp

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

Профиль пользователя

2 года назад
 Dima_UA

Профиль пользователя

2 года назад
 Name_BY

Профиль пользователя

2 года назад
 ArtVisual

Профиль пользователя

2 года назад
 cu6upyak

Профиль пользователя

2 года назад
 cu6upyak

Профиль пользователя

2 года назад
 Dima_UA

Профиль пользователя

2 года назад
 EsM

привет ребята, не у кого не завалялся декомпилятор с фиксом, карта проблемная попалась, декомпилятор удаляет систему уровней, а восстанавливать это время.

Профиль пользователя

2 года назад
 MARSHAL ZA

Профиль пользователя

2 года назад
 MARSHAL ZA

Профиль пользователя

2 года назад
 Deimost

Профиль пользователя

2 года назад
 cu6upyak

hi guys! у меня проблема при компиляции карты в хамере The command failed. Windows reported the error:
"Не удается найти указанный файл" кто ни будь сталкивался?

Читайте также: