RU/attachElements

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

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

Если делается попытка прикрепить два элемента, которые уже прикреплены противоположным образом (например, theElement становится theAttachToElement и наоборот), 1-й порядок присоединения автоматически отключается в пользу 2-го порядка присоединения. Например, если carA был привязан к carB, теперь carB привязан к carA. Кроме того, элемент не может быть прикреплен к двум отдельным элементам одновременно. Например, две машины могут быть прикреплены к одной машине, но одна отдельная машина не может быть прикреплена к двум отдельным машинам. Если вы попытаетесь это сделать, существующее вложение будет автоматически удалено и заменено новым. Например, если carA предлагается прикрепить к carB, а затем carC, он присоединяется только к carC.

Эта функция совместима не со всеми элементами. Совместимы следующие элементы:


[[{{{image}}}|link=|]] Примечание:
  • Координаты смещения отражают пространство объектов, а не мировое пространство. Это означает, что вы не можете рассчитать точные смещения между двумя объектами, предварительно разместив их в редакторе карты в качестве справочных. См. attachElementsOffsets для получения более подробной информации.
  • Из-за ограничений в GTA может произойти непредвиденный поворот присоединения, если все смещения поворота не равны нулю. (т.е. постарайтесь убедиться, что хотя бы один из 'xRotOffset', 'yRotOffset' или 'zRotOffset' равен нулю).

Синтаксис

bool attachElements( element theElement, element theAttachToElement, [float xPosOffset = 0, float yPosOffset = 0, float zPosOffset = 0, float xRotOffset = 0, float yRotOffset = 0, float zRotOffset = 0] )

Синтаксис ООП Помогите! Я не понимаю, что это!

Метод: element:attach(...)
Парная функция: detachElements

Обязательные аргументы

  • theElement: Элемент, который вы хотите прикрепить.
  • theAttachToElement: Элемент, к которому вы хотите прикрепить первый.

Необязательные аргументы

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

  • xPosOffset: Смещение по оси X, если вы хотите, чтобы элементы находились на определенном расстоянии друг от друга (по умолчанию 0).
  • yPosOffset: Смещение по оси Y (по умолчанию 0).
  • zPosOffset: Смещение по оси Z (по умолчанию 0).
  • xRotOffset: Смещение поворота по оси X (по умолчанию 0).
  • yRotOffset: Смещение поворота по оси Y (по умолчанию 0).
  • zRotOffset: Смещение поворота по оси Z (по умолчанию 0).

Возвращаемые значения

  • true, если прикрепление элементов произошло успешно.
  • false, если указаны недопустимые аргументы.

Пример использования

Click to collapse [-]
Сервер

Пример 1: В этом примере маркер прикрепляется к игроку, укравшему мистера Вупи:

local vehicleMrWhoopee = createVehicle( 423, 237.472, -54.225, 1.518, 0, 354.488, 0 ) -- создаёт автомобиль

function onMrWhoopeeEnter( thePlayer, seat, jackedPlayer )
    outputChatBox( getPlayerName( thePlayer ) .. " украл Вупи!", root, 255, 0, 0 ) -- выводит сообщение в чат
    local arrowMarker = createMarker( 0, 0, 0, "arrow", .75, 255, 0, 0, 170 ) -- создаёт маркер для прикрепления
    attachElements( arrowMarker, thePlayer, 0, 0, 2 ) -- прикрепляет маркер к игроку с вертикальным смещением 2 единицы
end
addEventHandler( "onVehicleEnter", vehicleMrWhoopee, onMrWhoopeeEnter ) -- прикрепляет функцию 'onMrWhoopeeEnter' к обработчику события "onVehicleEnter"

Пример 2: В этом примере добавляется танк поверх игрока (для дополнительной защиты) при помощи команды /hat:

function tankHat( source, commandName )
      local x, y, z = getElementPosition( source ) -- получает позицию игрока
      local tank = createVehicle( 432, x, y, z + 5 ) -- создаёт танк
      attachElements( tank, source, 0, 0, 5 ) -- прикрепляет танк к игроку
end
addCommandHandler( "hat", tankHat ) -- прикрепляет функцию 'tankHat' к обработчику команды "hat"
Click to collapse [-]
Клиент

Пример 3: В этом примере добавляется танк поверх игрока (для дополнительной защиты) со стороны клиента при помощи команды /hat. Это означает, что он будет невидим для других игроков.

function tankHat(commandName)
   local position = Vector3( getElementPosition(localPlayer) ) -- получает позицию локального игрока
   local tank = createVehicle( 432, position.x, position.y, position.z + 5 ) -- создаёт танк
   attachElements(tank,localPlayer, 0, 0, 5 ) -- прикрепляет танк к игроку
end
addCommandHandler( "hat", tankHat ) -- прикрепляет функцию 'tankHat' к обработчику команды "hat"

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