Difference between revisions of "Game Opcodes:Set Cutscene Book Details"

From FFXIV Classic Wiki
Jump to: navigation, search
(Visual Layout)
m (Added a note about sNPC length crashing client, and blocked it into the visual layout)
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
Sets the information needed for the "The Unending Journey" cutscene book actor. This includes completed quests as well as Path Companion info. This should be sent when the player zones into the inn.
 
Sets the information needed for the "The Unending Journey" cutscene book actor. This includes completed quests as well as Path Companion info. This should be sent when the player zones into the inn.
 +
 +
TO-DO: Requires further documenting of the Path Companion (eg. their name), as well as whichever byte(s) handles the "Others" category
  
 
:; Opcode - 0x1A3
 
:; Opcode - 0x1A3
Line 15: Line 17:
 
! style="text-align: center; font-size: 14px;" | Description
 
! style="text-align: center; font-size: 14px;" | Description
 
|-
 
|-
| 0x00 || byte || 1 Bytes || unknown ||  
+
| 0x00 || byte || 1 Byte || beastIntro|| Cutscenes for the beast tribe area introductions, under 'Other' category.  1st bit Zahar'ak, 2nd bit Natalan, 3rd bit U'Ghamaro Mines.
 +
|-
 +
| 0x01 || uint16 || 2 Bytes || msqInstance || Covers the Nightmare cutscenes (2nd bit opens all three versions of it), as well as the Castrum Novum intro cutscene (8th bit).  The other 14 bits do nothing?
 +
|-
 +
| 0x03 || byte || 1 Byte || unk3 || Unknown. Set to 0x0.
 
|-
 
|-
| 0x01 || uint16 || 2 Bytes || unknown || Set to 0x2.
+
| 0x04 || uint16 || 2 Bytes || sNpcActorIdOffset || The offset from the base [[Actor Class ID]] (1070000) used to define what the player's Path Companion looks like.
 
|-
 
|-
| 0x03 || byte || 1 Bytes || unknown || Set to 0x0.
+
| 0x06 || byte || 1 Byte || sNpcSkin || The skin color of the Path Companion.
 
|-
 
|-
| 0x04 || uint32 || 1 Bytes || sNpcActorIdOffset || The offset from the base [[Actor Class ID]] used to define what the player's Path Companion looks like.
+
| 0x07 || byte || 1 Byte || sNpcPersonality || The personality of the Path Companion
 
|-
 
|-
| 0x08 || byte || 1 Bytes || sNpcSkin || The skin color of the Path Companion.
+
| 0x08 || byte || 1 Byte || completedInstance || Covers cutscenes for Instanced Raids, as well as Hamlets under 'Other'.  Bit layout under the Notes section.
 
|-
 
|-
| 0x09 || byte || 1 Bytes || sNpcPersonality || The personality of the Path Companion.
+
| 0x09 || bitstream || 250 Bytes || completedQuest || A bit stream of all the completed quests the player had done, which let's the player view their respective cutscenes.
 
|-
 
|-
| 0x109 || bitstream || 21 Bytes || completedQuest || A bit stream of all the completed quests the player had done, which let's the player view their respective cutscenes.
+
| 0x109 || string || 31 Bytes? || sNpcName || Name of the Path Companion.  Client crashes if 32 bytes in length.
 
|}
 
|}
 +
 +
== Notes ==
 +
 +
:* The client reads completedQuest's first bit as quest ID's 110001 completion state, with every bit from there-on adding 1 to that value. 
 +
:::Due to skips in numbers between categories of quests, this leads to a lot of empty entries in the journal if one were to 0xFF the entire bitstream.
 +
 +
:* completedInstance bit layout -
 +
::: 1 = Thousand Maws of Toto-Rak (Instanced Raids)
 +
::: 2 = Dzemael Darkhold (Instanced Raids)
 +
::: 3 = Aurum Vale (Instanced Raids)
 +
::: 4 = Cutter's Cry (Instanced Raids)
 +
::: 5 = The Battle for Aleport (Opening & Ending)
 +
::: 6 = The Battle for Hyrstmill (Opening & Ending)
 +
::: 7 = The Battle for the Golden Bazaar (Opening & Ending)
 +
::: 8 = n/a
 +
 +
  
 
== Visual Layout ==
 
== Visual Layout ==
Line 39: Line 62:
 
|-
 
|-
 
! 0x00
 
