Yeah, if i leave the original mesh names in the call to customization_item_wear, it doesn't crash; it does nothing. In fact, the Lua call halts, which means there's an error, but i don't get the text of it.
Okay, round two.
Cyrus item str2 files are in customize_item.vpp_pc
head: custmesh_-629684167.str2_pc & custmesh_-629684167f.str2_pc
body: custmesh_871704894.str2_pc & custmesh_871704894f.str2_pc
These contain ccmesh, cpeg, gcmesh, and gpeg files.
Mary's character str2 file is in characters.vpp_pc
both: gang_female_mary_high.str2_pc
This contains cpeg, gpeg, and matlib files. No mesh files; that's worrying.
I delete the files inside -629684167. I replace them with the @streams.xml and the 3 mary_head_high files. I edit @streams.xml to remove references to the body files.
Then i repeat the process for the body in 871704894 , keeping the body files and removing references to the head files.
I repack both files and put them in the root, along with everything else remaining as in my last post.
Ah, but i need to update an asm file. Gibbed's tool doesn't support adding or removing files from the list, only updating their packed size. But i can export the ASM as XML.
This is what it contains for the body file:
Code:
<ContainerEntry>
<Name>custmesh_871704894f</Name>
<Type>10</Type>
<Flags>Unknown7</Flags>
<DataOffset>6144</DataOffset>
<Parent />
<Extra />
<CompressedSize>707782</CompressedSize>
<Sizes>
<PrimitiveSize>
<CPUSize>4456</CPUSize>
<GPUSize>244420</GPUSize>
</PrimitiveSize>
<PrimitiveSize>
<CPUSize>395</CPUSize>
<GPUSize>786432</GPUSize>
</PrimitiveSize>
</Sizes>
<Primitives>
<PrimitiveEntry>
<Name>cyrus_hires.ccmesh_pc</Name>
<Type>9</Type>
<Allocator>0</Allocator>
<Flags>IsSplit</Flags>
<SplitIndex>0</SplitIndex>
<CPUSize>4456</CPUSize>
<GPUSize>244420</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
<PrimitiveEntry>
<Name>cyrus_hires.cpeg_pc</Name>
<Type>10</Type>
<Allocator>0</Allocator>
<Flags>IsSplit</Flags>
<SplitIndex>0</SplitIndex>
<CPUSize>395</CPUSize>
<GPUSize>786432</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
</Primitives>
</ContainerEntry>
This is what's in character_containers.asm_pc for mary:
Code:
<ContainerEntry>
<Name>gang_female_mary_high</Name>
<Type>8</Type>
<Flags>Unknown7</Flags>
<DataOffset>6144</DataOffset>
<Parent />
<Extra />
<CompressedSize>1288954</CompressedSize>
<Sizes>
<PrimitiveSize>
<CPUSize>294</CPUSize>
<GPUSize>1059504</GPUSize>
</PrimitiveSize>
<PrimitiveSize>
<CPUSize>1568</CPUSize>
<GPUSize>0</GPUSize>
</PrimitiveSize>
<PrimitiveSize>
<CPUSize>394</CPUSize>
<GPUSize>1092288</GPUSize>
</PrimitiveSize>
<PrimitiveSize>
<CPUSize>2912</CPUSize>
<GPUSize>0</GPUSize>
</PrimitiveSize>
</Sizes>
<Primitives>
<PrimitiveEntry>
<Name>mary_head_high.cpeg_pc</Name>
<Type>16</Type>
<Allocator>0</Allocator>
<Flags>IsSplit</Flags>
<SplitIndex>0</SplitIndex>
<CPUSize>294</CPUSize>
<GPUSize>1059504</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
<PrimitiveEntry>
<Name>mary_head_high.matlib_pc</Name>
<Type>22</Type>
<Allocator>0</Allocator>
<Flags />
<SplitIndex>0</SplitIndex>
<CPUSize>1568</CPUSize>
<GPUSize>0</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
<PrimitiveEntry>
<Name>mary_body_high.cpeg_pc</Name>
<Type>16</Type>
<Allocator>0</Allocator>
<Flags>IsSplit</Flags>
<SplitIndex>0</SplitIndex>
<CPUSize>394</CPUSize>
<GPUSize>1092288</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
<PrimitiveEntry>
<Name>mary_body_high.matlib_pc</Name>
<Type>22</Type>
<Allocator>0</Allocator>
<Flags />
<SplitIndex>0</SplitIndex>
<CPUSize>2912</CPUSize>
<GPUSize>0</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
</Primitives>
</ContainerEntry>
So i'm going to split that into two. I'm not sure how much of this to overwrite the other entry with, but i'll give it a try.
Into the sections for custmesh_871704894 and custmesh_871704894f (the body) i put
Code:
<Type>8</Type>
<Flags>Unknown7</Flags>
<DataOffset>6144</DataOffset>
<Parent />
<Extra />
<CompressedSize>1288954</CompressedSize>
<Sizes>
<PrimitiveSize>
<CPUSize>394</CPUSize>
<GPUSize>1092288</GPUSize>
</PrimitiveSize>
<PrimitiveSize>
<CPUSize>2912</CPUSize>
<GPUSize>0</GPUSize>
</PrimitiveSize>
</Sizes>
<Primitives>
<PrimitiveEntry>
<Name>mary_body_high.cpeg_pc</Name>
<Type>16</Type>
<Allocator>0</Allocator>
<Flags>IsSplit</Flags>
<SplitIndex>0</SplitIndex>
<CPUSize>394</CPUSize>
<GPUSize>1092288</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
<PrimitiveEntry>
<Name>mary_body_high.matlib_pc</Name>
<Type>22</Type>
<Allocator>0</Allocator>
<Flags />
<SplitIndex>0</SplitIndex>
<CPUSize>2912</CPUSize>
<GPUSize>0</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
</Primitives>
Then into the head files' sections, i'll put
Code:
<Type>8</Type>
<Flags>Unknown7</Flags>
<DataOffset>6144</DataOffset>
<Parent />
<Extra />
<CompressedSize>1288954</CompressedSize>
<Sizes>
<PrimitiveSize>
<CPUSize>294</CPUSize>
<GPUSize>1059504</GPUSize>
</PrimitiveSize>
<PrimitiveSize>
<CPUSize>1568</CPUSize>
<GPUSize>0</GPUSize>
</PrimitiveSize>
</Sizes>
<Primitives>
<PrimitiveEntry>
<Name>mary_head_high.cpeg_pc</Name>
<Type>16</Type>
<Allocator>0</Allocator>
<Flags>IsSplit</Flags>
<SplitIndex>0</SplitIndex>
<CPUSize>294</CPUSize>
<GPUSize>1059504</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
<PrimitiveEntry>
<Name>mary_head_high.matlib_pc</Name>
<Type>22</Type>
<Allocator>0</Allocator>
<Flags />
<SplitIndex>0</SplitIndex>
<CPUSize>1568</CPUSize>
<GPUSize>0</GPUSize>
<Unknown7>0</Unknown7>
</PrimitiveEntry>
</Primitives>
Then i convert it back to ASM and run Gibbed's updateasm tool to update the sizes and whatnot automatically, for the str2 files that i created. I can see that it recognizes my changes:
Code:
E:\Games\Steam Games (common)\saints row the third>".\Downloads\mod tools\gibbedvolition-rev96\Gibbed.SaintsRow3.UpdateASM.exe" customize_item.asm_pc .
=> 'custmesh_871704894f'
==> 'mary_body_high.cpeg_pc'
==> 'mary_body_high.matlib_pc'
=> 'custmesh_-629684167'
==> 'mary_head_high.cpeg_pc'
==> 'mary_head_high.matlib_pc'
=> 'custmesh_871704894'
==> 'mary_body_high.cpeg_pc'
==> 'mary_body_high.matlib_pc'
=> 'custmesh_-629684167f'
==> 'mary_head_high.cpeg_pc'
==> 'mary_head_high.matlib_pc'
This still crashes. Are there other steps i need to take? Are mary's matlib files no substitute for cyrus's cmesh files?