-
Notifications
You must be signed in to change notification settings - Fork 0
Entity.AddOutput Entity.RemoveOutput Entity.GetOutputs methods RU
This page is available in English
Дискуссия: #1911, #2, #1984, #1984 (comment).
integer Entity:AddOutput(string output, function callback, number delay, integer repetitions)
Добавляет функцию обратного вызова для определенного оутпута. В отличие от MetaTarget позволяет добавить множество обратных вызовов на один оутпут, и имеет нативные встроенные параметры задержки и повторений.
Этот метод не проверяет, была ли функция уже добавлена к этому энтити ранее, поэтому, если вы добавите один и тот же обратный вызов дважды, он будет запущен дважды! Убедитесь, что вы добавили свой обратный вызов только один раз, или используйте MetaTarget.
Если установлено значение repetitions больше 0, то оутпут в какой-то момент удалиться из движка. Однако Lua функция останется в энтити.
string output
- Имя оутпута, к которому нужно подключиться. Разные энтити имеют разные оутпуты, вам нужно смотреть названия оутпутов на Valve Developer Wiki.
function callback
- Функция для вызова. См. Output callback для подробностей.
number delay
- Устанавливает значение
delayдля создаваемого оутпута. Значение по умолчанию0.
integer repetitions
- Устанавливает значение
max times to fireдля создаваемого оутпута. Значение по умолчанию-1. Значение0то же самое, что и-1.
integer
- id только что добавленного оутпута, который впоследствии может быть использован в
Entity:RemoveOutput.
Entity:RemoveOutput(string output, integer id)
Удаляет обратный вызов, ранее добавленный с помощью Entity:AddOutput.
Этот метод не удаляет оутпут на стороне движка, а только функцию на стороне Lua. После этого оутпут молча игнорируется. Постоянное добавление и удаление оутпутов таким образом (свыше сотни раз) вызовет падение производительности. Пожалуйста, не используйте это слишком много раз.
string output
- Имя оутпута для удаления. Разные энтити имеют разные оутпуты, вам нужно смотреть названия оутпутов на Valve Developer Wiki.
integer id
- id оутпута, ранее полученный с возвращаемого значения
Entity:AddOutputилиEntity:GetOutputs.
table Entity:GetOutputs(string output)
Возвращает обратные вызовы указанного оутпута для этой энтити, добавленные с помощью Entity:AddOutput. Обратные вызовы затем могут быть удалены с помощью Entity:RemoveOutput.
string output
- Имя оутпута для получения обратных вызовов. Разные энтити имеют разные оутпуты, вам нужно смотреть названия оутпутов на Valve Developer Wiki.
table
- Таблица, содержащая id оутпута и функцию всех обратных вызовов для указанного имени оутпута.
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 будет эта дверь. Это ошибка движка.
Entity ent
- Энтить, на которой сработал этот оутпут. Поскольку вложенных энтитей может быть несколько, вам необходимо использовать эту переменную для обращения к энтити напрямую.
Entity activator
- Энтить, которая запустила цепочку событий. Если кнопку нажал игрок, то здесь будет энтить игрока. Если вы вручную запустили
button1:Fire("Press")и не передали аргумент activator, то здесь будет NULL.
Entity activator
- Энтить, которая непосредственно запускает оутпут. Например, кнопка, которая была нажата.
any value
- Если оутпут имеет генерируемый параметр, то это значение передается сюда в виде string, number или boolean. Например,
momentary_rot_button > Positionилиmath_counter > OutValue. В остальных случаях это будет nil.