Skip to content

How to find opcodes

srkizer edited this page Jan 5, 2022 · 6 revisions

Step 1

  • Open XivAlexander control window.
    • If you closed it before and can't find it, try looking for a cog(gear) icon on your taskbar's right/bottom side.
  • Turn off Network > Latency and Timing Helper > Enable.
  • Turn on Network > Use IPC Type Finder.
  • Turn off Network > Log All IPC Message.
  • Turn off Network > Use Effect Application Delay Logger.
  • Turn on File > Show Logging Window.
  • Open opcode editor using Configure > Edit Opcode Configuration.

Step 2

Reference image

Change all values to "", except Server_IpRange and Server_PortRange.

Step 3

Find the values.

  • Clear the log using File > Clear in Log window before using an action.
  • Use a few number of actions before you start working on it, as it's easier to identify the right opcodes when sequence number is not too low. Every time you use an action, sequence number will go up by one.

C2S_ActionRequest and C2S_ActionRequestGroundTargeted

  • Use any action.
  • Check out the lines with C2S_ActionRequest/GroundTargeted.
  • Find the one with actionId that isn't 0 or 1, which stays the same if you use the same action, and not if you use a different action.
    • 08ce is Death Blossom, and is the correct one in this case.
  • Find the one with sequence number that increases if you use actions subsequently.
    • 0007 is the correct one in this case.
  • Since you used only one action, only one attack request message would have been generated.
  • C2S_ActionRequest/GroundTargeted(0x02a2) is the correct opcode to refer to.
  • Whether it's C2S_ActionRequest or C2S_ActionRequestGroundTargeted depends on which action you've used.
    • Ground targeted actions like Sacred Soil, Shukuchi, and Hissatsu: Soten will generate C2S_ActionRequestGroundTargeted.
    • Otherwise, it will generate C2S_ActionRequest.

Example outputs

2021-06-04 23:57:59.985	IpcTypeFinder	0000000000000E88: C2S_ActionRequest/GroundTargeted(0x0337): actionId=0000 sequence=0000
2021-06-04 23:57:59.985	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:57:59 Type=0014 SubType=0337 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

2021-06-04 23:57:59.985	IpcTypeFinder	0000000000000E88: C2S_ActionRequest/GroundTargeted(0x0337): actionId=0000 sequence=0001
2021-06-04 23:57:59.985	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:57:59 Type=0014 SubType=0337 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

2021-06-04 23:58:01.402	IpcTypeFinder	0000000000000E88: C2S_ActionRequest/GroundTargeted(0x0337): actionId=0001 sequence=0001
2021-06-04 23:58:01.402	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:58:01 Type=0014 SubType=0337 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

2021-06-04 23:58:03.221	IpcTypeFinder	0000000000000E88: C2S_ActionRequest/GroundTargeted(0x02a2): actionId=08ce sequence=0007
2021-06-04 23:58:03.221	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:58:03 Type=0014 SubType=02a2 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

S2C_ActorControlSelf

  • Use any action with cooldown, and possibly make it to rollback.
    • Spamming NIN Ten(4975) is the best way to cause the game to rollback the action.
  • Check out the lines with S2C_ActorControlSelf.
  • Find the one with actionId that you've just used.
    • 08ce and 4975 are correct.
  • If it's Cooldown, see if the duration matches the cooldown of the action you've just used.
    • 246 is correct. (2.46 seconds)
  • If it's Rollback, see if sourceSequence matches the sequence from C2S_ActionRequest/GroundTargeted.
  • S2C_ActorControlSelf(0x035a) is the correct opcode to refer to.

Example Outputs

2021-06-04 23:58:03.421	IpcTypeFinder	0000000000000E88: S2C_ActorControlSelf(0x035a): Cooldown: actionId=08ce duration=246
2021-06-04 23:58:03.421	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:58:03 Type=0014 SubType=035a Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

2021-06-05 00:16:55.848	IpcTypeFinder	0000000000000E88: S2C_ActorControlSelf(0x035a): Rollback: actionId=4975 sourceSequence=0015
2021-06-05 00:16:55.848	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-05 00:16:56 Type=0014 SubType=035a Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

S2C_ActorCast

  • Use any action that is a cast.
  • Check out the lines with S2C_ActorCast.
  • Find the one with corresponding time.
    • 1.459 is correct.
  • Find the one with actionId that you've just used.
    • 0078 (Cure) is correct.
  • S2C_ActorCast(0x00a9) is the correct opcode to refer to.

