/// <summary> /// 暂存当前标点 /// </summary> public void SaveWaymark() { tempMarks = new WayMarks(); Waymark ReadWaymark(IntPtr addr, WaymarkID id) => new Waymark { X = Memory.Read <float>(addr), Y = Memory.Read <float>(addr + 0x4), Z = Memory.Read <float>(addr + 0x8), Active = Memory.Read <byte>(addr + 0x1C) == 1, ID = id }; try { tempMarks.A = ReadWaymark(Offsets.Waymarks + 0x00, WaymarkID.A); tempMarks.B = ReadWaymark(Offsets.Waymarks + 0x20, WaymarkID.B); tempMarks.C = ReadWaymark(Offsets.Waymarks + 0x40, WaymarkID.C); tempMarks.D = ReadWaymark(Offsets.Waymarks + 0x60, WaymarkID.D); tempMarks.One = ReadWaymark(Offsets.Waymarks + 0x80, WaymarkID.One); tempMarks.Two = ReadWaymark(Offsets.Waymarks + 0xA0, WaymarkID.Two); tempMarks.Three = ReadWaymark(Offsets.Waymarks + 0xC0, WaymarkID.Three); tempMarks.Four = ReadWaymark(Offsets.Waymarks + 0xE0, WaymarkID.Four); PluginUI.Log("暂存当前标点"); } catch (Exception ex) { PluginUI.Log("保存标记错误:" + ex.Message); } }
/// <summary> /// 在游戏进程中进行场地标点 /// </summary> /// <param name="waymarks">标点合集对象</param> private void DoWaymarks(WayMarks waymarks) { WriteWaymark(waymarks.A, 0); WriteWaymark(waymarks.B, 1); WriteWaymark(waymarks.C, 2); WriteWaymark(waymarks.D, 3); WriteWaymark(waymarks.One, 4); WriteWaymark(waymarks.Two, 5); WriteWaymark(waymarks.Three, 6); WriteWaymark(waymarks.Four, 7); }