OutdatedTrove Multi-Client Bot / FushBot

Posts 115 of 16 · Page 1 of 2
Trove Multi-Client Bot / FushBot
Sup homies. This is very much just an online workplace, to save and thereby share what I've worked out regarding a multi-client bot running on top of Cheat Engine's Lua Framework/Engine.

With the release of fishing originally, my old bot was working flawlessly - but with the new constraints regarding some lovely anti-botting systems (it's all about dem boots), we're needing to alter it (very likely insanely) to get it up and running in a nice way again.

Once we have it running at a high level, I'll chuck it up onto Github and we can work collectively there.

Until then, good luck to us all.

I've been personally chucking my lures into the bottom left item slot, and until we get to a more feature-rich bot (i.e. throwing boots away and have a UI for ourselves) you guys will have to do the same.



Important Pointers
Lure Amount
Based on inventory slot amount, in this case bottom left. There are two versions, due to my computer being a weirdo.
Should always work:
varLuresAvailable = '[[[[trove.exe+909528]+9c]+78]+90]+58'
Only works when inventory is open:
varLuresAvailable = '[[[[trove.exe+81B400]+234]+78]+90]+58'
Lure is out
varLineCast = '[[trove.exe+905984]+a818]+f2d8'
[i]If you would like to try other pointers to the same location, PTR files [VirusTotal]
Bobbing
varBobbingWater = '[[trove.exe+905984]+a818]+fd48'

Bot Prerequisites
Cheat Engine 6.4
WinAPI (Custom compiled using CheatEngine's lua Engine libraries, source: https://github.com/stevedonovan/winapi)*
lua5.1-32.dll (build date: 15/06/2014 9.45pm)*
msvcrt.dll (File version: 7.0.7601.17744)*
libgcc_s_dw2-1.dll (part of GCC)*
*These files all need to be placed in either the Cheat Engine root directory (i.e. C:\Program Files (x86)\Cheat Engine 6.4) or your System32 folder (e.g. C:\Windows\System32)
Requirements Download:
http://www.mpgh.net/forum/attachment...5&d=1429585134
[VirusTotal]

Script Download (.ct)
v004: http://www.mpgh.net/forum/attachment...9&d=1429591809 [VirusTotal]
v003: http://www.mpgh.net/forum/attachment...3&d=1429584925 [VirusTotal]
v002: http://www.mpgh.net/forum/attachment...2&d=1429584918 [VirusTotal]

Remember, to have Trove open, then go Table -> Show Cheat Table Lua Script -> Execute Script button before trying anything.
Do the above, then click the Test WinAPI is available script - it should pop up with a window saying it's working.

If it doesn't post error messages (or lack of) below.

Changelog
v002:
Added catcher in case of lag when casting line.
If the bot things it's cast the line, but it actually hasn't - then it will re-cast it with the Stepper function (runs every 3 seconds).
v003:
Uh, I can't remember :X
v004:
Enabled Debug Mode
Allows the script to only print information into the Lua Engine when the Enable Debug Mode script is enabled.
FushBotv002_mpgh.net.rar2 KB · 11 downloads Clean
FushBotv003_mpgh.net.rar2 KB · 6 downloads Clean
isFishing002.PTR_mpgh.net.zip5 KB · 17 downloads Clean
Script Requirements (libgcc, lua, msvcrt, winapi)_mpgh.net.rar457 KB · 33 downloads Clean
FushBotv004_mpgh.net.rar3 KB · 57 downloads Clean
Quote Originally Posted by Tremorgamess View Post
Can you make it on AHK
Quite simply: no.
I don't like, nor want to use AHK.

If someone wants to port this script to it, go ahead. But I won't be helping past giving information on what the functions of this script does.
So this basically fishes for you but doesnt deal with boots right?
Quote Originally Posted by ragecrysux View Post
So this basically fishes for you but doesnt deal with boots right?
At this stage, correct.
It's the feature I'm dedicating myself to most importantly though.

Edit: It also multibots pretty well, though at the moment it takes a bit to setup multiple bots - My computer which is a low-end quad core from 2008 and 4GB of RAM can run 5 clients at the same time with graphics turned down.

Edit2: The side-log thing is thrown into memory, if we somehow find out where that is going to be written to, then we can monitor it for changes!
Use winrar instead of hostr. I do not know if what you did was take care of outside links catalypse that matter
No point botting if u have to babysit 8 accounts to drop boots manually
Quote Originally Posted by COD3RIN View Post
Use winrar instead of hostr. I do not know if what you did was take care of outside links catalypse that matter
That doesn't make any sense.

Winrar is a file compression program, like winzip and 7zip.

Hostr is a file host, like imgur. -- If the mpgh uploader supported .ct files (seriously, Cheat Engine's table files, the biggest game hacking software around), large images and was easily interchangeable then I'd be using it err day. But it doesn't.

I've associated the virus scan with the DLL, cheat table (.ct) files (even if someone was to write something that deleted all your files) won't be scanned by any antivirus due to pretty much being a text file.


Quote Originally Posted by ragecrysux View Post
No point botting if u have to babysit 8 accounts to drop boots manually
I feel ya with that one. We'll work it out, eventually. Hopefully.
Quote Originally Posted by Cellux View Post
That doesn't make any sense.

Winrar is a file compression program, like winzip and 7zip.

Hostr is a file host, like imgur. -- If the mpgh uploader supported .ct files (seriously, Cheat Engine's table files, the biggest game hacking software around), large images and was easily interchangeable then I'd be using it err day. But it doesn't.

I've associated the virus scan with the DLL, cheat table (.ct) files (even if someone was to write something that deleted all your files) won't be scanned by any antivirus due to pretty much being a text file.




I feel ya with that one. We'll work it out, eventually. Hopefully.
But hey, thanks for this!
All fixed approved next time follow this image how to compile a file in winrar
Quote Originally Posted by COD3RIN View Post
All fixed approved next time follow this image how to compile a file in winrar
Oki. I've gone and renamed some of the files, and linked them directly in the post. Could they please be approved again?


Quote Originally Posted by Tremorgamess View Post
This doesn't work, its not even a script... Don't try to bullcrap your stuff that you stolen. Trove Bot for All source is way better an basic then this peace of crap
Turns out, I forgot to include winapi.dll

I custom wrote everything though. Took me a long time.

The script, v003:
Code:
--[[
Only currently works x86.
Requires dll: https://github.com/stevedonovan/winapi
I've gone and compiled one using CE's lua libs, available here: https://hostr.co/KoMrvLM0H2ZW
--]]



do -- EXECUTE SCRIPT --
  if(cheatEngineIs64Bit()) then
    messageDialog("This requires to be running the 32-bit version of CheatEngine. Please restart.\nFile is found in root CheatEngine folder, named 'cheatengine-i386.exe'", 0, 2)
  end
  local winapi = require('winapi')
  -- Resets because of breaking, timers man...
  if(varFishTimer ~= nil) then
    timer_setEnabled(varFishTimer, false)
    varFishTimer.Destroy()
    varFishTimer = nil
  end
-- Variable assignment
  varScriptStatus = 0
  varLuresAvailable = '[[[[trove.exe+909528]+9c]+78]+90]+58'
  varLineCast = '[[trove.exe+905984]+a818]+f2d8'
  varBobbingWater = '[[trove.exe+905984]+a818]+fd48'
print('Script prepped, ready to launch')
end -- // EXECUTE SCRIPT --

function debug()
  returntest = winapi.show_message("Working!", "It looks like you're good to go!\nWinAPI is loading correctly. <3", 'ok', 'information')
  print('debug: ' .. returntest)
end

function runScript()
  if(fushBotSession == nil) or (fushBotSession == 0) then
    fushBotSession = windowSelect(0)
  elseif(fushBotSession > 0) then
    fushBotSession = windowSelect(fushBotSession)
  end
  varScriptStatus = scriptInfo()
  if(varScriptStatus == 1) then
    timerCreate()
    timer_setEnabled(varFishTimer, true)
    varFishingStatus = 0
    fushCaught = 0
    print('Script Started')
  else
    print('Issue compiling addresses')
  end
end

function windowSelect(fushBotSessionInt)
  if(fushBotSessionInt == 0) then
    print('New FushBot session') -- no previous Fushbot session found
    windowSharedInteger = allocateSharedMemory("windowInteger", 4096)
    troveWindow = winapi.find_window_match('Trove')
    if (windowSharedInteger == 0) then
      print('First instance found - creating windowSharedInteger')
      writeInteger(windowSharedInteger, 1)
      local troveWindowName = 'FushBot' .. readInteger(windowSharedInteger)
      troveWindow:set_text(troveWindowName)
      troveWindow = winapi.find_window_match(troveWindowName)
      print('fushBotSession:\t', readInteger(windowSharedInteger))
      return(readInteger(windowSharedInteger))
    elseif (windowSharedInteger > 0) then
      writeInteger(windowSharedInteger, (readInteger(windowSharedInteger)+1))
      local troveWindowName = 'FushBot' .. readInteger(windowSharedInteger)
      troveWindow:set_text(troveWindowName)
      troveWindow = winapi.find_window_match(troveWindowName)
      return(readInteger(windowSharedInteger))
    else
      print("Failed to find Trove client to connect new Fushbot session")
    end --]]
  elseif(fushBotSessionInt > 0) then
    print('Existing Fushbot session found -- connecting ' .. fushBotSessionInt)
    troveWindow = winapi.find_window_match('FushBot' .. fushBotSessionInt)
    return fushBotSessionInt
  else
    print('No session found? Exiting.')
    return nil
  end
end

function scriptInfo()
  print("Script started:\t", os.date("%X"))
  print("\tAddresses --")
  print("\tvarLuresAvailable:\t", string.format('%X', getAddress(varLuresAvailable)), "\t", readInteger(varLuresAvailable))
  print("\tvarLineCast:\t", string.format('%X', getAddress(varLineCast)), "\t", readInteger(varLineCast))
  print("\tvarBobbingWater:\t", string.format('%X', getAddress(varBobbingWater)), "\t", readInteger(varBobbingWater))
  return 1 -- varScriptStatus = 1
end

function timerCreate() -- Timer Settings for stepper()
  varFishTimer = createTimer(nil, false)
  timer_onTimer(varFishTimer, stepper)
  timer_setInterval(varFishTimer, 3000)
  print('Timer Created')
  timerCount = 0
end

function stepper()
  timerCount = timerCount + 3
  if (varFishingStatus == 0) and (readInteger(varLineCast) == 0) then
    castLine()
  elseif (varFishingStatus == 1) and (readInteger(varLineCast) == 0) then
    print('Lag Catcher activated - Line not cast properly, recasting.')
    castLine()
  elseif (readInteger(varBobbingWater) > 0) then
    catchFush()
  end
end

function castLine()
  varFishingStatus = 1
  if (readInteger(varLuresAvailable) > 0) then
     if (readInteger(varLineCast) == 0) then
       troveWindow:send_message(7, 0, 0)
       sleep(100)
       troveWindow:send_message(256, 70, 2162689)
       sleep(10)
       troveWindow:send_message(257, 70, 2162689)
       print('Casting Line')
       sleep(3000)
     else
       print("Line already cast?")
     end
  else
    print("No lures available, or in assigned inventory slot (bottom left).")
  end
end

function catchFush()
  if (readInteger(varLineCast) > 0) then
    print("Reeling Line")
    sleep(500)
    troveWindow:send_message(7,0,0)
    sleep(100)
    troveWindow:send_message(256, 70, 2162689)
    sleep(1)
    troveWindow:send_message(257, 70, 2162689)
    sleep(3000)
    varFishingStatus = 0
    fushCaught = fushCaught + 1
    if (fushCaught ~= 0) and (fushCaught % 5 == 0) then
      print("Fish Caught:\t", fushCaught)
    end
  else
    print("Line not cast? What in the world..?")
  end
end


function endScript()
  timer_setEnabled(varFishTimer, false)
  print("Thanks homie, have a fabulous day!")
  print("Script ended:\t", os.date("%X"))
  print("Fush caught:\t", fushCaught)
  print("Seconds running:\t", timerCount)
  varFishTimer.Destroy()
  print("Timer destroyed")
  varFishTimer = nil
end
Quote Originally Posted by Cataclypse View Post
Reapproved.
Beautiful, ty.

Update v004: Added Debug mode.
Quote Originally Posted by Cellux View Post
Beautiful, ty.

Update v004: Added Debug mode.
If you need help ask me or cataclypse
Works great . Good job .
Do you have anything in mind for the boots? ^^
Posts 115 of 16 · Page 1 of 2
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?