Offsets() { using (Core.Memory.AcquireFrame()) { InitializeValue(ref AgentMvpVTable, nameof(AgentMvpVTable), "48 8D 05 ? ? ? ? 48 89 03 33 C0 48 89 43 28 89 43 30 48 8B C3 48 83 C4 ? 5B C3 CC CC CC CC CC CC 40 53 Add 3 TraceRelative"); InitializeValue(ref AgentNotificationVTable, nameof(AgentNotificationVTable), "48 8D 05 ? ? ? ? 48 8B D9 48 89 01 E8 ? ? ? ? 48 8B CB E8 ? ? ? ? 48 8B CB 48 83 C4 ? 5B E9 ? ? ? ? CC CC CC CC Add 3 TraceRelative"); InitializeValue(ref AnimationLockTimer, nameof(AnimationLockTimer), "48 8D 0D ? ? ? ? E8 ? ? ? ? 8B F8 8B CF Add 3 TraceRelative Add 8"); InitializeValue(ref MarkingFunc, nameof(MarkingFunc), "48 89 5C 24 10 48 89 6C 24 18 57 48 83 EC ? 8D 42 FF"); InitializeValue(ref MarkingParam1, nameof(MarkingParam1), "48 8D 0D ? ? ? ? E8 ? ? ? ? 84 C0 74 ? 45 32 C9 Add 3 TraceRelative"); InitializeValue(ref GroundSpeedWriteFunc, nameof(GroundSpeedWriteFunc), "F3 0F 11 73 44 0F 28 74 24 40"); InitializeValue(ref CombatReachWriteFunc, nameof(CombatReachWriteFunc), "F3 0F 10 83 C0 00 00 00 48 83 C4 ?"); InitializeValue(ref GcdWriteFunc, nameof(GcdWriteFunc), "F3 0F 11 70 0C 0F 28 74 24 20 48 83 C4 ?"); InitializeValue(ref CurrentSpellTimeFunc, nameof(CurrentSpellTimeFunc), "F3 0F 11 05 ? ? ? ? 41 F6 46 36 ? 75 ?"); InitializeValue(ref CurrentSpellTimePtr, nameof(CurrentSpellTimePtr), "F3 0F 11 05 ? ? ? ? 41 F6 46 36 ? 75 ? Add 4 TraceRelative"); InitializeValue(ref MySpellCastTimeWriteFunc, nameof(MySpellCastTimeWriteFunc), "F3 0F 11 77 38 48 8B 5C 24 40"); InitializeValue(ref Conditions, nameof(Conditions), "48 8D 0D ? ? ? ? 45 33 C0 41 8D 51 69 Add 3 TraceRelative"); InitializeValue(ref KnockbackFunc, nameof(KnockbackFunc), "E8 ? ? ? ? 48 8B 9C 24 A0 00 00 00 4C 8D 9C 24 90 00 00 00"); InitializeValue(ref LootFunc, nameof(LootFunc), "E8 ? ? ? ? EB 4A 48 8D 4F 10 Add 1 TraceRelative"); InitializeValue(ref LootsAddr, nameof(LootsAddr), "48 8D 0D ? ? ? ? E8 ? ? ? ? 89 44 24 60 Add 3 TraceRelative"); InitializeValue(ref TraderTradeStage, nameof(TraderTradeStage), "83 3D ? ? ? ? ? 7F ? Add 2 TraceRelative Add 5"); InitializeValue(ref TargetManager, nameof(TargetManager), "48 8B 05 ?? ?? ?? ?? 48 8D 0D ?? ?? ?? ?? FF 50 ?? 48 85 DB Add 3 TraceRelative"); InitializeValue(ref AnimationSpeedWriteFunc, nameof(AnimationSpeedWriteFunc), "F3 0F ? ? ? ? ? ? ? 80 89 D2 01 00 00"); InitializeValue(ref SkipTalk, nameof(SkipTalk), "80 B9 3A 05 00 00 ? 75 ?"); AgentNotificationId = AgentModule.FindAgentIdByVtable(AgentNotificationVTable); AgentMvpId = AgentModule.FindAgentIdByVtable(AgentMvpVTable); } }
protected override async Task <bool> RunAsync() { AtkAddonControl window = RaptureAtkUnitManager.GetWindowByName(_windowName); if (window == null) { PatternFinder patternFinder = new PatternFinder(Core.Memory); IntPtr agentVtable = patternFinder.Find(_agentOffset); int agentId = AgentModule.FindAgentIdByVtable(agentVtable); AgentModule.GetAgentInterfaceById(agentId).Toggle(); await Coroutine.Wait(5000, () => RaptureAtkUnitManager.GetWindowByName(_windowName) != null); window = RaptureAtkUnitManager.GetWindowByName(_windowName); } if (window != null) { // Choose Dungeon window.SendAction(2, 3, 15, 4, (ulong)Dungeon - 1); await Coroutine.Sleep(250); // Register for Duty window.SendAction(1, 3, 14); } return(false); }
internal void Open() { if (!IsOpen) { AgentModule.ToggleAgentInterfaceById(Agent); } }
private int getAgent() { var patternFinder = new PatternFinder(Core.Memory); IntPtr agentVtable = patternFinder.Find("48 8D 05 ? ? ? ? 48 89 51 ? 48 89 01 48 8B F9 48 8D 05 ? ? ? ? 4C 89 79 ? Add 3 TraceRelative"); return(AgentModule.FindAgentIdByVtable(agentVtable)); }
public static ListModuleService Create(ListMethodType methodType) { ListModuleService listManageModule; switch (methodType) { case ListMethodType.NEWS: listManageModule = new NewsModule(); break; case ListMethodType.PRODUCT: listManageModule = new ProductModule(); break; case ListMethodType.PRODUCTKIND: listManageModule = new ProductKindModule(); break; case ListMethodType.WORKS: listManageModule = new WorksModule(); break; case ListMethodType.AGENT: listManageModule = new AgentModule(); break; default: listManageModule = null; break; } return(listManageModule); }
protected async Task <bool> InitiateLeve() { // if (Core.Player.IsMounted) // { // ActionManager.Dismount(); // await Coroutine.Wait(20000, () => !Core.Player.IsMounted); // await Coroutine.Sleep(500); // } var patternFinder = new GreyMagic.PatternFinder(Core.Memory); IntPtr SearchResult = patternFinder.Find("48 8D 05 ? ? ? ? 48 89 54 24 ? 48 89 03 Add 3 TraceRelative"); int agent = AgentModule.FindAgentIdByVtable(SearchResult); AgentModule.ToggleAgentInterfaceById(agent); await Coroutine.Sleep(500); AtkAddonControl windowByName = RaptureAtkUnitManager.GetWindowByName("JournalDetail"); while (windowByName == null) { await Coroutine.Sleep(500); windowByName = RaptureAtkUnitManager.GetWindowByName("JournalDetail"); } if (windowByName != null) { var leves = LeveManager.Leves; if (leves.Length > 0) { foreach (ff14bot.Managers.LeveWork leve in leves) { if (leve.GlobalId == LeveId && leve.Step == 1) { ulong globalId = (ulong)leve.GlobalId; windowByName.SendAction(3, 3, 0xC, 3, globalId, 3, 2); //Set Quest await Coroutine.Sleep(200); windowByName.SendAction(2, 3, 4, 4, globalId); //Initiate if (await Coroutine.Wait(10000, () => SelectYesno.IsOpen)) { SelectYesno.ClickYes(); } await Coroutine.Sleep(2000); RaptureAtkUnitManager.GetWindowByName("GuildLeveDifficulty").SendAction(1, 3, 0); await Coroutine.Sleep(3000); break; } } } windowByName = RaptureAtkUnitManager.GetWindowByName("JournalDetail"); if (windowByName != null) { AgentModule.ToggleAgentInterfaceById(agent); } } return(_done = true); }
public static void OpenRepair() { var patternFinder = new PatternFinder(Core.Memory); var off = patternFinder.Find("4C 8D 0D ? ? ? ? 45 33 C0 33 D2 48 8B C8 E8 ? ? ? ? Add 3 TraceRelative"); var func = patternFinder.Find("48 89 5C 24 ? 57 48 83 EC ? 88 51 ? 49 8B F9"); Core.Memory.CallInjected64 <IntPtr>(func, AgentModule.GetAgentInterfaceById(AgentId).Pointer, 0, 0, off); }
public ContentsInfo() : base(WindowName) { _name = WindowName; var patternFinder = new GreyMagic.PatternFinder(Core.Memory); IntPtr agentVtable = patternFinder.Find("48 8D 05 ? ? ? ? BF ? ? ? ? 48 89 03 48 8D 73 ? Add 3 TraceRelative"); _agentId = AgentModule.FindAgentIdByVtable(agentVtable); }
public async Task <bool> Open() { if (IsOpen) { return(true); } AgentModule.ToggleAgentInterfaceById(_agentId); await Coroutine.Wait(5000, () => IsOpen); return(IsOpen); }
public void RegisterAgentModule(AgentMetadata metadata, AgentModule module) { var agent = ConnectedAgents.FirstOrDefault(a => a.Metadata.AgentID.Equals(metadata.AgentID, StringComparison.OrdinalIgnoreCase)); if (agent == null) { CreateSession(metadata); agent = ConnectedAgents.FirstOrDefault(a => a.Metadata.AgentID.Equals(metadata.AgentID, StringComparison.OrdinalIgnoreCase)); } if (agent.LoadModules.Any(m => m.Name.Equals(module.Name, StringComparison.OrdinalIgnoreCase))) { agent.LoadModules.Remove(agent.LoadModules.FirstOrDefault(m => m.Name.Equals(module.Name, StringComparison.OrdinalIgnoreCase))); } agent.LoadModules.Add(module); OnAgentEvent?.Invoke(this, new AgentEvent(agent.Metadata.AgentID, AgentEventType.ModuleRegistered, module.Name)); Log.Logger.Information("AGENT {Event} {ModuleName}", AgentEventType.ModuleRegistered.ToString(), module.Name); }
public override void OnInitialize() { TreeRoot.OnStart += OnBotStart; TreeRoot.OnStop += OnBotStop; Repairing = false; var patternFinder = new PatternFinder(Core.Memory); var off = patternFinder.Find("4C 8D 0D ? ? ? ? 45 33 C0 33 D2 48 8B C8 E8 ? ? ? ? Add 3 TraceRelative"); var func = patternFinder.Find("48 89 5C 24 ? 57 48 83 EC ? 88 51 ? 49 8B F9"); var vtable = patternFinder.Find("48 8D 05 ? ? ? ? 48 89 03 B9 ? ? ? ? 4C 89 43 ? Add 3 TraceRelative"); var repairAgent = AgentModule.FindAgentIdByVtable(vtable); //Core.Memory.CallInjected64<IntPtr>(func, AgentModule.GetAgentInterfaceById(AgentId).Pointer, 0, 0, off); Log($"AgentId {AgentId} Offset {off.ToInt64():X} Func {func.ToInt64():X}"); AgentId = repairAgent; _root = new Decorator(r => Repairing, RepairBehavior); //_root = new Decorator(r => Repairing, new ActionAlwaysSucceed()); }
public static async Task RepairAll() { if (InventoryManager.EquippedItems.Any(item => item.Item != null && item.Item.RepairItemId != 0 && item.Condition < 50)) { Log("Repairing items."); await StopBusy(leaveDuty : false, stopFishing : false, dismount : false); if (!Repair.IsOpen) { var repairVTable = Offsets.RepairVTable; var repairVendor = Offsets.RepairVendor; var repairWindow = Offsets.RepairWindowOpen; var repairAgent = AgentModule.FindAgentIdByVtable(repairVTable); var AgentId = repairAgent; Log($"OPEN: AgentId {AgentId} Offset {repairVendor.ToInt64():X} Func {repairWindow.ToInt64():X}"); lock (Core.Memory.Executor.AssemblyLock) { Core.Memory.CallInjected64 <IntPtr>(repairWindow, new object[4] { ff14bot.Managers.AgentModule.GetAgentInterfaceById(AgentId).Pointer, 0, 0, repairVendor }); } await Coroutine.Wait(1500, () => Repair.IsOpen); } Repair.RepairAll(); await Coroutine.Wait(1500, () => SelectYesno.IsOpen); SelectYesno.ClickYes(); Repair.Close(); } else { Log("No items to repair."); } }
internal static void Init() { if (initDone) { return; } var q1 = from t in Assembly.GetExecutingAssembly().GetTypes() where t.Namespace != null && (t.IsClass && t.Namespace.Contains("LlamaLibrary") && t.GetNestedTypes(BindingFlags.NonPublic | BindingFlags.Static).Any(i => i.Name == "Offsets")) select t.GetNestedType("Offsets", BindingFlags.NonPublic | BindingFlags.Static); var types = typeof(Offsets).GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance).Concat(q1.SelectMany(j => j.GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))); using (var pf = new PatternFinder(Core.Memory)) Parallel.ForEach(types, type => { if (type.FieldType.IsClass) { var instance = Activator.CreateInstance(type.FieldType); foreach (var field in type.FieldType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)) { var res = ParseField(field, pf); if (field.FieldType == typeof(IntPtr)) { field.SetValue(instance, res); } else { field.SetValue(instance, (int)res); } } //set the value type.SetValue(null, instance); } else { var res = ParseField(type, pf); if (type.FieldType == typeof(IntPtr)) { type.SetValue(null, res); } else { type.SetValue(null, (int)res); } } } ); Dictionary <IntPtr, int> vtables = new Dictionary <IntPtr, int>(); for (var index = 0; index < AgentModule.AgentVtables.Count; index++) { vtables.Add(AgentModule.AgentVtables[index], index); } var q = from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsClass && t.Namespace == "LlamaLibrary.RemoteAgents" select t; foreach (var MyType in q.Where(i => typeof(IAgent).IsAssignableFrom(i))) { //Log(MyType.Name); var test = (((IAgent)Activator.CreateInstance(MyType, BindingFlags.Instance | BindingFlags.NonPublic, null, new object[] { IntPtr.Zero }, null))).RegisteredVtable; if (vtables.ContainsKey(test)) { Log($"\tTrying to add {MyType.Name} {AgentModule.TryAddAgent(vtables[test], MyType)}"); } else { Log($"\tFound one {test.ToString("X")} but no agent"); } } AddNamespacesToScriptManager(new[] { "LlamaLibrary", "LlamaLibrary.ScriptConditions", "LlamaLibrary.ScriptConditions.Helpers", "LlamaLibrary.ScriptConditions.Extras" });// ScriptManager.Init(typeof(ScriptConditions.Helpers)); initDone = true; if (_debug) { Log($"\n {sb}"); } }
public async Task <bool> PrintMasterPieceList() { Dictionary <ff14bot.Enums.ClassJobType, int> Classes = new Dictionary <ClassJobType, int> { { ClassJobType.Carpenter, 0 }, { ClassJobType.Blacksmith, 1 }, { ClassJobType.Armorer, 2 }, { ClassJobType.Goldsmith, 3 }, { ClassJobType.Leatherworker, 4 }, { ClassJobType.Weaver, 5 }, { ClassJobType.Alchemist, 6 }, { ClassJobType.Culinarian, 7 }, { ClassJobType.Miner, 8 }, { ClassJobType.Botanist, 9 }, { ClassJobType.Fisher, 10 }, }; if (!MasterPieceSupply.Instance.IsOpen) { Logging.Write($"Trying to open window"); AgentModule.ToggleAgentInterfaceById(95); await Coroutine.Wait(5000, () => RaptureAtkUnitManager.GetWindowByName("ContentsInfo") != null); await Coroutine.Sleep(500); if (RaptureAtkUnitManager.GetWindowByName("ContentsInfo") == null) { Logging.Write($"Nope failed opening timer window"); return(false); } await Coroutine.Sleep(500); RaptureAtkUnitManager.GetWindowByName("ContentsInfo").SendAction(2, 3, 0xC, 3, 6); await Coroutine.Wait(5000, () => MasterPieceSupply.Instance.IsOpen); await Coroutine.Sleep(500); } if (!MasterPieceSupply.Instance.IsOpen) { Logging.Write($"Nope failed"); return(false); } foreach (var job in Classes) { Logging.Write($"{job.Key}:"); MasterPieceSupply.Instance.ClassSelected = job.Value; await Coroutine.Sleep(1000); //Can also use MasterPieceSupply.GetTurninItems() if you don't wanted starred info foreach (var item in MasterPieceSupply.Instance.GetTurninItemsStarred()) { Logging.Write($"{item.Key} Starred: {item.Value}"); } } MasterPieceSupply.Instance.Close(); return(true); }
private async Task <bool> Run() { switch (Core.Me.Icon) { case PlayerIcon.Recruiting_Party_Members: await Coroutine.Sleep(1000); break; case PlayerIcon.Trial_Adventurer: case PlayerIcon.New_Adventurer: case PlayerIcon.None: { if (PfWindow == null) { AgentModule.ToggleAgentInterfaceById(AgentId); await Coroutine.Wait(5000, () => PfWindow != null); if (PfWindow != null) { PfWindow.SendAction(1, 3, 0xE); await Coroutine.Wait(5000, () => PfConditionWindow != null); if (PfConditionWindow != null) { var elements = ___Elements(PfConditionWindow); var data = Core.Memory.ReadString((IntPtr)elements[187].Data, Encoding.UTF8); if (data != "") { PfConditionWindow.SendAction(1, 3, 0x0); Log("Registering PF"); await Coroutine.Sleep(2000); await Coroutine.Wait(5000, () => PfConditionWindow == null); if (PfWindow != null) { Log("Closing PF window"); PfWindow.SendAction(1, 3, uint.MaxValue); } } else { Log("No Comment Setup. Quiting"); TreeRoot.Stop("No Comment Setup"); } } else { Log("Condition window didn't open"); TreeRoot.Stop("Shit Happens"); } } else { Log("PF window didn't open"); TreeRoot.Stop("Shit Happens"); } } break; } } return(true); }
//cn = 3 //64 = 2 //32 = 1 internal static AgentDeepDungeonSaveData GetSaveInterface() { return(AgentModule.GetAgentInterfaceByType <AgentDeepDungeonSaveData>()); }
public static void UsePomander(Pomander pom) { AgentModule.GetAgentInterfaceByType <AgentDeepDungeonInformation>().UsePomander(pom); Navigator.NavigationProvider.ClearStuckInfo(); // don't trigger antistuck }
public async static Task OpenRepair() { Core.Memory.CallInjected64 <IntPtr>(func, AgentModule.GetAgentInterfaceById(AgentId).Pointer, 0, 0, off); await Coroutine.Wait(5000, () => Repair.IsOpen); }
public static void UsePomander2(Pomander number) { Core.Memory.CallInjected64 <IntPtr>(Core.Memory.ImageBase + 10031088, AgentModule.GetAgentInterfaceByType <AgentDeepDungeonInformation>().Pointer, (int)number); }
public static void UsePomander(Pomander pom) { AgentModule.GetAgentInterfaceByType <AgentDeepDungeonInformation>().UsePomander(pom); }
internal static void Init() { if (initDone) { return; } var types = typeof(Offsets).GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance); Parallel.ForEach(types, type => { var pf = new PatternFinder(Core.Memory); if (type.FieldType.IsClass) { var instance = Activator.CreateInstance(type.FieldType); foreach (var field in type.FieldType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)) { var res = ParseField(field, pf); if (field.FieldType == typeof(IntPtr)) { field.SetValue(instance, res); } else { field.SetValue(instance, (int)res); } } //set the value type.SetValue(null, instance); } else { var res = ParseField(type, pf); if (type.FieldType == typeof(IntPtr)) { type.SetValue(null, res); } else { type.SetValue(null, (int)res); } } } ); bool retaineragent = AgentModule.TryAddAgent(AgentModule.FindAgentIdByVtable(Offsets.AgentRetainerAskVtable), typeof(AgentRetainerVenture)); bool retainerchar = AgentModule.TryAddAgent(AgentModule.FindAgentIdByVtable(Offsets.AgentRetainerCharacterVtable), typeof(AgentRetainerCharacter)); bool dawnAgent = AgentModule.TryAddAgent(AgentModule.FindAgentIdByVtable(Offsets.DawnVtable), typeof(AgentDawn)); bool retainerInventory = AgentModule.TryAddAgent(AgentModule.FindAgentIdByVtable(Offsets.AgentRetainerInventoryVtable), typeof(AgentRetainerInventory)); //60 bool MateriaMelding = AgentModule.TryAddAgent(AgentModule.FindAgentIdByVtable(Offsets.AgentMeldVtable), typeof(AgentMeld)); //63 bool OutOnLimb = AgentModule.TryAddAgent(AgentModule.FindAgentIdByVtable(Offsets.AgentOutOnLimbVtable), typeof(AgentOutOnLimb)); //159 Log($"Added Venture Agent: {retaineragent}"); Log($"Added RetainerChar Agent: {retainerchar}"); Log($"Added Dawn(Trust) Agent: {dawnAgent}"); Log($"Added RetainerInventory Agent: {retainerInventory}"); Log($"Added MateriaMelding Agent: {MateriaMelding}"); Log($"Added OutOnLimb Agent: {OutOnLimb} {AgentModule.FindAgentIdByVtable(Offsets.AgentOutOnLimbVtable)}"); AddNamespacesToScriptManager(new[] { "LlamaLibrary", "LlamaLibrary.ScriptConditions", "LlamaLibrary.ScriptConditions.Helpers" });// ScriptManager.Init(typeof(ScriptConditions.Helpers)); initDone = true; }
public void ToggleInstance() { AgentModule.ToggleAgentInterfaceById(Id); }
protected Agent(int id) { Id = id; AgentInterface = AgentModule.GetAgentInterfaceById(id); }