-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathPluginAddressResolver.cs
More file actions
74 lines (56 loc) · 4.31 KB
/
PluginAddressResolver.cs
File metadata and controls
74 lines (56 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using Dalamud.Game;
using Dalamud.Game.Internal;
using System;
using System.Runtime.InteropServices;
namespace JobIcons
{
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate IntPtr SetNamePlateDelegate(IntPtr addon, bool isPrefixTitle, bool displayTitle, IntPtr title, IntPtr name, IntPtr fcName, int iconID);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate IntPtr AtkResNode_SetScaleDelegate(IntPtr node, float x, float y);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate IntPtr AtkResNode_SetPositionShortDelegate(IntPtr node, short x, short y);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate IntPtr Framework_GetUIModuleDelegate(IntPtr framework);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate IntPtr UIModule_GetRaptureAtkModuleDelegate(IntPtr uiModule);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate byte GroupManager_IsObjectIDInPartyDelegate(IntPtr groupManager, uint actorId);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate byte GroupManager_IsObjectIDInAllianceDelegate(IntPtr groupManager, uint actorId);
[UnmanagedFunctionPointer(CallingConvention.ThisCall, CharSet = CharSet.Ansi)]
internal delegate IntPtr BattleCharaStore_LookupBattleCharaByObjectIDDelegate(IntPtr battleCharaStore, uint actorId);
internal sealed class PluginAddressResolver : BaseAddressResolver
{
private const string AddonNamePlate_SetNamePlateSignature = "48 89 5C 24 ?? 48 89 6C 24 ?? 56 57 41 54 41 56 41 57 48 83 EC 40 44 0F B6 E2";
internal IntPtr AddonNamePlate_SetNamePlatePtr;
private const string AtkResNode_SetScaleSignature = "8B 81 ?? ?? ?? ?? A8 01 75 ?? F3 0F 10 41 ?? 0F 2E C1 7A ?? 75 ?? F3 0F 10 41 ?? 0F 2E C2 7A ?? 74 ?? 83 C8 01 89 81 ?? ?? ?? ?? F3 0F 10 05 ?? ?? ?? ??";
internal IntPtr AtkResNode_SetScalePtr;
private const string AtkResNode_SetPositionShortSignature = "48 85 C9 74 4A 41 0F BF C0 66 0F 6E C8 0F BF C2 0F 5B C9 66 0F 6E D0";
internal IntPtr AtkResNode_SetPositionShortPtr;
private const string Framework_GetUIModuleSignature = "E8 ?? ?? ?? ?? 48 8B C8 48 8B 10 FF 92 ?? ?? ?? ?? 48 8B C8 BA ?? ?? ?? ??";
internal IntPtr Framework_GetUIModulePtr;
private const string GroupManagerSignature = "48 8D 0D ?? ?? ?? ?? 44 8B E7";
internal IntPtr GroupManagerPtr;
private const string GroupManager_IsObjectIDInPartySignature = "E8 ?? ?? ?? ?? EB B8 E8";
internal IntPtr GroupManager_IsObjectIDInPartyPtr;
private const string GroupManager_IsObjectIDInAllianceSignature = "33 C0 44 8B CA F6 81 ?? ?? ?? ?? ??";
internal IntPtr GroupManager_IsObjectIDInAlliancePtr;
private const string BattleCharaStoreSignature = "8B D0 48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 8B D8 48 85 C0 74 3A";
internal IntPtr BattleCharaStorePtr;
private const string BattleCharaStore_LookupBattleCharaByObjectIDSignature = "E8 ?? ?? ?? ?? 48 8B D8 48 85 C0 74 3A 48 8B C8";
internal IntPtr BattleCharaStore_LookupBattleCharaByObjectIDPtr;
protected override void Setup64Bit(SigScanner scanner)
{
AddonNamePlate_SetNamePlatePtr = scanner.ScanText(AddonNamePlate_SetNamePlateSignature);
AtkResNode_SetScalePtr = scanner.ScanText(AtkResNode_SetScaleSignature);
AtkResNode_SetPositionShortPtr = scanner.ScanText(AtkResNode_SetPositionShortSignature);
Framework_GetUIModulePtr = scanner.ScanText(Framework_GetUIModuleSignature);
GroupManagerPtr = scanner.GetStaticAddressFromSig(GroupManagerSignature);
GroupManager_IsObjectIDInPartyPtr = scanner.ScanText(GroupManager_IsObjectIDInPartySignature);
GroupManager_IsObjectIDInAlliancePtr = scanner.ScanText(GroupManager_IsObjectIDInAllianceSignature);
BattleCharaStorePtr = scanner.GetStaticAddressFromSig(BattleCharaStoreSignature);
BattleCharaStore_LookupBattleCharaByObjectIDPtr = scanner.ScanText(BattleCharaStore_LookupBattleCharaByObjectIDSignature);
}
}
}