T3A guy Posted June 9, 2008 Report Posted June 9, 2008 "So, after talking to some other members of *****, 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.com/~storage/forge-usermaps.hbk, and place in C:Program FilesBreak Point SoftwareHex Workshop v5Bookmarks. 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." - mxrider of *****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; } - shade45 of halomods
skipper132 Posted June 9, 2008 Report Posted June 9, 2008 Ummm i guess thats usefull for the future when we dont haf to do swaping and can just place using computer insted of halo
Recommended Posts
Archived
This topic is now archived and is closed to further replies.