Example Outputs

2021-06-05 00:21:02.529	IpcTypeFinder	0000000000000E88: S2C_ActorCast(0x00a9): actionId=0078 time=1.459 target=********
2021-06-05 00:21:02.529	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-05 00:21:02 Type=0014 SubType=00a9 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

2021-06-04 23:58:03.421	IpcTypeFinder	0000000000000E88: S2C_ActorCast(0x035a): actionId=0011 time=0.000 target=000000f6
2021-06-04 23:58:03.421	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:58:03 Type=0014 SubType=035a Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

2021-06-04 23:58:04.488	IpcTypeFinder	0000000000000E88: S2C_ActorCast(0x035a): actionId=0018 time=0.000 target=00000000
2021-06-04 23:58:04.488	IpcTypeFinder	[IpcTypeFinder] Length=64 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:58:04 Type=0014 SubType=035a Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

S2C_ActionEffect01 ~ S2C_ActionEffect32

  • Use any action.
  • Anything that prints longer binary dump is probably a S2C_ActionEffect material.
  • If you hit 1 target, then the response is about S2C_ActionEffect01 with length 9c.
  • If you either miss or hit 2 to 8 targets, then the response is about S2C_ActionEffect08 with length 29c.
  • If you hit 9 to 16 targets, then the response is about S2C_ActionEffect16 with length 4dc.
  • If you hit 17 to 24 targets, then the response is about S2C_ActionEffect24 with length 71c.
  • If you hit 25 to 32 targets, then the response is about S2C_ActionEffect32 with length 95c.
  • If you hit more than that, the game will process only 32 targets, and leave other adds alone.
    • Unsynced Sastasha is the best place to mass pull.
  • S2C_AttackResponse01(0x0283) and S2C_ActionEffect08(0x025b) are the correct opcodes to refer to.

Example Output (1 target)

2021-06-05 00:24:03.895	IpcTypeFinder	0000000000000E88: S2C_AttackResponse01(0x0283) length=9c actionId=0078 sequence=0019 wait=0.100
2021-06-05 00:24:03.895	IpcTypeFinder	[IpcTypeFinder] Length=156 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-05 00:24:04 Type=0014 SubType=0283 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

Example Outputs (8 targets)

2021-06-04 23:58:03.421	IpcTypeFinder	0000000000000E88: S2C_ActionEffect08(0x025b) length=29c actionId=08ce sequence=0007 wait=0.600
2021-06-04 23:58:03.421	IpcTypeFinder	[IpcTypeFinder] Length=668 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-04 23:58:03 Type=0014 SubType=025b Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

S2C_ActorControl

  • Use a casted action, and cancel it by moving.
  • Find the one with actionId that you've just used.
    • 0078 (Cure) is correct.
  • S2C_ActorControl(0x01c8) is the correct opcode to refer to.

Example Output

2021-06-05 00:27:49.032	IpcTypeFinder	0000000000000E88: S2C_ActorControl(0x01c8): CancelCast: actionId=0038
2021-06-05 00:27:49.032	IpcTypeFinder	[IpcTypeFinder] Length=56 Source=******** Current=******** Type=3
	FFXIVMessage 2021-06-05 00:27:49 Type=0014 SubType=01c8 Unknown1=0000 SeqId=022c Unknown2=00000000
		** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **  ** ** ** **

S2C_EffectResult5, S2C_EffectResult6 and S2C_EffectResult6Basic

S2C_EffectResult5 is applicable for FFXIV Version 5.xx, and S2C_EffectResult6 and S2C_EffectResult6Basic are for 6.xx.

  • Use an action that will grant you a buff, like Protect, Bloodbath, Rampart, or Temperance.
  • If HP, MP, and duration in buff list looks correct, then it's probably it.
  • S2C_EffectResult5(0x01e9) is the correct opcode to refer to.

Example Output

2021-06-05 00:30:51.449	IpcTypeFinder	0000000000000E88: S2C_EffectResult5(0x01e9): relatedActionSequence=00001fe4 actorId=******** HP=70654/70654 MP=10000 shield=0
	effectId=0750 duration=20.000000 sourceActorId=********
	effectId=0751 duration=5.000000 sourceActorId=********