New build script + bg farming bot v1
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
from threading import Thread
|
||||
from enum import Enum
|
||||
import time
|
||||
import cv2 as cv
|
||||
import pyautogui
|
||||
from core.Logger import Logger
|
||||
from core.Player import PLAYER_STATE
|
||||
|
||||
BG_STATUS = Enum('BG_STATUS', ['IDLE', 'IN_QUEUE', 'IN_BG', 'LOADING'])
|
||||
|
||||
class BattlegroundAgent:
|
||||
def __init__(self, monitor, player) -> None:
|
||||
self.battlegroundThread = None
|
||||
self.logger = Logger("Battleground Agent")
|
||||
self.groupFinderIcon = cv.imread("assets/icons/GroupFinder.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.pvpTab = cv.imread("assets/menus/PlayerVsPlayerTab.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.randomEpicBgButton = cv.imread("assets/menus/RandomEpicBGButton.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.joinBattleButton = cv.imread("assets/menus/JoinBattleButton.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.deserterIcon = cv.imread("assets/icons/Deserter.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.joinBgWindow = cv.imread("assets/menus/JoinBGWindow.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.enterBgButton = cv.imread("assets/menus/EnterBgButton.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.leaveBgButton = cv.imread("assets/menus/LeaveMatchButton.jpg", cv.IMREAD_GRAYSCALE)
|
||||
self.status = BG_STATUS.IDLE
|
||||
self.monitor = monitor
|
||||
self.player = player
|
||||
|
||||
def startBGFarming(self):
|
||||
pyautogui.press("esc")
|
||||
self.player.checkConnection()
|
||||
while self.player.state is PLAYER_STATE.BG_FARMING:
|
||||
self.status = BG_STATUS.IDLE
|
||||
if (self.isDeserter() is False):
|
||||
self.tagInBg()
|
||||
else:
|
||||
self.logger.log("Deserter debuff found, waiting for debuff to disapear before tagging to bg...")
|
||||
# self.inBgRoutine()
|
||||
time.sleep(3)
|
||||
|
||||
def isDeserter(self):
|
||||
res = self.monitor.findMatch(self.deserterIcon)
|
||||
if (res == -1):
|
||||
return False
|
||||
return True
|
||||
|
||||
def tagInBg(self):
|
||||
pyautogui.moveTo(50,50)
|
||||
self.logger.log("Tagging in random epic bg...")
|
||||
time.sleep(0.2)
|
||||
self.monitor.findMatchAndMoveToPosition(self.groupFinderIcon)
|
||||
pyautogui.click()
|
||||
time.sleep(0.2)
|
||||
self.monitor.findMatchAndMoveToPosition(self.pvpTab)
|
||||
pyautogui.click()
|
||||
time.sleep(0.2)
|
||||
self.monitor.findMatchAndMoveToPosition(self.randomEpicBgButton)
|
||||
pyautogui.click()
|
||||
time.sleep(0.2)
|
||||
self.monitor.findMatchAndMoveToPosition(self.joinBattleButton)
|
||||
pyautogui.click()
|
||||
self.status = BG_STATUS.IN_QUEUE
|
||||
self.waitForBg()
|
||||
|
||||
def waitForBg(self):
|
||||
self.logger.log("Waiting for bg to start...")
|
||||
while self.status == BG_STATUS.IN_QUEUE:
|
||||
res = self.monitor.findMatch(self.joinBgWindow)
|
||||
if (res != -1):
|
||||
self.logger.log("Bg started joining the game...")
|
||||
time.sleep(0.2)
|
||||
self.monitor.findMatchAndMoveToPosition(self.enterBgButton)
|
||||
pyautogui.click()
|
||||
self.status = BG_STATUS.LOADING
|
||||
time.sleep(1)
|
||||
self.inBgRoutine()
|
||||
|
||||
|
||||
def checkEndOfBg(self):
|
||||
res = self.monitor.findMatch(self.leaveBgButton)
|
||||
if (res != -1):
|
||||
self.logger.log("End of bg detected, leaving...")
|
||||
time.sleep(0.2)
|
||||
pyautogui.move(res[0], res[1])
|
||||
time.sleep(0.3)
|
||||
self.status = BG_STATUS.IDLE
|
||||
pyautogui.click()
|
||||
time.sleep(10)
|
||||
|
||||
def inBgRoutine(self):
|
||||
self.logger.log("BG in progress...")
|
||||
self.status = BG_STATUS.IN_BG
|
||||
while self.status == BG_STATUS.IN_BG:
|
||||
pyautogui.keyDown("up")
|
||||
self.checkEndOfBg()
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
|
||||
def run(self):
|
||||
self.logger.log("Starting battlegroung thread in 3 seconds...")
|
||||
time.sleep(1)
|
||||
self.logger.log("Starting battlegroung thread in 2 seconds...")
|
||||
time.sleep(1)
|
||||
self.logger.log("Starting battlegroung thread in 1 seconds...")
|
||||
time.sleep(1)
|
||||
|
||||
self.battlegroundThread = Thread(
|
||||
target=self.startBGFarming,
|
||||
args=(),
|
||||
name="battleground thread",
|
||||
daemon=True)
|
||||
self.battlegroundThread.start()
|
||||
@@ -13,8 +13,8 @@ class FishingAgent:
|
||||
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.monitor = monitor
|
||||
self.player = player
|
||||
self.fail = 0
|
||||
self.retry = 0
|
||||
@@ -52,32 +52,33 @@ class FishingAgent:
|
||||
if (self.retry > 4):
|
||||
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...")
|
||||
self.retry += 1
|
||||
time.sleep(1)
|
||||
self.findLure()
|
||||
time.sleep(0.5)
|
||||
self.lureLoc = res
|
||||
pyautogui.moveTo(self.lureLoc[0], self.lureLoc[1])
|
||||
self.watchLure()
|
||||
else:
|
||||
time.sleep(0.5)
|
||||
pyautogui.moveTo(res[0], res[1])
|
||||
self.watchLure()
|
||||
|
||||
def watchLure(self):
|
||||
self.retry = 0
|
||||
self.logger.log("Waiting for fish...")
|
||||
time.sleep(0.4)
|
||||
res = self.monitor.findMatch(self.fishingBobberImg)
|
||||
if (res != -1):
|
||||
self.lureLoc = res
|
||||
while True:
|
||||
self.retry += 1
|
||||
time.sleep(0.1)
|
||||
res = self.monitor.findMatch(self.fishingBobberImg)
|
||||
print(self.lureLoc)
|
||||
print(res)
|
||||
if (res != -1 and abs(res[1] - self.lureLoc[1]) > 10):
|
||||
if (res == -1 or abs(res[1] - self.lureLoc[1]) > 20):
|
||||
time.sleep(0.2)
|
||||
pyautogui.click()
|
||||
time.sleep(0.5)
|
||||
return
|
||||
elif (self.retry > 200):
|
||||
elif (self.retry > 150):
|
||||
self.retry = 0
|
||||
self.fail += 1
|
||||
return
|
||||
|
||||
@@ -13,9 +13,9 @@ class IdlingAgent:
|
||||
self.monitor = monitor
|
||||
|
||||
def checkIdleTime(self):
|
||||
while self.player.state is PLAYER_STATE.IDLE:
|
||||
while self.player.state in (PLAYER_STATE.IDLE, PLAYER_STATE.BG_FARMING):
|
||||
elapsedTime = time.time() - self.idleTime
|
||||
if (elapsedTime > 10):
|
||||
if (elapsedTime > 60):
|
||||
self.logger.log("Jumping to avoid being afk...")
|
||||
pyautogui.press("space")
|
||||
self.idleTime = time.time()
|
||||
|
||||
Reference in New Issue
Block a user