From 0a326ae982a19aea49e6671a0c61e5a895766ea4 Mon Sep 17 00:00:00 2001 From: RadWolfie Date: Wed, 13 Dec 2017 17:20:24 -0600 Subject: [PATCH] Minor Changes * Restrict map_name to 32 characters limitation. 128 characters string is illogical. * Add missing 2 functions for D language in IObject API. --- C/struct.h | 3 ++- CSharp/struct.cs | 4 +++- D/object.d | 21 +++++++++++++++++++++ D/structs.d | 5 +++-- VisualBasic/struct.vb | 4 +++- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/C/struct.h b/C/struct.h index 3d72438..e67c131 100644 --- a/C/struct.h +++ b/C/struct.h @@ -424,7 +424,8 @@ typedef struct s_server_header { unsigned short state; //0x004 unsigned short Unknown2; //0x006 wchar_t server_name[66]; //0x008 - char map_name[128]; //0x08C + char map_name[32]; //0x08C + unsigned char Unknown12[96]; //0x0AC wchar_t gametype_name[24]; //0x10C //IMPORTANT: DO NOT USE! Below this does not match with other Halo PC platforms, it is base on Halo CE version. unsigned char Unknown11[40]; //0x13C // partial of Gametype need to break them down. diff --git a/CSharp/struct.cs b/CSharp/struct.cs index 109e405..a4c9da0 100644 --- a/CSharp/struct.cs +++ b/CSharp/struct.cs @@ -480,7 +480,7 @@ public struct s_gametype_globals_ptr { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct map_name_ansi { - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string name; } [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] @@ -491,6 +491,8 @@ public struct s_server_header { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 66)] public string server_name; //0x008 public map_name_ansi map_name; //0x08C + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 96)] + public byte[] Unknown12; //0x0AC [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)] public string gametype_name; //0x10C //IMPORTANT: DO NOT USE! Below this does not match with other Halo PC platforms, it is base on Halo CE version. diff --git a/D/object.d b/D/object.d index 840d5a1..0c26307 100644 --- a/D/object.d +++ b/D/object.d @@ -203,6 +203,27 @@ static if(__traits(compiles, EXT_IOBJECT)) { * Returns: Return true or false if unable to find tag group. */ bool function(const e_tag_group tag_group, objTagGroupList* tag_list) m_get_lookup_group_tag_list; + /* + * Apply damage to specific object. (WARNING: May not be safe to use on certain custom maps.) + * Params: + * receiver = An object receive the damage. + * causer = An object cause the damage. + * multiply = Mulitply the damage. + * flags = Type of damage flags + * Return true or false if unable to apply generic damage. + */ + bool (*m_apply_damage_generic)(s_ident receiver, s_ident causer, float multiply, objDamageFlags flags); + /* + * Apply damage to specific object. + * Params: + * receiver = An object receive the damage. + * causer = An object cause the damage. + * tag = Apply type of tag damage to receiver. + * multiply = Mulitply the damage. + * flags = Type of damage flags + * Returns: Return true or false if unable to apply custom damage. + */ + void (*m_apply_damage_custom)(s_ident receiver, s_ident causer, const hTagHeader* tag, float multiply, objDamageFlags flags); }; export extern(C) IObject* getIObject(uint hash); } diff --git a/D/structs.d b/D/structs.d index 84fa4c2..da3d35f 100644 --- a/D/structs.d +++ b/D/structs.d @@ -429,7 +429,8 @@ struct s_server_header { ushort state; //0x004 ushort Unknown2; //0x006 wchar[66] server_name; //0x008 - char[128] map_name; //0x08C + char[32] map_name; //0x08C + ubyte[96] Unknown12; //0x0AC wchar[24] gametype_name; //0x10C //IMPORTANT: DO NOT USE! Below this does not match with other Halo PC platforms, it is base on Halo CE version. ubyte[40] Unknown11; //0x13C // partial of Gametype need to break them down. @@ -770,7 +771,7 @@ align (1) struct s_map_header { uint offset; //0x10 uint metaSize; //0x14 ubyte[8] PADDING1; //0x18 //Nulls - char[32] mapName; //0x20 + char[32] name; //0x20 char[32] builddate; //0x40 uint type; //0x060 // 0 = Campaign, 1 = Multi-player, 2 = Menu uint unknown07; //0x064 diff --git a/VisualBasic/struct.vb b/VisualBasic/struct.vb index 9c5df0b..eedf27a 100644 --- a/VisualBasic/struct.vb +++ b/VisualBasic/struct.vb @@ -479,7 +479,7 @@ End Structure Public Structure map_name_ansi - + Public name As String End Structure @@ -490,6 +490,8 @@ Public Structure s_server_header Public server_name As String '0x008 Public map_name As map_name_ansi '0x08C + + Public Unknown12 As Byte '0x0AC Public gametype_name As String '0x10C 'IMPORTANT: DO NOT USE! Below this does Not match with other Halo PC platforms, it Is base on Halo CE version.