public Plugin() { this.config = (Configuration)this.pluginInterface.GetPluginConfig() ?? new Configuration(); this.config.Initialize(pluginInterface); this.ui = new PluginUI(this); this.pluginInterface.UiBuilder.Draw += this.ui.Draw; this.pluginInterface.UiBuilder.OpenConfigUi += OpenSettingsMenu; this.commandManager.AddHandler( "/poal", new CommandInfo(this.OpenSettingsMenuCommand) { HelpMessage = "Opens the Oops, All Lalafells! settings menu.", ShowInHelp = true } ); var charaIsMountAddr = this.sigScanner.ScanText("40 53 48 83 EC 20 48 8B 01 48 8B D9 FF 50 18 83 F8 08 75 08"); PluginLog.Log($"Found IsMount address: {charaIsMountAddr.ToInt64():X}"); this.charaMountedHook ??= new Hook <CharacterIsMount>(charaIsMountAddr, CharacterIsMountDetour); this.charaMountedHook.Enable(); var charaInitAddr = this.sigScanner.ScanText( "48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 83 EC 30 48 8B F9 48 8B EA 48 81 C1 ?? ?? ?? ?? E8 ?? ?? ?? ??"); PluginLog.Log($"Found Initialize address: {charaInitAddr.ToInt64():X}"); this.charaInitHook ??= new Hook <CharacterInitialize>(charaInitAddr, CharacterInitializeDetour); this.charaInitHook.Enable(); var flagSlotUpdateAddr = this.sigScanner.ScanText( "48 89 5C 24 ?? 48 89 74 24 ?? 57 48 83 EC 20 8B DA 49 8B F0 48 8B F9 83 FA 0A"); PluginLog.Log($"Found FlagSlotUpdate address: {flagSlotUpdateAddr.ToInt64():X}"); this.flagSlotUpdateHook ??= new Hook <FlagSlotUpdate>(flagSlotUpdateAddr, FlagSlotUpdateDetour); this.flagSlotUpdateHook.Enable(); // Trigger an initial refresh of all players RefreshAllPlayers(); }
public void Initialize(DalamudPluginInterface pluginInterface) { this.pluginInterface = pluginInterface; this.config = (Configuration)this.pluginInterface.GetPluginConfig() ?? new Configuration(); this.config.Initialize(pluginInterface); this.ui = new PluginUI(this); this.pluginInterface.UiBuilder.OnBuildUi += this.ui.Draw; this.pluginInterface.UiBuilder.OnOpenConfigUi += OpenSettingsMenu; this.commandManager = new PluginCommandManager <Plugin>(this, this.pluginInterface); var charaMountedAddr = this.pluginInterface.TargetModuleScanner.ScanText("48 83 EC 28 48 8B 01 FF 50 18 83 F8 08 0F 94 C0"); PluginLog.Log($"Found IsMounted address: {charaMountedAddr.ToInt64():X}"); this.charaMountedHook ??= new Hook <CharacterIsMounted>(charaMountedAddr, new CharacterIsMounted(CharacterIsMountedDetour)); this.charaMountedHook.Enable(); var charaInitAddr = this.pluginInterface.TargetModuleScanner.ScanText( "48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 83 EC 30 48 8B F9 48 8B EA 48 81 C1 ?? ?? ?? ?? E8 ?? ?? ?? ??"); PluginLog.Log($"Found Initialize address: {charaInitAddr.ToInt64():X}"); this.charaInitHook ??= new Hook <CharacterInitialize>(charaInitAddr, new CharacterInitialize(CharacterInitializeDetour)); this.charaInitHook.Enable(); var flagSlotUpdateAddr = this.pluginInterface.TargetModuleScanner.ScanText( "48 89 5C 24 ?? 48 89 74 24 ?? 57 48 83 EC 20 8B DA 49 8B F0 48 8B F9 83 FA 0A"); PluginLog.Log($"Found FlagSlotUpdate address: {flagSlotUpdateAddr.ToInt64():X}"); this.flagSlotUpdateHook ??= new Hook <FlagSlotUpdate>(flagSlotUpdateAddr, new FlagSlotUpdate(FlagSlotUpdateDetour)); this.flagSlotUpdateHook.Enable(); // Trigger an initial refresh of all players RefreshAllHumanoids(); }