diff options
Diffstat (limited to 'Plugin.cs')
| -rwxr-xr-x | Plugin.cs | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -48,6 +48,8 @@ using WorldTuningTool; // - Open Poses Menu
// @TODO:
+// - Collect armor parts logic.
+// - Map joints to parts.
// - pCamera refactor.
// - Structured tuning tool interop.
// - Attempt to document all test cases I can think of.
@@ -354,6 +356,7 @@ namespace NewCamera nint rcx = MemoryUtil.Read<nint>(0x145013950);
if (saveSlotIndex >= 0)
{
+ // MonsterHunterWorld.exe+ADC442 - imul rdx,rcx,0026CC00
nint rax = saveSlotIndex * 0x26CC00;
rax += MemoryUtil.Read<nint>(rcx + 0xA8);
return rax;
@@ -913,14 +916,19 @@ namespace NewCamera saveSlotIndex = -1;
return null;
}
+ // MonsterHunterWorld.exe+ADC42F - movsxd rcx,dword ptr [rax+00000334]
saveSlotIndex = MemoryUtil.Read<int>(guiAddr + 0x334);
+ if (saveSlotIndex == -1)
+ {
+ return null;
+ }
+ // MonsterHunterWorld.exe+1B42047 - add r8,00000740
nint offset = (sPlayer.Instance + 0x40) + (0x740 * saveSlotIndex);
- nint playerAddr = MemoryUtil.Read<nint>(offset);
- if (playerAddr != 0x1433FE588)
+ if (offset == 0x0 || MemoryUtil.Read<nint>(offset) != 0x1433FE588)
{
return null;
}
- playerAddr = MemoryUtil.Read<nint>(offset + 0x18);
+ nint playerAddr = MemoryUtil.Read<nint>(offset + 0x18);
if (playerAddr == 0x0)
{
return null;
@@ -2947,7 +2955,7 @@ namespace NewCamera chestBone1 = 0x0;
chestBone2 = 0x0;
}
- ImGui.Text($"{partName} ({fullString} @ {addr:X}):");
+ ImGui.Text($"{partName} ({baseAddr:X}, {fullString} @ {addr:X}):");
int parts = MemoryUtil.Read<int>(addr + 0x54C);
nint baseInner = MemoryUtil.Read<nint>(addr + 0xC8);
nint offset = MemoryUtil.Read<nint>(addr + 0x408);
@@ -3162,14 +3170,22 @@ namespace NewCamera nint childAddr = MemoryUtil.Read<nint>(next + 0x548);
if (childAddr != 0x0)
{
- nint childVtable = MemoryUtil.Read<nint>(childAddr);
- if (childVtable == 0x143451520)
+ if (childAddr == player.Instance)
+ {
+ // Owned by
+ }
+ if (MemoryUtil.Read<nint>(childAddr) == 0x143451520)
{
partAddr = MemoryUtil.Read<nint>(childAddr + 0x2A0);
if (partAddr != 0x0)
{
drawArmorParts(childAddr, partAddr);
}
+ childAddr = MemoryUtil.Read<nint>(childAddr + 0x998);
+ if (childAddr == player.Instance)
+ {
+ // Owned by
+ }
}
}
}
|