From fd7f7ba8a431743c8489965aec50f88c20f0bd3b Mon Sep 17 00:00:00 2001 From: elb <51070858+elobo91@users.noreply.github.com> Date: Sun, 23 Feb 2025 13:59:23 -0500 Subject: [PATCH] Pattern Scanner for missing FPS (#82) --- pkg/memory/game_reader.go | 2 +- pkg/memory/offset.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/memory/game_reader.go b/pkg/memory/game_reader.go index 1a42b00..800f2fb 100644 --- a/pkg/memory/game_reader.go +++ b/pkg/memory/game_reader.go @@ -270,7 +270,7 @@ func (gd *GameReader) LastGamePass() string { } func (gd *GameReader) FPS() int { - return int(gd.ReadUInt(gd.moduleBaseAddressPtr+0x2140DF4, 4)) + return int(gd.ReadUInt(gd.moduleBaseAddressPtr+gd.offset.FPS, Uint32)) } func (gd *GameReader) HasMerc() bool { diff --git a/pkg/memory/offset.go b/pkg/memory/offset.go index b20a517..f37259b 100644 --- a/pkg/memory/offset.go +++ b/pkg/memory/offset.go @@ -13,6 +13,7 @@ type Offset struct { RosterOffset uintptr PanelManagerContainerOffset uintptr WidgetStatesOffset uintptr + FPS uintptr } func calculateOffsets(process Process) Offset { @@ -59,6 +60,11 @@ func calculateOffsets(process Process) Offset { WidgetStatesPtr := process.ReadUInt(pattern+3, Uint32) WidgetStatesOffset := pattern - process.moduleBaseAddressPtr + 7 + uintptr(WidgetStatesPtr) + // FPS + pattern = process.FindPattern(memory, "\x8B\x1D\x00\x00\x00\x00\x48\x8D\x05\x00\x00\x00\x00\x48\x8D\x4C\x24\x40", "xx????xxx????xxxxx") + fpsOffsetPtr := uintptr(process.ReadUInt(pattern+2, Uint32)) + fpsOffset := pattern - process.moduleBaseAddressPtr + 6 + fpsOffsetPtr + return Offset{ GameData: gameDataOffset, UnitTable: unitTableOffset, @@ -68,5 +74,6 @@ func calculateOffsets(process Process) Offset { RosterOffset: rosterOffset, PanelManagerContainerOffset: panelManagerContainerOffset, WidgetStatesOffset: WidgetStatesOffset, + FPS: fpsOffset, } }