So you're right.... I forgot this was taken out of the shared files when they were released and that's where I had it declared for my project. Well, here it is.
// CommandPackets seem to have a set maximum of 0x74 bytes
// Note: The compiler must be told to pack this structure since the
// short dataLength would otherwise have 2 padding bytes after
// it which would mess up the rest of the structure.
#pragma pack(push, 1)
struct OP2 CommandPacket
{
int type; // Type of command - see secret list :)
short dataLength; // Length of dataBuff
int timeStamp; // Game Tick (only seems to be used for network traffic)
int unknown; // **TODO** figure this out (only used for network traffic?)
char dataBuff[0x66]; // Dependent on message type
};
#pragma pack(pop)
Note the use of the #pragma. This is very important since the default behavior of the compiler is to align data types of a certain size on a boundary of that size. This would change the memory layout of the structure since there is a short followed by an int declaration. Remember, the memeory layout of this structure has to match what Outpost2.exe expects, not what your compiler thinks would make member access more efficient.