Skip to content

Update data.yml #1412

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 6 commits into from
Closed

Update data.yml #1412

wants to merge 6 commits into from

Conversation

SakuraFutaba
Copy link
Contributor

functions related to ProcessPacket

@SakuraFutaba
Copy link
Contributor Author

SakuraFutaba commented Apr 29, 2025

Additionally, I found that the function ProcessPacketNpcYell calls g_Client::Game::UI::GoldSaucerYell_Instance.

__int64 __fastcall ProcessPacketNpcYell(__int64 *packet)
{
  int message; // r8d
  int u8; // r9d
  __int64 sourceID; // rdx
  __int128 u10; // [rsp+30h] [rbp-28h] BYREF

  message = *((unsigned __int16 *)packet + 6);  // 0xC
  u8 = *((_DWORD *)packet + 2);                 // 0x8
  sourceID = *packet;                           // 0x0
  u10 = *((_OWORD *)packet + 1);                // 0x10
  return sub_1409D4DA0((unsigned int)&g_Client::Game::UI::GoldSaucerYell_Instance, sourceID, message, u8, (__int64)&u10);
}

Maybe GoldSaucerYell.cs should be renamed to NpcYell.

Copy link
Contributor

@Haselnussbomber Haselnussbomber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you have a look at those 2 addresses again?

ida/data.yml Outdated
0x140A39D10: ProcessPacketEquipDisplayFlags
0x140A39DE0: ProcessPacketCompletedAchievements
0x140A39E30: ProcessPacketLandSetInitialize
0x140A3B4D0: ProcessPacketDailyQuests
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This address resolves to something GcArmyExpedition (Squadron) related.
Couldn't find anything matching its name up to 10 versions back.

Copy link
Contributor Author

@SakuraFutaba SakuraFutaba May 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0x140A3B4D0: ProcessPacketGcArmyExpeditionMissionResult
I have renamed the function. It is triggered by interacting with the Squadron Sergeant after completing a Squadron mission.

ida/data.yml Outdated
0x140A39B90: ProcessPacketRSVData
0x140A39BB0: ProcessPacketRSFData
0x140A39C10: ProcessPacketHuntingLogEntry
0x140A39C50: ProcessPacketNPCYell
0x140A39D10: ProcessPacketEquipDisplayFlags
0x140A39DE0: ProcessPacketCompletedAchievements
0x140A39E30: ProcessPacketLandSetInitialize
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This address resolves to something Achievement related.
It seems to be matching an address in 7.2hf1. Here the correct address for 7.21:

Suggested change
0x140A39E30: ProcessPacketLandSetInitialize
0x140A3A510: ProcessPacketLandSetInitialize

Copy link
Contributor

@Haselnussbomber Haselnussbomber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have some more comments after looking at those functions, but I'd like to make clear, that:
1) I'm not a maintainer - just someone who contributes a lot and looks at things.
2) I didn't test any of these addresses, so I can only guess as to what they do based on static analysis.

ida/data.yml Outdated
0x140A39E10: ProcessPacketAchievementNearCompletion
0x140A39E30: ProcessPacketAchievementMergeBitmask
0x140A3A510: ProcessPacketLandSetInitialize
0x140A3B450: ProcessPacketGcArmyExpeditionInfo
Copy link
Contributor

@Haselnussbomber Haselnussbomber May 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This updates the GcArmyData.Members and the agents/addons GcArmyMemberList, and GcArmyMenberProfile (that's SE's typo, not ours).

ida/data.yml Outdated
0x140A39E30: ProcessPacketAchievementMergeBitmask
0x140A3A510: ProcessPacketLandSetInitialize
0x140A3B450: ProcessPacketGcArmyExpeditionInfo
0x140A3B490: ProcessPacketGcArmyExpeditionInfo2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to update progress, stats and available expeditions in GcArmyData.

ida/data.yml Outdated
0x140A3B510: ProcessPacketGcArmyExpeditionEnlistment
0x140A3B610: ProcessPacketLandSetMap
0x140A3B650: ProcessPacketMissionStart
0x140A3B710: ProcessPacketGcArmyExpeditionDailyQuestRepeatFlags
0x140A3B710: ProcessPacketGcArmyExpeditionMissionRepeatFlags
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has nothing to do with Expeditions or DailyQuests. It has something to do with ENpcs, but I don't know in what way.

ida/data.yml Outdated
@@ -1041,11 +1041,20 @@ classes:
0x140A3DBF0: ctor
0x140A3E6A0: Finalizer
0x140A3E740: Initialize
0x140A3ED50: ProcessPacketInventoryTransaction
0x140A3F110: ProcessPacketMarketBoardInfo
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ida/data.yml Outdated
0x140A3BDF0: ProcessPacketMount
0x140A3C5A0: ProcessPacketPrepareZoning
0x140A3C600: ProcessPacketFall
0x140A3C660: ProcessPacketMSQTrackerComplete
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "MSQTracker" is called ScenarioTree. At the very end, it also seems to save some value from the ScenarioTree sheet (column Unknown0) into an MsqProgress config option (under certain conditions). I didn't even know that's a thing. 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your review!
By the way, I noticed that some of these functions eventually call
Component::Exd::ExdModule_GetRowBySheetIndexAndRowId(*(_QWORD *)(g_Client::System::Framework::Framework_InstancePointer2 + 11072), 612i64, a1);
Is there a way to find out what the sheet name is for a given SheetIndex? (In this case 612)

Copy link
Contributor

@Haselnussbomber Haselnussbomber May 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, sheet indexes are in a the sqpack 0a0000 inside the exd/root.exl file (basically a csv file).
612 is ScenarioTree

You can extract it with https://github.com/NotNite/Alpha/ for example.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot! I can now successfully read the exd/root.exl file with FFXIV Explorer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants