Skip to content

Entity.AddOutput Entity.RemoveOutput Entity.GetOutputs methods RU

Shararvev edited this page Jun 12, 2023 · 6 revisions

This page is available in English

Дискуссия: #1911, #2, #1984, #1984 (comment).

AddOutput

integer Entity:AddOutput(string output, function callback, number delay, integer repetitions)

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

Этот метод не проверяет, была ли функция уже добавлена к этому энтити ранее, поэтому, если вы добавите один и тот же обратный вызов дважды, он будет запущен дважды! Убедитесь, что вы добавили свой обратный вызов только один раз, или используйте MetaTarget.

Если установлено значение repetitions больше 0, то оутпут в какой-то момент удалиться из движка. Однако Lua функция останется в энтити.

Arguments

string output

  • Имя оутпута, к которому нужно подключиться. Разные энтити имеют разные оутпуты, вам нужно смотреть названия оутпутов на Valve Developer Wiki.

function callback

  • Функция для вызова. См. Output callback для подробностей.

number delay

  • Устанавливает значение delay для создаваемого оутпута. Значение по умолчанию 0.

integer repetitions

  • Устанавливает значение max times to fire для создаваемого оутпута. Значение по умолчанию -1. Значение 0 то же самое, что и -1.

Returns

integer

  • id только что добавленного оутпута, который впоследствии может быть использован в Entity:RemoveOutput.

RemoveOutput

Entity:RemoveOutput(string output, integer id)

Удаляет обратный вызов, ранее добавленный с помощью Entity:AddOutput.

Этот метод не удаляет оутпут на стороне движка, а только функцию на стороне Lua. После этого оутпут молча игнорируется. Постоянное добавление и удаление оутпутов таким образом (свыше сотни раз) вызовет падение производительности. Пожалуйста, не используйте это слишком много раз.

Arguments

string output

  • Имя оутпута для удаления. Разные энтити имеют разные оутпуты, вам нужно смотреть названия оутпутов на Valve Developer Wiki.

integer id

  • id оутпута, ранее полученный с возвращаемого значения Entity:AddOutput или Entity:GetOutputs.

GetOutputs

table Entity:GetOutputs(string output)

Возвращает обратные вызовы указанного оутпута для этой энтити, добавленные с помощью Entity:AddOutput. Обратные вызовы затем могут быть удалены с помощью Entity:RemoveOutput.

Arguments

string output

  • Имя оутпута для получения обратных вызовов. Разные энтити имеют разные оутпуты, вам нужно смотреть названия оутпутов на Valve Developer Wiki.

Returns

table

  • Таблица, содержащая id оутпута и функцию всех обратных вызовов для указанного имени оутпута.

Output callback

callback(Entity ent, Entity activator, Entity caller, any value)

В большинстве случаев caller является самой энтитью ent, но отдельные оутпуты могут переопределять ее. См. Keywords примечания и особые случаи. Так, например, если вы создадите оутпут OnLockedUse для func_door, то activator и caller будет игрок.

Некоторые энтити неправильно работают с оутпутами, и вместо игрока activator будет сама энтить ent. Так, например, если вы создадите оутпут OnOpen или OnClose для func_door, то activator и caller будет эта дверь. Это ошибка движка.

Arguments

Entity ent

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

Entity activator

  • Энтить, которая запустила цепочку событий. Если кнопку нажал игрок, то здесь будет энтить игрока. Если вы вручную запустили button1:Fire("Press") и не передали аргумент activator, то здесь будет NULL.

Entity activator

  • Энтить, которая непосредственно запускает оутпут. Например, кнопка, которая была нажата.

any value

  • Если оутпут имеет генерируемый параметр, то это значение передается сюда в виде string, number или boolean. Например, momentary_rot_button > Position или math_counter > OutValue. В остальных случаях это будет nil.

Clone this wiki locally