Private Type npcData unknownB1 As Byte unknownW1 As Integer unknownW2 As Integer unknownDW1 As Long unknownDW2 As Long unknownDW3 As Long unknownDW4 As Long unknownF1 As Single unknownF2 As Single unknownF3 As Single unknownF4 As Single posX As Single posY As Single posZ As Single scaleX As Single scaleY As Single scaleZ As Single unknownDW5 As Long npcFileLen As Byte npcFile As String End Type Private offsets() As Long Dim tempLong As Long Open App.Path & "/" & fileName For Binary Access Read Lock Write As fh Get fh, , blockCount ReDim offsets(blockCount) For i = 0 To blockCount - 1 Get fh, , tempLong Get fh, , offsets(tempLong) Next i 'Skip to NPC Block Seek fh, offsets(2) + 1 Get fh, , npcCount ReDim npcData(npcCount) For i = 0 To npcCount - 1 Get fh, , npcData(i).unknownB1 Get fh, , npcData(i).unknownW1 Get fh, , npcData(i).unknownW2 Get fh, , npcData(i).unknownDW1 Get fh, , npcData(i).unknownDW2 Get fh, , npcData(i).unknownDW3 Get fh, , npcData(i).unknownDW4 Get fh, , npcData(i).unknownF1 Get fh, , npcData(i).unknownF2 Get fh, , npcData(i).unknownF3 Get fh, , npcData(i).unknownF4 Get fh, , npcData(i).posX Get fh, , npcData(i).posY Get fh, , npcData(i).posZ Get fh, , npcData(i).scaleX Get fh, , npcData(i).scaleY Get fh, , npcData(i).scaleZ Get fh, , npcData(i).unknownDW5 Get fh, , npcData(i).npcFileLen npcData(i).npcFile = Space$(npcData(i).npcFileLen) Get fh, , npcData(i).npcFile Next i Close fh