SetElementBonePosition: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
(Syntax updated)
(6 intermediate revisions by the same user not shown)
Line 7: Line 7:
==Syntax==
==Syntax==
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setElementBonePosition ( element theElement, int boneId, float x, float y, float z )
bool setElementBonePosition ( element theElement, int bone, float x, float y, float z )
</syntaxhighlight>
</syntaxhighlight>


===Required Arguments===
===Required Arguments===
*'''theElement:''' the [[Element|element]] to set the bone position on.
*'''theElement:''' the [[Element|element]] to set the bone position on.
*'''boneId:''' the ID of the bone to set the position of. See [[Bone IDs]].
*'''bone:''' the ID of the bone to set the position of. See [[Bone IDs]].
*'''x:''' The X coordinate of the destination.
*'''x:''' The X coordinate of the destination.
*'''y:''' The Y coordinate of the destination.
*'''y:''' The Y coordinate of the destination.
Line 21: Line 21:


==Example==
==Example==
This example is a command where the player should input the bone ID and the XYZ coordinates to set one of his bones' position:
[[File:CJ with long neck.png|thumb|alt=CJ with long neck|Example preview]]
This example shows a surprised CJ with a long neck
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function setBonePosition (commandName, boneId, x, y, z)
local bones = {
     if (not boneId or not x or not y or not z) then
    [4] = Vector3(0, 0, 0.15),
        outputChatBox ("Syntax: /setbonepos [boneID, x, y, z]", 255, 25, 25)
    [5] = Vector3(0, 0, 0.15),
         return false
     [6] = Vector3(0, 0, 0.13),
    [7] = Vector3(0, 0, 0.13),
    [8] = Vector3(0, 0, 0.1),
}
function updatePed()
    for bone,v in pairs(bones) do
        local pos = localPlayer:getBonePosition(bone)+v
         setElementBonePosition(localPlayer, bone, pos)
     end
     end
    if (not tonumber(id) or not tonumber(x) or not tonumber(y) or not tonumber(z)) then
        outputChatBox ("Command arguments should be numbers!", 255, 25, 25)
        return false
    end
    setElementBonePosition (localPlayer, ID, x, y, z)
    outputChatBox ("Bone position set successfully!", 0, 255, 0)
end
end
 
addEventHandler("onClientPedsProcessed", root, updatePed)
addCommandHandler ("setbonepos", setBonePosition)
</syntaxhighlight>
</syntaxhighlight>



Revision as of 07:08, 7 December 2021

This function sets the position of a bone to the specified coordinates. Currently the Player and Ped element types are accepted.

[[{{{image}}}|link=|]] Tip: If you want to attach an element to a bone, see attachElementToBone.
[[{{{image}}}|link=|]] Note: You need to use this function together with onClientPedsProcessed.

Syntax

bool setElementBonePosition ( element theElement, int bone, float x, float y, float z )

Required Arguments

  • theElement: the element to set the bone position on.
  • bone: the ID of the bone to set the position of. See Bone IDs.
  • x: The X coordinate of the destination.
  • y: The Y coordinate of the destination.
  • z: The Z coordinate of the destination.

Returns

Returns true if the function was successful, false otherwise.

Example

CJ with long neck
Example preview

This example shows a surprised CJ with a long neck

local bones = {
    [4] = Vector3(0, 0, 0.15),
    [5] = Vector3(0, 0, 0.15),
    [6] = Vector3(0, 0, 0.13),
    [7] = Vector3(0, 0, 0.13),
    [8] = Vector3(0, 0, 0.1),
}
function updatePed()
    for bone,v in pairs(bones) do
        local pos = localPlayer:getBonePosition(bone)+v
        setElementBonePosition(localPlayer, bone, pos)
    end
end
addEventHandler("onClientPedsProcessed", root, updatePed)

Requirements

Minimum server version n/a
Minimum client version 1.5.8-9.20704

Note: Using this feature requires the resource to have the above minimum version declared in the meta.xml <min_mta_version> section. e.g. <min_mta_version client="1.5.8-9.20704" />

See Also