This isn't an elegant solution, but I made this function to position a 3D models to a main 3D model, which acts act as its 'limbs'. Then, RotateObjecLocalX() can be called to rotate the 'limbs' locally, as if it is a jointed limb.
But you got to have different models for each limbs, so its quite tedious, and the overall model would't be as smooth. And you have to animate the model by code
FUNCTION PositionLimb( childObjNum , parentObjNum , parentAngleX# , parentAngleY# , parentAngleZ# , XOffset# , YOffset# , ZOffset# )
//Position limb - put this function at the top of main loop
`Position limb on object, rotate limb same as object, move limb to location
`Then, limb can be rotated on local axis with RotateObjecLocalX()
IF parentAngleX# =>360 THEN parentAngleX# = parentAngleX#-360
IF parentAngleY# =>360 THEN parentAngleY# = parentAngleY#-360
IF parentAngleZ# =>360 THEN parentAngleZ# = parentAngleZ#-360
//Position limb on object
SetObjectPosition(childObjNum, GetObjectX(parentObjNum), GetObjectY(parentObjNum), GetObjectZ(parentObjNum))
//Rotate limb to make it angle same as body
SetObjectRotation(childObjNum, parentAngleX#,parentAngleY#,parentAngleZ# )
//Position limb on its intended position
MoveObjectLocalX(childObjNum, XOffset#)
MoveObjectLocalY(childObjNum, YOffset#)
MoveObjectLocalZ(childObjNum, ZOffset#)
ENDFUNCTION