Documentation ¶
Index ¶
- Constants
- Variables
- func GetFile(filename string, url string) (io.Reader, error)
- func LoadConstants(region string, dataPath string)
- func LoadOpcodes(region string, dataPath string)
- func PollForUpdates(path string, url string)
- func ReverseMap16(m map[string]uint16) map[uint16]string
- func ReverseMap32(m map[string]uint32) map[uint32]string
- func WatchFile(path string, fnUpdate func(io.Reader))
- type ActorControl
- type ActorControlSelf
- type Bimap16
- type Bimap32
- type ClientTrigger
- type ConstantsJSON
- type CurrencyCrystalInfo
- type EffectEntry
- type EffectResult
- type EventFinish
- type EventPlay
- type EventPlay4
- type EventStart
- type FFXIVARR_POSITION3
- type HousingObject
- type InitZone
- type InventoryModifyHandler
- type InventoryTransaction
- type ItemInfo
- type LandFlagSet
- type LandIdent
- type LobbyRetainerList
- type LobbyServerList
- type LobbyServiceAccountList
- type MarketBoardItemListing
- type MarketBoardItemListingCount
- type MarketBoardItemListingHistory
- type MarketBoardSearchResult
- type MarketTaxRates
- type NpcSpawn
- type ObjectSpawn
- type OpcodeEntry
- type OpcodeLists
- type OpcodeRegion
- type PlayerSetup
- type PlayerSpawn
- type PlayerStats
- type PrepareZoning
- type QuestActive
- type RetainerInformation
- type SomeDirectorUnk4
- type StatusEffect
- type UpdateClassInfo
- type UpdateInventorySlot
- type UpdatePositionHandler
- type UpdatePositionInstance
- type WeatherChange
Constants ¶
const CLASSJOB_SLOTS uint8 = 28
const CLASSJOB_TOTAL uint8 = 38
const CURRENT_EXPANSION_ID uint8 = 3
const INVALID_GAME_OBJECT_ID uint32 = 0xE0000000
const INVALID_GAME_OBJECT_ID64 uint64 = 0xE0000000
const MAX_DISPLAYED_ACTORS uint8 = 99
const MAX_DISPLAYED_EOBJS uint8 = 40
const MAX_PLAYER_LEVEL uint16 = 80
const TOWN_COUNT uint8 = 6
Variables ¶
var ActorControlType = map[string]uint16{}/* 161 elements not displayed */
ActorControlType - Actor control category map.
var ActorControlTypeReverse = ReverseMap16(ActorControlType)
ActorControlTypeReverse contains opcodes for actor controls, by value.
var ClientTriggerType = map[string]uint16{
"ToggleSheathe": 0x01,
"ToggleAutoAttack": 0x02,
"ChangeTarget": 0x03,
"DismountReq": 0x65,
"SpawnCompanionReq": 0x66,
"RemoveStatusEffect": 0x68,
"CastCancel": 0x69,
"Return": 0xC8,
"FinishZoning": 0xC9,
"Teleport": 0xCA,
"Examine": 0x12C,
"MarkPlayer": 0x12D,
"SetTitleReq": 0x12E,
"TitleList": 0x12F,
"UpdatedSeenHowTos": 0x133,
"AllotAttribute": 0x135,
"ClearFieldMarkers": 0x13A,
"CameraMode": 0x13B,
"CharaNameReq": 0x13D,
"HuntingLogDetails": 0x194,
"Timers": 0x1AB,
"DyeItem": 0x1B5,
"RequestChocoboInventory": 0x1C4,
"EmoteReq": 0x1F4,
"EmoteCancel": 0x1F6,
"PersistentEmoteCancel": 0x1F7,
"PoseChange": 0x1F9,
"PoseReapply": 0x1FA,
"PoseCancel": 0x1FB,
"AchievementCrit": 0x202,
"AchievementComp": 0x203,
"AchievementCatChat": 0x206,
"RequestEventBattle": 0x232C,
"QuestJournalUpdateQuestVisibility": 0x2BE,
"QuestJournalClosed": 0x2BF,
"AbandonQuest": 0x320,
"DirectorInitFinish": 0x321,
"DirectorSync": 0x328,
"EnterTerritoryEventFinished": 0x330,
"RequestInstanceLeave": 0x333,
"AchievementCritReq": 0x3E8,
"AchievementList": 0x3E9,
"SetEstateLightingLevel": 0x40B,
"RequestHousingBuildPreset": 0x44C,
"RequestEstateExteriorRemodel": 0x044D,
"RequestEstateInteriorRemodel": 0x44E,
"RequestEstateHallRemoval": 0x44F,
"RequestBuildPreset": 0x450,
"RequestLandSignFree": 0x451,
"RequestLandSignOwned": 0x452,
"RequestWardLandInfo": 0x453,
"RequestLandRelinquish": 0x454,
"RequestLandInventory": 0x0458,
"RequestHousingItemRemove": 0x0459,
"RequestEstateRename": 0x45A,
"RequestEstateEditGreeting": 0x45B,
"RequestEstateGreeting": 0x45C,
"RequestEstateEditGuestAccessSettings": 0x45D,
"UpdateEstateGuestAccess": 0x45E,
"RequestEstateTagSettings": 0x45F,
"RequestEstateInventory": 0x0461,
"RequestHousingItemUI": 0x463,
"RequestSharedEstateSettings": 0x46F,
"UpdateEstateLightingLevel": 0x471,
"HousingItemSelectedInUI": 0x47E,
"CompanionAction": 0x6A4,
"CompanionSetBarding": 0x6A5,
"CompanionActionUnlock": 0x6A6,
"OpenPerformInstrumentUI": 0x71C,
"StartReplay": 0x7BC,
"EndReplay": 0x7BD,
"OpenDuelUI": 0x898,
"DuelRequestResult": 0x899,
}
ClientTriggerType - Client trigger category map.
var ClientTriggerTypeReverse = ReverseMap16(ClientTriggerType)
ClientTriggerTypeReverse contains opcodes for actor controls, by value.
Functions ¶
func GetFile ¶ added in v0.0.3
GetFile downloads a file from the specified URL and caches it, or loads the cached version.
func LoadConstants ¶ added in v0.0.8
LoadConstants loads constants from the source URL.
func LoadOpcodes ¶
LoadOpcodes loads opcodes from the source URL.
func PollForUpdates ¶ added in v0.0.3
PollForUpdates polls the provided URL for updates, and saves the updated data to the specified path if there's an update
Types ¶
type ActorControl ¶
type ActorControl struct { Category uint16 `json:"category"` Padding uint16 `json:"padding"` Param1 uint32 `json:"param1"` Param2 uint32 `json:"param2"` Param3 uint32 `json:"param3"` Param4 uint32 `json:"param4"` Padding1 uint32 `json:"padding1"` }
ActorControl - Structural representation of the packet sent by the server to update certain player details / status
type ActorControlSelf ¶
type ActorControlSelf struct { Category uint16 `json:"category"` Padding uint16 `json:"padding"` Param1 uint32 `json:"param1"` Param2 uint32 `json:"param2"` Param3 uint32 `json:"param3"` Param4 uint32 `json:"param4"` Param5 uint32 `json:"param5"` Param6 uint32 `json:"param6"` Padding1 uint32 `json:"padding1"` }
ActorControlSelf - Structural representation of the packet sent by the server to update certain player details / status
type Bimap16 ¶
Bimap16 is a structure containing two maps, a by-key map and a by-value map
var ClientChatIpcType Bimap16
ClientChatIpcType contains opcode entries for commands executing in chat, from the client.
var ClientLobbyIpcType Bimap16
ClientLobbyIpcType contains opcode entries for commands executing in the lobby, from the client.
var ClientZoneIpcType Bimap16
ClientZoneIpcType contains opcode entries for commands executing in the currently-loaded zone, from the client.
var ServerChatIpcType Bimap16
ServerChatIpcType contains opcode entries for commands executing in chat, from the server.
var ServerLobbyIpcType Bimap16
ServerLobbyIpcType contains opcode entries for commands executing in the lobby, from the server.
var ServerZoneIpcType Bimap16
ServerZoneIpcType contains opcode entries for commands executing in the currently-loaded zone, from the server.
type Bimap32 ¶
Bimap32 is a structure containing two maps, a by-key map and a by-value map
var Constants Bimap32
Constants is a Bimap containing constants that change from patch to patch.
type ClientTrigger ¶ added in v0.0.8
type ClientTrigger struct { CommandID uint16 `json:"commandId"` Unk2 [2]uint8 `json:"unk_2"` Param11 uint32 `json:"param11"` // Need to ask what this means; sometimes they're one uint64? Param12 uint32 `json:"param12"` Param2 uint32 `json:"param2"` Param3 uint32 `json:"param3"` // The output names here are inconsistent with Sapphire because someone messed up Sapphire's names Param4 uint32 `json:"param4"` Param5 uint64 `json:"param5"` }
ClientTrigger -
type ConstantsJSON ¶ added in v0.0.8
ConstantsJSON is a representation of the constants downloaded from the server.
type CurrencyCrystalInfo ¶
type CurrencyCrystalInfo struct { ContainerSequence uint32 `json:"containerSequence"` ContainerID uint16 `json:"containerId"` Slot uint16 `json:"slot"` Quantity uint32 `json:"quantity"` Unknown uint32 `json:"unknown"` CatalogID uint32 `json:"catalogId"` Unknown1 uint32 `json:"unknown1"` Unknown2 uint32 `json:"unknown2"` Unknown3 uint32 `json:"unknown3"` }
type EffectEntry ¶
type EffectEntry struct { EffectType uint8 Param0 uint8 Param1 uint8 /*! * @Brief Shows an additional percentage in the battle log * * Has no effect on what is shown and stored in value */ Param2 uint8 ValueMultiplier uint8 // This multiplies whatever value is in the 'value' param by 10. Possibly a workaround for big numbers Flags uint8 Value int16 }
type EffectResult ¶
type EffectResult struct { GlobalSequence uint32 `json:"globalSequence"` ActorID uint32 `json:"actor_id"` CurrentHp uint32 `json:"current_hp"` MaxHp uint32 `json:"max_hp"` CurrentMp uint16 `json:"current_mp"` Unknown1 uint8 `json:"unknown1"` ClassID uint8 `json:"classId"` ShieldPercentage uint8 `json:"shieldPercentage"` EntryCount uint8 `json:"entryCount"` Unknown2 uint16 `json:"unknown2"` StatusEntries [4]struct { Index uint8 `json:"index"` // which position do i display this Unknown3 uint8 `json:"unknown3"` ID uint16 `json:"id"` Param uint16 `json:"param"` Unknown4 uint16 `json:"unknown4"` // Sort this out (old right half of power/param property) Duration float32 `json:"duration"` SourceActorID uint32 `json:"sourceActorId"` } `json:"statusEntries"` }
EffectResult - Structural representation of the packet sent by the server to add a status effect
type EventFinish ¶
type EventFinish struct { EventID uint32 `json:"eventId"` Param1 uint8 `json:"param1"` Param2 uint8 `json:"param2"` Padding uint16 `json:"padding"` Param3 uint32 `json:"param3"` Padding1 uint32 `json:"padding1"` }
EventFinish - Structural representation of the packet sent by the server to finish an event
type EventPlay ¶
type EventPlay struct { ActorID uint64 `json:"actorId"` EventID uint32 `json:"eventId"` Scene uint16 `json:"scene"` Padding uint16 `json:"padding"` Flags uint32 `json:"flags"` Param3 uint32 `json:"param3"` Param4 uint8 `json:"param4"` Padding1 [3]uint8 `json:"padding1"` Param5 uint32 `json:"param5"` Unknown [8]uint8 `json:"unknown"` }
EventPlay - Structural representation of the packet sent by the server to play an event
type EventPlay4 ¶
type EventPlay4 struct { ActorID uint64 `json:"actorId"` EventID uint32 `json:"eventId"` Scene uint16 `json:"scene"` Padding uint16 `json:"padding"` SceneFlags uint32 `json:"sceneFlags"` ParamCount uint8 `json:"paramCount"` Padding2 [3]uint8 `json:"padding2"` Params [4]uint32 `json:"params"` }
EventPlay4 - Structural representation of the packet sent by the server to play an event
type EventStart ¶
type EventStart struct { ActorID uint64 `json:"actorId"` EventID uint32 `json:"eventId"` Param1 uint8 `json:"param1"` Param2 uint8 `json:"param2"` Padding uint16 `json:"padding"` Param3 uint32 `json:"param3"` Padding1 uint32 `json:"padding1"` }
EventStart - Structural representation of the packet sent by the server to start an event, not actually playing it, but registering
type FFXIVARR_POSITION3 ¶
FFXIVARR_POSITION3 is a float representation of position in XIV 3D space.
type HousingObject ¶
type HousingObject struct { ItemId uint32 Padding uint32 // was itemrotation + unknown/pad, looks unused now Rotation float32 Pos FFXIVARR_POSITION3 }
type InitZone ¶
type InitZone struct { ServerID uint16 `json:"serverId"` ZoneID uint16 `json:"zoneId"` Unknown1 uint16 `json:"unknown1"` ContentfinderConditionID uint16 `json:"contentFinderConditionId"` Unknown3 uint32 `json:"unknown3"` Unknown4 uint32 `json:"unknown4"` WeatherID uint8 `json:"weatherId"` Bitmask uint8 `json:"bitmask"` Bitmask1 uint8 `json:"bitmask1"` Unknown5 uint8 `json:"unknown5"` Unknown8 uint32 `json:"unknown8"` FestivalID uint16 `json:"festivalId"` AdditionalFestivalID uint16 `json:"additionalFestivalId"` Unknown9 uint32 `json:"unknown9"` Unknown10 uint32 `json:"unknown10"` Unknown11 uint32 `json:"unknown11"` Unknown12 [4]uint32 `json:"unknown12"` Unknown13 [3]uint32 `json:"unknown13"` Pos FFXIVARR_POSITION3 `json:"pos"` Unknown14 [3]uint32 `json:"unknown14"` Unknown15 uint32 `json:"unknown15"` }
InitZone - Structural representation of the packet sent by the server to initialize a zone for the player
type InventoryModifyHandler ¶
type InventoryModifyHandler struct { Seq uint32 Action uint8 Pad0006 [6]uint8 FromContainer uint16 Pad000E [2]uint8 FromSlot uint8 Pad0011 [15]uint8 ToContainer uint16 Pad0022 [2]uint8 ToSlot uint8 Pad0025 [3]uint8 SplitCount uint32 }
func (*InventoryModifyHandler) MarshalJSON ¶
func (i *InventoryModifyHandler) MarshalJSON() ([]byte, error)
MarshalJSON override for InventoryModifyHandler
type InventoryTransaction ¶
type InventoryTransaction struct { Sequence uint32 `json:"sequence"` Type uint16 `json:"type"` Padding1 uint16 `json:"padding1"` OwnerID uint32 `json:"ownerId"` StorageID uint32 `json:"storageId"` SlotID uint16 `json:"slotId"` Padding2 uint16 `json:"padding2"` StackSize uint32 `json:"stackSize"` CatalogID uint32 `json:"catalogId"` SomeActorID uint32 `json:"someActorId"` TargetStorageID int32 `json:"targetStorageId"` Padding3 [3]uint32 `json:"padding3"` }
type ItemInfo ¶
type ItemInfo struct { ContainerSequence uint32 `json:"containerSequence"` Unknown uint32 `json:"unknown"` ContainerID uint16 `json:"containerId"` Slot uint16 `json:"slot"` Quantity uint32 `json:"quantity"` CatalogID uint32 `json:"catalogId"` ReservedFlag uint32 `json:"reservedFlag"` SignatureID uint64 `json:"signatureId"` HqFlag uint8 `json:"hqFlag"` Unknown2 uint8 `json:"unknown2"` Condition uint16 `json:"condition"` SpiritBond uint16 `json:"spiritbond"` Stain uint16 `json:"stain"` GlamourCatalogID uint32 `json:"glamourCatalogId"` Materia1 uint16 `json:"materia1"` Materia2 uint16 `json:"materia2"` Materia3 uint16 `json:"materia3"` Materia4 uint16 `json:"materia4"` Materia5 uint16 `json:"materia5"` // Someone still needs to get around to PRing Sapphire with these Tier1 uint8 `json:"tier1"` Tier2 uint8 `json:"tier2"` Tier3 uint8 `json:"tier3"` Tier4 uint8 `json:"tier4"` Tier5 uint8 `json:"tier5"` Padding uint8 `json:"padding"` Unknown10 uint32 `json:"unknown10"` }
ItemInfo -
type LandFlagSet ¶
type LobbyRetainerList ¶
type LobbyRetainerList struct {
Padding [0x210]uint8 `json:"padding"`
}
type LobbyServerList ¶
type LobbyServerList struct { Seq uint64 `json:"seq"` Final uint16 `json:"final"` Offset uint16 `json:"offset"` NumServers uint32 `json:"numServers"` Padding uint32 `json:"padding"` Padding1 uint32 `json:"padding1"` Server struct { ID uint16 `json:"id"` Index uint16 `json:"index"` Flags uint32 `json:"flags"` Padding1 uint32 `json:"padding1"` Icon uint32 `json:"icon"` Padding2 uint32 `json:"padding2"` Name [0x40]byte `json:"name"` } `json:"server"` }
type LobbyServiceAccountList ¶
type LobbyServiceAccountList struct { Seq uint64 `json:"seq"` Padding uint8 `json:"padding"` NumServiceAccounts uint8 `json:"numServiceAccounts"` U1 uint8 `json:"u1"` U2 uint8 `json:"u2"` Padding1 uint32 `json:"padding1"` ServiceAccount [8]struct { ID uint32 `json:"id"` Unknown uint32 `json:"unknown"` Index uint32 `json:"index"` Name [0x44]byte `json:"name"` } `json:"serviceAccount"` }
type MarketBoardItemListing ¶
type MarketBoardItemListing struct { Listing [10]struct { ListingID uint64 `json:"listingId"` RetainerID uint64 `json:"retainerId"` RetainerOwnerID uint64 `json:"retainerOwnerId"` ArtisanID uint64 `json:"artisanId"` PricePerUnit uint32 `json:"pricePerUnit"` TotalTax uint32 `json:"totalTax"` ItemQuantity uint32 `json:"itemQuantity"` ItemID uint32 `json:"itemId"` LastReviewTime uint16 `json:"lastReviewTime"` ContainerID uint16 `json:"containerId"` SlotID uint32 `json:"slotId"` Durability uint16 `json:"durability"` SpiritBond uint16 `json:"spiritBond"` /** * auto materiaID = (i & 0xFF0) >> 4 * auto index = i & 0xF * auto leftover = i >> 8 */ MateriaValue [5]uint16 `json:"materiaValue"` Padding1 uint16 `json:"padding1"` Padding2 uint32 `json:"padding2"` RetainerName [32]byte `json:"retainerName"` PlayerName [32]byte `json:"playerName"` Hq bool `json:"hq"` MateriaCount uint8 `json:"materiaCount"` OnMannequin uint8 `json:"onMannequin"` MarketCity uint8 `json:"marketCity"` DyeID uint16 `json:"dyeID"` Padding3 uint16 `json:"padding3"` Padding4 uint32 `json:"padding4"` } `json:"listing"` // Multiple packets are sent if there are more than 10 search results. ListingIndexEnd uint8 `json:"listingIndexEnd"` ListingIndexStart uint8 `json:"listingIndexStart"` RequestID uint16 `json:"requestId"` Padding7 [16]byte `json:"padding7"` Unknown13 uint8 `json:"unknown13"` Padding8 uint16 `json:"padding8"` Unknown14 uint8 `json:"unknown14"` Padding9 uint64 `json:"padding9"` Unknown15 uint32 `json:"unknown15"` Padding10 uint32 `json:"padding10"` }
type MarketBoardItemListingHistory ¶
type MarketBoardItemListingHistory struct { ItemCatalogID uint32 `json:"itemCatalogId"` ItemCatalogID2 uint32 `json:"itemCatalogId2"` Listing [20]struct { SalePrice uint32 `json:"salePrice"` PurchaseTime uint32 `json:"purchaseTime"` Quantity uint32 `json:"quantity"` IsHq uint8 `json:"isHq"` Padding uint8 `json:"padding"` OnMannequin uint8 `json:"onMannequin"` BuyerName [33]byte `json:"buyerName"` ItemCatalogID uint32 `json:"itemCatalogId"` } `json:"listing"` }
type MarketBoardSearchResult ¶
type MarketBoardSearchResult struct { Items [20]struct { ItemCatalogID uint32 `json:"itemCatalogId"` Quantity uint16 `json:"quantity"` Demand uint16 `json:"demand"` } `json:"items"` ListingIndexEnd uint32 `json:"listingIndexEnd"` Padding1 uint32 `json:"padding1"` ListingIndexStart uint32 `json:"listingIndexStart"` RequestID uint32 `json:"requestId"` }
type MarketTaxRates ¶
type NpcSpawn ¶
type NpcSpawn struct { GimmickID uint32 `json:"gimmickId"` U2b uint8 `json:"u2b"` U2ab uint8 `json:"u2ab"` GmRank uint8 `json:"gmRank"` U3b uint8 `json:"u3b"` AggressionMode uint8 `json:"aggressionMode"` OnlineStatus uint8 `json:"onlineStatus"` U3c uint8 `json:"u3c"` Pose uint8 `json:"pose"` U4 uint8 `json:"u4"` TargetID uint64 `json:"targetId"` U6 uint32 `json:"u6"` U7 uint32 `json:"u7"` MainWeaponModel uint64 `json:"mainWeaponModel"` SecWeaponModel uint64 `json:"secWeaponModel"` CraftToolModel uint64 `json:"craftToolModel"` U14 int32 `json:"u14"` U15 uint32 `json:"u15"` BNPCBase uint32 `json:"bNPCBase"` BNPCName uint32 `json:"bNPCName"` LevelID uint32 `json:"levelId"` U19 uint32 `json:"u19"` DirectorID uint32 `json:"directorId"` SpawnerID uint32 `json:"spawnerId"` ParentActorID uint32 `json:"parentActorId"` HPMax uint32 `json:"hPMax"` HPCurr uint32 `json:"hPCurr"` DisplayFlags uint32 `json:"displayFlags"` FateID uint16 `json:"fateID"` MPCurr uint16 `json:"mPCurr"` Unknown1 uint16 `json:"unknown1"` Unknown2 uint16 `json:"unknown2"` ModelChara uint16 `json:"modelChara"` Rotation uint16 `json:"rotation"` ActiveMinion uint16 `json:"activeMinion"` SpawnIndex uint8 `json:"spawnIndex"` State uint8 `json:"state"` PersistentEmote uint8 `json:"persistentEmote"` ModelType uint8 `json:"modelType"` Subtype uint8 `json:"subtype"` Voice uint8 `json:"voice"` U25c uint16 `json:"u25c"` EnemyType uint8 `json:"enemyType"` Level uint8 `json:"level"` ClassJob uint8 `json:"classJob"` U26d uint8 `json:"u26d"` U27a uint16 `json:"u27a"` CurrentMount uint8 `json:"currentMount"` MountHead uint8 `json:"mountHead"` MountBody uint8 `json:"mountBody"` MountFeet uint8 `json:"mountFeet"` MountColor uint8 `json:"mountColor"` Scale uint8 `json:"scale"` ElementalLevel uint16 `json:"elementalLevel"` // Eureka Element uint16 `json:"element"` // Eureka Effect [30]StatusEffect `json:"effect"` Pos FFXIVARR_POSITION3 `json:"pos"` Models [10]uint32 `json:"models"` Name [32]byte `json:"name"` Look [26]uint8 `json:"look"` FcTag [6]byte `json:"fcTag"` Unk30 uint32 `json:"unk30"` Unk31 uint32 `json:"unk31"` BNPCPartSlot uint8 `json:"bNPCPartSlot"` Unk32 uint8 `json:"unk32"` Unk33 uint16 `json:"unk33"` Unk34 uint32 `json:"unk34"` }
type ObjectSpawn ¶ added in v0.0.8
type ObjectSpawn struct { SpawnIndex uint8 `json:"spawnIndex"` ObjKind uint8 `json:"objKind"` State uint8 `json:"state"` Unknown3 uint8 `json:"unknown3"` ObjID uint32 `json:"objId"` ActorID uint32 `json:"actorId"` LevelID uint32 `json:"levelId"` Unknown10 uint32 `json:"unknown10"` SomeActorID14 uint32 `json:"someActorId14"` GimmickID uint32 `json:"gimmickId"` Scale float32 `json:"scale"` Unknown20A int16 `json:"unknown20a"` Rotation uint16 `json:"rotation"` Unknown24A int16 `json:"unknown24a"` Unknown24B int16 `json:"unknown24b"` Unknown28A uint16 `json:"unknown28a"` Unknown28C int16 `json:"unknown28c"` HousingLink uint32 `json:"housingLink"` Position FFXIVARR_POSITION3 `json:"position"` Unknown3C int16 `json:"unknown3C"` Unknown3E int16 `json:"unknown3E"` }
type OpcodeEntry ¶
OpcodeEntry has an opcode entry
type OpcodeLists ¶
type OpcodeLists struct { ServerZoneIpcType []OpcodeEntry ClientZoneIpcType []OpcodeEntry ServerLobbyIpcType []OpcodeEntry ClientLobbyIpcType []OpcodeEntry ServerChatIpcType []OpcodeEntry ClientChatIpcType []OpcodeEntry }
OpcodeLists has channel types
type OpcodeRegion ¶
type OpcodeRegion struct { Region string `json:"region"` Lists OpcodeLists `json:"lists"` }
OpcodeRegion has all opcodes for a region
type PlayerSetup ¶
type PlayerSetup struct { // plain C types for a bit until the packet is actually fixed. // makes conversion between different editors easier. ContentID uint64 `json:"contentId"` Unknown8 uint32 `json:"unknown8"` UnknownC uint32 `json:"unknownC"` CharID uint32 `json:"charId"` RestedExp uint32 `json:"restedExp"` CompanionCurrentExp uint32 `json:"companionCurrentExp"` Unknown1C uint32 `json:"unknown1C"` FishCaught uint32 `json:"fishCaught"` UseBaitCatalogID uint32 `json:"useBaitCatalogId"` Unknown28 uint32 `json:"unknown28"` UnknownPvp2C uint16 `json:"unknownPvp2C"` Unknown3 uint16 `json:"unknown3"` PvpFrontlineOverallCampaigns uint32 `json:"pvpFrontlineOverallCampaigns"` UnknownTimestamp34 uint32 `json:"unknownTimestamp34"` UnknownTimestamp38 uint32 `json:"unknownTimestamp38"` Unknown3C uint32 `json:"unknown3C"` Unknown40 uint32 `json:"unknown40"` Unknown44 uint32 `json:"unknown44"` CompanionTimePassed float32 `json:"companionTimePassed"` Unknown4C uint32 `json:"unknown4C"` Unknown50 uint16 `json:"unknown50"` UnknownPvp52 [4]uint16 `json:"unknownPvp52"` PlayerCommendations uint16 `json:"playerCommendations"` Unknown5C uint16 `json:"unknown5C"` Unknown5E uint16 `json:"unknown5E"` PvpFrontlineWeeklyCampaigns uint16 `json:"pvpFrontlineWeeklyCampaigns"` EnhancedAnimaGlassProgress uint16 `json:"enhancedAnimaGlassProgress"` Unknown64 [4]uint16 `json:"unknown64"` PvpRivalWingsTotalMatches uint16 `json:"pvpRivalWingsTotalMatches"` PvpRivalWingsTotalVictories uint16 `json:"pvpRivalWingsTotalVictories"` PvpRivalWingsWeeklyMatches uint16 `json:"pvpRivalWingsWeeklyMatches"` PvpRivalWingsWeeklyVictories uint16 `json:"pvpRivalWingsWeeklyVictories"` MaxLevel uint8 `json:"maxLevel"` Expansion uint8 `json:"expansion"` Unknown76 uint8 `json:"unknown76"` Unknown77 uint8 `json:"unknown77"` Race uint8 `json:"race"` Tribe uint8 `json:"tribe"` Gender uint8 `json:"gender"` CurrentJob uint8 `json:"currentJob"` CurrentClass uint8 `json:"currentClass"` Deity uint8 `json:"deity"` NamedayMonth uint8 `json:"namedayMonth"` NamedayDay uint8 `json:"namedayDay"` CityState uint8 `json:"cityState"` Homepoint uint8 `json:"homepoint"` Unknown82 uint8 `json:"unknown82"` PetHotBar uint8 `json:"petHotBar"` CompanionRank uint8 `json:"companionRank"` CompanionStars uint8 `json:"companionStars"` CompanionSp uint8 `json:"companionSp"` CompanionUnk86 uint8 `json:"companionUnk86"` CompanionColor uint8 `json:"companionColor"` CompanionFavoFeed uint8 `json:"companionFavoFeed"` Unknown89 uint8 `json:"unknown89"` Unknown8A [4]uint8 `json:"unknown8A"` HasRelicBook uint8 `json:"hasRelicBook"` RelicBookID uint8 `json:"relicBookId"` Unknown90 [4]uint8 `json:"unknown90"` CraftingMasterMask uint8 `json:"craftingMasterMask"` Unknown95 [9]uint8 `json:"unknown95"` Unknown9F [2]uint8 `json:"unknown9F"` UnknownA1 [3]uint8 `json:"unknownA1"` Exp [CLASSJOB_SLOTS]uint32 `json:"exp"` Unknown108 uint32 `json:"unknown108"` PvpTotalExp uint32 `json:"pvpTotalExp"` UnknownPvp110 uint32 `json:"unknownPvp110"` PvpExp uint32 `json:"pvpExp"` PvpFrontlineOverallRanks [3]uint32 `json:"pvpFrontlineOverallRanks"` Levels [CLASSJOB_SLOTS]uint16 `json:"levels"` Unknown15C [9]uint16 `json:"unknown15C"` U1 uint16 `json:"u1"` U2 uint16 `json:"u2"` Unknown112 [23]uint16 `json:"unknown112"` FishingRecordsFish [26]uint16 `json:"fishingRecordsFish"` BeastExp [11]uint16 `json:"beastExp"` Unknown1EA [5]uint16 `json:"unknown1EA"` PvpFrontlineWeeklyRanks [3]uint16 `json:"pvpFrontlineWeeklyRanks"` UnknownMask1FA [4]uint16 `json:"unknownMask1FA"` CompanionName [21]uint8 `json:"companionName"` CompanionDefRank uint8 `json:"companionDefRank"` CompanionAttRank uint8 `json:"companionAttRank"` CompanionHealRank uint8 `json:"companionHealRank"` U19 [8]uint8 `json:"u19"` MountGuideMask [22]uint8 `json:"mountGuideMask"` Name [32]byte `json:"name"` UnknownOword [16]uint8 `json:"unknownOword"` UnknownOw uint8 `json:"unknownOw"` UnlockBitmask [64]uint8 `json:"unlockBitmask"` Aetheryte [21]uint8 `json:"aetheryte"` Discovery [445]uint8 `json:"discovery"` Howto [34]uint8 `json:"howto"` Minions [45]uint8 `json:"minions"` ChocoboTaxiMask [10]uint8 `json:"chocoboTaxiMask"` WatchedCutscenes [124]uint8 `json:"watchedCutscenes"` CompanionBardingMask [10]uint8 `json:"companionBardingMask"` CompanionEquippedHead uint8 `json:"companionEquippedHead"` CompanionEquippedBody uint8 `json:"companionEquippedBody"` CompanionEquippedLegs uint8 `json:"companionEquippedLegs"` Unknown52A [4]uint8 `json:"unknown52A"` UnknownMask52E [11]uint8 `json:"unknownMask52E"` FishingGuideMask [105]uint8 `json:"fishingGuideMask"` FishingSpotVisited [31]uint8 `json:"fishingSpotVisited"` Unknown59A [27]uint8 `json:"unknown59A"` Unknown5A9 [7]uint8 `json:"unknown5A9"` BeastRank [11]uint8 `json:"beastRank"` UnknownPvp5AB [11]uint8 `json:"unknownPvp5AB"` Unknown5B9 [5]uint8 `json:"unknown5B9"` Pose uint8 `json:"pose"` Unknown5B91 uint8 `json:"unknown5B91"` ChallengeLogComplete [9]uint8 `json:"challengeLogComplete"` WeaponPose uint8 `json:"weaponPose"` UnknownMask673 [10]uint8 `json:"unknownMask673"` UnknownMask5DD [28]uint8 `json:"unknownMask5DD"` RelicCompletion [12]uint8 `json:"relicCompletion"` SightseeingMask [26]uint8 `json:"sightseeingMask"` HuntingMarkMask [55]uint8 `json:"huntingMarkMask"` TripleTriadCards [32]uint8 `json:"tripleTriadCards"` U12 [11]uint8 `json:"u12"` U13 uint8 `json:"u13"` AetherCurrentMask [22]uint8 `json:"aetherCurrentMask"` U10 [3]uint8 `json:"u10"` OrchestrionMask [40]uint8 `json:"orchestrionMask"` HallOfNoviceCompletion [3]uint8 `json:"hallOfNoviceCompletion"` AnimaCompletion [11]uint8 `json:"animaCompletion"` U14 [16]uint8 `json:"u14"` U15 [13]uint8 `json:"u15"` UnlockedRaids [28]uint8 `json:"unlockedRaids"` UnlockedDungeons [18]uint8 `json:"unlockedDungeons"` UnlockedGuildhests [10]uint8 `json:"unlockedGuildhests"` UnlockedTrials [8]uint8 `json:"unlockedTrials"` UnlockedPvp [5]uint8 `json:"unlockedPvp"` ClearedRaids [28]uint8 `json:"clearedRaids"` ClearedDungeons [18]uint8 `json:"clearedDungeons"` ClearedGuildhests [10]uint8 `json:"clearedGuildhests"` ClearedTrials [8]uint8 `json:"clearedTrials"` ClearedPvp [5]uint8 `json:"clearedPvp"` FishingRecordsFishWeight [26]uint16 `json:"fishingRecordsFishWeight"` ExploratoryMissionNextTimestamp uint32 `json:"exploratoryMissionNextTimestamp"` PvpLevel uint8 `json:"pvpLevel"` }
PlayerSetup - Structural representation of the packet sent by the server to initialize the client UI upon initial connection.
type PlayerSpawn ¶
type PlayerSpawn struct { Title uint16 `json:"title"` U1b uint16 `json:"u1b"` CurrentWorldID uint16 `json:"currentWorldId"` HomeWorldID uint16 `json:"homeWorldId"` GmRank uint8 `json:"gmRank"` U3c uint8 `json:"u3c"` U4 uint8 `json:"u4"` OnlineStatus uint8 `json:"onlineStatus"` Pose uint8 `json:"pose"` U5a uint8 `json:"u5a"` U5b uint8 `json:"u5b"` U5c uint8 `json:"u5c"` TargetID uint64 `json:"targetId"` U6 uint32 `json:"u6"` U7 uint32 `json:"u7"` MainWeaponModel uint64 `json:"mainWeaponModel"` SecWeaponModel uint64 `json:"secWeaponModel"` CraftToolModel uint64 `json:"craftToolModel"` U14 int32 `json:"u14"` U15 uint32 `json:"u15"` BNPCBase uint32 `json:"bNPCBase"` BNPCName uint32 `json:"bNPCName"` U18 uint32 `json:"u18"` U19 uint32 `json:"u19"` DirectorID uint32 `json:"directorId"` OwnerID uint32 `json:"ownerId"` U22 uint32 `json:"u22"` HPMax uint32 `json:"hPMax"` HPCurr uint32 `json:"hPCurr"` DisplayFlags uint32 `json:"displayFlags"` FateID uint16 `json:"fateID"` MPCurr uint16 `json:"mPCurr"` MPMax uint16 `json:"mPMax"` Unk uint16 `json:"unk"` // == 0 ModelChara uint16 `json:"modelChara"` Rotation uint16 `json:"rotation"` ActiveMinion uint16 `json:"activeMinion"` SpawnIndex uint8 `json:"spawnIndex"` State uint8 `json:"state"` PersistentEmote uint8 `json:"persistentEmote"` ModelType uint8 `json:"modelType"` Subtype uint8 `json:"subtype"` Voice uint8 `json:"voice"` U25c uint16 `json:"u25c"` EnemyType uint8 `json:"enemyType"` Level uint8 `json:"level"` ClassJob uint8 `json:"classJob"` U26d uint8 `json:"u26d"` U27a uint16 `json:"u27a"` CurrentMount uint8 `json:"currentMount"` MountHead uint8 `json:"mountHead"` MountBody uint8 `json:"mountBody"` MountFeet uint8 `json:"mountFeet"` MountColor uint8 `json:"mountColor"` Scale uint8 `json:"scale"` //uint32 elementalLevel one of these two field changed to 16bit //uint32 element ElementData [6]uint8 `json:"elementData"` Effect [30]StatusEffect `json:"effect"` Pos FFXIVARR_POSITION3 `json:"pos"` Models [10]uint32 `json:"models"` Name [32]byte `json:"name"` Look [26]uint8 `json:"look"` FcTag [6]byte `json:"fcTag"` Unk30 uint32 `json:"unk30"` }
PlayerSpawn - Structural representation of the packet sent by the server to spawn an actor
type PlayerStats ¶
type PlayerStats struct { // order comes from baseparam order column Strength uint32 `json:"strength"` Dexterity uint32 `json:"dexterity"` Vitality uint32 `json:"vitality"` Intelligence uint32 `json:"intelligence"` Mind uint32 `json:"mind"` Piety uint32 `json:"piety"` Hp uint32 `json:"hp"` Mp uint32 `json:"mp"` Tp uint32 `json:"tp"` Gp uint32 `json:"gp"` Cp uint32 `json:"cp"` Delay uint32 `json:"delay"` Tenacity uint32 `json:"tenacity"` AttackPower uint32 `json:"attackPower"` Defense uint32 `json:"defense"` DirectHitRate uint32 `json:"directHitRate"` Evasion uint32 `json:"evasion"` MagicDefense uint32 `json:"magicDefense"` CriticalHit uint32 `json:"criticalHit"` AttackMagicPotency uint32 `json:"attackMagicPotency"` HealingMagicPotency uint32 `json:"healingMagicPotency"` ElementalBonus uint32 `json:"elementalBonus"` Determination uint32 `json:"determination"` SkillSpeed uint32 `json:"skillSpeed"` SpellSpeed uint32 `json:"spellSpeed"` Haste uint32 `json:"haste"` Craftsmanship uint32 `json:"craftsmanship"` Control uint32 `json:"control"` Gathering uint32 `json:"gathering"` Perception uint32 `json:"perception"` // todo: what is here? Unknown [26]uint32 `json:"unknown"` }
PlayerStats - Structural representation of the packet sent by the server to set a players stats
type PrepareZoning ¶ added in v0.0.8
type PrepareZoning struct { LogMessage uint32 `json:"logMessage"` TargetZone uint16 `json:"targetZone"` Animation uint16 `json:"animation"` Param4 uint8 `json:"param4"` HideChar uint8 `json:"hideChar"` FadeOut uint8 `json:"fadeOut"` Param7 uint8 `json:"param7"` FadeOutTime uint8 `json:"fadeOutTime"` Unknown uint8 `json:"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. Padding uint16 `json:"padding"` }
type QuestActive ¶
type RetainerInformation ¶
type RetainerInformation struct { Unknown1 uint64 `json:"unknown1"` RetainerID uint32 `json:"retainerID"` Unknown2 uint32 `json:"unknown2"` HireOrder uint8 `json:"hireOrder"` ItemCount uint8 `json:"itemCount"` Unknown3 uint16 `json:"unknown3"` Gil uint32 `json:"gil"` ItemSellingCount uint8 `json:"itemSellingCount"` CityID uint8 `json:"cityID"` ClassJobID uint8 `json:"classJobID"` Level uint32 `json:"level"` Unknown4 uint32 `json:"unknown4"` VentureID uint32 `json:"ventureID"` VentureComplete uint32 `json:"ventureComplete"` Padding uint8 `json:"padding"` Name [32]byte `json:"name"` }
type SomeDirectorUnk4 ¶
type StatusEffect ¶
type UpdateClassInfo ¶
type UpdateInventorySlot ¶
type UpdateInventorySlot struct { Sequence uint32 `json:"sequence"` Unknown uint32 `json:"unknown"` ContainerID uint16 `json:"containerId"` Slot uint16 `json:"slot"` Quantity uint32 `json:"quantity"` CatalogID uint32 `json:"catalogId"` ReservedFlag uint32 `json:"reservedFlag"` SignatureID uint64 `json:"signatureId"` HqFlag uint8 `json:"hqFlag"` Condition uint16 `json:"condition"` SpiritBond uint16 `json:"spiritbond"` Color uint16 `json:"color"` GlamourCatalogID uint32 `json:"glamourCatalogId"` Materia1 uint16 `json:"materia1"` Materia2 uint16 `json:"materia2"` Materia3 uint16 `json:"materia3"` Materia4 uint16 `json:"materia4"` Materia5 uint16 `json:"materia5"` Tier1 uint8 `json:"tier1"` Tier2 uint8 `json:"tier2"` Tier3 uint8 `json:"tier3"` Tier4 uint8 `json:"tier4"` Tier5 uint8 `json:"tier5"` Padding uint8 `json:"padding"` Unknown10 uint32 `json:"unknown10"` }
UpdateInventorySlot - Structural representation of the packet sent by the server to update a slot in the inventory
type UpdatePositionHandler ¶ added in v0.0.8
type UpdatePositionHandler struct { Rotation float32 `json:"rotation"` AnimationType uint8 `json:"animationType"` AnimationState uint8 `json:"animationState"` ClientAnimationType uint8 `json:"clientAnimationType"` HeadPosition uint8 `json:"headPosition"` Position FFXIVARR_POSITION3 `json:"position"` Unk [4]uint8 `json:"unk"` }
UpdatePositionHandler -
type UpdatePositionInstance ¶ added in v0.0.8
type UpdatePositionInstance struct { Rotation float32 `json:"rotation"` InterpolateRotation float32 `json:"interpolateRotation"` Flags uint32 `json:"flags"` Position FFXIVARR_POSITION3 `json:"position"` InterpolatePosition FFXIVARR_POSITION3 `json:"interpolatePosition"` Unknown uint32 `json:"unknown"` }
UpdatePositionInstance -