public string ReadNodeInfo(BaseHexCommentNode node, IRemoteMemoryReader reader, MemoryBuffer memory, IntPtr nodeAddress, IntPtr nodeValue) { // 1. try the direct value var info = ReadPtrInfo(nodeValue, reader); if (!string.IsNullOrEmpty(info)) { return(info); } // 2. try indirect pointer var indirectPtr = reader.ReadRemoteIntPtr(nodeValue); if (indirectPtr.MayBeValid()) { info = ReadPtrInfo(indirectPtr, reader); if (!string.IsNullOrEmpty(info)) { return($"Ptr -> {info}"); } // 3. try weak pointer var weakTempPtr = indirectPtr - IntPtr.Size; if (weakTempPtr.MayBeValid()) { var weakPtr = reader.ReadRemoteIntPtr(weakTempPtr); if (weakPtr.MayBeValid()) { info = ReadPtrInfo(weakPtr, reader); if (!string.IsNullOrEmpty(info)) { return($"WeakPtr -> {info}"); } } } } return(null); }
/// <summary> /// Used to print custom informations about a node. /// </summary> /// <param name="node">The node.</param> /// <param name="reader">The current <see cref="T:ReClassNET.Memory.IRemoteMemoryReader" />.</param> /// <param name="memory">The current <see cref="T:ReClassNET.Memory.MemoryBuffer" />.</param> /// <param name="nodeAddress">The absolute address of the node.</param> /// <param name="nodeValue">The memory value of the node as <see cref="T:System.IntPtr" />.</param> public string ReadNodeInfo(BaseHexCommentNode node, IRemoteMemoryReader reader, MemoryBuffer memory, IntPtr nodeAddress, IntPtr nodeValue) { if (nodeValue.IsNull() || _base.NameDump.Count is 0) { return(null); } dynamic uobject = null; switch (_base.Game) { case UE3PluginExt.GameType.KillingFloor2: { uobject = reader.ReadRemoteObject <KillingFloor2.UObject>(nodeValue); break; } case UE3PluginExt.GameType.RocketLeague: { uobject = reader.ReadRemoteObject <RocketLeague.UObject>(nodeValue); break; } } if (uobject.Name.Index < 0 || uobject.Name.Index >= _base.NameDump.Count) { return(null); } if (_base.NameDump.TryGetValue(uobject.Name.Index, out string name)) { return(name); } return(null); }
/// <summary>This method lets ReClass.NET print the name and the value of the node.</summary> public string ReadNodeInfo(BaseHexCommentNode node, IRemoteMemoryReader reader, MemoryBuffer memory, IntPtr nodeAddress, IntPtr nodeValue) { return($"{node.Name}@{nodeAddress.ToString("X")} => {nodeValue.ToString("X")}"); }