public GameResourceManagement(DalamudPluginInterface pluginInterface)
        {
            var scanner = pluginInterface.TargetModuleScanner;

            var loadPlayerResourcesAddress =
                scanner.ScanText(
                    "E8 ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? BA ?? ?? ?? ?? 41 B8 ?? ?? ?? ?? 48 8B 48 30 48 8B 01 FF 50 10 48 85 C0 74 0A ");
            var unloadPlayerResourcesAddress =
                scanner.ScanText("41 55 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 4C 8B E9 48 83 C1 08");
            var loadCharacterResourcesAddress  = scanner.ScanText("E8 ?? ?? ?? 00 48 8D 8E ?? ?? 00 00 E8 ?? ?? ?? 00 33 D2");
            var unloadCharacterResourceAddress = scanner.ScanText("E8 ?? ?? ?? FF 4C 89 37 48 83 C7 08 48 83 ED 01 75 ?? 48 8B CB");

            _playerResourceManagerAddress    = scanner.GetStaticAddressFromSig("0F 44 FE 48 8B 0D ?? ?? ?? ?? 48 85 C9 74 05");
            _characterResourceManagerAddress =
                scanner.GetStaticAddressFromSig("48 8B 0D ?? ?? ?? ?? E8 ?? ?? ?? 00 48 8D 8E ?? ?? 00 00 E8 ?? ?? ?? 00 33 D2");

            LoadPlayerResources     = Marshal.GetDelegateForFunctionPointer <LoadPlayerResourcesPrototype>(loadPlayerResourcesAddress);
            UnloadPlayerResources   = Marshal.GetDelegateForFunctionPointer <UnloadPlayerResourcesPrototype>(unloadPlayerResourcesAddress);
            LoadCharacterResources  = Marshal.GetDelegateForFunctionPointer <LoadCharacterResourcesPrototype>(loadCharacterResourcesAddress);
            UnloadCharacterResource =
                Marshal.GetDelegateForFunctionPointer <UnloadCharacterResourcePrototype>(unloadCharacterResourceAddress);
        }
Пример #2
0
        public ResidentResources()
        {
            var module = Dalamud.SigScanner.Module.BaseAddress.ToInt64();
            var loadPlayerResourcesAddress =
                Dalamud.SigScanner.ScanText(
                    "E8 ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? BA ?? ?? ?? ?? 41 B8 ?? ?? ?? ?? 48 8B 48 30 48 8B 01 FF 50 10 48 85 C0 74 0A");

            GeneralUtil.PrintDebugAddress("LoadPlayerResources", loadPlayerResourcesAddress);

            var unloadPlayerResourcesAddress =
                Dalamud.SigScanner.ScanText(
                    "41 55 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 4C 8B E9 48 83 C1 08");

            GeneralUtil.PrintDebugAddress("UnloadPlayerResources", unloadPlayerResourcesAddress);

            var loadDataFilesAddress = Dalamud.SigScanner.ScanText("E8 ?? ?? ?? 00 48 8D 8E ?? ?? 00 00 E8 ?? ?? ?? 00 33 D2");

            GeneralUtil.PrintDebugAddress("LoadDataFiles", loadDataFilesAddress);

            var unloadCharacterResourceAddress =
                Dalamud.SigScanner.ScanText("E8 ?? ?? ?? FF 4C 89 37 48 83 C7 08 48 83 ED 01 75 ?? 48 8B CB");

            GeneralUtil.PrintDebugAddress("UnloadCharacterResource", unloadCharacterResourceAddress);

            _residentResourceManagerAddress = Dalamud.SigScanner.GetStaticAddressFromSig("0F 44 FE 48 8B 0D ?? ?? ?? ?? 48 85 C9 74 05");
            GeneralUtil.PrintDebugAddress("ResidentResourceManager", _residentResourceManagerAddress);

            _characterUtilityAddress =
                Dalamud.SigScanner.GetStaticAddressFromSig("48 8B 0D ?? ?? ?? ?? E8 ?? ?? ?? 00 48 8D 8E ?? ?? 00 00 E8 ?? ?? ?? 00 33 D2");
            GeneralUtil.PrintDebugAddress("CharacterUtility", _characterUtilityAddress);

            LoadPlayerResources     = Marshal.GetDelegateForFunctionPointer <LoadPlayerResourcesPrototype>(loadPlayerResourcesAddress);
            UnloadPlayerResources   = Marshal.GetDelegateForFunctionPointer <UnloadPlayerResourcesPrototype>(unloadPlayerResourcesAddress);
            LoadDataFiles           = Marshal.GetDelegateForFunctionPointer <LoadCharacterResourcesPrototype>(loadDataFilesAddress);
            UnloadCharacterResource =
                Marshal.GetDelegateForFunctionPointer <UnloadCharacterResourcePrototype>(unloadCharacterResourceAddress);
        }