Game ui

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал [1]

Описание

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

Особенности использования

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект должен быть установлен там, где будет использоваться.
  • На карте может быть установлено множество этих объектов
  • Объект не может контролировать сразу двух игроков. Необходимо деактивировать объект прежде чем снова можно будет его снова активировать.
  • Одного игрока могут контролировать сразу несколько таких объектов. При этом их действия накладываются друг на друга.
  • Объект учитывает случай когда активировавший его игрок отключается от игры. Ошибки при этом не происходит.

Ошибки

  Warning.png Внимание:  Если установлен хотя бы один из флажков "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

Описание карты

  • 1)

На карте установлено три пульта. Кнопку на первом пульте можно нажать только нанеся ей урон. Выстрелите в эту кнопку, тем самым активируя первый объект 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...".

  • 2)

На карте при помощи объекта game_ui реализован контроль за Небольшим Летательным Объектом (НЛО), при помощи которого необходимо залететь через крышу внутрь здания и открыть дверь, просто подлетев к ней.

Нажмите на кнопку пульта и используйте клавиши управления для контроля за НЛО. Клавиши "Атака1" и "Атака2" используются для придания НЛО вертикального ускорения. Обратите внимание, что неаккуратное управление НЛО может привести к тому, что он перевернётся и придётся начинать раунд заново, чтобы попробовать снова. Выполните в консоли команду "mp_restartgame 1".

Смотрите также