2017-08-08 13:53:47 +02:00
/**
* IPC Packet Definitions ( Server IPC Packets )
* Structural definitions for the various server IPC packet types .
* IMPORTANT NOTE : Do not use these for parsing IPC packets sent by the
* client . See the Client namespace for those types !
*/
2021-11-27 00:53:57 +01:00
# pragma once
2017-08-08 13:53:47 +02:00
2018-03-06 22:22:19 +01:00
# include <Common.h>
# include <Network/CommonNetwork.h>
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
namespace Sapphire : : Network : : Packets : : WorldPackets : : Server
2017-08-08 13:53:47 +02:00
{
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server as response
* to a ping packet
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcSync : FFXIVIpcBasePacket < SyncReply >
2019-03-28 23:57:58 +01:00
{
/* 0000 */ uint64_t timeInMilliseconds ;
/* 0008 */ uint8_t unknown_8 [ 0x38 ] ;
} ;
/**
* Structural representation of the packet sent by the server as response
* to a ping packet
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcLogin : FFXIVIpcBasePacket < LoginReply >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t clientTimeValue ;
uint32_t loginTicketId ;
uint32_t playerActorId ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* carrying chat messages
*/
struct FFXIVIpcChat : FFXIVIpcBasePacket < Chat >
{
2021-11-27 00:53:57 +01:00
uint16_t type ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint32_t entityId ;
uint64_t characterId ;
uint32_t __unknown3 ;
char speakerName [ 32 ] ;
2020-11-11 02:07:59 +09:00
char message [ 1024 ] ;
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcEnableLogout : FFXIVIpcBasePacket < EnableLogout >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t content ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
2019-04-26 17:47:59 +10:00
/**
* Structural representation of the packet sent by the server
2021-11-27 00:53:57 +01:00
* with a list of players ( party list | friend list | search results )
2021-12-01 21:30:12 -03:00
* 3.0 Update : 64 bit TerritoryID - > 32 bit Timestamp , 32 bit TerritoryID
2019-04-26 17:47:59 +10:00
*/
2021-11-27 00:53:57 +01:00
struct PlayerEntry
2019-04-26 17:47:59 +10:00
{
2021-11-27 00:53:57 +01:00
uint64_t CharacterID ;
2021-12-01 21:30:12 -03:00
uint32_t Timestamp ;
uint32_t TerritoryID ;
uint8_t HierarchyStatus ;
uint8_t HierarchyType ;
uint8_t HierarchyGroup ;
uint8_t HierarchyUnk ;
2021-11-27 00:53:57 +01:00
uint16_t TerritoryType ;
uint8_t GrandCompanyID ;
uint8_t Region ;
uint8_t SelectRegion ;
uint8_t IsSearchComment ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint64_t OnlineStatus ;
uint8_t CurrentClassID ;
uint8_t SelectClassID ;
uint16_t CurrentLevel ;
uint16_t SelectLevel ;
uint8_t Identity ;
char CharacterName [ 32 ] ;
char FcTag [ 7 ] ;
} ;
struct FFXIVIpcGetCommonlistResult : FFXIVIpcBasePacket < GetCommonlistResult >
{
uint64_t CommunityID ;
uint16_t NextIndex ;
uint16_t Index ;
uint8_t ListType ;
uint8_t RequestKey ;
uint8_t RequestParam ;
uint8_t __padding1 ;
PlayerEntry entries [ 10 ] ;
2019-04-26 17:47:59 +10:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetCommonlistDetailResult : FFXIVIpcBasePacket < GetCommonlistDetailResult >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t DetailCharacterID ;
uint64_t CommunityID ;
uint64_t SelectClassID ;
uint64_t CrestID ;
uint8_t ListType ;
char SearchComment [ 193 ] ;
char FreeCompanyName [ 23 ] ;
uint8_t GrandCompanyRank [ 3 ] ;
struct ClassJobEntry
{
uint16_t id ;
uint16_t level ;
} ClassData [ Common : : CLASSJOB_TOTAL ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPcSearchResult : FFXIVIpcBasePacket < PcSearchResult >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
int16_t ResultCount ;
} ;
2021-12-03 22:21:18 +01:00
struct FFXIVIpcLinkshellResult : FFXIVIpcBasePacket < LinkshellResult >
{
uint64_t LinkshellID ;
uint64_t TargetCharacterID ;
uint32_t UpPacketNo ;
uint32_t Result ;
uint8_t UpdateStatus ;
uint8_t Identity ;
char LinkshellName [ 32 ] ;
char TargetName [ 32 ] ;
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcInviteResult : FFXIVIpcBasePacket < InviteResult >
{
uint32_t Result ;
uint8_t AuthType ;
uint8_t Identity ;
char TargetName [ 32 ] ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcInviteReplyResult : FFXIVIpcBasePacket < InviteReplyResult >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t Result ;
uint8_t AuthType ;
uint8_t Answer ;
uint8_t Identity ;
char InviteCharacterName [ 32 ] ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcInviteUpdate : FFXIVIpcBasePacket < InviteUpdate >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t InviteCharacterID ;
uint32_t InviteTime ;
uint8_t AuthType ;
uint8_t InviteCount ;
uint8_t Result ;
uint8_t Identity ;
char InviteName [ 32 ] ;
} ;
2017-08-08 13:53:47 +02:00
2021-12-01 21:30:12 -03:00
struct FFXIVIpcFriendlistRemoveResult : FFXIVIpcBasePacket < FriendlistRemoveResult >
{
uint64_t RemovedCharacterID ;
uint32_t Result ;
uint8_t Identity ;
char RemovedCharacterName [ 32 ] ;
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetFcStatusResult : FFXIVIpcBasePacket < GetFcStatusResult >
{
uint64_t FreeCompanyID ;
uint64_t AuthorityList ;
uint64_t ChannelID ;
uint64_t CrestID ;
uint64_t CharaFcState ;
uint64_t CharaFcParam ;
uint16_t Param ;
uint8_t FcStatus ;
uint8_t GrandCompanyID ;
uint8_t HierarchyType ;
uint8_t FcRank ;
uint8_t IsCrest ;
uint8_t IsDecal ;
uint8_t IsFcAction ;
uint8_t IsChestExt1 ;
uint8_t IsChestLock ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2019-07-27 01:45:18 -07:00
struct FFXIVIpcExamineSearchInfo : FFXIVIpcBasePacket < ExamineSearchInfo >
{
2019-07-27 10:47:10 -07:00
uint32_t unknown ;
uint16_t unknown1 ;
uint16_t unknown2 ;
char padding [ 16 ] ;
uint32_t unknown3 ;
uint16_t unknown4 ;
uint16_t unknown5 ;
uint16_t unknown6 ;
uint8_t worldId ;
char searchMessage [ 193 ] ;
char fcName [ 24 ] ;
uint8_t unknown7 ;
uint16_t padding1 ;
2019-07-27 17:59:23 -07:00
struct ClassJobEntry
{
uint16_t id ;
uint16_t level ;
} levelEntries [ Common : : CLASSJOB_TOTAL ] ;
2019-07-27 01:45:18 -07:00
} ;
2018-09-10 14:34:24 +01:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcSetProfileResult : FFXIVIpcBasePacket < SetProfileResult >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t OnlineStatus ;
uint64_t SelectClassID ;
uint32_t Result ;
uint8_t CurrentSelectClassID ;
uint8_t Region ;
char SearchComment [ 193 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetProfileResult : FFXIVIpcBasePacket < GetProfileResult >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t OnlineStatus ;
uint64_t SelectClassID ;
uint8_t CurrentSelectClassID ;
uint8_t Region ;
char SearchComment [ 193 ] ;
2019-03-28 23:57:58 +01:00
} ;
struct FFXIVIpcExamineSearchComment : FFXIVIpcBasePacket < ExamineSearchComment >
{
uint32_t charId ;
// packet only has 196 bytes after the charid
// likely utf8
char searchComment [ 195 ] ;
char padding ;
} ;
2021-11-27 00:53:57 +01:00
2019-04-02 09:00:36 +02:00
/**
* Structural representation of the packet sent by the server
* to display a server notice message
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcSendSystemMessage : FFXIVIpcBasePacket < SendSystemMessage >
2019-04-02 09:00:36 +02:00
{
2021-11-27 00:53:57 +01:00
/*!
* 0 = chat log
* 2 = nothing
* 4 = on screen message
* 5 = on screen message + chat log
*/
uint8_t MessageParam ;
char Message [ 769 ] ;
2019-04-02 09:00:36 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcSendLoginMessage : FFXIVIpcBasePacket < SendLoginMessage >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
/*!
* 0 = chat log
* 2 = nothing
* 4 = on screen message
* 5 = on screen message + chat log
*/
uint8_t MessageParam ;
char Message [ 769 ] ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcSetOnlineStatus : FFXIVIpcBasePacket < UpdateOnlineStatus >
2019-03-28 23:57:58 +01:00
{
uint64_t onlineStatusFlags ;
} ;
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
struct BlacklistCharacter
2018-08-29 21:40:59 +02:00
{
2021-11-27 00:53:57 +01:00
uint64_t CharacterID ;
char CharacterName [ 32 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcBlacklistAddResult : FFXIVIpcBasePacket < BlacklistAddResult >
2018-08-29 21:40:59 +02:00
{
2021-11-27 00:53:57 +01:00
BlacklistCharacter AddedCharacter ;
uint32_t Result ;
uint8_t Identity ;
} ;
struct FFXIVIpcBlacklistRemoveResult : FFXIVIpcBasePacket < BlacklistRemoveResult >
{
BlacklistCharacter RemovedCharacter ;
uint32_t Result ;
uint8_t Identity ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetBlacklistResult : FFXIVIpcBasePacket < GetBlacklistResult >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
BlacklistCharacter Blacklist [ 20 ] ;
uint8_t NextIndex ;
uint8_t Index ;
uint8_t RequestKey ;
} ;
struct FFXIVIpcGetLinkshellListResult : FFXIVIpcBasePacket < GetLinkshellListResult >
{
struct ZoneProtoDownLinkshell
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t LinkshellID ;
uint64_t ChannelID ;
uint32_t HierarchyID ;
char LinkshellName [ 32 ] ;
} LinkshellList [ 8 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcChatChannelResult : FFXIVIpcBasePacket < ChatChannelResult >
{
uint64_t ChannelID ;
uint64_t CommunityID ;
uint64_t TargetCharacterID ;
uint32_t UpPacketNo ;
uint32_t Result ;
} ;
struct ZoneProtoDownLetterBoxAppendItemBase
{
uint32_t CatalogID ;
uint32_t Stack ;
} ;
struct ZoneProtoDownLetterBoxAppendItem
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
ZoneProtoDownLetterBoxAppendItemBase ItemList [ 5 ] ;
ZoneProtoDownLetterBoxAppendItemBase Gil ;
} ;
struct FFXIVIpcGetLetterMessageResult :
FFXIVIpcBasePacket < GetLetterMessageResult >
{
struct ZoneProtoDownLetterMessage
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t SenderCharacterID ;
uint32_t Date ;
ZoneProtoDownLetterBoxAppendItem AppendItem ;
uint8_t IsRead ;
uint8_t Type ;
uint8_t IsMessageEnd ;
char SenderCharacterName [ 32 ] ;
char Message [ 61 ] ;
} LetterMessage [ 5 ] ;
uint8_t NextIndex ;
uint8_t Index ;
uint8_t RequestKey ;
} ;
struct FFXIVIpcGetLetterMessageDetailResult :
FFXIVIpcBasePacket < GetLetterMessageDetailResult >
{
uint64_t SenderCharacterID ;
uint32_t Date ;
char Message [ 601 ] ;
} ;
struct FFXIVIpcLetterResult :
FFXIVIpcBasePacket < LetterResult >
{
uint32_t UpPacketNo ;
uint64_t SenderCharacterID ;
uint32_t Date ;
ZoneProtoDownLetterBoxAppendItem AppendItem ;
uint32_t Result ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to show the mail delivery notification
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetLetterStatusResult : FFXIVIpcBasePacket < GetLetterStatusResult >
2019-11-01 09:22:43 -07:00
{
2021-11-27 00:53:57 +01:00
uint32_t NoreceiveCount ;
uint16_t ItemCount ;
uint8_t UnreadCount ;
uint8_t TotalCount ;
uint8_t GiftCount ;
uint8_t GmCount ;
uint8_t UnreadGmCount ;
uint8_t SupportCount ;
2019-11-01 09:22:43 -07:00
} ;
2019-08-09 19:01:09 -07:00
struct FFFXIVIpcMarketBoardItemListingCount : FFXIVIpcBasePacket < MarketBoardItemListingCount >
{
uint32_t itemCatalogId ;
uint32_t unknown1 ; // does some shit if nonzero
uint16_t requestId ;
uint16_t quantity ; // high/low u8s read separately?
uint32_t unknown3 ;
} ;
struct FFXIVIpcMarketBoardItemListing : FFXIVIpcBasePacket < MarketBoardItemListing >
{
2019-08-16 17:34:02 -07:00
struct ItemListing // 152 bytes each
2019-08-09 19:01:09 -07:00
{
2019-08-17 17:44:00 +08:00
uint64_t listingId ;
uint64_t retainerId ;
uint64_t retainerOwnerId ;
uint64_t artisanId ;
2019-08-09 19:01:09 -07:00
uint32_t pricePerUnit ;
2019-08-17 17:44:00 +08:00
uint32_t totalTax ;
2019-08-09 19:01:09 -07:00
uint32_t itemQuantity ;
2019-08-16 17:34:02 -07:00
uint32_t itemId ;
2019-08-17 17:44:00 +08:00
uint16_t lastReviewTime ;
uint16_t containerId ;
uint32_t slotId ;
2019-08-16 17:35:15 -07:00
uint16_t durability ;
2019-08-17 17:44:00 +08:00
uint16_t spiritBond ;
2019-08-16 17:34:02 -07:00
/**
* auto materiaId = ( i & 0xFF0 ) > > 4 ;
* auto index = i & 0xF ;
* auto leftover = i > > 8 ;
*/
2019-08-16 17:38:27 -07:00
uint16_t materiaValue [ 5 ] ;
2019-08-17 17:44:00 +08:00
uint16_t padding1 ;
uint32_t padding2 ;
char retainerName [ 32 ] ;
char playerName [ 32 ] ;
2019-08-09 19:01:09 -07:00
bool hq ;
2019-08-14 19:44:02 -07:00
uint8_t materiaCount ;
2019-08-17 17:44:00 +08:00
uint8_t onMannequin ;
2019-10-29 20:06:26 -07:00
Common : : Town marketCity ;
2019-08-17 17:44:00 +08:00
uint16_t dyeId ;
uint16_t padding3 ;
uint32_t padding4 ;
2019-08-09 19:01:09 -07:00
} listing [ 10 ] ; // Multiple packets are sent if there are more than 10 search results.
2019-08-17 17:44:00 +08:00
uint8_t listingIndexEnd ;
uint8_t listingIndexStart ;
uint16_t requestId ;
2019-08-16 14:19:39 -07:00
char padding7 [ 16 ] ;
uint8_t unknown13 ;
uint16_t padding8 ;
2019-08-09 19:01:09 -07:00
uint8_t unknown14 ;
2019-08-16 14:19:39 -07:00
uint64_t padding9 ;
uint32_t unknown15 ;
uint32_t padding10 ;
2019-08-09 19:01:09 -07:00
} ;
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownItemHistoryData
2019-08-09 19:01:09 -07:00
{
2021-11-27 00:53:57 +01:00
uint32_t CatalogID ;
uint32_t SellPrice ;
uint32_t BuyRealDate ;
uint32_t Stack ;
uint8_t SubQuality ;
uint8_t MateriaCount ;
char BuyCharacterName [ 32 ] ;
} ;
2019-08-09 19:01:09 -07:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetItemHistoryResult : FFXIVIpcBasePacket < GetItemHistoryResult >
{
uint32_t CatalogID ;
ZoneProtoDownItemHistoryData ItemHistoryList [ 20 ] ;
2019-08-09 19:01:09 -07:00
} ;
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownCatalogSearchData
2019-08-09 19:01:09 -07:00
{
2021-11-27 00:53:57 +01:00
uint32_t CatalogID ;
uint16_t StockCount ;
uint16_t RequestItemCount ;
} ;
2019-08-09 19:01:09 -07:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcCatalogSearchResult : FFXIVIpcBasePacket < CatalogSearchResult >
{
ZoneProtoDownCatalogSearchData CatalogList [ 20 ] ;
uint32_t NextIndex ;
uint32_t Result ;
uint32_t Index ;
uint8_t RequestKey ;
uint8_t Type ;
2019-08-09 19:01:09 -07:00
} ;
2019-03-28 23:57:58 +01:00
struct FFXIVIpcExamineFreeCompanyInfo : FFXIVIpcBasePacket < ExamineFreeCompanyInfo >
{
char unknown [ 0x20 ] ; // likely fc allegiance/icon/housing info etc
uint32_t charId ;
uint32_t fcTimeCreated ;
char unknown2 [ 0x10 ] ;
uint16_t unknown3 ;
char fcName [ 0x14 ] ; // 20 char limit
2018-08-29 21:40:59 +02:00
uint16_t padding ;
2019-03-28 23:57:58 +01:00
char fcTag [ 0x05 ] ; // 5 char tag limit
uint16_t padding2 ; // null terminator?
char fcLeader [ 0x20 ] ; // leader name (32 bytes)
char fcSlogan [ 192 ] ; // source: https://ffxiv.gamerescape.com/wiki/Free_Company (packet cap confirms this size also)
char padding3 ; // null terminator?
char fcEstateProfile [ 20 ] ; // todo: size needs confirmation
uint32_t padding4 ;
} ;
2019-07-28 17:27:57 -07:00
struct FFXIVIpcFreeCompanyUpdateShortMessage : FFXIVIpcBasePacket < FreeCompanyUpdateShortMessage >
{
uint32_t unknown ;
uint16_t unknown1 ;
uint16_t unknown2 ;
uint32_t unknown3 ;
uint32_t unknown5 ;
char shortMessage [ 104 ] ;
} ;
2019-03-28 23:57:58 +01:00
struct FFXIVGCAffiliation : FFXIVIpcBasePacket < GCAffiliation >
{
uint8_t gcId ;
uint8_t gcRank [ 3 ] ;
} ;
/**
* Structural representation of the packet sent by the server
* add a status effect
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcActionIntegrity : FFXIVIpcBasePacket < ActionIntegrity >
{
uint32_t ResultId ;
uint32_t Target ;
uint8_t ResultIndex ;
uint8_t ClassJob ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint32_t Hp ;
uint16_t Mp ;
uint16_t Tp ;
uint32_t HpMax ;
uint16_t MpMax ;
uint8_t StatusCount ;
uint8_t __padding3 ;
Common : : IntegrityStatus Status [ 4 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to update certain player details / status
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcActorControl : FFXIVIpcBasePacket < Order >
2019-03-28 23:57:58 +01:00
{
/* 0000 */ uint16_t category ;
/* 0002 */ uint16_t padding ;
/* 0004 */ uint32_t param1 ;
/* 0008 */ uint32_t param2 ;
/* 000C */ uint32_t param3 ;
/* 0010 */ uint32_t param4 ;
} ;
/**
* Structural representation of the packet sent by the server
* to update certain player details / status
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcActorControlSelf : FFXIVIpcBasePacket < OrderMySelf >
2019-03-28 23:57:58 +01:00
{
/* 0000 */ uint16_t category ;
/* 0002 */ uint16_t padding ;
/* 0004 */ uint32_t param1 ;
/* 0008 */ uint32_t param2 ;
/* 000C */ uint32_t param3 ;
/* 0010 */ uint32_t param4 ;
/* 0014 */ uint32_t param5 ;
/* 0018 */ uint32_t param6 ;
} ;
/**
* Structural representation of the packet sent by the server
* to update certain player details / status
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcActorControlTarget : FFXIVIpcBasePacket < OrderTarget >
2019-03-28 23:57:58 +01:00
{
/* 0000 */ uint16_t category ;
/* 0002 */ uint16_t padding ;
/* 0004 */ uint32_t param1 ;
/* 0008 */ uint32_t param2 ;
/* 000C */ uint32_t param3 ;
/* 0010 */ uint32_t param4 ;
/* 0018 */ uint64_t targetId ;
} ;
/**
* Structural representation of the packet sent by the server
* to update HP / MP / TP
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcResting : FFXIVIpcBasePacket < Resting >
{
/* 0000 */ uint32_t Hp ;
/* 0004 */ uint16_t Mp ;
/* 0006 */ uint16_t Tp ;
/* 0008 */ uint16_t Gp ;
} ;
struct FFXIVIpcRecastGroup : FFXIVIpcBasePacket < RecastGroup >
{
float Recast [ 80 ] ;
float RecastMax [ 80 ] ;
} ;
struct FFXIVIpcHudParam : FFXIVIpcBasePacket < HudParam >
{
uint8_t ClassJob ;
uint8_t Lv ;
uint8_t OrgLv ;
uint8_t LvSync ;
uint32_t Hp ;
uint32_t HpMax ;
uint16_t Mp ;
uint16_t MpMax ;
uint16_t Tp ;
uint8_t __padding1 ;
uint8_t __padding2 ;
Common : : StatusWork effect [ 30 ] ;
} ;
struct FFXIVIpcActionResult : FFXIVIpcBasePacket < ActionResult >
{
uint64_t MainTarget ;
uint16_t Action ;
uint8_t ActionArg ;
uint8_t ActionKind ;
uint32_t ActionKey ;
uint32_t RequestId ;
uint32_t ResultId ;
float LockTime ;
uint16_t DirTarget ;
uint8_t Flag ;
uint8_t TargetCount ;
uint32_t BallistaEntityId ;
Common : : CalcResult CalcResult [ 16 ] ;
uint64_t Target [ 16 ] ;
uint16_t TargetPos [ 3 ] ;
} ;
struct FFXIVIpcActionResult1 : FFXIVIpcBasePacket < ActionResult1 >
{
uint64_t MainTarget ;
uint16_t Action ;
uint8_t ActionArg ;
uint8_t ActionKind ;
uint32_t ActionKey ;
uint32_t RequestId ;
uint32_t ResultId ;
float LockTime ;
uint8_t Flag ;
uint8_t __padding1 ;
uint16_t DirTarget ;
uint64_t Target ;
uint32_t BallistaEntityId ;
Common : : CalcResult CalcResult [ 1 ] ;
} ;
struct MountStruct
{
uint8_t Id ;
uint8_t EquipmentHead ;
uint8_t EquipmentBody ;
uint8_t EquipmentLeg ;
uint8_t Stain ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
float Time ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
* to spawn an actor
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPlayerSpawn : FFXIVIpcBasePacket < Create >
{
uint32_t LayoutId ;
uint32_t NameId ;
uint32_t NpcId ;
uint32_t BindId ;
uint32_t ContentId ;
uint32_t OwnerId ;
uint32_t TriggerId ;
uint32_t ChannelingTarget ;
uint64_t MainTarget ;
uint16_t FATE ;
uint16_t WorldId ;
uint8_t GMRank ;
uint8_t Index ;
uint8_t Mode ;
uint8_t ModeArgs ;
uint8_t ActiveType ;
uint8_t Rank ;
uint8_t ObjKind ;
uint8_t ObjType ;
uint32_t ParentId ;
uint8_t Voice ;
uint8_t BuddyScale ;
uint8_t CrestEnable ;
uint8_t Channeling ;
uint32_t Padding__ ;
uint64_t Crest ;
uint64_t MainWeapon ;
uint64_t SubWeapon ;
uint64_t SystemWeapon ;
uint16_t Dir ;
uint16_t ModelCharaId ;
uint16_t Title ;
uint8_t Battalion ;
uint8_t Companion ;
uint8_t GrandCompany ;
uint8_t GrandCompanyRank ;
uint8_t Lv ;
uint8_t ClassJob ;
uint32_t Hp ;
uint16_t Mp ;
uint16_t Tp ;
uint32_t HpMax ;
uint16_t MpMax ;
uint16_t NormalAI ;
uint8_t OnlineStatus ;
uint8_t PermissionInvisibility ;
uint8_t FirstAttackType ;
uint8_t __padding1 ;
uint64_t FirstAttackId ;
uint8_t LinkReply ;
uint8_t LinkCountLimit ;
uint8_t LinkGroup ;
uint8_t LinkRange ;
uint8_t LinkFamily ;
uint8_t LinkParent ;
uint8_t PoseEmote ;
2021-12-01 01:03:36 +01:00
uint8_t __padding3 ;
uint16_t Flag ;
2021-11-27 00:53:57 +01:00
uint8_t __padding2 ;
2021-12-01 01:03:36 +01:00
uint8_t __padding4 ;
2021-11-27 00:53:57 +01:00
Common : : StatusWork Status [ 30 ] ;
MountStruct Mount ;
uint8_t Name [ 32 ] ;
uint8_t Customize [ 26 ] ;
2021-12-01 01:03:36 +01:00
uint8_t __padding5 ;
uint8_t __padding6 ;
2021-11-27 00:53:57 +01:00
uint32_t Equipment [ 10 ] ;
float Pos [ 3 ] ;
uint8_t FreeCompanyTag [ 6 ] ;
uint8_t PartsState [ 4 ] ;
uint8_t State [ 3 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to spawn an actor
*/
struct FFXIVIpcNpcSpawn : FFXIVIpcBasePacket < NpcSpawn >
{
uint32_t gimmickId ; // needs to be existing in the map, mob will snap to it
uint8_t u2b ;
uint8_t u2ab ;
uint8_t gmRank ;
uint8_t u3b ;
uint8_t aggressionMode ; // 1 passive, 2 aggressive
uint8_t onlineStatus ;
uint8_t u3c ;
uint8_t pose ;
uint32_t u4 ;
uint64_t targetId ;
uint32_t u6 ;
uint32_t u7 ;
uint64_t mainWeaponModel ;
uint64_t secWeaponModel ;
uint64_t craftToolModel ;
uint32_t u14 ;
uint32_t u15 ;
uint32_t bNPCBase ;
uint32_t bNPCName ;
2019-04-17 00:10:32 +02:00
uint32_t levelId ;
2019-03-28 23:57:58 +01:00
uint32_t u19 ;
uint32_t directorId ;
uint32_t spawnerId ;
uint32_t parentActorId ;
uint32_t hPMax ;
uint32_t hPCurr ;
uint32_t displayFlags ;
uint16_t fateID ;
uint16_t mPCurr ;
2021-11-27 00:53:57 +01:00
uint16_t unknown1 ; // 0
uint16_t unknown2 ; // 0 or pretty big numbers > 30000
2019-03-28 23:57:58 +01:00
uint16_t modelChara ;
uint16_t rotation ;
uint16_t activeMinion ;
uint8_t spawnIndex ;
uint8_t state ;
uint8_t persistantEmote ;
uint8_t modelType ;
uint8_t subtype ;
uint8_t voice ;
uint16_t u25c ;
uint8_t enemyType ;
uint8_t level ;
uint8_t classJob ;
uint8_t u26d ;
uint16_t u27a ;
2021-11-27 00:53:57 +01:00
uint8_t currentMount ;
2019-03-28 23:57:58 +01:00
uint8_t mountHead ;
uint8_t mountBody ;
uint8_t mountFeet ;
uint8_t mountColor ;
uint8_t scale ;
2021-11-27 00:53:57 +01:00
uint16_t elementalLevel ; // Eureka
uint16_t element ; // Eureka
Common : : StatusWork effect [ 30 ] ;
2019-03-28 23:57:58 +01:00
Common : : FFXIVARR_POSITION3 pos ;
uint32_t models [ 10 ] ;
char name [ 32 ] ;
uint8_t look [ 26 ] ;
char fcTag [ 6 ] ;
uint32_t unk30 ;
uint32_t unk31 ;
uint8_t bNPCPartSlot ;
uint8_t unk32 ;
uint16_t unk33 ;
2021-11-27 00:53:57 +01:00
uint32_t unk34 ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to show player movement
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcActorFreeSpawn : FFXIVIpcBasePacket < Delete >
2019-03-28 23:57:58 +01:00
{
uint32_t spawnId ;
uint32_t actorId ;
} ;
2017-08-08 13:53:47 +02:00
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
* to show player movement
*/
struct FFXIVIpcActorMove : FFXIVIpcBasePacket < ActorMove >
{
2021-11-27 00:53:57 +01:00
uint8_t dir ;
uint8_t dirBeforeSlip ;
uint8_t flag ;
uint8_t flag2 ;
uint8_t speed ;
uint8_t __padding1 ;
uint16_t pos [ 3 ] ;
} ;
struct FFXIVIpcTransfer : FFXIVIpcBasePacket < Transfer >
{
uint16_t dir ;
uint8_t padding1 ;
uint8_t padding2 ;
float duration ;
uint8_t flag ;
uint8_t padding3 ;
uint16_t pos [ 3 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to set an actors position
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcWarp : FFXIVIpcBasePacket < Warp >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t Dir ;
uint8_t Type ;
uint8_t TypeArg ;
uint32_t LayerSet ;
2019-03-28 23:57:58 +01:00
float x ;
float y ;
float z ;
} ;
/**
* Structural representation of the packet sent by the server
* to start an actors casting
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcActorCast : FFXIVIpcBasePacket < RequestCast >
{
uint16_t Action ;
uint8_t ActionKind ;
uint8_t __padding1 ;
uint32_t ActionKey ;
float CastTime ;
uint32_t Target ;
float Dir ;
uint32_t BallistaEntityId ;
uint16_t TargetPos [ 3 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHaterList : FFXIVIpcBasePacket < HaterList >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t Count ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
struct ZoneProtoDownHater
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t Id ;
uint8_t Rate ;
} List [ 32 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHateList : FFXIVIpcBasePacket < HateList >
2019-04-30 22:54:35 +02:00
{
2021-11-27 00:53:57 +01:00
uint8_t Count ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
struct ZoneProtoDownHate
2019-04-30 22:54:35 +02:00
{
2021-11-27 00:53:57 +01:00
uint32_t Id ;
uint32_t Value ;
} List [ 32 ] ;
2019-04-30 22:54:35 +02:00
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
* to send the titles available to the player
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcTitleList : FFXIVIpcBasePacket < TitleList >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t TitleFlagsArray [ 32 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to initialize a zone for the player
*/
struct FFXIVIpcInitZone : FFXIVIpcBasePacket < InitZone >
{
2021-11-27 00:53:57 +01:00
uint16_t ZoneId ;
uint16_t TerritoryType ;
uint16_t TerritoryIndex ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint32_t LayerSetId ;
uint32_t LayoutId ;
uint8_t WeatherId ;
uint8_t Flag ;
uint16_t FestivalEid0 ;
uint16_t FestivalPid0 ;
uint16_t FestivalEid1 ;
uint16_t FestivalPid1 ;
uint8_t __padding3 ;
uint8_t __padding4 ;
float Pos [ 3 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server to initialize
* the client UI upon initial connection .
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPlayerStatus : FFXIVIpcBasePacket < PlayerStatus >
{
uint64_t CharaId ;
uint64_t Crest ;
uint32_t EntityId ;
uint32_t RestPoint ;
2021-12-02 20:32:31 +01:00
uint8_t Expansion ;
uint8_t Unknown8 ;
2021-11-27 00:53:57 +01:00
uint8_t Race ;
uint8_t Tribe ;
uint8_t Sex ;
uint8_t ClassJob ;
uint8_t FirstClass ;
uint8_t GuardianDeity ;
uint8_t BirthMonth ;
uint8_t Birthday ;
uint8_t StartTown ;
2021-12-02 20:32:31 +01:00
uint8_t HomePoint ;
uint8_t GrandCompany ;
2021-11-27 00:53:57 +01:00
uint8_t Anima ;
uint8_t Pet ;
uint8_t BuddyRank ;
uint8_t BuddyRankExceeded ;
uint8_t BuddySkillPoint ;
uint8_t BuddyCommand ;
uint8_t BuddyStain ;
uint8_t BuddyFavorite ;
uint8_t LegacyCompleteFlag ;
uint8_t GrandCompanyRank ;
uint8_t __padding1 ;
float BuddyTimer ;
uint32_t BuddyExp ;
uint32_t GCSupplySeed ;
uint32_t CatchCount ;
uint32_t UseBaitCatalogId ;
uint32_t PvPWeeklyPoint ;
uint16_t PvPMatchCount ;
uint16_t PvPWinCount ;
uint16_t PvPWeeklyMatchCount ;
uint16_t PvPWeeklyWinCount ;
uint16_t MVPPoint ;
uint16_t DailyQuestLastAcceptTime ;
uint8_t DailyQuestSeed ;
uint8_t TreasureObtainedFlag ;
uint8_t RelicKey ;
uint8_t RelicNoteKey ;
uint8_t AdventureNotePhase ;
uint8_t RetainerCount ;
uint8_t Unknown4 ;
uint8_t __padding5 ;
uint32_t Frontline01MatchCount ;
uint16_t Frontline01WeeklyMatchCount ;
uint8_t Unknown1 [ 3 ] ;
uint8_t MobHuntWeeklyOrder ;
uint8_t Name [ 32 ] ;
uint8_t PSNId [ 17 ] ;
uint16_t Lv [ 23 ] ;
uint32_t Exp [ 23 ] ;
uint8_t Reward [ 64 ] ;
uint8_t Aetheryte [ 12 ] ;
uint8_t FavoritePoint [ 3 ] ;
uint8_t SuperFavoritePoint [ 1 ] ;
uint8_t Discovery16 [ 320 ] ;
uint8_t Discovery32 [ 80 ] ;
uint8_t HowTo [ 32 ] ;
uint8_t Companion [ 22 ] ;
uint8_t ChocoboTaxiStand [ 8 ] ;
uint8_t CutScene [ 86 ] ;
float Position [ 3 ] ;
uint8_t BuddyPossession [ 8 ] ;
uint8_t BuddyEquip [ 3 ] ;
uint8_t GCSupplyItemFlags [ 4 ] ;
uint8_t GCSupplyClassLevel [ 11 ] ;
char BuddyName [ 21 ] ;
char BuddySkillLine [ 3 ] ;
char MountList [ 7 ] ;
uint8_t IsFishCatched [ 53 ] ;
uint8_t IsSpotVisited [ 25 ] ;
uint8_t __padding6 ;
uint16_t ListFishId [ 18 ] ;
uint16_t ListFishSize [ 18 ] ;
uint32_t PvPPoint [ 3 ] ;
uint8_t PvPRank [ 3 ] ;
uint8_t PvPSkillPoint [ 3 ] ;
uint8_t __padding9 ;
uint8_t __padding10 ;
uint32_t PvPAction [ 10 ] ;
uint8_t BeastReputationRank [ 5 ] ;
uint8_t __padding11 ;
uint16_t BeastReputationValue [ 5 ] ;
uint8_t RandomContentRewardCounter [ 7 ] ;
uint16_t CycleTime [ 2 ] ;
uint8_t PoseEmoteType [ 5 ] ;
uint8_t __padding_ ;
uint8_t Unknown [ 5 ] ;
uint8_t SystemFlag [ 2 ] ;
uint8_t ContentsNoteComplete [ 5 ] ;
uint8_t Unknown2 [ 6 ] ;
uint8_t GuildOrderClassClearFlags [ 28 ] ;
uint8_t RelicNoteCount [ 10 ] ;
uint8_t RelicNoteFlags [ 2 ] ;
uint8_t AdventureNoteSpotClearFlags [ 16 ] ;
uint32_t Frontline01RankCount [ 3 ] ;
uint16_t Frontline01WeeklyRankCount [ 3 ] ;
uint8_t MobHuntOrderState [ 3 ] ;
uint8_t MobHuntKillsCount [ 29 ] ;
uint8_t TripleTriadAcquireFlags [ 15 ] ;
uint8_t SecretRecipeAcquireFlags [ 2 ] ;
uint8_t padding [ 100 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to set a players stats
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcBaseParam : FFXIVIpcBasePacket < BaseParam >
{
uint32_t Param [ 50 ] ;
uint32_t OriginalParam [ 6 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to set an actors current owner
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcFirstAttack : FFXIVIpcBasePacket < FirstAttack >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t Type ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
uint64_t Id ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to set a players state
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPlayerStateFlags : FFXIVIpcBasePacket < Condition >
2019-03-28 23:57:58 +01:00
{
uint8_t flags [ 12 ] ;
uint32_t padding ;
} ;
/**
* Structural representation of the packet sent by the server
* containing current class information
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPlayerStatusUpdate : FFXIVIpcBasePacket < PlayerStatusUpdate >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t ClassJob ;
uint8_t __padding1 ;
uint16_t Lv ;
uint16_t LvSync ;
uint8_t __padding2 ;
uint8_t __padding3 ;
uint32_t Exp ;
uint32_t RestPoint ;
} ;
struct FFXIVIpcChangeClass : FFXIVIpcBasePacket < ChangeClass >
{
uint8_t ClassJob ;
uint8_t Penalty ;
uint8_t Login ;
uint8_t __padding1 ;
uint16_t Lv ;
uint8_t __padding2 ;
uint8_t __padding3 ;
uint32_t BorrowAction [ 10 ] ;
uint8_t PhysicalBonus [ 6 ] ;
} ;
struct FFXIVIpcStatus : FFXIVIpcBasePacket < Status >
{
Common : : StatusWork effect [ 30 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to update a players appearance
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcEquip : FFXIVIpcBasePacket < Equip >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t MainWeapon ;
uint64_t SubWeapon ;
uint8_t CrestEnable ;
uint8_t __padding1 ;
uint16_t PatternInvalid ;
uint32_t Equipment [ 10 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
;
struct ZoneProtoDownEquipWork
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t CatalogId ;
uint32_t Pattern ;
uint64_t Signature ;
uint8_t HQ ;
uint8_t Stain ;
struct ZoneProtoDownMateriaWork
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t Type ;
uint8_t Grade ;
} Materia [ 5 ] ;
} ;
struct FFXIVIpcInspect : FFXIVIpcBasePacket < Inspect >
{
uint8_t ObjType ;
uint8_t Sex ;
uint8_t ClassJob ;
uint8_t Lv ;
uint8_t LvSync ;
uint8_t __padding1 ;
uint16_t Title ;
uint8_t GrandCompany ;
uint8_t GrandCompanyRank ;
uint8_t Flag ;
uint8_t __padding2 ;
uint64_t Crest ;
uint8_t CrestEnable ;
uint8_t __padding3 ;
uint8_t __padding4 ;
uint8_t __padding5 ;
uint64_t MainWeaponModelId ;
uint64_t SubWeaponModelId ;
uint16_t PatternInvalid ;
uint8_t Rank ;
uint8_t __padding6 ;
uint32_t Exp ;
uint8_t ItemLv ;
uint8_t __padding7 ;
uint8_t __padding8 ;
uint8_t __padding9 ;
ZoneProtoDownEquipWork Equipment [ 14 ] ;
char Name [ 32 ] ;
uint8_t PSNId [ 17 ] ;
uint8_t Customize [ 26 ] ;
uint8_t __padding10 ;
uint8_t __padding11 ;
uint8_t __padding12 ;
uint32_t ModelId [ 10 ] ;
uint8_t MasterName [ 32 ] ;
uint8_t SkillLv [ 3 ] ;
uint8_t __padding13 ;
uint32_t BaseParam [ 50 ] ;
} ;
struct FFXIVIpcName : FFXIVIpcBasePacket < Name >
{
uint64_t contentId ;
2019-03-28 23:57:58 +01:00
char name [ 32 ] ;
} ;
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownItemStorage
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t storageId ;
uint16_t type ;
int16_t index ;
uint32_t containerSize ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownNormalItem
2018-09-10 14:34:24 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t storageId ;
uint16_t containerIndex ;
uint32_t stack ;
2018-09-10 14:34:24 +01:00
uint32_t catalogId ;
2019-03-28 23:57:58 +01:00
uint64_t signatureId ;
2021-11-27 00:53:57 +01:00
uint8_t flags ;
uint8_t __padding1 ;
uint16_t durability ;
uint16_t refine ;
uint8_t stain ;
uint8_t __padding2 ;
uint32_t pattern ;
uint16_t materiaType [ 5 ] ;
uint8_t materiaGrade [ 5 ] ;
uint8_t buffer [ 5 ] ;
} ;
struct ZoneProtoDownGilItem
{
uint16_t storageId ;
uint16_t containerIndex ;
uint32_t stack ;
uint8_t subquarity ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
uint32_t catalogId ;
uint16_t buffer [ 4 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to update a players appearance
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcNormalItem : FFXIVIpcBasePacket < NormalItem >
2018-08-29 21:40:59 +02:00
{
2021-11-27 00:53:57 +01:00
uint32_t contextId ;
ZoneProtoDownNormalItem item ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcItemSize : FFXIVIpcBasePacket < ItemSize >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t contextId ;
int32_t size ;
uint32_t storageId ;
2019-03-28 23:57:58 +01:00
} ;
2017-09-10 14:02:16 +09:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcItemStorage : FFXIVIpcBasePacket < ItemStorage >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t contextId ;
ZoneProtoDownItemStorage storage ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGilItem : FFXIVIpcBasePacket < GilItem >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t contextId ;
ZoneProtoDownGilItem item ;
} ;
struct FFXIVIpcItemOperationBatch : FFXIVIpcBasePacket < ItemOperationBatch >
{
uint32_t contextId ;
uint32_t operationId ;
uint8_t operationType ;
uint8_t errorType ;
uint8_t packetNum ;
} ;
struct FFXIVIpcItemOperation : FFXIVIpcBasePacket < ItemOperation >
{
uint32_t contextId ;
uint8_t operationType ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
uint32_t srcEntity ;
uint32_t srcStorageId ;
int16_t srcContainerIndex ;
uint8_t __padding4 ;
uint8_t __padding5 ;
uint32_t srcStack ;
uint32_t srcCatalogId ;
uint32_t dstEntity ;
uint32_t dstStorageId ;
int16_t dstContainerIndex ;
uint8_t __padding6 ;
uint8_t __padding7 ;
uint32_t dstStack ;
uint32_t dstCatalogId ;
2019-03-28 23:57:58 +01:00
} ;
2017-08-08 13:53:47 +02:00
2019-03-28 23:57:58 +01:00
struct FFXIVIpcInventoryActionAck : FFXIVIpcBasePacket < InventoryActionAck >
{
uint32_t sequence ;
uint16_t type ;
uint16_t padding ;
uint32_t padding1 ;
uint32_t padding2 ;
} ;
2017-08-08 13:53:47 +02:00
2017-08-09 23:15:55 +09:00
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
* to update a slot in the inventory
*/
struct FFXIVIpcUpdateInventorySlot : FFXIVIpcBasePacket < UpdateInventorySlot >
{
uint32_t sequence ;
uint32_t unknown ;
uint16_t containerId ;
uint16_t slot ;
uint32_t quantity ;
uint32_t catalogId ;
uint32_t reservedFlag ;
uint64_t signatureId ;
uint16_t hqFlag ;
uint16_t condition ;
uint16_t spiritBond ;
uint16_t color ;
uint32_t glamourCatalogId ;
uint16_t materia1 ;
uint16_t materia2 ;
uint16_t materia3 ;
uint16_t materia4 ;
uint16_t materia5 ;
uint8_t buffer1 ;
uint8_t buffer2 ;
uint8_t buffer3 ;
uint8_t buffer4 ;
uint8_t buffer5 ;
uint8_t padding ;
uint32_t unknown10 ;
} ;
/**
* Structural representation of the packet sent by the server
* to start an event , not actually playing it , but registering
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcEventStart : FFXIVIpcBasePacket < PushEventState >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint64_t targetId ;
uint32_t handlerId ;
uint8_t event ;
uint8_t flags ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint32_t eventArg ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to fill a huntin log entry
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcMonsterNoteCategory : FFXIVIpcBasePacket < MonsterNoteCategory >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t contextId ;
uint8_t currentRank ;
uint8_t categoryIndex ;
uint8_t killCount [ 40 ] ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint64_t completeFlags ;
uint32_t isNewFlags ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
template < int ArgCount >
struct FFXIVIpcPlayEventSceneN
2019-03-28 23:57:58 +01:00
{
uint64_t actorId ;
uint32_t eventId ;
uint16_t scene ;
uint16_t padding ;
2021-11-27 00:53:57 +01:00
uint32_t sceneFlags ;
uint8_t paramCount ;
uint8_t padding2 [ 3 ] ;
uint32_t params [ ArgCount ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
/**
* Structural representation of the packet sent by the server
* to play an event
*/
struct FFXIVIpcPlayEventSceneHeader :
FFXIVIpcBasePacket < EventPlayHeader > ,
FFXIVIpcPlayEventSceneN < 1 >
2021-08-16 17:18:29 +09:00
{
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPlayEventScene2 :
FFXIVIpcBasePacket < EventPlay2 > ,
FFXIVIpcPlayEventSceneN < 2 >
{
} ;
struct FFXIVIpcPlayEventScene4 :
FFXIVIpcBasePacket < EventPlay4 > ,
FFXIVIpcPlayEventSceneN < 4 >
{
} ;
struct FFXIVIpcPlayEventScene8 :
FFXIVIpcBasePacket < EventPlay8 > ,
FFXIVIpcPlayEventSceneN < 8 >
{
} ;
struct FFXIVIpcPlayEventScene16 :
FFXIVIpcBasePacket < EventPlay16 > ,
FFXIVIpcPlayEventSceneN < 16 >
{
} ;
struct FFXIVIpcPlayEventScene32 :
FFXIVIpcBasePacket < EventPlay32 > ,
FFXIVIpcPlayEventSceneN < 32 >
{
} ;
struct FFXIVIpcPlayEventScene64 :
FFXIVIpcBasePacket < EventPlay64 > ,
FFXIVIpcPlayEventSceneN < 64 >
{
} ;
struct FFXIVIpcPlayEventScene128 :
FFXIVIpcBasePacket < EventPlay128 > ,
FFXIVIpcPlayEventSceneN < 128 >
{
} ;
struct FFXIVIpcPlayEventScene255 :
FFXIVIpcBasePacket < EventPlay255 > ,
FFXIVIpcPlayEventSceneN < 255 >
2020-01-02 14:42:58 +11:00
{
} ;
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
* to play an event
*/
2020-01-02 14:42:58 +11:00
struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket < EventPlay32 >
2019-03-28 23:57:58 +01:00
{
uint64_t actorId ;
uint32_t eventId ;
uint16_t scene ;
uint16_t padding ;
uint32_t flags ;
uint32_t param3 ;
uint8_t param4 ;
uint8_t padding1 [ 3 ] ;
uint32_t param5 ;
uint8_t unknown8 [ 0x08 ] ;
uint8_t unknown [ 0x38 ] ;
} ;
/**
* Structural representation of the packet sent by the server
* to finish an event
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcEventFinish : FFXIVIpcBasePacket < PopEventState >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t handlerId ;
uint8_t event ;
uint8_t result ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint32_t eventArg ;
2019-03-28 23:57:58 +01:00
} ;
2020-01-02 14:42:58 +11:00
struct FFXIVIpcEventPlay255 :
FFXIVIpcBasePacket < EventPlay255 > ,
2021-11-27 00:53:57 +01:00
FFXIVIpcPlayEventSceneN < 255 >
2019-03-28 23:57:58 +01:00
{
} ;
2017-09-22 22:03:57 +09:00
2017-08-10 11:35:05 +09:00
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
* to respond to a linkshell creation event
*/
2021-12-02 22:58:36 +01:00
struct FFXIVIpcResumeEventScene2 : FFXIVIpcBasePacket < ResumeEventScene2 >
2019-03-28 23:57:58 +01:00
{
2021-12-02 22:58:36 +01:00
uint32_t handlerId ;
uint16_t sceneId ;
uint8_t resumeId ;
uint8_t numOfArgs ;
uint32_t args [ 4 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to send the active quests
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcQuests : FFXIVIpcBasePacket < Quests >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : QuestData activeQuests [ 30 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to send update a quest slot
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcQuest : FFXIVIpcBasePacket < Quest >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t index ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
Common : : QuestData questInfo ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to send the completed quests mask
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcQuestCompleteList : FFXIVIpcBasePacket < QuestCompleteFlags >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t questCompleteMask [ 480 ] ;
uint8_t unknownCompleteMask [ 80 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to finish a quest
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcQuestFinish : FFXIVIpcBasePacket < QuestCompleteFlag >
2019-03-28 23:57:58 +01:00
{
uint16_t questId ;
uint8_t flag1 ;
uint8_t flag2 ;
uint32_t padding ;
} ;
2021-11-27 00:53:57 +01:00
template < int Size >
struct FFXIVIpcNoticeN
{
uint32_t handlerId ;
uint8_t noticeId ;
uint8_t numOfArgs ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint32_t args [ Size ] ;
} ;
struct FFXIVIpcNoticeHeader :
FFXIVIpcBasePacket < NoticeHeader > ,
FFXIVIpcNoticeN < 1 >
{
} ;
/*!
* Structural representation of the packet sent by the server
* to send a quest message
* type 0 default
* type 1 icon
* type 5 status
*/
struct FFXIVIpcNotice2 :
FFXIVIpcBasePacket < Notice2 > ,
FFXIVIpcNoticeN < 2 >
{
} ;
struct FFXIVIpcNotice4 :
FFXIVIpcBasePacket < Notice4 > ,
FFXIVIpcNoticeN < 4 >
{
} ;
struct FFXIVIpcNotice8 :
FFXIVIpcBasePacket < Notice8 > ,
FFXIVIpcNoticeN < 8 >
{
} ;
struct FFXIVIpcNotice16 :
FFXIVIpcBasePacket < Notice16 > ,
FFXIVIpcNoticeN < 16 >
2019-03-28 23:57:58 +01:00
{
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcNotice32 :
FFXIVIpcBasePacket < Notice32 > ,
FFXIVIpcNoticeN < 32 >
{
} ;
struct FFXIVIpcQuestTracker : FFXIVIpcBasePacket < Tracking >
2019-03-28 23:57:58 +01:00
{
struct TrackerEntry
{
uint8_t active ;
uint8_t questIndex ;
} entry [ 5 ] ;
uint16_t padding [ 3 ] ;
} ;
2017-10-17 21:31:00 +02:00
2018-08-29 21:40:59 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcWeatherId : FFXIVIpcBasePacket < WeatherId >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t WeatherId ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
float TransitionTime ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
2021-11-27 00:53:57 +01:00
* to send a unviel a map
2019-03-28 23:57:58 +01:00
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcDiscoveryReply : FFXIVIpcBasePacket < DiscoveryReply >
2019-03-28 23:57:58 +01:00
{
2019-10-21 23:24:26 +02:00
/* 0000 */ uint32_t mapPartId ;
/* 0004 */ uint32_t mapId ;
2019-03-28 23:57:58 +01:00
} ;
2018-08-29 21:40:59 +02:00
2019-03-28 23:57:58 +01:00
/**
2021-11-27 00:53:57 +01:00
*
2019-03-28 23:57:58 +01:00
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcQuestRepeatFlags : FFXIVIpcBasePacket < QuestRepeatFlags >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t update ;
uint8_t repeatFlagArray [ 1 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-11-01 00:18:19 +01:00
2019-03-28 23:57:58 +01:00
/**
2021-11-27 00:53:57 +01:00
*
2019-03-28 23:57:58 +01:00
*/
2021-11-27 00:53:57 +01:00
struct DailyQuest
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t questId ;
uint8_t flags ;
} ;
struct FFXIVIpcDailyQuests : FFXIVIpcBasePacket < DailyQuests >
{
uint8_t update ;
uint8_t __padding1 ;
uint8_t __padding2 ;
struct DailyQuest dailyQuestArray [ 6 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* prepare zoning , showing screenmessage
*/
struct FFXIVIpcPrepareZoning : FFXIVIpcBasePacket < PrepareZoning >
{
uint32_t logMessage ;
uint16_t targetZone ;
uint16_t animation ;
uint8_t param4 ;
uint8_t hideChar ;
uint8_t fadeOut ;
uint8_t param7 ;
uint8_t fadeOutTime ;
uint8_t unknown ; // this changes whether or not the destination zone's name displays during the loading screen. Seems to always be 9 (=hidden) when going to an instance and certain zones, 0 otherwise.
uint16_t padding ;
} ;
/**
* Structural representation of the packet sent by the server
* to trigger content finder events
*
* See https : //gist.github.com/Minoost/c35843c4c8a7a931f31fdaac9bce64c2
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcUpdateContent : FFXIVIpcBasePacket < UpdateContent >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t territoryType ;
uint32_t kind ;
uint32_t value1 ;
uint32_t value2 ;
} ;
2019-03-28 23:57:58 +01:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcUpdateFindContent : FFXIVIpcBasePacket < UpdateFindContent >
{
uint32_t territoryType ;
uint32_t kind ;
uint32_t value1 ;
uint32_t value2 ;
uint32_t value3 ;
uint32_t value4 ;
} ;
2019-03-28 23:57:58 +01:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcNotifyFindContentStatus : FFXIVIpcBasePacket < NotifyFindContentStatus >
{
uint32_t territoryType ;
uint8_t status ;
uint8_t tankRoleCount ;
uint8_t dpsRoleCount ;
uint8_t healerRoleCount ;
uint8_t matchingTime ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to update contents available in duty finder or raid finder
*
* Do note that this packet has to come early in login phase ( around initui packet )
* or it won ' t be applied until you reconnect
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcContentAttainFlags : FFXIVIpcBasePacket < ContentAttainFlags >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t raidAttainFlag [ 28 ] ;
uint8_t dungeonAttainFlag [ 18 ] ;
uint8_t guildOrderAttainFlag [ 10 ] ;
uint8_t bossBattleAttainFlag [ 6 ] ;
uint8_t colosseumAttainFlag [ 2 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to update adventure in needs in duty roulette
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcContentBonus : FFXIVIpcBasePacket < ContentBonus >
2019-03-28 23:57:58 +01:00
{
// Ordered by roulette id
2021-11-27 00:53:57 +01:00
uint8_t bonusRoles [ 8 ] ;
2019-03-28 23:57:58 +01:00
} ;
/**
* Structural representation of the packet sent by the server
* to update duty info in general
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcResponsePenalties : FFXIVIpcBasePacket < ResponsePenalties >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t penalties [ 2 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-11-01 00:18:19 +01:00
2021-11-27 00:53:57 +01:00
2018-11-11 14:27:39 +01:00
2018-11-28 00:05:57 +11:00
2019-03-28 23:57:58 +01:00
struct FFXIVIpcCFMemberStatus : FFXIVIpcBasePacket < CFMemberStatus >
2018-11-01 00:18:19 +01:00
{
2019-03-28 23:57:58 +01:00
uint16_t contentId ;
uint16_t unknown1 ;
2018-11-06 23:25:37 +01:00
uint8_t status ;
2019-03-28 23:57:58 +01:00
uint8_t currentTank ;
uint8_t currentDps ;
uint8_t currentHealer ;
uint8_t estimatedTime ;
uint8_t unknown2 [ 3 ] ;
uint32_t unknown3 ;
} ;
/**
* Structural representation of the packet sent by the server
* to set the gear show / hide status of a character
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcConfig : FFXIVIpcBasePacket < Config >
2020-06-21 00:13:27 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t flag ;
2020-06-21 00:13:27 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcEorzeaTimeOffset : FFXIVIpcBasePacket < TimeOffset >
{
uint64_t timestamp ;
} ;
2020-06-21 01:09:19 +01:00
2019-03-28 23:57:58 +01:00
/**
* Structural representation of the packet sent by the server
2021-11-27 00:53:57 +01:00
* to setMount a player
2019-03-28 23:57:58 +01:00
*/
struct FFXIVIpcMount : FFXIVIpcBasePacket < Mount >
{
uint32_t id ;
} ;
/**
* Structural representation of the packet sent by the server
2021-11-27 00:53:57 +01:00
* to setMount a player
2019-03-28 23:57:58 +01:00
*/
2021-11-27 00:53:57 +01:00
struct FFXIVIpcDirectorVars : FFXIVIpcBasePacket < Director >
2019-04-18 20:57:47 +10:00
{
uint32_t directorId ;
2021-11-27 00:53:57 +01:00
uint8_t sequence ;
2019-04-18 20:57:47 +10:00
uint8_t flags ;
2021-11-27 00:53:57 +01:00
uint8_t vars [ 10 ] ;
2019-04-18 20:57:47 +10:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHouseList : FFXIVIpcBasePacket < HouseList >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandSetId ;
Common : : House Houses [ 30 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-12-27 00:36:47 +11:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHouse : FFXIVIpcBasePacket < House >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t Block ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
Common : : House House ;
2019-03-28 23:57:58 +01:00
} ;
2018-12-27 00:36:47 +11:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcYardObjectList : FFXIVIpcBasePacket < YardObjectList >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t PacketIndex ;
uint8_t PacketEnd ;
uint8_t PacketEnd1 ;
uint8_t PacketEnd2 ;
Common : : Furniture YardObjects [ 400 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-12-01 21:40:30 +01:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcYardObject : FFXIVIpcBasePacket < YardObject >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t PacketIndex ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
Common : : Furniture YardObject ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcInterior : FFXIVIpcBasePacket < Interior >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t Window ;
uint8_t WindowColor ;
uint8_t Door ;
uint8_t DoorColor ;
uint16_t Interior [ 10 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingAuction : FFXIVIpcBasePacket < HousingAuction >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint32_t Price ;
uint32_t Timer ;
2019-03-28 23:57:58 +01:00
} ;
2018-12-01 21:40:30 +01:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingProfile : FFXIVIpcBasePacket < HousingProfile >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
uint64_t OwnerId ;
uint32_t Like ;
uint8_t Welcome ;
uint8_t Size ;
char Name [ 23 ] ;
char Greeting [ 193 ] ;
char OwnerName [ 31 ] ;
char FCTag [ 7 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-11-20 22:52:57 +11:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingHouseName : FFXIVIpcBasePacket < HousingHouseName >
2018-11-20 22:52:57 +11:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
char Name [ 23 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingGreeting : FFXIVIpcBasePacket < HousingGreeting >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
uint8_t Greeting [ 193 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-11-20 22:52:57 +11:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcCharaHousingLandData : FFXIVIpcBasePacket < CharaHousingLandData >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t IsFcOwner ;
uint8_t Index ;
uint8_t __padding1 ;
uint8_t __padding2 ;
Common : : LandIdent LandId ;
uint8_t Flags ;
2019-03-28 23:57:58 +01:00
} ;
2018-11-22 15:34:17 +11:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcCharaHousing : FFXIVIpcBasePacket < CharaHousing >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : CharaLandData FcLands [ 1 ] ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
Common : : CharaLandData CharaLands [ 1 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingWelcome : FFXIVIpcBasePacket < HousingWelcome >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t Welcome ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
Common : : LandIdent LandId ;
2019-03-28 23:57:58 +01:00
} ;
2018-11-29 00:19:37 +11:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcFurnitureListS : FFXIVIpcBasePacket < FurnitureListS >
2018-10-11 17:15:52 +11:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
Common : : Furniture Furnitures [ 100 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcFurnitureListM : FFXIVIpcBasePacket < FurnitureListM >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
Common : : Furniture Furnitures [ 150 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcFurnitureListL : FFXIVIpcBasePacket < FurnitureListL >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
Common : : Furniture Furnitures [ 200 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-08-29 21:40:59 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcFurniture : FFXIVIpcBasePacket < Furniture >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t StorageId ;
uint8_t ContainerIndex ;
uint8_t __padding1 ;
Common : : Furniture Furniture ;
2019-03-28 23:57:58 +01:00
} ;
2018-08-29 21:40:59 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingProfileList : FFXIVIpcBasePacket < HousingProfileList >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandSetId ;
Common : : SimpleProfile ProfileList [ 30 ] ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingObjectTransform : FFXIVIpcBasePacket < HousingObjectTransform >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint16_t Dir ;
uint8_t UserData1 ;
uint8_t UserData2 ;
uint8_t ContainerIndex ;
uint8_t __padding1 ;
uint16_t Pos [ 3 ] ;
2019-03-28 23:57:58 +01:00
} ;
2018-03-18 17:40:00 +09:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingObjectColor : FFXIVIpcBasePacket < HousingObjectColor >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
uint8_t Color ;
uint8_t __padding1 ;
uint16_t StorageId ;
uint8_t ContainerIndex ;
uint8_t UserData ;
2019-03-28 23:57:58 +01:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingObjectTransformMulti : FFXIVIpcBasePacket < HousingObjectTransformMulti >
2019-03-28 23:57:58 +01:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
Common : : HousingLayout LayoutInfos [ 10 ] ;
2020-06-27 18:41:59 +09:30
} ;
2019-03-28 23:57:58 +01:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingGetPersonalRoomProfileListResult : FFXIVIpcBasePacket < HousingGetPersonalRoomProfileListResult >
2020-03-15 22:12:55 +09:00
{
2021-11-27 00:53:57 +01:00
uint64_t CharacterID ;
Common : : LandIdent HouseLandID ;
uint16_t TopRoomID ;
uint8_t __padding1 ;
uint8_t __padding2 ;
Common : : HousingPersonalRoomProfileData ProfileList [ 15 ] ;
2020-03-15 22:12:55 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingGetHouseBuddyStableListResult : FFXIVIpcBasePacket < HousingGetHouseBuddyStableListResult >
2020-05-01 20:19:10 +09:00
{
2021-11-27 00:53:57 +01:00
uint64_t CharacterID ;
Common : : LandIdent LandID ;
uint8_t Page ;
uint8_t IsMyBuddy ;
uint8_t __padding1 ;
uint8_t __padding2 ;
Common : : HouseBuddyStableData BuddyList [ 15 ] ;
2020-05-01 20:19:10 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHouseTrainBuddyData : FFXIVIpcBasePacket < HouseTrainBuddyData >
2020-05-11 06:25:25 +09:00
{
2021-11-27 00:53:57 +01:00
uint8_t OwnerRace ;
uint8_t OwnerSex ;
uint8_t Stain ;
uint8_t Equips [ 3 ] ;
2020-05-11 06:25:25 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingObjectTransformMultiResult : FFXIVIpcBasePacket < HousingObjectTransformMultiResult >
2020-05-12 02:30:21 +09:00
{
2021-11-27 00:53:57 +01:00
Common : : LandIdent LandId ;
uint8_t Result ;
uint8_t __padding1 ;
uint16_t FixIndexes [ 10 ] ;
2020-05-12 02:30:21 +09:00
} ;
2020-11-11 02:07:59 +09:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingLogWithHouseName : FFXIVIpcBasePacket < HousingLogWithHouseName >
2020-11-11 02:07:59 +09:00
{
2021-11-27 00:53:57 +01:00
uint32_t LogId ;
uint8_t Name [ 23 ] ;
2020-11-11 02:07:59 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHousingCombinedObjectStatus : FFXIVIpcBasePacket < HousingCombinedObjectStatus >
2020-11-11 02:07:59 +09:00
{
2021-11-27 00:53:57 +01:00
uint16_t AddressData ;
uint16_t Kind [ 8 ] ;
uint8_t Step [ 8 ] ;
uint8_t Status [ 8 ] ;
2020-11-11 02:07:59 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcHouseBuddyModelData : FFXIVIpcBasePacket < HouseBuddyModelData >
2020-11-11 02:07:59 +09:00
{
2021-11-27 00:53:57 +01:00
uint16_t AddressData ;
uint8_t BuddyScale ;
uint8_t Stain ;
uint8_t Invisibility ;
uint8_t __padding1 ;
uint8_t __padding2 ;
uint8_t __padding3 ;
uint32_t ModelEquips [ 3 ] ;
2020-11-11 02:07:59 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcCreateObject : FFXIVIpcBasePacket < CreateObject >
2020-11-11 02:07:59 +09:00
{
2021-11-27 00:53:57 +01:00
uint8_t Index ;
uint8_t Kind ;
uint8_t Flag ;
uint8_t __padding1 ;
uint32_t BaseId ;
uint32_t EntityId ;
uint32_t LayoutId ;
uint32_t ContentId ;
uint32_t OwnerId ;
uint32_t BindLayoutId ;
float Scale ;
uint16_t SharedGroupTimelineState ;
uint16_t Dir ;
uint16_t FATE ;
uint8_t PermissionInvisibility ;
uint8_t Args ;
uint32_t Args2 ;
uint32_t Args3 ;
Common : : FFXIVARR_POSITION3 Pos ;
2020-11-11 02:07:59 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcDeleteObject : FFXIVIpcBasePacket < DeleteObject >
2020-11-11 02:07:59 +09:00
{
2021-11-27 00:53:57 +01:00
uint8_t Index ;
2020-11-11 02:07:59 +09:00
} ;
2021-08-16 17:18:29 +09:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcGetFcProfileResult :
FFXIVIpcBasePacket < GetFcProfileResult >
2021-08-16 17:18:29 +09:00
{
2021-11-27 00:53:57 +01:00
uint64_t TargetCharacterID ;
uint64_t FreeCompanyID ;
uint64_t CrestID ;
uint64_t LandID ;
uint32_t TargetEntityID ;
uint32_t CreateDate ;
uint32_t Reputation ;
uint16_t TotalMemberCount ;
uint16_t OnlineMemberCount ;
uint16_t FcActivity ;
uint16_t FcRole ;
uint8_t FcActiveTimeFlag ;
uint8_t FcJoinRequestFlag ;
uint8_t GrandCompanyID ;
uint8_t FcStatus ;
uint8_t FcRank ;
uint8_t JoinRequestCount ;
char FreeCompanyName [ 22 ] ;
char FcTag [ 7 ] ;
char MasterCharacterName [ 32 ] ;
char CompanyMotto [ 193 ] ;
char HouseName [ 23 ] ;
2021-08-16 17:18:29 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcFreeCompany : FFXIVIpcBasePacket < FreeCompany >
2021-08-16 17:18:29 +09:00
{
2021-11-27 00:53:57 +01:00
uint64_t Crest ;
char Tag [ 6 ] ;
2021-08-16 17:18:29 +09:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPcPartyResult : FFXIVIpcBasePacket < PcPartyResult >
2021-08-16 17:18:29 +09:00
{
2021-11-27 00:53:57 +01:00
uint32_t UpPacketNo ;
uint32_t Result ;
2021-08-16 17:18:29 +09:00
} ;
2021-08-30 10:16:05 +02:00
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPcPartyUpdate : FFXIVIpcBasePacket < PcPartyUpdate >
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
uint64_t ExecuteCharacterID ;
uint64_t TargetCharacterID ;
uint8_t ExecuteIdentity ;
uint8_t TargetIdentity ;
uint8_t UpdateStatus ;
uint8_t Count ;
char ExecuteCharacterName [ 32 ] ;
char TargetCharacterName [ 32 ] ;
2021-08-30 10:16:05 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPartyRecruitResult : FFXIVIpcBasePacket < PartyRecruitResult >
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
uint64_t TargetCharacterID ;
uint64_t Param ;
uint32_t Type ;
uint32_t Result ;
uint8_t Identity ;
char TargetName [ 32 ] ;
2021-08-30 10:16:05 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownStatusWork
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
uint16_t Id ;
int16_t SystemParam ;
float Time ;
uint32_t Source ;
2021-08-30 10:16:05 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownPartyMember
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
char Name [ 32 ] ;
uint64_t CharaId ;
uint32_t EntityId ;
uint32_t ParentEntityId ;
uint8_t Valid ;
uint8_t ClassJob ;
uint8_t Sex ;
uint8_t Role ;
uint8_t Lv ;
uint8_t LvSync ;
uint8_t ObjType ;
uint8_t BuddyCommand ;
uint32_t Hp ;
uint32_t HpMax ;
uint16_t Mp ;
uint16_t MpMax ;
uint16_t Tp ;
uint16_t TerritoryType ;
uint32_t PetEntityId ;
ZoneProtoDownStatusWork Status [ 30 ] ;
2021-08-30 10:16:05 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcUpdateParty : FFXIVIpcBasePacket < UpdateParty >
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
ZoneProtoDownPartyMember Member [ 8 ] ;
uint64_t PartyID ;
uint64_t ChatChannel ;
uint8_t LeaderIndex ;
uint8_t PartyCount ;
uint8_t __padding1 ;
uint8_t __padding2 ;
ZoneProtoDownStatusWork PetStatus [ 30 ] ;
2021-08-30 10:16:05 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct ZoneProtoDownMemberPos
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
uint8_t Valid ;
uint8_t __padding1 ;
uint16_t Pos [ 3 ] ;
2021-08-30 10:16:05 +02:00
} ;
2021-11-27 00:53:57 +01:00
struct FFXIVIpcPartyPos : FFXIVIpcBasePacket < PartyPos >
2021-08-30 10:16:05 +02:00
{
2021-11-27 00:53:57 +01:00
ZoneProtoDownMemberPos Member [ 8 ] ;
2021-08-30 10:16:05 +02:00
} ;
2019-03-28 23:57:58 +01:00
}