ArrowOutdatedMpPassiveFishingBot v1.7 : Auto-updating pointer

Posts 14 of 4 · Page 1 of 1
MpPassiveFishingBot v1.7 : Auto-updating pointer
Hey guys !

This is a fishing bot for Trove ! It works well and is really useful if you want to fish a lot ! It supports multiple accounts ! It's purpose is to be a light and fast bot ! No hotkeys ! No setup needed !
Requierments : AutoHotKey (last version I guess)

How it works :
Start it and press F on some water/lava/chocolate !
You can start it on as many accounts as you need !
If you want it to stop fishing just early reel the fishing rod ! (before a fish comes)
To close the bot simply close the tray icon !

Updating pointers
This version should self-update pointers, however I will have to find them before so it could take some time (less than 2-3h after a patch usually)
You can still find them by yourself or heck the forums : I guess Nippy's Fishbot pointers should work. Edit the config file in the same directory as the .ahk file. Then restart the script.


Well providing screenshots would be useless, let me know if you think about something to improve.

How you get this ?
Just grab the source code and paste it in a .ahk file and start it!
You can also download it directly. (wait for @Psychotic @Danny @Dexter approval)

/!\ This won't work if you renamed Trove's window (Some account launchers are doing that, care)
/!\ Ppl seems to have problems on non-english versions
/!\ Your fishing hotkey must be 'F'

 
Source code

Code:
#SingleInstance force
#Persistent

SplashTextOn, 500,25, mpPassiveFishingBot, Initializing and updating pointers, please wait...

SetWorkingDir %A_ScriptDir%
Reeled := Object()
WaitRelauch := Object()

global Ver:=1.7
global _Motd:=""
global _Version:=1
global _Pointer:="0x00BAB82C"
global _wOffset:="0x8+0xb4+0x28+0x22c"
global _lOffset:="0x8+0xb4+0x28+0x6e8"
global _cOffset:="0x8+0xb4+0x28+0x488"
global iniFile := A_ScriptDir . "/config.ini"
global rld := 0

if (FileExist(iniFile)){
	IniRead, _Version, %iniFile%, Global, _Version
	IniRead, _Pointer, %iniFile%, Global, _Pointer
	IniRead, _wOffset, %iniFile%, Global, _wOffset
	IniRead, _lOffset, %iniFile%, Global, _lOffset
	IniRead, _cOffset, %iniFile%, Global, _cOffset
	IniRead, _Motd, %iniFile%, Global, _Motd
}
url := "https://dl.dropb" + "oxusercontent.com/u/52517919/MpFishingBotPointer.txt"
WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.Open("GET", url)
WebRequest.Send()
Contents := StrSplit(WebRequest.ResponseText, "$")
if (Contents[1] > _Version){
	global _Version:=Contents[1]
	global _Pointer:=Contents[2]
	global _wOffset:=Contents[3]
	global _lOffset:=Contents[4]
	global _cOffset:=Contents[5]
	TrayTip ,mpPassiveFishingBot, % "Values updated to :`nPointer : " _Pointer "`nWater offset : " _wOffset "`nLava offset : "_lOffset "`nChocolate offset : " _cOffset
	Sleep, 10
	}

global _newMotd:=Contents[8]
if (_Motd != _newMotd){
	TrayTip ,mpPassiveFishingBot, %_newMotd%
	Sleep, 10
	}

IniWrite, %_Version%, %iniFile%, Global, _Version
IniWrite, %_Pointer%, %iniFile%, Global, _Pointer
IniWrite, %_wOffset%, %iniFile%, Global, _wOffset
IniWrite, %_lOffset%, %iniFile%, Global, _lOffset
IniWrite, %_cOffset%, %iniFile%, Global, _cOffset
IniWrite, %_newMotd%, %iniFile%, Global, _Motd

Gui, New
Gui -Resize -MinimizeBox
Gui, Add, Text,, Current version : %Ver%`n`nPointer : %_Pointer%`nWater offsets : %_wOffset%`nLava offset : %_lOffset%`nChocolate offset : %_cOffset%
Gui, Add, Text, vAccounts
Gui, Add, Text, vReeled 
Gui, Add, Button, gDebug , &Debug
Gui, Show,,mpPassiveFishingBot

Gui, 2:New
Gui 2:-Resize -MinimizeBox
Gui, 2:Add, ListView, w650, Window PID|Base Address|Water Adress|Water Value|Lava Adress|Lava Value|Chocolate Adress|Chocolate Value


SetTimer, Scan, 999
SetTimer, Relaunch, 1999
SetTimer, UpdateGui, 250

SplashTextOff

if (Contents[6] > Ver){
	num := Contents[7]
	url = http://www.mpgh.net/forum/showthread.php?t=%num%
	MsgBox, 4,, New version available, go to MPGH topic ? (press Yes or No)
	IfMsgBox Yes
		Run %url%
	}

TrayTip ,mpPassiveFishingBot, Bot started ! Press "f" on water/lava/chocolate !
return

Scan:
	WinGet, l, list, Trove
	Loop %l%
	{
		d := l%a_index%
		WinGet, pid, PID, ahk_id %d%
		WinGet, Handle, ID, ahk_pid %pid%
		Base := getProcessBaseAddress(Handle)
		wAddress := GetAddress(pid, Base, _Pointer, _wOffset)
		wValue := ReadMemory(wAddress, pid)
		lAddress := GetAddress(pid, Base, _Pointer, _lOffset)
		lValue := ReadMemory(lAddress, pid)
		cAddress := GetAddress(pid, Base, _Pointer, _cOffset)
		cValue := ReadMemory(cAddress, pid)
		if (cValue=1||lValue=1||wValue=1){
			found := 0
			for i, p in Reeled{
				if (p=pid)
					found := 1
				}
			for i, p in WaitRelauch{
				if (p=pid)
					found := 1
				}
			if (found = 0){
				ControlSend, , {f down}, ahk_pid %pid%
				Sleep, 90
				ControlSend, , {f up}, ahk_pid %pid%
				rld ++
				Reeled.Insert(pid)
				}
			}
	}
	return

Relaunch:
	WaitRelauch := Reeled
	Reeled := Object()
	Sleep, 2000
	for i, p in WaitRelauch{
		ControlSend, , {f down}, ahk_pid %p%
		Sleep, 90
		ControlSend, , {f up}, ahk_pid %p%
		}
	return

UpdateGui:
	C := 0
	WinGet, l, list, Trove
	Loop %l%
		C ++
	GuiControl,, Accounts, Active accounts : %C%
	GuiControl,, Reeled, Fish reeled : %rld%
	return

GuiClose:
	ExitApp

Debug:
	SetTimer, UpdateDebugGui, 250
	Gui, 2:Show, , mpPassiveFishingBotDebug
	return

UpdateDebugGui:
	Gui, 2:Default
	LV_DELETE()
	WinGet, l, list, Trove
	Loop %l%
	{
		d := l%a_index%
		WinGet, pid, PID, ahk_id %d%
		WinGet, Handle, ID, ahk_pid %pid%
		BaseAddress := getProcessBaseAddress(Handle)
		BaseAddressHex := FHex(BaseAddress)
		wAddress := GetAddress(pid, Base, _Pointer, _wOffset)
		wAddressHex := FHex(wAddress)
		wValue := ReadMemory(wAddress, pid)
		lAddress := GetAddress(pid, Base, _Pointer, _lOffset)
		lAddressHex := FHex(lAddress)
		lValue := ReadMemory(lAddress, pid)
		cAddress := GetAddress(pid, Base, _Pointer, _cOffset)
		cAddressHex := FHex(cAddress)
		cValue := ReadMemory(cAddress, pid)
		LV_Add("", PID, BaseAddressHex, wAddressHex, wValue, lAddressHex, lValue, cAddressHex, cValue)
	}
	return

2GuiClose:
	SetTimer, UpdateDebugGui, Off
	Gui, 2:Hide
	return

FHex( int, pad=0 ){
	Static hx := "0123456789ABCDEF"
	If !( 0 < int |= 0 )
		Return !int ? "0x0" : "-" FHex( -int, pad )
	s := 1 + Floor( Ln( int ) / Ln( 16 ) )
	h := SubStr( "0x0000000000000000", 1, pad := pad < s ? s + 2 : pad < 16 ? pad + 2 : 18 )
	u := A_IsUnicode = 1
	Loop % s

		NumPut( *( &hx + ( ( int & 15 ) << u ) ), h, pad - A_Index << u, "UChar" ), int >>= 4
	Return h
	}


getProcessBaseAddress(Handle){
		Return DllCall( A_PtrSize = 4
		? "GetWindowLong"
: "GetWindowLongPtr"
	        , "Ptr", Handle
	        , "Int", -6
	        , "Int64")
	}

GetAddress(PID, Base, Address, Offset){
	pointerBase := base + Address
	y := ReadMemory(pointerBase,PID)	
	OffsetSplit := StrSplit(Offset, "+")
	OffsetCount := OffsetSplit.MaxIndex()
	Loop, %OffsetCount%{
		if (a_index = OffsetCount) {
			Address := (y + OffsetSplit[a_index])
	  	}Else
			if(a_index = 1) {
				y := ReadMemory(y + OffsetSplit[a_index],PID)
			}Else{
				y := ReadMemory(y + OffsetSplit[a_index],PID)
				}
		}
	Return Address
	}

ReadMemory(MADDRESS, pid){
	VarSetCapacity(MVALUE,4,0)
	ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt")
	DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4)
	Loop 4
			result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
	Return, result
	}


 
Screenshot




 
Version history

Code:
V1.0 (2670b):
Initial release

v1.1 (2781b):
Timer correction
Hard optimisation

v1.2 (3659b):
Now automatically updating pointers !
Few issues corrected

v1.3 (3649b):
Splash text
Tray messages added (no longer messages box)
Few optimisations

v1.4 (3830b):
Edited timer setup
Less hurdles with bot stuck (reeling while fishing)

v1.5 (4231b):
Check for updates and open related thread
MOTD added (for changelogs)
Edited timer setup
Less hurdles with bot stuck (reeling while fishing)

v1.6 (4697b):
GUI Added
Removed useless stuff
Now counting found accounts and reeled fish

v1.7 (6237b):
Debug added


Special thanks :
@reppin Who let me make a bot and use part of it's memory-reading code ! Check out his awesome fishing bot !

Disclaimer :
I will not add any bootdrop/destroy and loot-collect thing any soon ! This is a bot made for 5-min botting session when you go eating or to the toilets mid-game.
I will not be responsible of any ban you get by using this !

There are the virus scans :
https://virusscan.jotti.org/fr-FR/fi...job/633h9v0zge
https://www.virustotal.com/en/file/f...is/1470072048/

NOTE : Old thread can be closed
mpPassiveFishingBotv1.7_mpgh.net.zip2 KB · 47 downloads Clean
Working fine here, but, why did you remove the counter for fish reeled and active accounts?
Quote Originally Posted by DWK View Post
Working fine here, but, why did you remove the counter for fish reeled and active accounts?
Nah. looks like the gui newly added made this crash. Gonna try to fix it

- - - Updated - - -

Pushing a new update now. Will be available in 5 min
Posts 14 of 4 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?