新偏移地址:
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
Ctrl + j 開始
ctrl + k t暫停.- #WinActivateForce
- ^j::
- shouldRun = 1
- if !setupDone
- {
- WinGet, pidn, PID, A
- pid := pidn
- WinGet, hwnds, ID, A
- Handle := hwnds
- Base := getProcessBaseAddress()
- WaterAddress := GetAddressWater(Base,0x0097E114)
- LavaAddress := GetAddressLava(Base,0x00964208)
- ChocoAddress := GetAddressChoco(Base,0x00964208)
- setupDone = 1
- }
- Loop
- {
- if shouldRun
- {
- ControlSend, , {c down}, ahk_pid %pid%
- Sleep, 86
- ControlSend, , {c up}, ahk_pid %pid%
- Sleep, 500
-
- ControlSend, , {f down}, ahk_pid %pid%
- Sleep, 86
- ControlSend, , {f up}, ahk_pid %pid%
-
- Catch := 0
- PoleCheck := 40
- While Catch = 0
- {
- If (PoleCheckN = PoleCheck)
- {
- ControlSend, , {f down}, ahk_pid %pid%
- Sleep, 86
- ControlSend, , {f up}, ahk_pid %pid%
- }
-
- CaughtWater := ReadMemory(WaterAddress)
- CaughtLava := ReadMemory(LavaAddress)
- CaughtChoco := ReadMemory(ChocoAddress)
-
- If (CaughtWater = 1 or CaughtLava = 1 or CaughtChoco = 1)
- {
- ControlSend, , {f down}, ahk_pid %pid%
- Sleep, 86
- ControlSend, , {f up}, ahk_pid %pid%
- Random, Wait, 2000, 3500
- Sleep, %Wait%
- Catch := 1
- }
- else
- {
- PoleCheckN := PoleCheckN +1
- Sleep, 1000
- }
-
- FindAndDropBoots()
- }
- }
- else
- {
- Return
- }
- }
- Return
- GetAddressWater(Base, Address)
- {
- pointerBase := base + Address
- y1 := ReadMemory(pointerBase)
- y2 := ReadMemory(y1 + 0x144)
- y3 := ReadMemory(y2 + 0xe4)
- Return WaterAddress := (y3 + 0x70)
- }
- GetAddressLava(Base, Address)
- {
- pointerBase := base + Address
- y1 := ReadMemory(pointerBase)
- y2 := ReadMemory(y1 + 0x144)
- y3 := ReadMemory(y2 + 0xe4)
- Return LavaAddress := (y3 + 0x514)
- }
- GetAddressChoco(Base, Address)
- {
- pointerBase := base + Address
- y1 := ReadMemory(pointerBase)
- y2 := ReadMemory(y1 + 0x144)
- y3 := ReadMemory(y2 + 0xe4)
- Return ChocoAddress := (y3 + 0x2c0)
- }
- getProcessBaseAddress()
- {
- Global Handle
- return DllCall( A_PtrSize = 4
- ? "GetWindowLong"
- : "GetWindowLongPtr"
- , "Ptr", Handle
- , "Int", -6
- , "Int64") ; Use Int64 to prevent negative overflow when AHK is 32 bit and target process is 64bit
- ; If DLL call fails, returned value will = 0
- }
- ReadMemory(MADDRESS)
- {
- Global pid
- VarSetCapacity(MVALUE,4,0)
- ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt")
- ;DllCall("ReadProcessMemory","UInt",ProcessHandle, "UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
- DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4)
- Loop 4
- result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
- return, result
- }
- FindAndDropBoots()
- {
- Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp
-
- While errorlevel = 0
- {
- MouseClickDrag, Left, %FoundX%, %FoundY%, 779, 412
- Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp
- }
- }
- ^k::
- shouldRun = 0
- Return
複製代碼
|