Logic multicompare

Материал из CSM Wiki
Версия от 19:34, 19 октября 2009; Kogemyaka (обсуждение | вклад) (Новая страница: «{{sdk beginsrc}} [http://developer.valvesoftware.com/wiki/Logic_multicompare Logic_multicompare] == Описание == Объект logic_multicompare сравни…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Оригинал Logic_multicompare

Описание

Объект logic_multicompare сравнивает между собой все входные целочисленные значения от других объектов.

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

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект может быть установлен в любом месте на карте.
  • На карте может быть установлено множество этих объектов
  • Этот объект автоматически создаёт список всех входящих целочисленных значений от других объектов и каждый раз при добавлении нового значения, или обновлении старого, сравнивает их все вместе между собой. Два разных Output’а одного объекта добавляют в список сравнения два разных значения, потому что список сравнения различает Output’ы по их ID (идентификационному номеру), а разные Output’ы имеют разные ID. Например для одной кнопки два Output’а:
    • OnIn | my_logic_multicompare | InputValue | 5
    • OnOut | my_logic_multicompare | InputValue | 7

создадут в списке сравнений разу два значения – 5 и 7, поэтому после вызова этих двух Output’ов объект my_logic_multicompare будет всегда выполнять событие "OnNotEqual" и уже не выполнит событие "OnEqual" в текущем раунде.

Чтобы избежать этого, необходимо использовать объекты, которые могут возвращать числовые значения как результат своей работы. Такими объектами являются:

  • env_microphone
  • func_breakable
  • func_breakable_surf
  • func_physbox
  • game_ui
  • game_zone_player
  • logic_compare
  • math_counter
  • math_remap
  • momentary_rot_button
  • point_anglesensor
  • point_angularvelocitysensor
  • point_proximity_sensor
  • prop_door_rotating
  • prop_dynamic
  • prop_dynamic_ornament
  • prop_dynamic_override
  • prop_physics
  • prop_physics_multiplayer
  • prop_physics_override
  • trigger_proximity.

Ошибки

Не обнаружены.

Заметки

Чтобы посмотреть какие Output’ы будут добавлять и изменять свои значения в списке сравнения, в редакторе Hammer откройте свойства объекта logic_multicompare и перейдите на вкладку "Inputs". Среди всех Input’ов в списке вам нужны те, в столбике "My Inputs" у которых установлено название функции "InputValue".

Параметры

  • Use Compare Value – использовать свойство "Compare Value":
    • No – в список сравнения НЕ будет добавлено значение свойства "Compare Value", поэтому первый же объект, вызвавший функцию "InputValue" приведёт в выполнению события "OnEqual", независимо от значения, которое он поместит в список;
    • Yes - в список сравнения будет добавлено число "Compare Value", поэтому для выполнения события "OnEqual" все значения в списке сравнения должны быть равны числу "Compare Value" для того чтобы событие "OnEqual" было выполнено;
  • Compare Value – целое число, которому должны быть равны все значения в списке сравнения, чтобы было выполнено событие "OnEqual".

Inputs

  • InputValue <integer> - добавить в список сравнения новое значение или обновить старое, если ID Output’а, вызвавшего эту функцию, уже есть в списке сравнения; при добавлении нового значения в список сравнения, ID (идентификационный номер) Output’а, вызвавшего эту функцию, будет соответствовать новому значению; после вызова этой функции автоматически вызывается функция "CompareValues";
  • CompareValues – сравнить все значения в списке значений; в соответствии с результатом сравнения после вызова этой функции автоматически вызываются события "OnEqual" или "OnNotEqual".

Outputs

  • OnEqual – выполняется если все значения в списке сравнения равны друг другу;
  • OnNotEqual – выполняется если в списке сравнения хотя бы одно из значений не равно остальным.

Карта

csssdk_logic_multicompare.vmf

Используются объекты

  • logic_multicompare
  • logic_timer
  • logic_branch
  • math_counter
  • func_wall
  • func_brush

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

На карте поставлена одна стена. На стене отображено два слова "COUNTER 1" и "COUNTER 2". При помощи объектов logic_timer, logic_branch и math_counter реализовано два счётчика, которые увеличивают и уменьшают своё значение с разной скорость. Значения этих счётчиков варьируются в диапазоне от 0 до 3. При изменении своего значения, каждый счётчик отправляет новое значение в объект logic_multicompare, который автоматически обновляет эти значения в своём списке сравнения, затем сравнивает их, и затем выполняет свои события "OnEqual" и "OnNotEqual", в зависимости от результата сравнения. При этом в центре стены то появляется, то исчезает надпись "EQUAL", означающая что значения счётчиков в этот момент равны. Скорость изменения значений счётчиков может быть отрегулирована в редакторе Hammer, изменяя значения свойств "Refire Interval" у объектов logic_timer.

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