From c8842afcc85062180afd54d69b2cc80e58c17dd3 Mon Sep 17 00:00:00 2001 From: crazywh1t3 <32772327+crazywh1t3@users.noreply.github.com> Date: Sat, 14 Feb 2026 00:43:12 +0200 Subject: [PATCH] fixes --- pkg/memory/keybindings.go | 40 ++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/pkg/memory/keybindings.go b/pkg/memory/keybindings.go index 6082a28..7580f1f 100644 --- a/pkg/memory/keybindings.go +++ b/pkg/memory/keybindings.go @@ -12,7 +12,13 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings { blobSkills := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+gd.offset.KeyBindingsSkillsOffset, 0x500) skillsKB := [16]data.SkillBinding{} - // Skills 0-6: slots 14-20 + + // The skill blob stores 16 skill IDs contiguously at 0x1C stride. + // The key blob stores VK codes in three separate regions: + // F1-F7 at 0x118 (stride 0x14), F8 at 0x384, NUMPAD0-6 at 0x208 (stride 0x14), extra at 0x398. + // The skill blob order is: F1, F2, ..., F7, F8, NUMPAD0, ..., NUMPAD6, extra. + + // Skills 0-6: F1-F7 (key region at 0x118, stride 0x14) for i := 0; i < 7; i++ { skillsKB[i] = data.SkillBinding{ SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[i*0x1c : i*0x1c+4])), @@ -22,9 +28,19 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings { }, } } - // Skills 7-13: slots 26-32 + + // Skill 7: F8 (key at 0x384) + skillsKB[7] = data.SkillBinding{ + SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[7*0x1c : 7*0x1c+4])), + KeyBinding: data.KeyBinding{ + Key1: [2]byte{blob[0x384], blob[0x385]}, + Key2: [2]byte{blob[0x38e], blob[0x38f]}, + }, + } + + // Skills 8-14: NUMPAD0-NUMPAD6 (key region at 0x208, stride 0x14) for i := 0; i < 7; i++ { - skillIdx := i + 7 + skillIdx := i + 8 skillsKB[skillIdx] = data.SkillBinding{ SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[skillIdx*0x1c : skillIdx*0x1c+4])), KeyBinding: data.KeyBinding{ @@ -33,16 +49,14 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings { }, } } - // Skills 14-15: slots 45-46 - for i := 0; i < 2; i++ { - skillIdx := i + 14 - skillsKB[skillIdx] = data.SkillBinding{ - SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[skillIdx*0x1c : skillIdx*0x1c+4])), - KeyBinding: data.KeyBinding{ - Key1: [2]byte{blob[0x384+(i*0x14)], blob[0x385+(i*0x14)]}, - Key2: [2]byte{blob[0x38e+(i*0x14)], blob[0x38f+(i*0x14)]}, - }, - } + + // Skill 15: extra slot (key at 0x398) + skillsKB[15] = data.SkillBinding{ + SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[15*0x1c : 15*0x1c+4])), + KeyBinding: data.KeyBinding{ + Key1: [2]byte{blob[0x398], blob[0x399]}, + Key2: [2]byte{blob[0x3a2], blob[0x3a3]}, + }, } belt := [4]data.KeyBinding{}