! 0x00
| 00 || 02 || 00
+
| style="background:#CEE0F2" | '''beastIntro'''
| colspan="4" style="background:#CEE0F2" | '''sNpcActorIdOffset'''
+
| colspan="2" style="background:#8FA6E8" | '''msqInstance '''
| colspan="1" style="background:#CEE0F2" | '''sNpcSkin '''
+
| style="background:#f1cbff" | '''unk3'''
| colspan="1" style="background:#CEE0F2" | '''sNpcPersonality '''
+
| colspan="2" style="background:#f0f8ff" | '''sNpcActorIdOffset'''
| 00 || 00 || 00 || 00 || 00 || 00 || 00
+
| style="background:#C0E8A7" | '''sNpcSkin '''
 +
| style="background:#f1cbff" | '''sNpcPersonality '''
 +
| style="background:#ffb3ba" | '''completedInstance'''
 +
| colspan="7" style="background:#eedfcc" |  
 
|-
 
|-
 
! 0x10
 
! 0x10
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
+
| colspan="16" rowspan="3" style="background:#eedfcc" | '''completedQuests'''
 
|-
 
|-
! 0x20
+
! ~
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
 
|-
 
|-
! 0x30
+
! 0xF0
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
|-
 
! 0x40
 
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
|-
 
! 0x50
 
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
|-
 
! 0x60
 
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
|-
 
! 0x70
 
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
|-
 
! 0x80
 
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
|-
 
! 0x90
 
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  || 00
 
 
|-
 
|-
 
! 0x100
 
! 0x100
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00  
+
| colspan="3" style="background:#eedfcc" |
| colspan="7" style="background:#CEE0F2" |
+
| 00 || 00 || 00 || 00 || 00 || 00
 +
| colspan="7" style="background:#BED0F2" |
 
|-
 
|-
 
! 0x110
 
! 0x110
| colspan="16" rowspan="4" style="background:#CEE0F2" | '''completedQuests'''
+
| colspan="16" style="background:#BED0F2" | '''sNpcName'''
 
|-
 
|-
 
! 0x120
 
! 0x120
 +
| colspan="7" style="background:#BED0F2" |
 +
| 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00 || 00
 
|}
 
|}
 +
 +
[[Category:Unfinished]]

Latest revision as of 20:24, 26 August 2021

Sets the information needed for the "The Unending Journey" cutscene book actor. This includes completed quests as well as Path Companion info. This should be sent when the player zones into the inn.

TO-DO: Requires further documenting of the Path Companion (eg. their name), as well as whichever byte(s) handles the "Others" category
Opcode - 0x1A3
Source - Server
Data Size - 0x130 bytes
Requirements - None

Data

Offset Data Type Length Variable Description
0x00 byte 1 Byte beastIntro Cutscenes for the beast tribe area introductions, under 'Other' category. 1st bit Zahar'ak, 2nd bit Natalan, 3rd bit U'Ghamaro Mines.
0x01 uint16 2 Bytes msqInstance Covers the Nightmare cutscenes (2nd bit opens all three versions of it), as well as the Castrum Novum intro cutscene (8th bit). The other 14 bits do nothing?
0x03 byte 1 Byte unk3 Unknown. Set to 0x0.
0x04 uint16 2 Bytes sNpcActorIdOffset The offset from the base Actor Class ID (1070000) used to define what the player's Path Companion looks like.
0x06 byte 1 Byte sNpcSkin The skin color of the Path Companion.
0x07 byte 1 Byte sNpcPersonality The personality of the Path Companion
0x08 byte 1 Byte completedInstance Covers cutscenes for Instanced Raids, as well as Hamlets under 'Other'. Bit layout under the Notes section.
0x09 bitstream 250 Bytes completedQuest A bit stream of all the completed quests the player had done, which let's the player view their respective cutscenes.
0x109 string 31 Bytes? sNpcName Name of the Path Companion. Client crashes if 32 bytes in length.

Notes

  • The client reads completedQuest's first bit as quest ID's 110001 completion state, with every bit from there-on adding 1 to that value.
Due to skips in numbers between categories of quests, this leads to a lot of empty entries in the journal if one were to 0xFF the entire bitstream.
  • completedInstance bit layout -
1 = Thousand Maws of Toto-Rak (Instanced Raids)
2 = Dzemael Darkhold (Instanced Raids)
3 = Aurum Vale (Instanced Raids)
4 = Cutter's Cry (Instanced Raids)
5 = The Battle for Aleport (Opening & Ending)
6 = The Battle for Hyrstmill (Opening & Ending)
7 = The Battle for the Golden Bazaar (Opening & Ending)
8 = n/a


Visual Layout

Packet Data Layout
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA 0xB 0xC 0xD 0xE 0xF
0x00 beastIntro msqInstance unk3 sNpcActorIdOffset sNpcSkin sNpcPersonality completedInstance
0x10 completedQuests
~
0xF0
0x100 00 00 00 00 00 00
0x110 sNpcName
0x120 00 00 00 00 00 00 00 00 00