ffxivapp
ffxivapp copied to clipboard
xivapp.com X64 offsets
Hi,
I'm the developer behind the FFXIV mumbe positional audio plugin.
I don't know if your affiliated with xivapp.com, but since this application uses the api for everything I hope so.
I've been working on some decoding of the X64 offsets, though am not done yet. I thought I'd share my research with you, and whoever else is interested.
Here's a straight copy paste from my internal notes:
Camera Offsets (x86):
X?: 64
first_person: 256 (0 is in first person, 1 is free camera)
Zoom: 264
Heading: 288 (is oposite of char heading, unless in first person mode)
elevation 292? (-pi to pi)
X?: 400
Camera Offsets (x64):
X? 80
first_person 272 (0 is in first person, 1 is free camera)
Zoom: 280
Heading: 304 (-pi to pi, is oposite of char heading, unless in first person mode)
elevation 308 (-pi to pi)
X?: 416
Calculated Offsets (x64):
"ActorEntity": {
"Name": 48, //(68 characters)
"id": 116, //I think this is correct
"x": 176,
"z": 180,
"y": 184,
???: 188,
"Heading": 192, //(-pi to pi)
"Elevation": 376, //(-pi to pi, 0 while standing) (NOT IN ORIGINAL x86 DATA)
"CurrentPose": 434, //(NOT IN ORIGINAL x86 DATA) (might be "ActionStatus")
"HPCurrent": 5344,
"HPMax": 5348,
"MPCurrent": 5352,
"MPMax": 5356,
"TPCurrent": 5360, //Short, not int
"GPCurrent": 5364, //Short, not int
"GPMax": 5368, //Short, not int
"CPCurrent": 5372, //Short, not int
"CPMax": 5376, //Short, not int
I am the author of all that stuff yup :) I made a new github organization for it; I can't decide yet if I'm moving all the repo's over there.
Thank you!
I have some of the offsets as well; but I've been bogged down with RL work lately. I have them on my windows PC but I found a nice little way to set them up.
I'll paste them here later tonight so everyone can see as well.
You might want to wait since Patch 3.5 will be released in about 9 days which will mess around with the signatures anyways. I'd really like to see the 64bit signatures for the next patch though if you happen to find the time - it is quite sad to go back to D9 and 32bit to use 3rd party tools 😢
Signatures are different from offsets. You'll note that X, Y, and Z are all still 4 bytes and are all still next to each other. While they may change some structures, the most likely way is to add and remove things. Blocks of items may be shifted up and down, but it's not that hard to do.
@EmperorArthur Today I have experimented a bit since I want to draw custom nameplates and project them as if they were part of the 3d world thus I need data about the camera. For compatibility I started working on 32bit. In the static memory at ffxiv.exe+0x1081D30
I have the pointer to the camera struct. Thus your own pointers, especially this one, is off by a good amount. The offsets I saved thus far are the following:
Offset | Type | Description |
---|---|---|
+0x40 |
float |
[UNSURE] X value of world coordinates of the camera. |
+0x44 |
float |
[UNSURE] Z value of world coordinates of the camera. |
+0x48 |
float |
[UNSURE] Y value of world coordinates of the camera. |
+0x100 |
Int8 |
Boolean value indicating whether free camera mode (not first person mode) is enabled. |
+0x108 |
float |
Distance of the camera. Value between 1.5 and 20 in steps of 0.25. |
+0x124 |
float |
Azimuth of the camera. Can confirm that zero is north and facing south. |
+0x128 |
float |
Elevation of the camera. Above the ground it is negative and caps at -pi/2 + epsilon. Below the ground it caps exactly at +pi/4. |