Dgs3DImageAttachToElement: Difference between revisions
No edit summary |
|||
Line 44: | Line 44: | ||
'''Example 1:''' This example attaches a mic icon to any player who start voice chat: | '''Example 1:''' This example attaches a mic icon to any player who start voice chat: | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
dgs = exports.dgs | |||
if isVoiceEnabled() then | if isVoiceEnabled() then | ||
local micPNG = dxCreateTexture('assests/mic.png'); | |||
local icons = {}; | |||
addEventHandler('onClientPlayerVoiceStart',root, | |||
function() | |||
print('[Voice-System]: '..getPlayerName(source)..' started talking.') | |||
local x,y,z = getElementPosition(source); | |||
if ((source ~= localPlayer and isElementOnScreen(source)) or (localPlayer == source)) and not isElement(icons[source]) then | |||
icons[source] = dgs:dgsCreate3DImage(x,y,z+1.5,micPNG,tocolor(255,255,255,255),4,4,20); | |||
dgs:dgs3DImageAttachToElement( icons[source],localPlayer,0,0,1.5) | |||
end | |||
end | |||
) | |||
addEventHandler('onClientPlayerVoiceStop',root, | |||
function() | |||
print('[Voice-System]: '..getPlayerName(source)..' Stoped talking.') | |||
if isElement(icons[source]) then | |||
dgs:dgs3DImageDettachFromElement( icons[source],localPlayer); | |||
destroyElement(icons[source]); | |||
icons[source] = nil; | |||
end | |||
end | |||
) | |||
end | end | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
==See Also== | ==See Also== | ||
{{Element functions}} | {{Element functions}} | ||
[[en:attachElements]] | [[en:attachElements]] |
Revision as of 02:17, 12 August 2022
This function attaches 3D Image element to another element, so that the first one follows the second whenever it moves.
If an attempt is made to attach two elements that are already attached the opposite way (eg the3DImage becomes theAttachToElement and vice versa), the 1st attachment order is automatically detached in favor of the 2nd attachment order. Also, the3DImage cannot be attached to two separate elements at one time. For example, two the3DImage can be attached to one single car, but you can attach car to the3DImage , If you attempt to do this it won't work .
This is not compatible with all elements. The following elements are compatible:
Syntax
bool dgs3DImageAttachToElement ( dgsElement the3DImageElement, element theAttachToElement, [ float xPosOffset = 0, float yPosOffset = 0, float zPosOffset = 0, float xRotOffset = 0, float yRotOffset = 0, float zRotOffset = 0 ] )
OOP Syntax Help! I don't understand this!
- Method: element:3DImageAttachToElement(...)
- Counterpart: 3DImageDetachFromElement
Required Arguments
- the3DImageElement: The 3D Image element to be attached.
- theAttachToElement: The element to attach the first to.
Optional Arguments
NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.
- xPosOffset: The x offset, if you want the elements to be a certain distance from one another (default 0).
- yPosOffset: The y offset (default 0).
- zPosOffset: The z offset (default 0).
- xRotOffset: The x rotation offset (default 0).
- yRotOffset: The y rotation offset (default 0).
- zRotOffset: The z rotation offset (default 0).
Returns
Returns true if the attaching process was successful, false otherwise.
Example
Example 1: This example attaches a mic icon to any player who start voice chat:
dgs = exports.dgs if isVoiceEnabled() then local micPNG = dxCreateTexture('assests/mic.png'); local icons = {}; addEventHandler('onClientPlayerVoiceStart',root, function() print('[Voice-System]: '..getPlayerName(source)..' started talking.') local x,y,z = getElementPosition(source); if ((source ~= localPlayer and isElementOnScreen(source)) or (localPlayer == source)) and not isElement(icons[source]) then icons[source] = dgs:dgsCreate3DImage(x,y,z+1.5,micPNG,tocolor(255,255,255,255),4,4,20); dgs:dgs3DImageAttachToElement( icons[source],localPlayer,0,0,1.5) end end ) addEventHandler('onClientPlayerVoiceStop',root, function() print('[Voice-System]: '..getPlayerName(source)..' Stoped talking.') if isElement(icons[source]) then dgs:dgs3DImageDettachFromElement( icons[source],localPlayer); destroyElement(icons[source]); icons[source] = nil; end end ) end
See Also
- attachElements
- createElement
- destroyElement
- detachElements
- getAttachedElements
- getElementAlpha
- getElementAttachedOffsets
- getElementAttachedTo
- getElementByIndex
- getElementByID
- getElementChild
- getElementChildren
- getElementChildrenCount
- getElementCollisionsEnabled
- getElementColShape
- getElementData
- getAllElementData
- hasElementData
- getElementDimension
- getElementHealth
- getElementID
- getElementInterior
- getElementMatrix
- getElementModel
- getElementParent
- getElementPosition
- getElementRotation
- getElementsByType
- getElementsWithinColShape
- getElementsWithinRange
- getElementType
- getElementVelocity
- getLowLODElement
- getRootElement
- isElement
- isElementAttached
- isElementCallPropagationEnabled
- isElementDoubleSided
- isElementFrozen
- isElementInWater
- isElementLowLOD
- isElementWithinColShape
- isElementWithinMarker
- setElementAlpha
- setElementAngularVelocity
- getElementAngularVelocity
- setElementAttachedOffsets
- setElementCallPropagationEnabled
- setElementCollisionsEnabled
- setElementData
- setElementDimension
- setElementDoubleSided
- setElementFrozen
- setElementHealth
- setElementID
- setElementInterior
- setElementModel
- setElementParent
- setElementPosition
- setElementRotation
- setElementVelocity
- setLowLODElement
- getPedContactElement
- getResourceDynamicElementRoot
- getResourceRootElement