Se7enSins Forums: Usermap Structure - Thanks Shade45

Jump to content

  • (4 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • This topic is locked

Usermap Structure - Thanks Shade45 Rate Topic: -----

#1 User is offline   mxrider Icon

  • Junior Member
  • Group: All Members
  • Posts: 163
  • Joined: 17-June 06

Posted 06 June 2008 - 07:32 PM

So, after talking to some other members of Se7enSins, I realized that most people here have not seen Shade's complete mapping out of the usermap files. This is absolutely crucial for doing any worthwhile modding, and thus I thought I would post it here for everyone.

Also, I created a "bookmark" file for HexWorkshop a while ago that automatically structures most of the usermap for you (based on Shade's white paper), cutting the time it takes to mod by a lot.

Usermap Offsets Bookmark File for HexWorkshop

Instructions:

Download here: http://noscopecomics...ge-usermaps.hbk, and place in C:\Program Files\Break Point Software\Hex Workshop v5\Bookmarks\.

Then just open a usermap file (without extracting it using wxPirs) and on the bottom right click the open icon to browse for bookmarks.

A word of warning: these bookmarks are set up for a forge map that begins at offset 0xE000, but occasionally a forge map will start at offset 0xD000. If that is the case, then clearly the offsets will be off by 0x1000.


And now for the structure of the usermap file:

NOTE: I am NOT the author of this information -- ALL credit goes to Shade45 of HaloMods. He is a very nice guy and deserves our thanks.

public class BLF_Header : Chunk //48 Bytes
    {
    }

    public class CHDR_Header : Chunk //264 Bytes
    {
    }

    public class Header : Chunk //264 Bytes
    {
        [Size(4)]
        public char[] MapV;
        public int Size;
        public short Unknown_8;
        public short Unknown_10;
        [Size(12)]
        public byte[] Unknown_12;
        [String(StringType.Unicode, 16)]
        public string Varient_Name;
        [String(128)]
        public string Varient_Description;
        [String(16)]
        public string Varient_Author;
        public int Unknown_200;
        public int Unknown_204;
        public int Unknown_208;
        public int Unknown_212;
        public int Unknown_216;
        public int Entry_Size;
        public int CON_File_Name_1;
        public int CON_FIle_Name_2;
        public int Unknown_232;
        public int NULL;
        public int Map_ID;
        public int Unknown_244;
        public int NULL_2;
        public short NULL_3;
        [Size(10)]
        public byte[] Unknown_254;
    }

    public class Unknown_Block_1 : Chunk //56 Bytes
    {
        public short Unknown;
        public short Unknown_2;
        public byte Unknown_4;
        public byte Spawned_Object_Count;
        public short Unknown_6;
        public int Map_ID;
        public float World_Bounds_X_Min;
        public float World_Bounds_X_Max;
        public float World_Bounds_Y_Min;
        public float World_Bounds_Y_Max;
        public float World_Bounds_Z_Min;
        public float World_Bounds_Z_Max;
        public int Unknown_36;
        public float Maximum_Budget;
        public float Current_Budget;
        public int Unknown_48;
        public int Unknown_52;
    }

    public class Placement_Block : Chunk //84 Bytes * 640
    {

        public enum BlockType : short
        {
            Player_Spawn = 9, //9(hex)
            Reserved = 41, //29(hex)
            Added = 131, //83(hex)
            Original = 137, //89(hex) - ignored and loaded straight from the map
            Edited = 139, //8B(hex)
            NULL = 0,
        }

        public int Block_Type; //0
        #region Unused Data
        [Size(8)]
        public byte[] Unused_4; //4
        #endregion
        public int Tags_Index; //12 = (offset in index - index start offset) /12
        public float X; //16
        public float Y; //20
        public float Z; //24
        public float Yaw; //28
        public float Pitch; //32
        public float Roll; //36
        public float Unknown_Rot_1; //40
        public float Unknown_Rot_2; //44
        public float Unknown_Rot_3; //48
        #region Unused Data
        [Size(8)]
        public byte[] Unused_52; //52
        #endregion
        public byte Unknown_60; //60
        public byte Unknown_61; //61   
        [Options(new string[]
        {
            "Unknown",
            "Place At Start",
            "Asymmetrical",
            "Symmetrical",
            #region Unused Flags
            "Unused",
            "Unused",
            "Unused",
            "Unused",
            #endregion
        })]
        public Bitmask8 Flags; //62
        public byte Team; //63
        public byte Spare_Clips/Teleporter_Channel; //64
        public byte Respawn_Time; //65
        public short Unknown66; //66
        #region Unused Data
        [Size(16)]
        public byte[] Unused_68; //68
        #endregion
    }

    public class Unknown_Block_2 : Chunk //28 Bytes
    {
        public short Unknown;
        public short Unknown_2;
        public short Unknown_4;
        public short Unknown_6;
        public short Unknown_8;
        public short Unknown_10;
        public short Unknown_12;
        public short Unknown_14;
        public short Unknown_16;
        public short Unknown_18;
        public short Unknown_20;
        public short Unknown_22;
        public short Unknown_24;
        public short Unknown_26;
    }

    public class Tag_Index_Entry : Chunk //12 Bytes * 256
    {
        [Ident(IdentType.ID)]
        public TagReference Tag; //0
        public byte Run_Time_Minimun; //4
        public byte Run_Time_Maximun; //5
        public byte Number_On_Map; //6
        public byte Design_Time_Maximun; //7
        public float Total_Cost; //8
    }
   
    public class Unknown_Block_3 : Chunk //4 Bytes *
    {
        public short Unknown;
        public short Unknown_2;
    } 

2

#2 User is offline   Luxurious Meat Icon

  • Member
  • Group: All Members
  • Posts: 577
  • Joined: 06-April 06

Posted 06 June 2008 - 08:11 PM

And here's an enum I made for the MapID in the header:
       public enum MapID : int { 
           Zanzibar    = 30, 
           Construct   = 300, 
           Deadlock    = 310, 
           Gaurdian    = 320, 
           Isolation   = 330, 
           Riverworld  = 340, 
           Salvation   = 350, 
           Snowbound   = 360, 
           Chill       = 380, 
           Cyberdyne   = 390, 
           Shrine      = 400, 
           Bunkerworld = 410,  
           Warehouse   = 480, 
           Armory      = 580 
       }

1

#3 User is online   lx leo xl Icon

  • Premium Member
  • Group: Premium Members
  • Posts: 553
  • Joined: 25-March 06

Posted 06 June 2008 - 08:18 PM

I'm surprised no one has made an app yet...
0

#4 User is offline   Haxalot88 Icon

  • kekeke
  • Group: VIP
  • Posts: 5,680
  • Joined: 12-June 07

Posted 06 June 2008 - 08:31 PM

leorimolo said:

I'm surprised no one has made an app yet...


I've seen 3 people's apps made off this info. Well mainly they were kept private ;)
0

#5 User is offline   LXV Grizzly Icon

  • Junior Member
  • Group: All Members
  • Posts: 204
  • Joined: 27-May 08

Posted 06 June 2008 - 08:51 PM

um when i go to download the file, it says to find it or to open from a list, what should i do?
0

#6 User is online   unknown v2 Icon

  • 7S Addict
  • Group: All Members
  • Posts: 3,122
  • Joined: 22-February 08

Posted 06 June 2008 - 08:53 PM

Save to disk...
0

#7 User is offline   Spanky McTrolly Icon

  • Junior Member
  • Group: All Members
  • Posts: 239
  • Joined: 05-July 06

Posted 06 June 2008 - 08:57 PM

Could some one tell me if the code is c++ of c#. thanks:)
0

#8 User is offline   Luxurious Meat Icon

  • Member
  • Group: All Members
  • Posts: 577
  • Joined: 06-April 06

Posted 06 June 2008 - 09:03 PM

Spanky McTrolly said:

Could some one tell me if the code is c++ of c#. thanks:)

It is in C#. Also, this isn't just a class you can throw into your app and mod user maps. This code file maps out the values in the user maps.
0

#9 User is offline   CaLL mE nEoN Icon

  • 7S Addict
  • Group: All Members
  • Posts: 2,543
  • Joined: 29-October 06

Posted 06 June 2008 - 09:40 PM

No one has made an app yet?
0

#10 User is offline   Supermodder911 Icon

  • Junior Member
  • Group: All Members
  • Posts: 376
  • Joined: 18-March 07

Posted 06 June 2008 - 09:41 PM

A few people have...
0

#11 User is offline   Spanky McTrolly Icon

  • Junior Member
  • Group: All Members
  • Posts: 239
  • Joined: 05-July 06

Posted 06 June 2008 - 09:47 PM

Luxurious Meat said:

It is in C#. Also, this isn't just a class you can throw into your app and mod user maps. This code file maps out the values in the user maps.

Right ok. Thanks for the clairifacation.
0

#12 User is offline   mxrider Icon

  • Junior Member
  • Group: All Members
  • Posts: 163
  • Joined: 17-June 06

Posted 06 June 2008 - 09:48 PM

I'm working on one, but it's a ways off. This info is still good to have so you can change coordinates, rotations, etc.
0

#13 User is offline   Supermodder911 Icon

  • Junior Member
  • Group: All Members
  • Posts: 376
  • Joined: 18-March 07

Posted 06 June 2008 - 10:33 PM

Heres mine, Think what you will...


Posted Image

Credits:
Shade - White paper
Eazy B - Failing at testing out screen shots, and making me test myself(And fixing the problem)
0

#14 User is offline   mxrider Icon

  • Junior Member
  • Group: All Members
  • Posts: 163
  • Joined: 17-June 06

Posted 06 June 2008 - 10:39 PM

Supermodder911 said:

Heres mine, Think what you will...


Posted Image

Wow, that looks great. Nice work!

Any chance of you releasing? :wub:
0

#15 User is offline   nickcas Icon

  • Member
  • Group: All Members
  • Posts: 1,107
  • Joined: 28-October 06

Posted 06 June 2008 - 10:41 PM

Yeah I'm sure it would help the community :D
0

#16 User is offline   Supermodder911 Icon

  • Junior Member
  • Group: All Members
  • Posts: 376
  • Joined: 18-March 07

Posted 06 June 2008 - 10:48 PM

I'm sure it would, But I don't have any plans on releasing it.
0

#17 User is offline   nickcas Icon

  • Member
  • Group: All Members
  • Posts: 1,107
  • Joined: 28-October 06

Posted 06 June 2008 - 10:53 PM

Of course not.
0

#18 User is online   unknown v2 Icon

  • 7S Addict
  • Group: All Members
  • Posts: 3,122
  • Joined: 22-February 08

Posted 06 June 2008 - 10:55 PM

I don't think it would. And Supermodder is just a little tease.
0

#19 User is online   Eazy B Icon

  • Team Horizon
  • Group: Team Horizon
  • Posts: 850
  • Joined: 27-March 07

Posted 06 June 2008 - 11:00 PM

the app is fun.
0

#20 User is online   Scar Icon

  • Retired Staff
  • Group: Retired Staff
  • Posts: 7,386
  • Joined: 19-March 06

Posted 06 June 2008 - 11:02 PM

I would give my left nut for that app...
0

  • (4 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • This topic is locked