Jump to content

cbox


usermap structure


T3A guy

Recommended Posts

Posted

"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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...