View Full Version : Fragment 0x22
daeken_bb
07-11-2004, 08:03 AM
Well, I've been working on my handler code for this fragment for a while now, and I'm completely lost. I parse it according to the docs, but 1) size3 and 4 are both 0 and size6 is 1, and 2) data6 has string lengths in the negative hundred millions. This fragment confuses me quite a bit, so I was wondering if i could get some pointers as to where to look in the OpenZone/$OTHER_CODE source.
Thanks, and happy hacking.
Lord Daeken M. BlackBlade
(Cody W. Brocious)
Windcatcher
07-11-2004, 09:55 AM
Take a look at EQWldData.pas in the OpenZone source. It loads the 0x22 fragment correctly.
WC
daeken_bb
07-11-2004, 10:26 AM
Well, I am looking through it and comparing it to my source... and I've found something. The docs say that 0x181 in the flags field means there are polygons in the region, yet you see if flags & 0x101 != 0 and say that the fragment configuration isn't known... any idea on how to handle these?
Windcatcher
07-12-2004, 11:55 AM
I think that code is a holdover from the old ZoneConverter days. This code comes mostly from an old C program called ZoneConverter, which someone else wrote (I have no idea who, but I found it somewhere on the EthernalQuest site -- I think). I thnk that's where it comes from (shrug).
WC
sandy
07-21-2004, 04:01 AM
for 0x15 fragments :
I have this working but it is not like explained in your documentation wind =( :
bool Data15::Decode(Buffer & buffer)
{
Clear();
if(!EQWldDataFragment::Decode(buffer))
return false;
EQWldDataFragmentWithReference::Decode(buffer);
flags = buffer.GetDWORD();
fragment1 = DecodeFragmentReference(buffer);
x = buffer.GetFLOAT();
y = buffer.GetFLOAT();
z = buffer.GetFLOAT();
rota_z = buffer.GetFLOAT();
rota_y = buffer.GetFLOAT();
rota_x = buffer.GetFLOAT();
buffer.GetFLOAT(); // always 0
scale_y = buffer.GetFLOAT();
scale_x = buffer.GetFLOAT();
fragment2 = DecodeFragmentReference(buffer);
if ( flags == 0x32E )
params2[0] = buffer.GetDWORD();
else
params2[0] = 0;
return buffer.AtEnd();
}
it seems that if the flag value is 0x32E params2 exists else it doesn't exist
other flag values i have seen are 0x22E and 0x2E
0x2E is for the unique 0x15 fragment in the main zone file
but 0x22E and 0x32E appears in objects.wld files for placeable objects, it depends of the zone
now i can load all the zones but i still have problems with new format textures, those zones appear really ugly lol
Windcatcher
07-22-2004, 08:51 AM
I did some digging and I think you're right about the 0x15 fragment. It looks like Params2 only exists if (flags & 0x100) != 0. I've updated the document accordingly. I hope to release something tonight. I have most of the older models rendering properly but none of the newer ones. I suspect it might have something to do with rotation order but that's a guess.
WC
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.