Ru/Creating a button and door

В этом туториале вы научитесь создавать 1500-Мегаваттную Экспериментальную Сверхпрочную Сверхударную Сверхкнопку, которая открывает определенную дверь,если на неё наступит игрок или если на ней окажется утяжеленный куб.
== Установка двери ==
Сперва сделаем дверь, которая будет открываться при нажатии на кнопку.
=== Рамка двери ===
Создайте в проёме. В World Model выставьте "models/props/door_01_frame_reference.mdl" или "models/props/door_01_frame_wide_reference.mdl" (работают оба варианта).
=== Двери ===
1. Создайте со следующими настройками:
::
Property Name	Value
World Model 	models/props/door_01_lftdoor_reference.mdl
Name 	door_left_model
Установите её в левой внутренней части дверной рамки.
2. Создайте прямоугольный браш с размерами 56Lx8Wx104H и с текстурой . Разместите его во внутренней центральной части модели двери. Переведите его в энтити , выбрав в выпадающем списке "Tie to Entity". Энтити func_door должна иметь следующие параметры:
::
Property Name 	Value
Name 	door_left
Speed 	250
Stop Sound 	Doors.FullClose8
Delay before Reset	-1
Lip 	12
Move Direction 	(Зависит от расположения двери.)
Также убедитесь, что в Flags вы убрали галочку у пункта Touch opens.
3. Выберите Move Direction в . Когда вы перевели браш в func_door, свойство Move Direction было задано как 0 0 0. Нас интересует только Yaw (второе число), которое может быть изменено путем перетаскивания указателя в Angle Compass или вводом угла в тексовое поле слева. Обычно используются углы 0, 90, 180 и 270, при которых дверь движется вправо, вверх, влево или вниз соответственно в окне "2D top (x/y)".
4. Повторите шаги 1-3, но с иными настройками:
Для prop_dynamic:
::
Property Name	Value
World Model 	models/props/door_01_rtdoor_reference.mdl
Name 	door_right_model
И для func_door:
::
Property Name 	Value
Name 	door_right
Move Direction	(Значение, противоположное значению у левой двери)
5. Выставьте у door_left_model (prop_dynamic) в свойстве Parent "door_left". У door_right_model в этом же свойстве пропишите "door_right".
== Кнопка ==
=== Модели ===
1. Создайте prop_static. В World Model выставьте "models/props/button_base_reference.mdl". Это будет основание кнопки.
2. Создайте prop_dynamic на вершине prop_static со следующими настройками:
::
Property Name	Value
World Model 	models/props/button_top_reference.mdl
Name 	button_top_model
=== Движение ===
1. Теперь создайте 8-угольный цилиндрический браш с размерами 58Wx58Lx9H и с текстурой . Переместите этот браш прямо под prop_dynamic. Переведите цилиндр в со следующими настройками:
::
Property Name 	Value
Name 	button_top_door
Speed 	25
Delay before Reset	-1
Move Direction 	90 0 0 (или Down)
Также убедитесь, что в Flags вы поставили галочку у пункта Passable.
2. В свойстве Parent у button_top_model выставьте "button_top_door".
=== Триггеры ===
1. Создайте прямоугольный браш с размерами 48Wx48Lx1H и с текстурой . Расположите его на вершине button_top_model. Переведите его в со следующими настройками:
::
Property Name	Value
Name 	button_trigger_player
Раздел Outputs мы настроим позднее. Также убедитесь, что в Flags галочка стоит только у пункта Clients.
2. Теперь создайте 8-угольный цилиндрический браш с размерами 7Wx7Lx2H и с текстурой . Разместите этот браш в центре вершины button_top_model и переведите в trigger_multiple со следующими настройками:
::
Property Name	Value
Name 	button_trigger_box
В Flags галочка должна стоять только у пункта Physics Objects.
Раздел Outputs мы настроим позднее.
3. Создайте неподалеку от вашей кнопки и выставьте следующие настройки:
::
Property Name	Value
Name 	button_filter_boxes
Filter Name 	(Имя вашего утяжелённого куба)
4. Выберите ваш button_trigger_box и выставьте в Filter Name "button_filter_boxes".
5. Создайте два энтити и выставьте в одной следующие настройки:
::
Property Name 	Value
Name 	button_down
Sound Name 	Portal.button_down
Source Entity Name	button_top_model
А в другой следующие:
::
Property Name 	Value
Name 	button_up
Sound Name 	Portal.button_up
Source Entity Name	button_top_model
6. Вновь выберите браш func_door, находящийся под кнопкой, и в Outputs пропишите следующее:
::
	My Output	Target Entity	Target Input	Parameter	Delay	Only Once
	OnClose 	door_left 	Close 	<none> 	0.00 	No
	OnClose 	door_right 	Close 	<none> 	0.00 	No
	OnClose 	button_up 	PlaySound 	<none> 	0.00 	No
	OnOpen 	door_left 	Open 	<none> 	0.00 	No
	OnOpen 	door_right 	Open 	<none> 	0.00 	No
	OnOpen 	button_down 	PlaySound 	<none> 	0.00 	No
7. Выберите большой trigger_multiple ("button_trigger_player") и в Outputs пропишите следующее:
::
	My Output 	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnEndTouchAll	button_trigger_box	Enable 	<none> 	0.00 	No
	OnEndTouchAll	button_top_door 	Close 	<none> 	0.00 	No
	OnStartTouch 	button_trigger_box	Disable 	<none> 	0.00 	No
	OnStartTouch 	button_top_door 	Open 	<none> 	0.00 	No
8. Выберите маленький цилиндрический trigger_multiple ("button_trigger_box") и в Outputs пропишите следующее:
::
	My Output 	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnEndTouchAll	button_trigger_player	Enable 	<none> 	0.00 	No
	OnEndTouchAll	button_top_door 	Close 	<none> 	0.00 	No
	OnStartTouch 	button_trigger_player	Disable 	<none> 	0.00 	No
	OnStartTouch 	button_top_door 	Open 	<none> 	0.00 	No
9. Наконец, создайте энтити под вершиной кнопки, но внутри основания. Пропишите следующие настройки:
::
Property Name	Value
Brightness 	251 159 57 30
BrightnessHDR	251 159 57 20
Теперь созданная вами кнопка будет открывать дверь, когда игрок наступает на неё, или когда на ней оказывается утяжелённый куб. 
== Создание дверонго проема==
Хотя этот шаг необязателен, и ваша дверь всё равно будет нормально работать, ваша карта будет выглядеть странно с дверью без стен по бокам. Этот шаг довольно прост, так что рекомендуется ознакомится со следующим туториалом: .
Также, можно воспользоваться следующей заготовкой: .
== Теория ==
Это один из простейших вариантов установки двери и кнопки. Однако, используя её вариации, можно достичь самых разнообразных результатов.
Также, для поддержания стиля Portal, не забудьте добавить .
== Смотрите также ==
* 
== Дополнительные ссылки ==
* Пример карты, используемой в туториале. Сюда включен и файл VMF.
Category:Russian