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')
-- 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