| 新偏移地址:
 
 
 所有站內附件皆會附上安全掃描報告
 請會員查看純淨度百分比後判斷使用
 
 
 
 相關檔案須知:
 取得檔案前,請先詳細閱讀文章內容
 避免不必要錯誤與誤會發生。
 也可多參考文章討論樓層內容
 了解附件檔案相關討論資訊。
 
 
 
 
 
 
 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
 |