SetElementBonePosition: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
(Remove obsolete Requirements section)
 
(19 intermediate revisions by 4 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 12: Line 11:


===Required Arguments===
===Required Arguments===
*'''theElement:''' the element to set the bone position on.
*'''theElement:''' the [[Element|element]] to set the bone position on.
*'''bone:''' 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.
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),
    [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>
==Requirements==
{{Requirements|n/a|1.5.8-9.20704|}}


==See Also==
==See Also==
{{Client_element_functions}}
{{Client_element_functions}}

Latest revision as of 17:23, 7 November 2024

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)

See Also