SetElementBonePosition: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
(Syntax updated)
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
{{Client function}}
{{Client function}}
This function sets the position of a bone to the specified coordinates. Currently the [[Element/Player|Player]] and [[Element/Ped|Ped]] element types are accepted.
{{Added feature/item|1.5.9|1.5.8|20704|This function sets the position of a bone to the specified coordinates. Currently the [[Element/Player|Player]] and [[Element/Ped|Ped]] element types are accepted.}}
 
{{Tip|If you want to attach an element to a bone, see [[attachElementToBone]].}}
{{Tip|If you want to attach an element to a bone, see [[attachElementToBone]].}}
{{Note|You need to use this function together with [[onClientPedsProcessed]].}}
{{Note|You need to use this function together with [[onClientPedsProcessed]].}}
Line 8: 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 22: 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),
    end
    [7] = Vector3(0, 0, 0.13),
     if (not tonumber(id) or not tonumber(x) or not tonumber(y) or not tonumber(z)) then
    [8] = Vector3(0, 0, 0.1),
         outputChatBox ("Command arguments should be numbers!", 255, 25, 25)
}
        return false
function updatePed()
     for bone,v in pairs(bones) do
        local pos = localPlayer:getBonePosition(bone)+v
         setElementBonePosition(localPlayer, bone, pos)
     end
     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