static EnmityManager() { var pf = new PatternFinder(Core.Memory); EnmityBasePtr = pf.Find("Search 4C 8D 3D ? ? ? ? 66 90 8B 03 48 8D 0D ? ? ? ? 41 89 46 FC 45 33 C0 8B 43 04 Add 3 TraceRelative"); EnmityCountPtr = pf.Find("Search 89 05 ? ? ? ? 48 8B FA 40 38 32 76 78 Add 2 TraceRelative"); }
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); }
static EnmityManager() { var pf = new PatternFinder(Core.Memory); TargetEnmityBasePtr = pf.Find("Search 4C 8D 3D ? ? ? ? 66 90 8B 03 48 8D 0D ? ? ? ? 41 89 46 FC 45 33 C0 8B 43 04 Add 3 TraceRelative"); EnmityCountPtr = pf.Find("Search 89 05 ? ? ? ? 48 8B FA 40 38 32 76 78 Add 2 TraceRelative"); MyEnmityCountPtr = pf.Find("Search 44 39 3D ? ? ? ? 41 8B EF Add 3 TraceRelative"); MyEnmityListPtr = pf.Find("Search 48 8D 0D ? ? ? ? E8 ? ? ? ? 84 C0 74 18 8B 57 74 Add 3 TraceRelative"); }
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)); }
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); }
public static Task <IntPtr?> FindPattern(Pattern pattern, Process proc) => Task <IntPtr?> .Factory.StartNew(() => { using (var patternFinder = new PatternFinder(proc)) { var ptr = patternFinder.Find(pattern.PatternString); return(ptr); } });
private static IntPtr ParseField(FieldInfo field, PatternFinder pf) { var offset = (OffsetAttribute)Attribute.GetCustomAttributes(field, typeof(OffsetAttribute)) .FirstOrDefault(); var valcn = (OffsetValueCN)Attribute.GetCustomAttributes(field, typeof(OffsetValueCN)) .FirstOrDefault(); var valna = (OffsetValueNA)Attribute.GetCustomAttributes(field, typeof(OffsetValueNA)) .FirstOrDefault(); IntPtr results; if (Constants.Lang == Language.Chn) { if (valcn != null) { return((IntPtr)valcn.Value); } if (offset == null) { return(IntPtr.Zero); } lock (Core.Memory) { results = pf.Find(offset.PatternCN); } } else { if (valna != null) { return((IntPtr)valna.Value); } if (offset == null) { return(IntPtr.Zero); } lock (Core.Memory) { results = pf.Find(offset.Pattern); } } Logger.Info("[OffsetManager][{0:,27}] {1}", field.Name, results.ToString("X")); return(results); }
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()); }
private static void InitializeValue(ref IntPtr value, string name, string pattern, int offset = 0) { PatternFinder patternFinder = new PatternFinder(Core.Memory); try { value = patternFinder.Find(pattern) + offset; LogHelper.Instance.Log($"[Offset] Found {name} at {value.ToInt64():X}."); } catch (Exception e) { LogHelper.Instance.Log($"[Offset] {name} not found. "); } }
public async Task testMine() { var patternFinder = new PatternFinder(Core.Memory); IntPtr AnimationLocked = patternFinder.Find("48 8D 0D ?? ?? ?? ?? BA ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 8B ?? ?? ?? ?? ?? 45 33 C9 44 8B C7 89 BB ?? ?? ?? ?? Add 3 TraceRelative"); var GatherLock = Core.Memory.Read <uint>(AnimationLocked + 0x2A); Log("in Test Gather"); if (GatheringManager.WindowOpen) { GatheringItem items = GatheringManager.GatheringWindowItems.FirstOrDefault(i => i.IsFilled && i.CanGather); if (Core.Me.CurrentGP >= 500) { await Coroutine.Wait(5000, () => ActionManager.CanCast(241, Core.Me)); ActionManager.DoAction(241, Core.Me); await Coroutine.Sleep(2500); } /* * if (Core.Me.CurrentGP >= 250) * { * await Coroutine.Wait(5000, () => ActionManager.CanCast(4587, Core.Me)); * ActionManager.DoAction(4587, Core.Me); * await Coroutine.Sleep(2500); * } */ Log($"Gathering: {items}"); while (GatheringManager.SwingsRemaining > 0 && GatheringManager.WindowOpen) { if (Core.Me.CurrentGP >= 100) { await Coroutine.Wait(5000, () => ActionManager.CanCast(272, Core.Me)); ActionManager.DoAction(272, Core.Me); await Coroutine.Sleep(2500); } await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) == 0); items?.GatherItem(); await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) != 0); await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) == 0); } } }
public async Task testGather() { var patternFinder = new PatternFinder(Core.Memory); IntPtr AnimationLocked = patternFinder.Find("48 8D 0D ?? ?? ?? ?? BA ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 8B ?? ?? ?? ?? ?? 45 33 C9 44 8B C7 89 BB ?? ?? ?? ?? Add 3 TraceRelative"); var GatherLock = Core.Memory.Read <uint>(AnimationLocked + 0x2A); Log("in Test Gather"); if (GatheringManager.WindowOpen) { GatheringItem items = GatheringManager.GatheringWindowItems.FirstOrDefault(i => i.IsFilled && i.CanGather); Log($"Gathering: {items}"); while (GatheringManager.SwingsRemaining > 0) { items.GatherItem(); await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) != 0); await Coroutine.Wait(20000, () => Core.Memory.Read <uint>(AnimationLocked + 0x2A) == 0); } } }
private static IntPtr ParseField(FieldInfo field, PatternFinder pf) { var offset = (OffsetAttribute)Attribute.GetCustomAttributes(field, typeof(OffsetAttribute)) .FirstOrDefault(); var valcn = (OffsetValueCN)Attribute.GetCustomAttributes(field, typeof(OffsetValueCN)) .FirstOrDefault(); var valna = (OffsetValueNA)Attribute.GetCustomAttributes(field, typeof(OffsetValueNA)) .FirstOrDefault(); var result = IntPtr.Zero; var lang = (Language)typeof(DataManager).GetFields(BindingFlags.Static | BindingFlags.NonPublic) .First(i => i.FieldType == typeof(Language)).GetValue(null); if (lang == Language.Chn) { if (valcn != null) { return((IntPtr)valcn.Value); } if (offset == null) { return(IntPtr.Zero); } //var b1 = true; try { result = pf.Find(offset.PatternCN); } catch (Exception e) { } } else { if (valna != null) { return((IntPtr)valna.Value); } if (offset == null) { return(IntPtr.Zero); } try { result = pf.Find(offset.PatternCN); } catch (Exception e) { } } if (result == IntPtr.Zero) { if (field.DeclaringType != null && field.DeclaringType.IsNested) { Log($"[{field.DeclaringType.DeclaringType.Name}:{field.Name:,27}] Not Found"); } else { Log($"[{field.DeclaringType.Name}:{field.Name:,27}] Not Found"); } } if (!_debug) { return(result); } if (offset != null) { if (field.DeclaringType != null && field.DeclaringType.IsNested && field.FieldType != typeof(int)) { sb.AppendLine($"{field.DeclaringType.DeclaringType.Name}_{field.Name}, {offset.Pattern}"); //patterns.Add($"{field.DeclaringType.DeclaringType.Name}_{field.Name}", offset.Pattern); } else if (field.FieldType != typeof(int)) { sb.AppendLine($"{field.Name}, {offset.Pattern}"); //patterns.Add($"{field.Name}", offset.Pattern); } } if (valna != null) { sb.AppendLine($"{field.DeclaringType.Name},{field.Name},{valna}"); } if (field.DeclaringType != null && field.DeclaringType.IsNested) { Log($"[{field.DeclaringType.DeclaringType.Name}:{field.Name:,27}] {result.ToInt64():X}"); } else { Log($"[{field.DeclaringType.Name}:{field.Name:,27}] {result.ToInt64():X}"); } return(result); }