private bool GetPointerAddress() { if (!memory.IsValid()) { return(false); } bool success = true; bool bRIP = true; List <string> fail = new List <string>(); /// CHARMAP List <IntPtr> list = memory.SigScan(charmapSignature, 0, bRIP); if (list != null && list.Count == 1) { charmapAddress = list[0] + charmapSignatureOffset; } else { charmapAddress = IntPtr.Zero; fail.Add(nameof(charmapAddress)); success = false; } // ENMITY list = memory.SigScan(enmitySignature, 0, bRIP); if (list != null && list.Count == 1) { enmityAddress = list[0] + enmitySignatureOffset; aggroAddress = IntPtr.Add(enmityAddress, aggroEnmityOffset); } else { enmityAddress = IntPtr.Zero; aggroAddress = IntPtr.Zero; fail.Add(nameof(enmityAddress)); fail.Add(nameof(aggroAddress)); success = false; } /// TARGET list = memory.SigScan(targetSignature, 0, bRIP); if (list != null && list.Count == 1) { targetAddress = list[0] + targetSignatureOffset; } else { targetAddress = IntPtr.Zero; fail.Add(nameof(targetAddress)); success = false; } logger.Log(LogLevel.Debug, "charmapAddress: 0x{0:X}", charmapAddress.ToInt64()); logger.Log(LogLevel.Debug, "enmityAddress: 0x{0:X}", enmityAddress.ToInt64()); logger.Log(LogLevel.Debug, "targetAddress: 0x{0:X}", targetAddress.ToInt64()); Combatant c = GetSelfCombatant(); if (c != null) { logger.Log(LogLevel.Debug, "MyCharacter: '{0}' (0x{1:X})", c.Name, c.ID); } if (!success) { logger.Log(LogLevel.Error, "Failed to memory scan: {0}.", String.Join(",", fail)); } return(success); }
private bool GetPointerAddress() { if (!memory.IsValid()) { return(false); } // Don't scan too often to avoid excessive CPU load if ((DateTime.Now - lastSigScan) < TimeSpan.FromSeconds(5)) { return(false); } lastSigScan = DateTime.Now; bool success = true; bool bRIP = true; List <string> fail = new List <string>(); /// CHARMAP List <IntPtr> list = memory.SigScan(charmapSignature, 0, bRIP); if (list != null && list.Count > 0) { charmapAddress = list[0] + charmapSignatureOffset; } else { charmapAddress = IntPtr.Zero; fail.Add(nameof(charmapAddress)); success = false; } // ENMITY list = memory.SigScan(enmitySignature, 0, bRIP); if (list != null && list.Count > 0) { enmityAddress = IntPtr.Add(list[0], enmitySignatureOffset); aggroAddress = IntPtr.Add(list[0], aggroEnmityOffset); } else { enmityAddress = IntPtr.Zero; aggroAddress = IntPtr.Zero; fail.Add(nameof(enmityAddress)); fail.Add(nameof(aggroAddress)); success = false; } /// TARGET list = memory.SigScan(targetSignature, 0, bRIP); if (list != null && list.Count > 0) { targetAddress = list[0] + targetSignatureOffset; } else { targetAddress = IntPtr.Zero; fail.Add(nameof(targetAddress)); success = false; } logger.Log(LogLevel.Debug, "charmapAddress: 0x{0:X}", charmapAddress.ToInt64()); logger.Log(LogLevel.Debug, "enmityAddress: 0x{0:X}", enmityAddress.ToInt64()); logger.Log(LogLevel.Debug, "aggroAddress: 0x{0:X}", aggroAddress.ToInt64()); logger.Log(LogLevel.Debug, "targetAddress: 0x{0:X}", targetAddress.ToInt64()); Combatant c = GetSelfCombatant(); if (c != null) { logger.Log(LogLevel.Debug, "MyCharacter: '{0}' (0x{1:X})", c.Name, c.ID); } if (!success) { logger.Log(LogLevel.Error, "Failed to memory scan 5.2: {0}.", String.Join(",", fail)); } else { logger.Log(LogLevel.Info, "Found enmity memory for 5.2."); } return(success); }