Пользовательские Входы и выходы

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)Translate (Translate)

Входы FireUser1-4 и выходы OnUser1-4 доступны на всех объектах, которые могут получать Inputs and Outputs(en). Этот набор элементов управления специально связан с совместной работой. Хотя они не используются очень часто, пользовательские входы и выходы могут быть очень мощными инстрементом и выполнять определенные задачи намного легче.

Вывод OnUserN просто сохраняет действие, которое не выполняется до тех пор, пока оно не будет активировано соответствующим входом FireUserN. Они полезны для пересылки сообщений через сущность, где желаемая цель известна транспортному объекту, но не для объекта обжига(может имеется ввиду действия (sadface)).

Пример можно найти на карте Valve, "sdk_d3_citadel_01.vmf", найденной в папке "sourcesdk_content\hl2\mapsrc". func_tracktrain(en) (zapperpod1_train) с родительским движком func_door_rotating(en) (zapperpod1_rotator), перемещающимся вдоль path_track(en) (pod_bay_zapper_track).

 

На вкладке «Outputs» объекта «func_tracktrain» есть две настройки:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnUser1 zapperpod1_rotator Open   0.00 No
Io11.png OnUser1 zapperpod1_rotator Close   5.00 No
 

Таким образом, в основном, когда User1 удален, "func_door_rotating" откроется и после 5-секундной задержки закроется. Чтобы запустить этот вывод, один из объектов "path track", "pod_bay_zapper_track4", имеет выход:

My Output > Target Entity Target Input Parameter Delay Only Once
Io12.png OnPass !activator FireUser1   0.10 No

Когда "func_tracktrain" передает объект "path track", он становится !activator И его User1, указанный выше, запускается.

Другой пример

Вот еще один пример из Half-Life 2 карта "d2_coast_08":

logic_auto(en) используется, чтобы сообщить 3 npc_seagull(en) с тем же целевым именем, чтобы улететь. Большинство преобразователей будут указывать каждый вывод отдельно, но с использованием пользовательских входов и выходов, картограф здесь смог сделать все это с одним выходом FireUser1, как показано ниже:

 
"origin" "3349.73 -2612.79 1033"
"spawnflags" "1"
"classname" "logic_auto"
My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn seagull FireUser1   0 No
 
"origin" "3328 -2688 2177"
"targetname" "seagull"
"spawnflags" "4"
"classname" "npc_seagull"
My Output > Target Entity Target Input Parameter Delay Only Once
Io12.png OnUser1 !self FlyAway bird_flightpath_a_48 0 No
 
"origin" "3319.87 -2531.21 2177"
"targetname" "seagull"
"spawnflags" "4"
"classname" "npc_seagull"
My Output > Target Entity Target Input Parameter Delay Only Once
Io12.png OnUser1 !self FlyAway bird_flightpath_a_48 12 No
 
"origin" "3191.87 -2531.21 2177"
"targetname" "seagull"
"spawnflags" "4"
"classname" "npc_seagull"
My Output > Target Entity Target Input Parameter Delay Only Once
Io12.png OnUser1 !self FlyAway bird_flightpath_a_10 12 No
 

В этом случае FireUser1/Onuser1 не требовался, но это упростило задачу. Гениальность системы заключается в том, что вы можете сказать каждой чайке о чем-то отдельном. Первая чайка летит в bird_flightpath_a_48 без задержки.Вторая чайка летит к тому же пути, но ждет 12 секунд что бы сделать этого. Последний также ждет 12 секунд, но летает на другой путь bird_flightpath_a_10. Все это выполняется с использованием одного выхода и одного targetname(en) для трех объектов.

See also