Only guessing but maybe...
SetObjectPosition(object,GetObjectX(parent)+GetObjectX(child),GetObjectY(parent)+GetObjectY(child),GetObjectZ(parent)+GetObjectZ(child))
You might have to rotate the parent to 0,0,0 then position the object, set it as a child then rotate the parent to where it was.
Or what about just setting the object as a child of the child minus the world XYZ offsets in the snippet above ?
Or...
SetObjectPosition(object,GetObjectWorldX(child)+GetObjectX(child),GetObjectWorldY(child)+GetObjectY(child),GetObjectWorldZ(child)+GetObjectZ(child))
Never play leap frog with a unicorn.
