Results 1 to 15 of 50

Threaded View

  1. #1
    HaHaItsJake's Avatar
    Join Date
    Jan 2013
    Gender
    male
    Posts
    164
    Reputation
    10
    Thanks
    483

    Thumbs up Trove Fishing Bot v2

    WARNING:
    https://forums.trovegame.com/showthread.php?15338-A-reminder-about-botting

    They will be patching this this week! Once the games up-dates DON'T USE IT! Until then, you're safe.


    Thank You!: Takeon for shorting the ReadMemory codes and Lava Pointer's.

    Background botting (Don't minimize it!)


    What's been added:
    Lava Fishing
    Mutli-Accounting (Easy)
    Auto Lure Find (Reads Slot #1 for the lure amount!)

    1. Downlaod AHK if you haven't!
    2. Create a New Desktop Folder! (Folder can be named what ever you want and placed anywhere on computer)
    3. Copy the main script code into a new file that's inside the folder you just created (File can be named anything but ends with .ahk). You Can compile this code if you want.
     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    Numpad9::
        FileDelete, %A_ScriptDir%\tmp\break.txt
        FileAppend, 0, %A_ScriptDir%\tmp\break.txt
        GetWindowsHandle()
    return
    
    
    !Numpad9::
        FileDelete, %A_ScriptDir%\tmp\break.txt
        FileAppend, 1, %A_ScriptDir%\tmp\break.txt
    return
    
    
    Numpad7::
    ExitApp
    
    
    
    
    GetWindowsHandle()
    {
        Global
        AccNum := 0
        WinGet, id, list, Trove
        Loop, %id%
        {    
            AccNum := AccNum + 1
            ids := id%A_Index%
            SetWindowHandle(AccNum, ids)
        }
    }
    
    
    SetWindowHandle(AccNumF, this_id)
    {
        Global
            If (AccNumF = 1)
            {
                1Handle = %this_id%
                WinGet, pid1, PID, ahk_id %1Handle%
                pid1 := pid1
                Lure1 := GetLureAmmount(1Handle, pid1)
                FileDelete, %A_ScriptDir%\tmp\lure1.txt
                FileAppend, %Lure1%, %A_ScriptDir%\tmp\lure1.txt
                FileDelete, %A_ScriptDir%\tmp\pid1.txt
                FileAppend, %pid1%, %A_ScriptDir%\tmp\pid1.txt
                FileDelete,  %A_ScriptDir%\tmp\handle1.txt
                FileAppend, %1Handle%, %A_ScriptDir%\tmp\handle1.txt
                Run, %A_ScriptDir%\Thread1.exe
            }
            else If (AccNumF = 2)
            {
                2Handle = %this_id%
                WinGet, pid2, PID, ahk_id %2Handle%
                pid2 := pid2
                Lure2 := GetLureAmmount(2Handle, pid2)
                FileDelete, %A_ScriptDir%\tmp\lure2.txt
                FileAppend, %Lure2%, %A_ScriptDir%\tmp\lure2.txt
                FileDelete, %A_ScriptDir%\tmp\pid2.txt
                FileAppend, %pid2%, %A_ScriptDir%\tmp\pid2.txt
                FileDelete,  %A_ScriptDir%\tmp\handle2.txt
                FileAppend, %2Handle%, %A_ScriptDir%\tmp\handle2.txt
                Run, %A_ScriptDir%\Thread2.exe
            }
            else If (AccNumF = 3)
            {
                3Handle = %this_id%
                WinGet, pid3, PID, ahk_id %3Handle%
                pid3 := pid3
                Lure3 := GetLureAmmount(3Handle, pid3)
                FileDelete, %A_ScriptDir%\tmp\lure3.txt
                FileAppend, %Lure3%, %A_ScriptDir%\tmp\lure3.txt
                FileDelete, %A_ScriptDir%\tmp\pid3.txt
                FileAppend, %pid3%, %A_ScriptDir%\tmp\pid3.txt
                FileDelete,  %A_ScriptDir%\tmp\handle3.txt
                FileAppend, %3Handle%, %A_ScriptDir%\tmp\handle3.txt
                Run, %A_ScriptDir%\Thread3.exe
            }
            else If (AccNumF = 4)
            {
                4Handle = %this_id%
                WinGet, pid4, PID, ahk_id %4Handle%
                pid4 := pid4
                Lure4 := GetLureAmmount(4Handle, pid4)
                FileDelete, %A_ScriptDir%\tmp\lure4.txt
                FileAppend, %Lure4%, %A_ScriptDir%\tmp\lure4.txt
                FileDelete, %A_ScriptDir%\tmp\pid4.txt
                FileAppend, %pid4%, %A_ScriptDir%\tmp\pid4.txt
                FileDelete,  %A_ScriptDir%\tmp\handle4.txt
                FileAppend, %4Handle%, %A_ScriptDir%\tmp\handle4.txt
                Run, %A_ScriptDir%\Thread4.exe
            }
            else If (AccNumF = 5)
            {
                5Handle = %this_id%
                WinGet, pid5, PID, ahk_id %5Handle%
                pid5 := pid5
                Lure5 := GetLureAmmount(5Handle, pid5)
                FileDelete, %A_ScriptDir%\tmp\lure5.txt
                FileAppend, %Lure5%, %A_ScriptDir%\tmp\lure5.txt
                FileDelete, %A_ScriptDir%\tmp\pid5.txt
                FileAppend, %pid5%, %A_ScriptDir%\tmp\pid5.txt
                FileDelete,  %A_ScriptDir%\tmp\handle5.txt
                FileAppend, %5Handle%, %A_ScriptDir%\tmp\handle5.txt
                Run, %A_ScriptDir%\Thread5.exe
            }
            else If (AccNumF = 6)
            {
                6Handle = %this_id%
                WinGet, pid6, PID, ahk_id %6Handle%
                pid6 := pid6
                Lure6 := GetLureAmmount(6Handle, pid6)
                FileDelete, %A_ScriptDir%\tmp\lure6.txt
                FileAppend, %Lure6%, %A_ScriptDir%\tmp\lure6.txt
                FileDelete, %A_ScriptDir%\tmp\pid6.txt
                FileAppend, %pid6%, %A_ScriptDir%\tmp\pid6.txt
                FileDelete,  %A_ScriptDir%\tmp\handle6.txt
                FileAppend, %6Handle%, %A_ScriptDir%\tmp\handle6.txt
                Run, %A_ScriptDir%\Thread6.exe
            }
            else If (AccNumF = 7)
            {
                7Handle = %this_id%
                WinGet, pid7, PID, ahk_id %7Handle%
                pid7 := pid7
                Lure7 := GetLureAmmount(7Handle, pid7)
                FileDelete, %A_ScriptDir%\tmp\lure7.txt
                FileAppend, %Lure7%, %A_ScriptDir%\tmp\lure7.txt
                FileDelete, %A_ScriptDir%\tmp\pid7.txt
                FileAppend, %pid7%, %A_ScriptDir%\tmp\pid7.txt
                FileDelete,  %A_ScriptDir%\tmp\handle7.txt
                FileAppend, %7Handle%, %A_ScriptDir%\tmp\handle7.txt
                Run, %A_ScriptDir%\Thread7.exe
            }
            else If (AccNumF = 8)
            {
                8Handle = %this_id%
                WinGet, pid8, PID, ahk_id %8Handle%
                pid8 := pid8
                Lure8 := GetLureAmmount(8Handle, pid8)
                FileDelete, %A_ScriptDir%\tmp\lure8.txt
                FileAppend, %Lure8%, %A_ScriptDir%\tmp\lure8.txt
                FileDelete, %A_ScriptDir%\tmp\pid8.txt
                FileAppend, %pid8%, %A_ScriptDir%\tmp\pid8.txt
                FileDelete,  %A_ScriptDir%\tmp\handle8.txt
                FileAppend, %8Handle%, %A_ScriptDir%\tmp\handle8.txt
                Run, %A_ScriptDir%\Thread8.exe
            }
    }
    
    
    GetLureAmmount(HandleL, pidL)
    {
        base := getProcessBaseAddress(HandleL)
        pointerBase := base + 0x008E8E18
        y1 := ReadMemory(pointerBase, pidL)
        y2 := ReadMemory(y1 + 0x9c, pidL)
        y3 := ReadMemory(y2 + 0x78, pidL)
        y4 := ReadMemory(y3 + 0x0, pidL)
        y5 := y4 + 0x58
        Return Lure := ReadMemory(y5, pidL)    
    }
    
    
    getProcessBaseAddress(HandleUse)
    {
        return DllCall( A_PtrSize = 4
                                ? "GetWindowLong"
                                : "GetWindowLongPtr"
                            , "Ptr", HandleUse
                            , "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, PIDUse)
    {
        VarSetCapacity(MVALUE,4,0)
        ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", PIDUse, "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
    }


    4. How many accounts do you want? 8 is the limit for this. Copy the following code(s) for each account. Inside the folder you made. Name then the following for each account! Thread1.ahk Thread2.ahk , etc NOTE: If you're using 2 accounts, use only 1, 2 thread code. (Can put all 8 in, doesn't matter)
     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure1.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid1.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle1.txt
    FileDelete, %A_ScriptDir%\tmp\lure1.txt
    FileDelete,  %A_ScriptDir%\tmp\handle1.txt
    FileDelete, %A_ScriptDir%\tmp\pid1.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure2.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid2.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle2.txt
    FileDelete, %A_ScriptDir%\tmp\lure2.txt
    FileDelete,  %A_ScriptDir%\tmp\handle2.txt
    FileDelete, %A_ScriptDir%\tmp\pid2.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure3.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid3.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle3.txt
    FileDelete, %A_ScriptDir%\tmp\lure3.txt
    FileDelete,  %A_ScriptDir%\tmp\handle3.txt
    FileDelete, %A_ScriptDir%\tmp\pid3.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure4.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid4.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle4.txt
    FileDelete, %A_ScriptDir%\tmp\lure4.txt
    FileDelete,  %A_ScriptDir%\tmp\handle4.txt
    FileDelete, %A_ScriptDir%\tmp\pid4.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure5.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid5.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle5.txt
    FileDelete, %A_ScriptDir%\tmp\lure5.txt
    FileDelete,  %A_ScriptDir%\tmp\handle5.txt
    FileDelete, %A_ScriptDir%\tmp\pid5.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure6.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid6.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle6.txt
    FileDelete, %A_ScriptDir%\tmp\lure6.txt
    FileDelete,  %A_ScriptDir%\tmp\handle6.txt
    FileDelete, %A_ScriptDir%\tmp\pid6.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure7.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid7.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle7.txt
    FileDelete, %A_ScriptDir%\tmp\lure7.txt
    FileDelete,  %A_ScriptDir%\tmp\handle7.txt
    FileDelete, %A_ScriptDir%\tmp\pid7.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


     

    Code:
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    CoordMode, ToolTip, Screen
    SetTitleMatchMode, 3
    SetKeyDelay, 0, 2
    
    
    FileRead, Lure, %A_ScriptDir%\tmp\lure8.txt
    FileRead, pid, %A_ScriptDir%\tmp\pid8.txt
    FileRead, Handle, %A_ScriptDir%\tmp\handle8.txt
    FileDelete, %A_ScriptDir%\tmp\lure8.txt
    FileDelete,  %A_ScriptDir%\tmp\handle8.txt
    FileDelete, %A_ScriptDir%\tmp\pid8.txt
    FileRead, Break, %A_ScriptDir%\tmp\break.txt
    
    
    LureCount := 0
    Loop %Lure%
    {
        FileRead, Break, %A_ScriptDir%\tmp\break.txt
        If (Break = 1)
        {
            break
        }
        else
        {
                
        }
        LureCount := LureCount +1
        ControlSend, , {f down}, ahk_pid %pid%
        Sleep, 86
        ControlSend, , {f up}, ahk_pid %pid%
        Catch := 0
        Loop  
        {
            If (Catch = 1)
            {    
                break
            }
                else
            {
                Base := getProcessBaseAddress() 
                CaughtWater := ReadMemory((ReadMemory(base + 0x008E5360) + 0xBD150))
                CaughtLava := ReadMemory(((ReadMemory(base + 0x008E5360) + 0xBD150) + 0x4A4))
                If (CaughtWater = 1 or CaughtLava = 1)
                {
                    ControlSend, , {f down}, ahk_pid %pid%
                    Sleep, 86
                    ControlSend, , {f up}, ahk_pid %pid%
                    Random, Wait, 2000, 3500
                    Sleep, %Wait%
                    Catch := 1
                }
                else 
                {
                    Sleep, 500
                }
            }
        }
    }
    ExitApp
    
    
    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
    }


    5. Create folder "tmp" inside the Trove folder you made.
    6. You'll need to right click, hit "Compile" on each Thread#.ahk you have. They need to be Thread#.exe (Thread1.exe)
    Folder Should like the the following;

    7. Launch the Trove Fishing Bot v2.0.0.ahk (or .exe if you complied it too).
    8. Log-in all your accounts and align them in front of the water/lava! (Characters can be in different worlds/hubs. 1 can be at lava, others can be at water!)
    9. Put all Lures into slot 1 of bags for all accounts before running!
    10. Hit "NumPad9" the script will launch the threads and start fishing all at once. No need to highlight/activate any windows.
    11. To Stop The Bot(s): Alt+NumPad9 (will send a break file, threads will read the file and stop after they catch the next fish)


    NOTE:
    Start: NumPad9
    Stop: Alt+NumPad9
    Exit Main Script: NumPad7 (Send Stop First!)

    Want to bot while playing on your main?
    Start the bots first, once your bots are running, run another Trove and log in with your main. Bots will run while you have control of your main.
    If you Stop the bot, hit Numpad9 again you need to close your main first. Welcome to add a SetWinTitle command for your main so it doesn't bot.
    Last edited by HaHaItsJake; 04-05-2015 at 02:36 PM. Reason: 8/8 Working Now
    Tell me and I forget. Teach me and I remember. Involve me and I learn.
    Benjamin Franklin

  2. The Following 8 Users Say Thank You to HaHaItsJake For This Useful Post:

    Agrius (04-07-2015),blapanda (04-05-2015),CyberstormXo (04-05-2015),MacacadaGamerBr (08-26-2015),ragecrysux (04-04-2015),Ricoo77 (04-05-2015),Trove (04-05-2015),yoyoemmy (04-05-2015)

Similar Threads

  1. [Patched] Trove Fishing Bot v2.2 (Update)
    By HaHaItsJake in forum Trove Hacks & Cheats
    Replies: 110
    Last Post: 04-18-2015, 02:04 PM
  2. [Patched] Trove Fishing Bot (AHK Background)
    By HaHaItsJake in forum Trove Hacks & Cheats
    Replies: 54
    Last Post: 04-07-2015, 02:27 PM
  3. [Help] Is It Possible To Get Fish Bots And Auto Bots?
    By mystery2k10 in forum Metin 2 Hacks
    Replies: 0
    Last Post: 04-20-2011, 06:12 AM
  4. [Request] Oz world Fishing bot
    By devase in forum Hack Requests
    Replies: 2
    Last Post: 03-18-2011, 08:07 PM
  5. Is there a fish bot?
    By DRT94 in forum World of Warcraft Hacks / Bots
    Replies: 2
    Last Post: 03-17-2010, 10:26 AM

Tags for this Thread