def processGuild(): guild = findGuild() if guild is None: randSleepSec(60, 120) return else: pressEsc() with lock: checkIfPaused() x = guild.left y = guild.top + guild.height + 1 leftRegion = (x + 3, y, 8, 7) rightRegion = (x + guild.width / 2 + 2, y, 8, 7) leftScreen = pyautogui.screenshot(region=leftRegion) rightScreen = pyautogui.screenshot(region=rightRegion) found = pyautogui.locate(leftScreen, rightScreen, confidence=0.8) if found: logging.info("Found full guild") pyautogui.moveTo(guild.left, guild.top + guild.height + ydiff1, duration=randDur()) pyautogui.click() guildGet = findPic('guildGet') tries = 10 while guildGet is None and tries > 0: tries = tries - 1 randSleepSec(1, 3) guildGet = findPic('guildGet') pressButton(guildGet, False) else: logging.debug("Guild is not full") pressEsc() randSleepSec(60, 180)
def unstuck(): if findPic('sessionExpired') is not None: pressButton(findPic('rebootNow'), True) randSleepSec(5, 10) playBtn = findPic('play') if playBtn is not None: pressButton(playBtn, True) worldBtn = findPic('world') if worldBtn is not None: pressButton(worldBtn, True) randSleepSec(5, 10) eventsPanel = findPic('events') if eventsPanel is not None: pressEsc() randSleepSec(5, 10) if findPic('visitUnavailable') is not None: pressButton(findPic('ok'), True) returnToCity = findPic('returnToCity') if returnToCity is not None: pressButton(returnToCity, False) if findPic('cannotHelp') is not None: reboot() randSleepSec(5, 15)
def collectLoot(): loot = findLoot() while loot is not None: if loot is None: return pressButton(loot, False) waitFor(findRewardReceived, 10) pressEsc() loot = findLoot()
def processGoodsOutput(output): with lock: pressCollect1(output) randSleepMs() pressEsc() pressCollect2(output) randSleepMs() logging.debug("Bot has restarted a production building.") pressEsc()
def processIdleOutput(output): with lock: pressCollect1(output) randSleepMs() pyautogui.typewrite(['1', '2', '3', '4', '5']) pressCollect2(output) randSleepMs() pyautogui.typewrite(['1', '2', '3', '4', '5']) logging.debug("Bot has restarted a production building.") pressEsc()
def goldCollector(): # gold icons if not isThereSomethingToCollect(): randSleepSec(5, 15) return output = findGold() if output is not None: logging.info("Found gold %s", output) with lock: checkIfPaused() # get coordinates to click from output pressCollect1(output) if waitGoldCollected(output.left, output.top + ydiff1): return pressEsc() pressCollect2(output) if waitGoldCollected(output.left, output.top + ydiff1 + ydiff2): return pressEsc() else: randSleepSec(5, 15)
def processSupplies(): # supplies icons if not isThereSomethingToCollect(): randSleepSec(3, 7) return output = findSupplies() if output is not None: logging.info("Found supplies %s", output) with lock: checkIfPaused() # get coordinates to click from output pressCollect1(output) if waitSuppliesCollected(output.left, output.top + ydiff1): return pressEsc() pressCollect2(output) if waitSuppliesCollected(output.left, output.top + ydiff1 + ydiff2): return pressEsc() else: randSleepSec(3, 7)