Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


don't do anything when hotkey is held down

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Lua Scripting
View previous topic :: View next topic  
Author Message
Snovit
How do I cheat?
Reputation: 0

Joined: 18 Jun 2024
Posts: 1

PostPosted: Tue Jun 18, 2024 4:02 am    Post subject: don't do anything when hotkey is held down Reply with quote

So I'd like to make so the script I've been editing doesn't activate when I hold down spacebar, but activates whenever I press spacebar. Do keep in mind that I need to be able to press the hotkey to activate the script sometimes straight away after activating it, so no common wait function would be able to work, I'm guessing.


Code:
[ENABLE]
AOBScanModule(WorldChrManFinder,eldenring.exe,48 8B FA 0F 11 41 70 48 8B 05)
AOBScanModule(OnAttack,eldenring.exe,45 0F B6 CE 4C 8B C3 48 8B D6 48 8B CF E8)
alloc(OnAttackHook,4096)
label(goback)
label(ReflectAttack)
registersymbol(ReflectAttack)
OnAttackHook:
mov rdx,WorldChrManFinder+A
mov eax,[rdx]
cdqe
mov rdx,[rdx+rax+4]
cmp rdx,10000
jl goback
mov rdx,[rdx+1E508]
cmp rdx,[rdi+8]
jne goback
cmp byte ptr[ReflectAttack],0
je @f
mov rdx,OnAttack+E
mov eax,[rdx]
cdqe
lea rax,[rdx+rax+4]
movzx r9d,r14l
mov r8,rbx
mov rdx,rsi
mov r14,[rdi+8]
mov [rdi+8],rdx
mov rcx,rdi
call rax
mov [rdi+8],r14
@@:
jmp OnAttack+12
goback:
movzx r9d,r14l
mov r8,rbx
mov rdx,rsi
mov rcx,rdi
jmp OnAttack+D
ReflectAttack:
db 0
OnAttack:
mov rax,OnAttackHook
jmp rax

{$lua}
if syntaxcheck then return end
-- CE 6.7 provides the memory record as memrec
-- if the user isn't running CE >= 6.7 or the name changes at some point
-- this is an alternative, though it depends on the user not changing the name
-- using the ID is a little more reliable but you have to open the CT to find it
-- or use the extra memrec info lua extension found on the CE forums
local memrec = memrec or getAddressList().getMemoryRecordByDescription("Script Name")

local timer = createTimer()
timer.Interval = 5 * 1000 -- 1000 milliseconds per second
timer.OnTimer = function(theTimerCallingThisFunction)
  memrec.Active = false -- deactivate the script
  timer.destroy() -- destroy the timer so it doesn't keep running
end
[DISABLE]
OnAttack:
db 45 0F B6 CE 4C 8B C3 48 8B D6 48 8B CF E8
unregistersymbol(ReflectAttack)
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Tue Jun 18, 2024 11:45 am    Post subject: Reply with quote

Code:
function onKeyRelease(f, key)
  local wasPressed = false

  local t = createTimer()
  t.Interval = 100
  t.OnTimer = function(t)
    if isKeyPressed(key) then
      wasPressed = true
    elseif wasPressed then
      wasPressed = false
      f(t)
    end
  end

  return t
end

onKeyRelease(function(t) print'space released!'; t.destroy() end, VK_SPACE)

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Lua Scripting All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites