Surely i am doing something wrong i need some help please: the execute script list is empty, and i have no .lua file to load just a .ct file how is this managed to work?
I mean step 7 is not working for me.
tyvm in advance.
Sweet, lots of questions.
I'm unsure about the invisible creature - how to handle it would mean attacking. But it would make this bot a whole lot more complicated.
Though, the bot not fishing should already be handled by the bot itself already.
I'm using the Timer functions for Lua and it every 3 seconds it runs a function named stepper()
This is the stepper function which I've added comments to, so you know what it does.
-- = comment
--[[ to --]] = block comment
the whole Fush thing is just a New Zealandism I want to chuck in there.Code:function stepper() timerCount = timerCount + 3 -- this timerCount variable, is just so that script can say how long its been running for when it ends. if (varFishingStatus == 0) and (readInteger(varLineCast) == 0) then --[[ varFishingStatus (I probably need to fix up my variable names) is set to 1 by the castLine() function when it thinks it's cast the line. varLineCast is the actual in-game boolean(true/false) saying if the line is actually cast or not - this cant actually be incorrect due to it's design. So, what this is saying is: if castLine() has not been run, and the game knows the line has not been cast, then cast the line! Otherwise, do nothing. --]] castLine() elseif (varFishingStatus == 1) and (readInteger(varLineCast) == 0) then --[[ This should be the bit when the bot thinks its thrown the line, but really in-game it hasn't. It's literally a check that does: if the bot thinks the line has been cast, and the game knows the line has not been cast, then wait one second, then double check the line hasn't been cast in game -- then castLine() --]] sleep(1000) if(readInteger(varLineCast) == 0) then castLine() end elseif (readInteger(varBobbingWater) > 0) then -- if bobbing in water (another true/false boolean in-game) then catch dat' fish. catchFush() end end
I personally don't have a lava fishing rod, or whatever you need to fish there. I guess I'll make one to try and find that address. That's all it needs. :P
Hmm, I'll need to write one here as the admins of this forum auto-lock a thread after 24 hours, sigh.
Edit:
How to multi-client bot in Trove with FushBot.
Remember to throw the requirements DLLs into the Cheat Engine root directory, default is C:\Program Files (x86)\Cheat Engine 6.4\
1.) Login to the Glyph client with your first account.
2.) Open Trove.
3.) Open 32-bit CheatEngine (this does work on 64-bit machines) [Available at C:\Program Files (x86)\Cheat Engine 6.4\cheatengine-i386.exe by default]
4.) Connect to the Trove client (It should be the only one there at this point)
5.) Wait for Trove to load (i.e. get in-game)
6.) Open the Cheat Table in CheatEngine (You can drag the CheatTable on top of Cheat Engine) for this to work.
7.) On the popup stating "This table contains a lua script. Do you want to run it?" click Yes (This is essentially executing the script, also available by going Table -> Show Cheat Table Lua Script -> Execute Script button, if you happen to press No)
8.) If this is the first time you've ever run the script, make sure to click the "Test WinAPI is available" script checkbox. This is just neccesarry for the first time ever, and if it doesn't show a lovely information box popup, then something's gone wrong. Likely you've not chucked the requirements in the CheatEngine folder.
9.) Get into a position to Fish, click Run Fushbot.
That's it for this client.
To add another one (you can minimize that trove/cheatengine pair if you want):
1.) On the Glyph client, click Log out
2.) click login again, log into another account
3.) Open another CheatEngine client
4.) Click the computer icon to connect to another window, then click the [Window List] button. The bot auto-renames it's selected client to FushBot1, FushBot2 etc so just select the new and fresh Trove window.
5.) Wait for trove to load (get in game)
6.) Load the Cheat Table into Cheat Engine
7.) Click yes on the popup
8.) Get into position to fish, click Run Fushbot.
9.) Rinse and repeat. You can do this for as many as your computer can run.
Optionally, you can click the Enable Low-Graphics mode, which just turns down the graphics settings a bit. Rather than going Escape -> Settings -> video -> Advanced checkbox -> turning the scrollers down to minimum.
To handle which one is which, if you've opened each trove client, and cheatengine client in pair, then it will come up in order when you hover over the icon in your Window Task bar
It should be the first CheatEngine linked to the first Trove client etc.
You can start and stop Run FushBot as many times as you want, it should just pick up again from where it left off. In case you need to drop Fish off at where you're storing it etc.
For example, be fishing, stop the Run Fushbot script, press F to stop fishing, go to whereever you're dropping fish off, go back to where you were, re-click the Run FushBot script, minimize, open the next Trove client/CE pair.
Last edited by Cellux; 04-22-2015 at 05:47 PM.
Surely i am doing something wrong i need some help please: the execute script list is empty, and i have no .lua file to load just a .ct file how is this managed to work?
I mean step 7 is not working for me.
tyvm in advance.
Last edited by Menfo; 04-22-2015 at 05:40 PM.
The .ct file contains the lua script.
Edit: Here is the lua script itself though, try pasting this in there:
Code:--[[ Only currently works x86. Requires dll: https://******.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') scriptExecuted = 1 -- 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+90D828]+9c]+78]+90]+58' varLineCast = '[[trove.exe+909C84]+a818]+f2d0' varBobbingWater = '[[trove.exe+909C84]+a818]+fd40' print('Script has been successfully executed. You can now Run FushBot.') end -- // EXECUTE SCRIPT -- function debugWinAPI() returntest = winapi.show_message("Working!", "It looks like you're good to go!\nWinAPI is loading correctly. <3", 'ok', 'information') print('debugWinAPI: ' .. returntest) end function setVideo() varVideoShaderDetail = '[trove.exe+90D878]+1c' varVideoSuperSampling = '[trove.exe+90D878]+20' varVideoDrawDistance = '[trove.exe+90D878]+28' writeFloat(varVideoShaderDetail, 0) writeFloat(varVideoSuperSampling, 0.25) writeFloat(varVideoDrawDistance, 20) print('Low graphics mode enabled.') print('Shader detail: 0, Super Sampling: 0.25, Draw Distance: 20') 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. Please try again.') end end function windowSelect(fushBotSessionInt) if(fushBotSessionInt == 0) then print('fushBotSessionInt == 0') windowSharedInteger = allocateSharedMemory("windowInteger", 4096) print('Allocated shared memory') troveWindow = winapi.find_window_match('Trove') if (windowSharedInteger < 1) or (readInteger(windowSharedInteger) < 1) then 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. Please try again.") 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. Please try again.') 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))) print("\tvarBobbingWater:\t", string.format('%X', getAddress(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 sleep(1000) if(readInteger(varLineCast) == 0) then castLine() end 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(1) troveWindow:send_message(257, 70, 2162689) sleep(3000) end else print("No lures available, or in assigned inventory slot (bottom left).") end end function catchFush() if (readInteger(varLineCast) > 0) then 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 else print("Line not cast? What in the world..?") end end function endScript() timer_setEnabled(varFishTimer, false) if(debugMode == 1) then print("Script ended:\t", os.date("%X")) end print("Fush caught:\t", fushCaught) print("Seconds running:\t", timerCount) varFishTimer.Destroy() print("Timer destroyed") varFishTimer = nil end
Last edited by Cellux; 04-22-2015 at 05:55 PM.
yes ty, ty i've seen that but still i get no message when i drop the .ct file on CE program, it is said on step 8 then it must be the dlls are not well placed, i just can not overwrite the msvcrt on my system32, could be that?
Last edited by Menfo; 04-22-2015 at 06:36 PM.
Menfo (04-22-2015)
Ah.
Try with this:
New v008 I've just finished. Works with lava/chocolate.
https://www.mpgh.net/forum/attachment...0&d=1429756221 - mpgh
https://www.virustotal.com/en/file/c...is/1429756249/
https://virusscan.jotti.org/en-gb/sca...87419e0bb461e1
Last edited by Cataclypse; 04-22-2015 at 09:49 PM.
chofo3o (06-14-2015),loic31140 (07-15-2015),Newbrin (04-25-2015),slinkineva (04-22-2015)
Cellux (04-22-2015)
Starting post has been updated with new update and howto information. Thanks to @[MPGH]Cataclypse
*EDIT* -- I moved the new file over the CE folder and copied the DLL files from V7 and it works, but now, every time it casts, the CE windows pop up in front of whatever I'm doing, whereas before, it ran great in the background.
V7 works fine for me in water, but V8 gives me a lua error. Says I haven't execute the script.
Error:[string "--[[..."]:173: module 'winapi' not found:
no field package.preload['winapi']
no file '.\winapi.lua'
no file 'C:\Program Files (x86)\Cheat Engine 6.4\lua\winapi.lua'
no file 'C:\Program Files (x86)\Cheat Engine 6.4\lua\winapi\init.lua'
no file 'C:\Program Files (x86)\Cheat Engine 6.4\winapi.lua'
no file 'C:\Program Files (x86)\Cheat Engine 6.4\winapi\init.lua'
no file 'winapi.lua'
Last edited by osiris73; 04-23-2015 at 03:38 PM.
Super weird, v7 and v8 don't have any requirement differences. They still need the winapi.dll file in the ce root folder, as well as those other 3 requirements.
I have found a bug on my own machine, where the client sometimes confuses itself, then can't select the session, I've only really seen it on the first instance though.
Yeah, it's weird. It even interrupted me while I was typing this. I would like to also like to suggest a new feature, if possible. I would like to be able to chat while fishing. Right now, that doesn't work for me. Also, did I read previously that lava fishing in the snow biome doesn't work? Because it's working for me pretty well right now (with the previous issue). Maybe I misread, though.
Great news everyone:
I found a method for auto-boot-drop!
Now working on a release
Last edited by chris20194; 04-24-2015 at 11:32 AM.
Trove (04-24-2015)