Ah I see. Thanks GG, I guess my code was worse than I thought since it was a very late night
@ Pincho I've been using that for a few years now and I don't mix up i with 1..
I also know that the problem was with the for loop and before you all posted I already had it fixed a few hours later

Thanks for the help though.
Quote: "I don't know why you didn't get array runtime errors. "
I didn't get array errors but sometimes when I compiled the project it would throw an addpkt to exe error.. Seems like I've fixed it since then.
Thanks again
EDIT: If anyone was curious to see the new working function I've posted it below
FUNCTION GetObjectData(id)
IF OBJECT EXIST(id)
LimbCount = 1 ` First limb is always the body
WHILE LIMB EXIST(id,LimbCount) = 1
INC LimbCount, 1
ENDWHILE
DIM LimbData#(LimbCount, 30) `Array to hold limb data like position, scale, offset, etc
DIM LimbName$(LimbCount) `Array holds limb names
`Get Limb Names
FOR i = 1 TO LimbCount - 1
LimbName$(i) = LIMB NAME$(id, i) `Set array id to limb name
NEXT i
FOR ii = 1 TO LimbCount - 1
a = 1
LimbData#(ii, a) = LIMB OFFSET X(id, ii)
INC a
LimbData#(ii, a) = LIMB OFFSET Y(id, ii)
INC a
LimbData#(ii, a) = LIMB OFFSET Z(id, ii)
INC a
LimbData#(ii, a) = LIMB SCALE X(id, ii)
INC a
LimbData#(ii, a) = LIMB SCALE Y(id, ii)
INC a
LimbData#(ii, a) = LIMB SCALE Z(id, ii)
INC a
LimbData#(ii, a) = LIMB ANGLE X(id, ii)
INC a
LimbData#(ii, a) = LIMB ANGLE Y(id, ii)
INC a
LimbData#(ii, a) = LIMB ANGLE Z(id, ii)
INC a
LimbData#(ii, a) = LIMB DIRECTION X(id, ii)
INC a
LimbData#(ii, a) = LIMB DIRECTION Y(id, ii)
INC a
LimbData#(ii, a) = LIMB DIRECTION Z(id, ii)
INC a
LimbData#(ii, a) = LIMB POSITION X(id, ii)
INC a
LimbData#(ii, a) = LIMB POSITION Y(id, ii)
INC a
LimbData#(ii, a) = LIMB POSITION Z(id, ii)
INC a
NEXT ii
`Write Data of limbs and names to file
IF FILE EXIST("ObjectData.txt")
DELETE FILE "ObjectData.txt"
OPEN TO WRITE 1, "ObjectData.txt"
FOR iii = 1 TO LimbCount - 1
WRITE STRING 1, LimbName$(iii)
a = 1
WRITE FLOAT 1, LimbData#(iii, a) = LIMB OFFSET X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB OFFSET Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB OFFSET Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB SCALE X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB SCALE Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB SCALE Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB ANGLE X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB ANGLE Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB ANGLE Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB DIRECTION X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB DIRECTION Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB DIRECTION Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB POSITION X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB POSITION Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB POSITION Z(id, iii)
INC a
WRITE STRING 1, " "
NEXT iii
CLOSE FILE 1
ELSE
OPEN TO WRITE 1, "ObjectData.txt"
FOR iii = 1 TO LimbCount - 1
WRITE STRING 1, LimbName$(iii)
a = 1
WRITE FLOAT 1, LimbData#(iii, a) = LIMB OFFSET X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB OFFSET Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB OFFSET Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB SCALE X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB SCALE Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB SCALE Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB ANGLE X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB ANGLE Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB ANGLE Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB DIRECTION X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB DIRECTION Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB DIRECTION Z(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB POSITION X(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB POSITION Y(id, iii)
INC a
WRITE FLOAT 1, LimbData#(iii, a) = LIMB POSITION Z(id, iii)
INC a
WRITE STRING 1, " "
NEXT iii
CLOSE FILE 1
ENDIF
UNDIM ObjectData#()
UNDIM LimbData#()
UNDIM LimbName$()
ENDIF
ENDFUNCTION
I loaded in a random car from DarkMATTER and it successfully wrote the limb names, followed by some data and then creates new line and starts with the next name. It's dynamic so there can be any number of limbs from 1 to 900 etc
This is the output from the police car in DarkMATTER:
x3ds_BODY
€? €? €? €? €? €? €? €? €? €? €? €? €? €? €?
x3ds_WHEEL_br
€? €? €? €? €? €? €? €? €? €? €? €? €? €? €?
x3ds_WHEEL_fr
€? €? €? €? €? €? €? €? €? €? €? €? €? €? €?
x3ds_WHEEL_bl
€? €? €? €? €? €? €? €? €? €? €? €? €? €? €?
x3ds_WHEEL_fl
€? €? €? €? €? €? €? €? €? €? €? €? €? €? €?