//loop through tags
for (int x = 0; x < map.index.objectCount; x++)
{
//declare var to hold our meta size, start it with end of meta
int mSize = map.header.metaStart + map.header.metaSize;
//loop through tags
for (int y = 0; y < map.index.objectCount; y++)
{
//if tag[y]'s meta offset is bigger than tag[x]'s meta
//offset && smaller than what weve currently got for
//the tags meta size
if (tagsList[y].MetaOffset > tagsList[x].MetaOffset
&& tagsList[y].MetaOffset < mSize)
{
//take tag[y]'s offset
mSize = tagsList[y].MetaOffset;
}
}
//and finally subtract tag[x]'s offset to get the actual size
tagsList[x].MetaSize = mSize - tagsList[x].MetaOffset;
}
ok, sry, another thing.
Where can I find the metaStart and the metaSize?
i think, I can take the offset of the first meta for the metaStart, but the size?
darvolt wrote:ok, sry, another thing.
Where can I find the metaStart and the metaSize?
i think, I can take the offset of the first meta for the metaStart, but the size?
darvolt do you have aim or msn, cause if you do add me as it would be a lot easier for me to answer all these questions, whilst keeping this thread 'clean' for 'factual' information >_>
//loop through tags
for (int x = 0; x < map.index.objectCount; x++)
{
//declare var to hold our meta size, start it with end of meta
int mSize = map.header.metaStart + map.header.metaSize;
//loop through tags
for (int y = 0; y < map.index.objectCount; y++)
{
//if tag[y]'s meta offset is bigger than tag[x]'s meta
//offset && smaller than what weve currently got for
//the tags meta size
if (tagsList[y].MetaOffset > tagsList[x].MetaOffset
&& tagsList[y].MetaOffset < mSize)
{
//take tag[y]'s offset
mSize = tagsList[y].MetaOffset;
}
}
//and finally subtract tag[x]'s offset to get the actual size
tagsList[x].MetaSize = mSize - tagsList[x].MetaOffset;
}
The last tag size will be wrong with this method, since the tag index, the class index, and the index header are all right after the meta data, (and before map.header.metaStart + map.header.metaSize)
Shalted wrote:The last tag size will be wrong with this method, since the tag index, the class index, and the index header are all right after the meta data, (and before map.header.metaStart + map.header.metaSize)
//loop through tags
for (int x = 0; x < map.index.objectCount; x++)
{
//declare var to hold our meta size, start it with end of meta
int mSize = map.index.objectIndexHeaderOffset1;
//loop through tags
for (int y = 0; y < map.index.objectCount; y++)
{
//if tag[y]'s meta offset is bigger than tag[x]'s meta
//offset && smaller than what weve currently got for
//the tags meta size
if (tagsList[y].MetaOffset > tagsList[x].MetaOffset
&& tagsList[y].MetaOffset < mSize)
{
//take tag[y]'s offset
mSize = tagsList[y].MetaOffset;
}
}
//and finally subtract tag[x]'s offset to get the meta size
tagsList[x].MetaSize = mSize - tagsList[x].MetaOffset;
}
//loop through tags
for (int x = 0; x < map.index.objectCount; x++)
{
//declare var to hold our meta size, start it with end of meta
int mSize = map.index.objectIndexHeaderOffset1;
//loop through tags
for (int y = 0; y < map.index.objectCount; y++)
{
//if tag[y]'s meta offset is bigger than tag[x]'s meta
//offset && smaller than what weve currently got for
//the tags meta size
if (tagsList[y].MetaOffset > tagsList[x].MetaOffset
&& tagsList[y].MetaOffset < mSize)
{
//take tag[y]'s offset
mSize = tagsList[y].MetaOffset;
}
}
//and finally subtract tag[x]'s offset to get the meta size
tagsList[x].MetaSize = mSize - tagsList[x].MetaOffset;
}
Very nice prey ,
Too bad some of the sizes will still be wrong, because some of the Data Block(reflexive) Pools are between two meta offsets, making the tags seem larger than they really are.
Apparently nobody understood the first dozen times.
This thread is about map structure and modding. This is not the thread to post random discoveries, and certainly not the place to ever even consider discussing leaked content.
Got it now? This is your final warning (Although you should not need more than one), any further discussion will result in a one week ban, no questions asked. It is not up for discussion, at all. Do not post arguing against this, it will get you punished as well.
If you have nothing to comment about the map structures, tools, etc., you'd be very, very wise to not post.
//loop through tags
for (int x = 0; x < map.index.objectCount; x++)
{
//declare var to hold our meta size, start it with end of meta
int mSize = map.index.objectIndexHeaderOffset1;
//loop through tags
for (int y = 0; y < map.index.objectCount; y++)
{
//if tag[y]'s meta offset is bigger than tag[x]'s meta
//offset && smaller than what weve currently got for
//the tags meta size
if (tagsList[y].MetaOffset > tagsList[x].MetaOffset
&& tagsList[y].MetaOffset < mSize)
{
//take tag[y]'s offset
mSize = tagsList[y].MetaOffset;
}
}
//and finally subtract tag[x]'s offset to get the meta size
tagsList[x].MetaSize = mSize - tagsList[x].MetaOffset;
}
Very nice prey ,
Too bad some of the sizes will still be wrong, because some of the Data Block(reflexive) Pools are between two meta offsets, making the tags seem larger than they really are.
Care to give us some insight on how to do it correctly?
There is no "real"(well, easy) correct way, unless you want to scan for a whole bunch of reflexives(which is not a reliable method because reflexive scanning is inaccurate), anyway, what you guys have is good enough (same method I've been using anyway ), because it at least gets you the tag header.
Shadow LAG wrote:I think we can stop censoring leaked content now....
No. That is not a suggestion, the spark of debate, a question in any form, or anything else besides a command. You will not discuss details in the map files that have yet to be officially revealed by Bungie, period. You cannot find all of the information contained in the map files in the Custom Game lobby. I could care less what is being posted on the Bungie forums; this is Halomods and we have integrity - if you do not, leave.
Feel free to check out the main page of Halomods for two stories at the top about this mess.
I seriously have no idea why everyone is having so much trouble translating memory pointers into file offsets? I mean all the memory pointers translate perfectly when I do it, I am almost certain that the magic I calculate is the same as everyone else's(why wouldn't it be). Maybe everyone is getting confused, because of the way they're stored, they're now stored in a sort of "pool" with all the other reflexives of that type. so they can be almost anywhere in the map (well, in the Virtual Segment of the map).
Anyway, if any one wants the a few map structures, here they are (not included is the bitm struct and a few more):
I think it's either SHA-256, or an MD5-SUM, I also think there's a secondary hash a little bit earlier in the file, but I think it's a waste of time to look into at the moment, because I wouldn't want to try to use these maps on live :S.