From b8cd6a09eddb566eeff12b100c4a66664ce3f0ed Mon Sep 17 00:00:00 2001 From: srose Date: Sat, 14 Sep 2024 23:52:23 -0400 Subject: [PATCH] bobber improvements --- assets/fishing/Bobber.png | Bin 6814 -> 0 bytes assets/fishing/{ => bobbers}/Bobber.jpg | Bin assets/fishing/bobbers/Bobber2.jpg | Bin 0 -> 1303 bytes assets/menus/EnterWorldButton.jpg | Bin 0 -> 10058 bytes bots/fishing/FishingAgent.py | 15 ++++++++++++--- bots/idling/IdlingAgent.py | 5 +++-- core/MainAgent.py | 5 ++--- core/Monitor.py | 5 ++++- core/Player.py | 24 ++++++++++++++++++++++-- core/cli/CliAgent.py | 2 +- 10 files changed, 44 insertions(+), 12 deletions(-) delete mode 100644 assets/fishing/Bobber.png rename assets/fishing/{ => bobbers}/Bobber.jpg (100%) create mode 100644 assets/fishing/bobbers/Bobber2.jpg create mode 100644 assets/menus/EnterWorldButton.jpg diff --git a/assets/fishing/Bobber.png b/assets/fishing/Bobber.png deleted file mode 100644 index c4d194a16cc02531bea609ccbc9f3a777fb233c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6814 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 literal 0 HcmV?d00001 diff --git a/assets/menus/EnterWorldButton.jpg b/assets/menus/EnterWorldButton.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6b84773398f7c9d9b801fe3ff00ec3a511d2ef9 GIT binary patch literal 10058 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 literal 0 HcmV?d00001 diff --git a/bots/fishing/FishingAgent.py b/bots/fishing/FishingAgent.py index 9cb48b6..b5ebdc3 100644 --- a/bots/fishing/FishingAgent.py +++ b/bots/fishing/FishingAgent.py @@ -9,18 +9,25 @@ from core.Player import PLAYER_STATE class FishingAgent: def __init__(self, monitor, player) -> None: - self.fishingBobberImg = cv.imread("assets/fishing/Bobber.jpg", cv.IMREAD_GRAYSCALE) + self.fishingBobberImg = cv.imread("assets/fishing/bobbers/Bobber2.jpg", cv.IMREAD_GRAYSCALE) self.fishingIconImg = cv.imread("assets/fishing/FishIcon.jpg", cv.IMREAD_GRAYSCALE) self.fishingThread = None self.logger = Logger("Fishing Agent") self.monitor = monitor self.lureLoc = None self.player = player + self.fail = 0 self.retry = 0 def startFishing(self): + self.player.checkConnection() self.player.changeState(PLAYER_STATE.FISHING) while self.player.state is PLAYER_STATE.FISHING: + if (self.fail > 5): + self.fail = 0 + self.logger.log("Fishing failed too many times. Stopping fishing thread...") + self.player.changeState(PLAYER_STATE.IDLE) + return self.castLure() def castLure(self): @@ -43,7 +50,8 @@ class FishingAgent: if (res == -1): if (self.retry > 4): - self.logger.log("Took too to find lure long, retrying fishing from the beginning") + self.fail += 1 + self.logger.log("Took too long to find lure, retrying fishing from the beginning") return else: self.logger.log("Trying again in 1 second...") @@ -64,13 +72,14 @@ class FishingAgent: res = self.monitor.findMatch(self.fishingBobberImg) print(self.lureLoc) print(res) - if (res != -1 and abs(res[1] - self.lureLoc[1]) > 20): + if (res != -1 and abs(res[1] - self.lureLoc[1]) > 10): time.sleep(0.2) pyautogui.click() time.sleep(0.5) return elif (self.retry > 200): self.retry = 0 + self.fail += 1 return def run(self): diff --git a/bots/idling/IdlingAgent.py b/bots/idling/IdlingAgent.py index 6df80b2..882e610 100644 --- a/bots/idling/IdlingAgent.py +++ b/bots/idling/IdlingAgent.py @@ -1,15 +1,16 @@ import time -import pyautogui from threading import Thread +import pyautogui from core.Logger import Logger from core.Player import PLAYER_STATE class IdlingAgent: - def __init__(self, playerAgent) -> None: + def __init__(self, monitor, playerAgent) -> None: self.logger = Logger("Idling Agent") self.idleTime = time.time() self.idleThread = None self.player = playerAgent + self.monitor = monitor def checkIdleTime(self): while self.player.state is PLAYER_STATE.IDLE: diff --git a/core/MainAgent.py b/core/MainAgent.py index ecabe94..d396805 100644 --- a/core/MainAgent.py +++ b/core/MainAgent.py @@ -6,14 +6,13 @@ from core.Player import Player, PLAYER_STATE class MainAgent: def __init__(self) -> None: self.monitor = Monitor() - self.playerAgent = Player() - self.idlingBot = IdlingAgent(self.playerAgent) + self.playerAgent = Player(self.monitor) + self.idlingBot = IdlingAgent(self.monitor, self.playerAgent) self.fishingBot = FishingAgent(self.monitor, self.playerAgent) self.monitor.startScreenCaptureThread() # Start idling agent at the construction of the mainAgent for now self.idlingBot.run() - def startFishBot(self): self.playerAgent.changeState(PLAYER_STATE.FISHING) self.fishingBot.run() diff --git a/core/Monitor.py b/core/Monitor.py index 94b12a2..20b5810 100644 --- a/core/Monitor.py +++ b/core/Monitor.py @@ -45,6 +45,9 @@ class Monitor: self.screenThread.start() self.logger.log("Main Agent: Thread started") + def findBestMatchFromDir(self, dirPath): + pass + def findMatch(self, template, method = "TM_CCOEFF_NORMED"): methodInt = getattr(cv, method) res = cv.matchTemplate(self.screenshot, template, methodInt) @@ -53,7 +56,7 @@ class Monitor: matchRatio = max_val * 100 self.logger.log(matchRatio) - if (matchRatio < 55): + if (matchRatio < 60): self.logger.log("Cannot find matching result...") return -1 diff --git a/core/Player.py b/core/Player.py index 1e68ad6..4babfbf 100644 --- a/core/Player.py +++ b/core/Player.py @@ -1,5 +1,8 @@ import json from enum import Enum +import time +import cv2 as cv +import pyautogui from core.Logger import Logger CONNECT_STATUS = Enum('CONNECT_STATUS', ["CONNECTED", "CONNECTING", "DISCONNECTED"]) @@ -7,16 +10,33 @@ CLASSES = Enum('CLASSES', ['DRUID', 'MAGE', 'HUNTER', 'PRIEST']) PLAYER_STATE = Enum('STATE', ['IDLE', 'FISHING', 'FARMING']) class Player: - def __init__(self) -> None: + def __init__(self, monitor) -> None: with open("config.json", encoding="utf-8") as jsonFile: self.config = json.load(jsonFile) - self.isConnected = CONNECT_STATUS.DISCONNECTED + self.isConnected = None self.idleThread = None + self.enterWorldButton = cv.imread("assets/menus/EnterWorldButton.jpg", cv.IMREAD_GRAYSCALE) self.logger = Logger("Player Agent") self.state = PLAYER_STATE.IDLE + self.monitor = monitor self.playerClass = self.config["class"] self.playerName = self.config["name"] self.logger.log("Connected with " + self.playerName + " (" + self.playerClass + ")") + def checkConnection(self): + res = self.monitor.findMatch(self.enterWorldButton) + if (res == -1): + self.isConnected = CONNECT_STATUS.CONNECTED + else: + self.isConnected = CONNECT_STATUS.DISCONNECTED + self.logger.log("Player not connected attempting to connect...") + pyautogui.move(res[0], res[1]) + time.sleep(0.4) + pyautogui.click() + time.sleep(5) + + + + def changeState(self, newState): self.state = newState \ No newline at end of file diff --git a/core/cli/CliAgent.py b/core/cli/CliAgent.py index 763a492..6af3307 100644 --- a/core/cli/CliAgent.py +++ b/core/cli/CliAgent.py @@ -33,7 +33,7 @@ class CLIAgent: cv.destroyAllWindows() self.logger.log("Exiting application...") self.isRunning = False - else: + else: self.logger.log("Unknown Command.") self.printMenu()