Используемые энтитии:
Prop_static - статистическая модель
Prop_dynamic - динамическая модель :crazy: , умеет проигрывать анимации ну и еще некоторые свойства.
Trigger_teleport - тригер-телепорт, уже с названия понятно что перемещает объект, как телепорт, в заданную точку.
Info_target - цель :)
Trigger_multiple - многоразовый тригер для активации аутпутов, т.е. 2 раза и более...
Filter_activator_name - фильтрует по названию энтити, напримере с тригером: может фильтровать все объекты проходящие через тригер, и только вписанный объект в фильтр, сможет активировать аутпуты пройдя через тригер; а так же может фильтровать только вписанный в фильтр объект, а все остальные будут активировать аутпуты пройдя через тригер, т.е. любой другой сможет активировать аутпуты кроме этого объекта(чье названия будет вписано в фильтр). %)
env_sprite - спраиты ...
env_spark - искры ...
func_physbox - так же prop_physics, только из браши и имеет некоторые иные свойства :crazy:
env_beam- луч ...
func_clip_vphysics – с названия уже понятно, что является барьером для vphysics.
Начнем:
1. Создадим для начала саму розетку, взяв prop_static и настроив:
World model: models/props_lab/tpplugholder_single.mdl
Т.к. это многоразовая розетка то придется сделать так:
Collisions: not solid
После покрываем розетку*(не полностью, как на скрине ниже)брашью с текстурой toolsnodraw. Выделаем все браши, и переводим в func_clip_vphysics.

2. Теперь сделаем модель вилки, создадим prop_dynamic, и настроем:
world model: models/props_lab/tpplug.mdl
parent: vilka
collisions: use VPhysics

3. Дальше создаем из браш с текстурой toolsnodraw, похожий на саму вилку*(примерно как на скрине ниже), переводим браш в func_physbox и настраиваем:
Name: vilka
Disable shadow: yes*(можете оставить т.к. есть)
Preferred player-carry angels: 0 90 0 *(показывает как повернется объект(под каким углом) когда его игрок возьмет/использует. Кто не знает принципа этих цифр открываем спойлер)

[spoiler=""оси Y Z X""]Я думаю вы когда-нибудь замечали исходящие от модели красную, синюю, и зеленую линию?

Красная линия – ось x; Зеленая линия – ось y; Синяя ось – z;
Теперь постараюсь объяснить как вращается объект:

Вокруг синего креста(ось z) вращается деталь против часовой стрелки когда число положительное, (смотрим на стрелки на рисунки, он показывают в какую сторону вращается, когда положительное; а так же снизу, справа цифры показывают на сколько градусов повернется объект на определенной оси(Y Z X); а сверху, справа можно регулировать вращения(только по оси Z, остальные придется регулировать в Pitch Yaw Roll (Y Z X), в той таблице снизу, справа), когда отрицательно (например -90) то естественно по часовой стрелки будет вращаться объект, на определенной оси.

Вокруг зеленого креста(ось y) вращается объект против часовой(когда положительное число) и по часовой (когда отрицательное число);

Вокруг красного креста(ось x) вращается объект против часовой(когда положительное) и по часовой (когда отрицательное число). В общем я постарался объяснить, вы можете сами потеснить изменяя числа т.п.[/spoiler]
Flags:
Debris *(не сталкивается с игроком и другими debirs-объектами)
Use preferred carry angles *(когда игрок поднимает(+USE, или грави-пушкой) объект поворачивается под угол который выставлен в Preferred player-carry angels *см. выше)
Generate outpur on +USE
Only break on trigger
Don’t’ take physics damage
4. Создаем filter_activator_name и настраиваем:
Name: filter_tol’ko_vilka
Filter mode: Allow entities that match criteria *(если поставить Disallow entities that match criteria, то все физический объекты будут цепляется в эту розетку, кроме вилки)
Filter name: vilka

5.Теперь там где наша розетка, внутри делаем браш и покрывает текстурой toolstrigger, переводим в trigger_teleport и настраиваем:
Name: teleport
Filter name: filter_tol’ko_vilka
Remote destination: cel’ *(место появления после телепортации)
Flags:
Убираем:
Clients
Ставим:
Physic objects*(только на физические объекты будет реагировать тригер)

6.Создаем info_target, даем ему name: cel’ и располагаем примерно как на скрине ниже.

Теперь насчет хэлпера в нашей вилке(vilka); выделяем наш физбокс, и ищем хэлпер*(фиолетовый кружок)


[/img]
Регулируем хэлпер на плоскостях. *(на скрине выше вид сверху)
И главное, что хэлпер - центр нашего физбокса(vilka), т.е., когда наша вилка телепортируется, она станет своим центром*(там где хэлпер), в центре info_target; и как мы расположен хэлпер, так оно и будет в розетке стоять!!! будьте очень точными, и пробуйте несколько раз расположить хэлпер, так чтобы, вилка не застревала в func_clip_vphysics*(иначе мы ее больше никогда не вытащим :) ), в той самой браше которую мы создали вначале.

Создания эффектов(опционально):
7. Создаемenv_beam*(месторасположения не имеет значения) и настраиваем*(настраиваем как хотим, ниже предложены мои настройки):
Name: 220v
Brightness: 100*(прозрачность)
Beam color(Red Green Blue): 255 245 121*(настраиваем сами)
Life: 0
Width of beam: 1
Amount of noise: 10
Sprite name: sprites/lgtning
Start entity: vilka
Ending entity: cel’
Flags:
Toggle

Далее создаем *(как на скрине) браш с текстурой toolstrigger, переводим в trigger_multiple, и настраиваем:
Name: vklu4atel’_ly4a
Filter name: filter_tol’ko_vilka
Flags:
Убираем:
Clients*(иначе игрок будет активировать)
Ставим:
Physics object
8.Создаем env_spark, примерно там где info_target и настраиваем:
Name: iskra
Magnitude: medium *(общий размер искры)
Spark Trail Length: medium
Flags:
Glow
Shade start*(так лучше смотрится)

9. И последнее, создаем env_sprite и настраиваем:
Name: lampa
Render FX: Hologram *(мне нравится)
Render mode: World space glow
FX amount: 200
FX color(Red Green Blue): 255 0 0
Sptire name: sprites/glow01.spr *(вполне хорошо смотрится)
Scale: 0.15 *(размер спрайта)
Size of Glow Proxy Geometry: 2 *(слишком больше не советую ставить, а то будете видеть спрайт через стены, модели и т.п; 2.0 вполне нормально)
Flags:
Start on

10. И наконец logic_relay, ставим где попало :crazy: ,вписываем name: restart; start disable: yes, и попутно начинаем настраивать outputs.
А) Начнем c vklu4atel’_ly4a *(тот самый trigger_multiple)

Б) Теперь teleport *(trigger_teleport)

В) Теперь vilka *(func_physbox)

Г)И наконец restart *(logic_relay)

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


Исходники: