ArrowOutdatedMpPassiveFishingBot v1.9 : Auto-updating pointer

Posts 18 of 8 · Page 1 of 1
MpPassiveFishingBot v1.9 : 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 :
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)
Start it (Tutorial here : http://www.mpgh.net/forum/showthread.php?t=1150041)
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 check 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.
Here is a tutorial for finding pointers : http://www.mpgh.net/forum/showthread.php?t=1150085

/!\ This won't work if you renamed Trove's window (Some account launchers are doing that, care)
/!\ People seems to have hurdles 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.9
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
	}

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%
	}

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, 1:New
Gui 1:-Resize -MinimizeBox
Gui, 1:Add, Text,, Current version : %Ver%`n`nPointer : %_Pointer%`nWater offsets : %_wOffset%`nLava offset : %_lOffset%`nChocolate offset : %_cOffset%
Gui, 1:Add, Text, vAccounts w200
Gui, 1:Add, Text, vReeled w200
Gui, 1:Add, Button, gDebug , &Debug

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

Gui, 1:Show,,mpPassiveFishingBot

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

SplashTextOff

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, 1:, Accounts, Active accounts : %C%
	GuiControl, 1:, 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

v1.8 (6267b):
Corrected a cross-GUI fix

v1.9 (6266b):
Fixed a closing bug


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/xrstxt9fma
https://www.virustotal.com/en/file/2...is/1470252360/

NOTE : Old thread can be closed
mpPassiveFishingBotv1.9_mpgh.net.zip2 KB · 134 downloads Clean
Could you make a PTS-fish script as simple as this one? I love using this on live, but on PTS you can sell ancient scales for 150k+
Quote Originally Posted by mpmoi View Post
This version should self-update pointers, however I will have to find them before
does this implies that it grabs the offsets from an external link?

Anyway nice work.
Do you know if Trove has an anti-cheat? other than detecting wierd player behavior (fishing for hours at a time)?
Quote Originally Posted by _NightWare View Post

does this implies that it grabs the offsets from an external link?

Anyway nice work.
Do you know if Trove has an anti-cheat? other than detecting wierd player behavior (fishing for hours at a time)?
Yeah. But the external link is a text file and is written in the code.

- - - Updated - - -

Quote Originally Posted by Cogbliz View Post
Could you make a PTS-fish script as simple as this one? I love using this on live, but on PTS you can sell ancient scales for 150k+
You can follow the tutorial on how to find a pointer and I could add a pts pointer option ^^"
Approved - Thanks for releasing.
Pointer isn't working anymore here after a 9mb update.
New pointer is 0x00AF3770
New pointer is 0x00AF3770 ! updated ! Thanks to @dhondud
Posts 18 of 8 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?