Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Just to remind that I had stated I planned for three or four of these large updates. The first handled basic character-as-avatar packet parsing. This, as the numbering indicates, is the second update and deals primarily with things that are not your character as an avatar.
Major technical changes are first are foremost.
I worked on object data primarily discovered in
0x17
ObjectCreateMessage_Duplicate
packets. Following information from this extracted debug text, the following class re-branding was performed:0x18
:ObjectCreateMessage
(old) -->ObjectCreateDetailedMessage
0x17
:ObjectCreateMessage_Duplicate
-->ObjectCreateMessage
(new)In addition, all previous classes that were created and utilized by
0x18
have been changed to be prefixed with aDetailed
descriptor, e.g.,WeaponData
(old) is nowDetailedWeaponData
, to make way for a newWeaponData
to be used in0x17
packets. Due to perfect alignment between character data for both0x17
and0x18
character classes, a lot more information for creating avatars now understood, so please pay attention to those changes. Please note where there is the rare re-use of classes between0x17
and0x18
, e.g.,CharacterAppearanceData
andInventoryData
, etc., and do note that decoding and encoding follow a strictOCM
/OCDM
split.As it is still decently early in development, this is probably the best time to make this change. It can be seamlessly introduced in the normal repository but our Live Test Server (that's you, @SouNourS) may require a bit more work.
The primary purpose of
ObjectCreateMessage
(new) is to provide a lightweight version ofObjectCreateMessage
(old) that can be used to create game elements without having to reference an extensive list of data points that the client doesn't care about in the given context. One client doesn't care about another player's list of "first time events," ever, or whether or not they have a medkit hidden in their knapsack. In addition,ObjectCreateMessage
(new) serves as the origin-point for all other in-game elements that are not the avatar, including all deployables and all vehicles. Experimentation has proven that0x18
and0x17
object-structures can be swapped and still handled appropriately but, since the mechanism is unknown, their decoded classes have been segregated at the packet level here. Four major things exist in this update, some which can already be utilized as-is, and others which need to be ironed-out by future packet work that extends beyondOC*M
.The next major introduction, the third
ObjectCreateMessage
update, will involve every vehicle in the game, and continued refinement to existing classes. I expect to preface the larger update with a smaller update granting access to an ATV and an early AMS for Live Test Server to incorporate.