game_ui
Описание
Объект game_ui используется для отслеживания нажатий клавиш управления игрока, когда игрок смотрит на этот объект.
Особенности использования
- Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
- Объект должен быть установлен там, где будет использоваться.
- На карте может быть установлено множество этих объектов
- Объект не может контролировать сразу двух игроков. Необходимо деактивировать объект прежде чем снова можно будет его снова активировать.
- Одного игрока могут контролировать сразу несколько таких объектов. При этом их действия накладываются друг на друга.
- Объект учитывает случай когда активировавший его игрок отключается от игры. Ошибки при этом не происходит.
Ошибки
Внимание: Если установлен хотя бы один из флажков "Freeze Player" или "Hide Weapon", то нельзя вызывать функцию "Deactivate" если объект game_ui не был перед этим активирован. Повторный вызов функции "Deactivate" для неактивного объекта game_ui, приведёт к краху игры! Для объекта game_ui возможны два способа его деактивации: автоматический (свойство "Field Of View" и флажки "+USE Deactivates", "+JUMP Deactivates") и вручную (функция "Deactivate"). Используя автоматический способ деактивации можно полностью обезопасить карту от подобной ошибки. При использовании способа "вручную" невозможно дать гарантии на правильность работы объекта game_ui, но вы можете использовать событие "PlayerOff" для контроля его активности, а так же можно использовать дополнительные средства для контроля активности объекта, например: объект logic_branch. Использование одновременно двух этих методов практически всегда приводят к краху игры, поэтому выберите какой-нибудь один и используйте только его.
Заметки
Объект game_ui удобно использовать вместе с объектом trigger_look.
Параметры
- Field Of View – под каким углом игрок должен смотреть на объект game_ui, чтобы можно было активировать его и поддерживать его активным; если игрок отвернётся от объекта game_ui на угол больше этого значения, то объект game_ui будет автоматически деактивирован; 1.0 - игрок должен смотреть прямо на объект; 0.5 - игрок может смотреть на объект под углом до 45 градусов; 0.0 – игрок может смотреть на объект под углом до 90 градусов; -1.0 – игрок может смотреть в любом направлении.
Флаги
- Freeze Player – запретить игроку двигаться после активации объекта game_ui; при этом игрок сможет только прыгать, приседать и вращать "головой"; (у этого флажка есть баг, см. пункт "Ошибки");
- Hide Weapon – скрыть оружие у игрока после активации объекта game_ui; игрок не сможет стрелять; (у этого флажка есть баг, см. пункт "Ошибки");
- +USE Deactivates – использовать клавишу "Использовать", чтобы деактивировать объект game_ui; использование этого флажка не даёт гарантии, что объект деактивируется при первом же нажатии на клавиши "Использовать"; возможно, игроку придётся неоднократно нажимать на эту клавишу, чтобы деактивировать объект;
- +JUMP Deactivates - использовать клавишу "Прыжок", чтобы деактивировать объект game_ui; использование этого флажка не даёт гарантии, что объект деактивируется при первом же прыжке игрока; возможно, игроку придётся неоднократно подпрыгнуть, чтобы деактивировать объект.
Inputs
- Activate – активизировать объект (заставить его работать); только игрок может активировать этот объект, иначе вызов это функции приводит к ошибке в консоли "InputActivate: invalid or missing !activator!".
- Deactivate – деактивировать объект; (у этой функции есть баг, см. пункт "Ошибки").
Outputs
- PlayerOn – выполняется при вызове функции "Activate"; выполняется даже тогда, когда объект game_ui уже активен;
- PlayerOff - выполняется тогда, когда объект деактивируется;
- PressedAttack – выполняется тогда, когда игрок нажимает клавишу "Атака1";
- PressedAttack2 – выполняется тогда, когда игрок нажимает клавишу "Атака2";
- PressedBack – выполняется тогда, когда игрок нажимает клавишу "Назад";
- PressedForward – выполняется тогда, когда игрок нажимает клавишу "Вперёд";
- PressedMoveLeft – выполняется тогда, когда игрок нажимает клавишу "Влево";
- PressedMoveRight – выполняется тогда, когда игрок нажимает клавишу "Вправо";
- UnpressedAttack – выполняется тогда, когда игрок отжимает клавишу "Атака1"; НЕ выполняется когда объект деактивируется;
- UnpressedAttack2 – выполняется тогда, когда игрок отжимает клавишу "Атака2"; НЕ выполняется когда объект деактивируется;
- UnpressedBack – выполняется тогда, когда игрок отжимает клавишу "Назад"; НЕ выполняется когда объект деактивируется;
- UnpressedForward – выполняется тогда, когда игрок отжимает клавишу "Вперёд"; НЕ выполняется когда объект деактивируется;
- UnpressedMoveLeft – выполняется тогда, когда игрок отжимает клавишу "Влево"; НЕ выполняется когда объект деактивируется;
- UnpressedMoveRight – выполняется тогда, когда игрок отжимает клавишу "Вправо"; НЕ выполняется когда объект деактивируется;
- AttackAxis <float> - возвращает значение больше 0, когда игрок удерживает нажатой клавишу "Атака1"; возвращает значение равное 0, если игрок отжимает клавишу "Атака1"; выполняется когда объект деактивируется;
- Attack2Axis <float> - возвращает значение больше 0, когда игрок удерживает нажатой клавишу "Атака2"; возвращает значение равное 0, если игрок отжимает клавишу "Атака2"; выполняется когда объект деактивируется;
- XAxis <float> - возвращает значение больше 0, когда игрок удерживает нажатой клавишу "Вправо"; возвращает значение меньше 0, когда игрок удерживает нажатой клавишу "Влево"; возвращает значение равное 0, если игрок отжимает клавиши "Вправо" и "Влево"; выполняется когда объект деактивируется;
- YAxis <float> - возвращает значение больше 0, когда игрок удерживает нажатой клавишу "Вверх"; возвращает значение меньше 0, когда игрок удерживает нажатой клавишу "Вниз"; возвращает значение равное 0, если игрок отжимает клавиши "Вверх" и "Вниз"; выполняется когда объект деактивируется.
Карта
- 1) csssdk_game_ui.vmf
- 2) csssdk_game_ui_2.vmf
Используются объекты
- 1)
- game_ui
- func_button
- func_detail
- trigger_multiple
- func_brush
- logic_compare
- logic_branch
- 2)
- game_ui
- ambient_generic
- env_sprite
- env_spritetrail
- env_steam
- filter_activator_name
- func_brush
- func_button
- func_detail
- func_door
- func_monitor
- func_physbox_multiplayer
- infodecal
- info_mass_center
- light_dynamic
- logic_auto
- logic_compare
- logic_relay
- logic_timer
- math_counter
- math_remap
- phys_keepupright
- phys_thruster
- point_camera
- point_spotlight
- trigger_multiple
- trigger_once
Описание карты
На карте установлено три пульта. Кнопку на первом пульте можно нажать только нанеся ей урон. Выстрелите в эту кнопку, тем самым активируя первый объект game_ui. При этом оружие игрока исчезнет и игрок не сможет двигаться влево, вправо, вперёд и назад. Так как у игрока пропадает оружие, для этого игрока отключается анимация. Чтобы посмотреть на то как выглядит игрок без анимации, выполните в консоли команду "sv_cheats 1" и вслед за ней команду "thirdperson". После этого вы сможете видеть вашего игрока в режиме от третьего лица. Чтобы вернуть режим от первого лица, выполните в консоли команду "firstperson". На стене перед пультом будут подсвечиваться объекты func_brush, отображающие то, какие кнопки нажимает игрок. Самый широкий объект func_brush, расположенный ниже других, подсвечивается в тот момент, когда игрок активирует или деактивирует первый объект game_ui. Чтобы деактивировать первый объект game_ui просто отвернитесь от него в сторону на угол более 90 градусов или нажмите клавишу "Использовать".
Кнопка на втором пульте активирует второй объект game_ui. Эту кнопку можно просто нажать. Второй объект game_ui используется несколько иначе чем первый. Игрок лишается возможности двигаться, однако его оружие остаётся в руках и игрок может из него стрелять. Этот объект контролирует не момент нажатия на клавиши управления, а то, нажаты ли эти клавиши вообще. На стене перед пультом будут подсвечиваться объекты func_brush, отображающие то, какие кнопки нажаты у игрока в данный момент. Самый широкий объект func_brush, расположенный ниже других, подсвечивается в тот момент, когда игрок активирует или деактивирует второй объект game_ui. Чтобы деактивировать второй объект game_ui нужно просто подпрыгнуть. Кстати, активировав второй объект game_ui можно активировать и первый, ведь первый объект активируется при выстреле в первую кнопку пульта. Активируйте второй объект game_ui при помощи его кнопки, повернитесь в сторону первого пульта и выстрелите в его кнопку. У игрока пропадёт оружие из рук. Теперь на стене перед пультами можно наблюдать как одновременно работают сразу два объекта game_ui. Дальше смотрите сами, потому что последующая реакция объектов game_ui зависит от ваших действий.
На третьем пульте нет кнопки. Чтобы активировать третий объект game_ui необходимо просто подойти поближе к третьему пульту. Чтобы деактивировать третий объект game_ui, можно повторно подойти к третьему пульту, подпрыгнуть или нажать на клавишу "Использовать". Третий объект game_ui не ограничивает игрока ни в чём, он просто следит за его клавишами управления.
Обратите внимание как в редакторе Hammer создана система управлением за объектами game_ui. Для некоторых объектов game_ui используется по четыре логических объекта logic_compare. Первый logic_compare – для контроля за клавишей "Атака1", второй – для контроля за клавишей "Атака2", третий - для контроля за клавишами "Вверх", и "Вниз" и четвёртый - для контроля за клавишами "Вправо" и "Влево". Такой способ контроля за игроком иногда может быть очень полезным, однако для обыкновенного контроля за игроком он не очень удобен; значительно удобнее и рациональнее использовать парные комбинации Output’ов "Pressed..." и "Unpressed...".
На карте при помощи объекта game_ui реализован контроль за Небольшим Летательным Объектом (НЛО), при помощи которого необходимо залететь через крышу внутрь здания и открыть дверь, просто подлетев к ней.
Нажмите на кнопку пульта и используйте клавиши управления для контроля за НЛО. Клавиши "Атака1" и "Атака2" используются для придания НЛО вертикального ускорения. Обратите внимание, что неаккуратное управление НЛО может привести к тому, что он перевернётся и придётся начинать раунд заново, чтобы попробовать снова. Выполните в консоли команду "mp_restartgame 1".
Если Вам понравилась эта страница, Вы можете разместить где-нибудь ссылку на неё: