GithubHelp home page GithubHelp logo

steve1316 / granblue-automation-pyautogui Goto Github PK

View Code? Open in Web Editor NEW
117.0 8.0 34.0 14.72 MB

Educational application aimed at automating user-defined workflows for the mobile game, "Granblue Fantasy", using a variety of CV technologies in the backend such as OpenCV, PyAutoGUI and EasyOCR and a frontend coded in Typescript.

Home Page: https://github.com/steve1316/granblue-automation-pyautogui/wiki

Python 72.07% HTML 0.06% Rust 0.06% TypeScript 27.81% Batchfile 0.01%
pyautogui gui python granblue fantasy gbf automation mouse ocr easyocr

granblue-automation-pyautogui's Introduction

Granblue Automation using Template Matching (It is like Full Auto, but with Full Customization!)

GitHub commit activity GitHub last commit GitHub issues GitHub pull requests GitHub

Discord here: https://discord.gg/5Yv4kqjAbm

Android version here: https://github.com/steve1316/granblue-automation-android

Checkout Granblue Automation Statistics and its project over at https://github.com/steve1316/granblue-automation-statistics

uClriDn77l.mp4

This Python application is designed for educational research purposes on studying how to automate certain workflows via image template matching using OpenCV. The application uses PyAutoGUI for direct mouse control, hence why it is recommended to run this on a separate machine than the one that you use daily. This can be circumvented by running this on a virtual machine like VMWare Workstation Player so you can keep using your main computer without interruption.

Screenshots are taken and cropped by PyAutoGUI for OpenCV to perform image template matching. This will determine where the bot is currently at and will inform the bot on what to do next from there.

There is a feature already in-game that can automate gameplay called "Semi/Full Auto" but does not offer any way to customize what each character does on a turn-by-turn basis. This program's primary goal is to provide that customization. Users can create their own combat scripts using predefined case-insensitive keywords and can indicate which turns the bot will execute their script, somewhat akin to constructing pseudocode.

For example:

// This is a comment. The bot will ignore this line.
# This is also a comment.

Turn 1:
    // On Turn 1, the following commands will be executed in order:
    // 6th Summon is invoked, character 1 uses Skill 2 and then Skill 4,
    // and finally character 3 uses Skill 3.
    summon(6)
    character1.useSkill(2).useSkill(4)
    character3.useSkill(3)
end

# The bot will keep clicking the Attack button until it reaches the 5th turn.
Turn 5:
    character2.useSkill(2)
end

// Use the exit keyword to leave the raid without retreating.
// Useful when you want to farm multiple raids at once.
exit

Disclaimer

By downloading this program, you consent to your account potentially getting flagged for excessive amounts of farming for multiple hours straight and banned in the next banwave by KMR. I hold no responsibility for how much or how long you use this program for. I trust you have the self-control necessary to only farm in reasonable bursts of time with breaks in between and to always be alert for when the bot encounters the CAPTCHA.

Table of Contents

Features

  • Customize what skills to use during each turn in a user-created plan. Users can select which plan to use when starting the bot.
  • A launchable GUI to keep track of logs, adjust settings and selecting what combat script to use.
  • Farm user-defined amounts of specified materials from the supported Farming Modes.
  • A user-defined timer for how long the bot should run for.
  • Support for the following game modes:
    • Quest
    • Special
    • Coop
    • Raid
    • Event
    • Guild Wars
    • Rise of the Beasts
    • Dread Barrage
    • Proving Grounds
    • Arcarum
    • Replicard Sandbox Part 1
    • Replicard Sandbox Part 2
  • Alert for when anti-bot CAPTCHA pops up.
  • Discord integration for informing you of status updates like loot drops via private DMs.

Wiki

Visit the Wiki here for detailed documentation and examples.

Requirements

Visit the Installation Instructions page here.

Instructions

  1. Download the latest release by heading to the Releases page and downloading the latest .zip file. You will know its the correct one to download as it has a .exe executable file in it called Granblue Automation.exe. Alternatively if you want to build it by yourself, download the entire project itself and then head over to Build Instructions and follow the steps. Executing yarn build will create the .exe and the necessary files in /src-tauri/target/release/.

  2. Make sure you installed the project dependencies by having Python 3.8.3 installed and ran pip install -r requirements.txt as stated above.

  3. Open up the game on a Chromium-based browser and log in if you haven't already done so. Click away any daily log in popups until you are at the Main/Home screen.

    1. [REQUIRED] Make sure the window size is set to this or else the bot will not be able to detect the "Home" button and proceed any further:

      Correct Window Size

    2. [REQUIRED] Make sure that BOTH of the Auto Restore settings are enabled in the ingame settings.

      Auto Restore Settings

  4. Now open up the program executable and follow the onscreen instructions and checking that the Settings page is filled out. You will be informed that the bot is ready to start by the status message at the top of the window.

    1. (Optional) Additionally, you can check the Extra Settings page for more general settings like Twitter, Discord and Configuration settings.
  5. You can now head back to the Home page of the program and hit the "Start" button to begin.

    1. Message logs are stored in the /logs/ folder after the bot ends or encounters an error/unexpected situation.

Instructions for farming Raids (optional, only if you want to farm Raids)


Instructions to set up Discord integration


How to create my own Combat Script?


What Missions/Items/Summons are supported?


Virtual Machine Setup (optional)

Build Instructions

Note: If your changes are only in the Python files, you can just replace the files in your GA folder. But if the Javascript files were changed, then a build is needed.

Note 2: Adjust the /src-tauri/tauri.conf.json for build-specific adjustments to your environment.

Note 3: Adjust /src-tauri/tauri.conf.json and /src-tauri/update.json to update version number of your build. You would also need to sign your update as of Tauri v1.0 with a private key generated by you.

Note 4: Tauri does not support cross-platform building. This means when you build on a Windows platform, you get a Windows release. Same goes for Linux and MacOS. GitHub actions as of now are using the windows-latest environment to build a Windows release. If you need to build for Linux / MacOS, you would need to adjust how the frontend calls the main script, sets up the /logs/ folder, and kills the process using its PID as right now it is using Windows-specific commands to do so (Powershell) in StartHelper.tsx and ExtraSettings.tsx.

  1. Open up root folder in VSCode. Type yarn install in terminal to install Javascript dependencies.
  2. Then follow your environment's instructions for Tauri.
  3. Now refer to the following 2 commands below for your use case.
  • yarn start Starts up the Metro server for hot code reloading.

  • yarn build Bundles and builds the executable in /src-tauri/target/release/. Also includes a installer in ../bundle/ as well.

Technologies Used

  1. Python - The main language
  2. Qt - Application development framework for the GUI (old frontend)
  3. Typescript - Language for the new GUI (new frontend)
  4. Tauri - Toolkit to transform the Typescript frontend framework into a desktop application
  5. PyAutoGUI - Primarily for screenshot capturing and mouse control
  6. pyclick - For making mouse movements human-like via Bezier Curves
  7. OpenCV-Python - Image template matching
  8. EasyOCR - For text recognition and detection
  9. Twitter Standard API 1.1 - For searching and parsing texts for Raid room codes to join
  10. VMWare Workstation Player - For virtualizing the program to circumvent control of the main cursor

granblue-automation-pyautogui's People

Contributors

alexparisella avatar christianciu avatar galsn2009 avatar koikomei avatar neapolitanicecream avatar r0ngk avatar steve1316 avatar thisisyoyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

granblue-automation-pyautogui's Issues

Error Refreshing Summons

Recently, it seems as if I get an error whenever the program tries to refresh summons. It gets to the Trial Battle selection screen, but stops at this screen; error log included.
image

0:00:00 [INFO] Initializing EasyOCR reader. This may take a few seconds...
0:00:04 [INFO] EasyOCR reader initialized.

0:00:07 [INFO] Moving back to the Home screen...

0:00:12 [INFO] Optimizing window dimensions...
0:00:12 [INFO] Optimizing window dimensions complete.

0:00:12 ********************************************************************************
0:00:12 ********************************************************************************
0:00:12 [INFO] Screen Size: Size(width=1920, height=1080)
0:00:12 [INFO] Game Window Dimensions: Region(64, 80, 474, 946)
0:00:12 ********************************************************************************
0:00:12 ********************************************************************************

0:00:12 ################################################################################
0:00:12 ################################################################################
0:00:12 [FARM] Starting Farming Mode for Event (Token Drawboxes).
0:00:12 [FARM] Farming 50x Repeated Runs at EX Event Raid.
0:00:12 ################################################################################
0:00:12 ################################################################################


0:00:12 [INFO] Initializing settings for Event...
0:00:12 [INFO] Settings initialized for Event...
0:00:12 [INFO] Bot is at the Home screen.
0:00:16 [INFO] Occurrence for EVENT_BANNER found at: Point(x=148, y=713)
0:00:21 [INFO] Now hosting Event Raid...

0:00:29 [INFO] Now waiting for event_raid_extreme to vanish from screen...
0:00:30 [SUCCESS] Image successfully vanished from screen...
0:00:33 [INFO] AP is available. Continuing...
0:00:33 [INFO] Now checking if bot is currently at Summon Selection screen...
0:00:33 [INFO] Bot is currently at Summon Selection screen.
0:00:33 [INFO] Now attempting to find: BAHAMUT
0:00:36 [WARNING] Failed to find the BOTTOM_OF_EVENT_SUMMON_SELECTION button.
0:00:39 [WARNING] Failed to find the BOTTOM_OF_EVENT_SUMMON_SELECTION button.
0:00:42 [WARNING] Failed to find the BOTTOM_OF_EVENT_SUMMON_SELECTION button.
0:00:44 [WARNING] Failed to find the BOTTOM_OF_EVENT_SUMMON_SELECTION button.
0:00:49 [WARNING] Could not find any of the specified Summons.

0:00:49 [INFO] Now refreshing Summons...

0:00:52 [INFO] Moving back to the Home screen...
0:01:08 [WARNING] Failed to find the PLAY_ROUND_BUTTON button.
0:01:11 [WARNING] Failed to find the CHOOSE_A_SUMMON button.

0:01:11 [ERROR] Bot encountered exception in Farming Mode: 
Traceback (most recent call last):
  File "D:\Desktop\GBF Bot\bot\game.py", line 1138, in start_farming_mode
    summon_check = self._select_summon(self._summon_list, self._summon_element_list)
  File "D:\Desktop\GBF Bot\bot\game.py", line 435, in _select_summon
    self._reset_summons()
  File "D:\Desktop\GBF Bot\bot\game.py", line 464, in _reset_summons
    self.mouse_tools.move_and_click_point(choose_a_summon_location[0], choose_a_summon_location[1] + 187, "choose_a_summon")
TypeError: 'NoneType' object is not subscriptable


0:01:11 ################################################################################
0:01:11 ################################################################################
0:01:11 [FARM] Ending Farming Mode.
0:01:11 ################################################################################
0:01:11 ################################################################################

Failed to find the HOME button.

Hi Steve!

I'm currently running into an issue with locating buttons on the browser. Here's my current setup:
image
I went through some of the other questions people have asked and made sure that the window is at the full height of my screen and nothing is obscuring it, but for some reason, the bot still cannot find any of the HOME buttons.

I'm currently using Chromium (Version 92.0.4488.0 (Developer Build) (64-bit)), with 100% page zoom.
For GBF browser settings, I have bottom menu on, side bar type on slide, auto resizing off, and window size small.

I also gave it a quick shot on just regular Chrome (Version 90.0.4430.85 (Official Build) (64-bit)), and I'm finding the same issues. I've attached the logs below! Let me know if you need any further details!
01.txt

Proving Grounds

Hello there Steve!

Proving Grounds event is here.
I hope we can get support for it.
Thanks in advance!

qwe8585.

Guild Wars Meat Farming Deadzone

It seems as though the bot's click to start farming meat is in an area that doesn't register the button being pressed. Clicking near the AP cost or the picture works properly, but clicking between them doesn't proceed.

Also, it seems as if with Bezier curve disabled, the bot doesn't click on randomized positions?

Combat script for dimensional halo equals 0

There are 2 lines starting from line 1582 of game.py in which, for some reason, the dimensional script gets set to 0.
This causes the bot to crash cause it expects a string but it receives an integer. Obviously this also makes it so that you never load the correct combat script.

CAPTCHA Sound Alert

Requesting a looping sound alert for when CAPTCHA pops up, to make it easier to notice. Possibly with the option of choosing your own sound and loop duration.

Thank you so much for this wonderful project!

Impossible Grand Order

Hello there Steve!

Impossible Grand Order raid isn't supported yet if I saw it right.
I hope we can get support for it.
Thanks in advance!

qwe8585.

Farming repeatable quests

I've been testing out the program and, while the raids with full auto work correctly, Angel Halo is a bit weird to farm given that you usually farm it by using Semi-auto instead of Full Auto.
The combat script doesn't allow to put Semi-auto, neither it allows to put full auto after attacking, for example:

Turn 1:

end

Turn 2: 

end

Turn 3:

end

This simulates semi-auto but after it reaches the 3rd "end" it just stops working since there's no "exit" and "exit" will return to home, skipping the nightmare proc and just making the whole process way longer (it also repeats infinitely since it can't check the quest items).
This could be circumvented by either allowing to enable fullAuto after "end" so that

Turn 3:

end
enableFullAuto

is possible and it will check the result screen since Full Auto clicks the "next" button automatically or by implementing "enableSemi" where it will skip directly to attack, enable semi-auto and then make it act like the "enableFullAuto" routine.

Thanks

Event quest

Hello there Steve!

It's me again.

The new story event is here and I wanted to farm some materials. Problem is the script can't find the special quest tab.

I'm linking the log and the picture below.

qwe8585.

image

event.txt

Pending Battle Logic

Hello there Steve!

New find would be the pending battle logic.

image

When on the quest result screen the bot clicks the pending battles button but it doesn't clear the popups.

image

This skyscope one is pretty new.

There is also the friend request one.

image

If it can't find the pending battle tab it just exists to the home page.

I'm linking the logs

Pending battle.txt

Failing to Select Summon

Sometimes, the game doesn't recognize the click when choosing a summon, which causes it to terminate. I'm wondering if this is an anti-botting measure for the first summon slot.


0:37:25 [EVENT] No Event Nightmare detected. Moving on...
0:37:31 [INFO] AP is available. Continuing...
0:37:31 [INFO] Now attempting to find: SHIVA
0:37:34 [SUCCESS] Found SHIVA Summon at Point(x=146, y=473).

0:37:39 [CAPTCHA] CAPTCHA not detected. Moving on to Party Selection...
0:37:40 [WARNING] Failed to find the PARTY_SET_A button.
0:37:40 [WARNING] Failed to find the PARTY_SET_B button.
0:37:41 [WARNING] Failed to find the PARTY_SET_A button.
0:37:41 [WARNING] Failed to find the PARTY_SET_B button.
0:37:42 [WARNING] Failed to find the PARTY_SET_A button.

0:37:42 [ERROR] Bot encountered exception in Farming Mode: 
Traceback (most recent call last):
  File "D:\Desktop\granblue-automation-pyautogui-main\bot\game.py", line 1263, in start_farming_mode
    start_check = self._find_party_and_start_mission(self._group_number, self._party_number)
  File "D:\Desktop\granblue-automation-pyautogui-main\bot\game.py", line 520, in _find_party_and_start_mission
    raise Exception("Could not find Set A.")
Exception: Could not find Set A.


0:37:42 ################################################################################
0:37:42 ################################################################################
0:37:42 [FARM] Ending Farming Mode.
0:37:42 ################################################################################
0:37:42 ################################################################################```

Coop loop

Hello there Steve!

This time I found out that the script doesn't wanna start the coop room after the first loop.

image

It already selected the party.

I'm linking the log too.

coop_loop.txt

Campaign Exclusive Quest

Hello! The button for the Campaign Exclusive Quest is named "campaign-exclusive_quest.png", but the bot is looking for "campaign_exclusive_quest.png", which causes it to fail and terminate.

RoTB Farming Mode Exception

Hello! When I try to use the RoTB Farming Mode, I get this error as the bot fails to find and click the event header.

0:00:04 [INFO] Initializing settings for Rise of the Beasts Extreme+...
0:00:04 [INFO] Initializing settings for Rise of the Beasts Extreme+...
0:00:04 [INFO] Settings initialized for Rise of the Beasts Extreme+...
0:00:04 [SUCCESS] Bot's current location is at HOME.
0:00:04 [INFO] Bot is at the Home screen.
0:00:05 [SUCCESS] Bot's current location is at HOME.
0:00:05 [DEBUG] Attempting to find and click the button: "home_menu".
0:00:05 [SUCCESS] Found the HOME_MENU button at Point(x=520, y=109).
0:00:07 [DEBUG] Failed to detect any occurrences of EVENT_BANNER images.
0:00:08 [DEBUG] Failed to detect any occurrences of EVENT_BANNER_BLUE images.

0:00:08 [ERROR] Bot encountered exception in Farming Mode: 
Traceback (most recent call last):
  File "D:\Desktop\granblue-automation-pyautogui-main\bot\game.py", line 1239, in start_farming_mode
    self._map_selection.select_map(farming_mode, map_name, mission_name, difficulty)
  File "D:\Desktop\granblue-automation-pyautogui-main\bot\map_selection.py", line 1076, in select_map
    self._navigate_to_rotb(mission_name, difficulty)
  File "D:\Desktop\granblue-automation-pyautogui-main\bot\map_selection.py", line 796, in _navigate_to_rotb
    self._game.mouse_tools.move_and_click_point(banner_locations[0][0], banner_locations[0][1], "event_banner")
IndexError: list index out of range


0:00:08 ################################################################################
0:00:08 ################################################################################
0:00:08 [FARM] Ending Farming Mode.
0:00:08 ################################################################################
0:00:08 ################################################################################

Unite And Fight

Hello there Steve!

It has finally arrived. Unite and fight event is here.
I know you actually mentioned it but I hope we can get support for it.
Thanks in advance!

qwe8585.

Ultimate Bahamut + Lindwurm Raids

Hello! Requesting that UBaha gets added to the raid finder, as a source of lots of Primarch Anima/Trial Fragments/Centrums/Meteorites/Summon Anima.

Loot Screen Stuck

If you get an emp mastery level up notice of a character after battle victory it hangs on checking loot in the script

Ping Issues

Hello there Steve!

Keep up the good work!

It's me again. What I found this time is that because my ping is high the bot tries to do things that didn't happen yet.

It's still the same virtual windows 10 machine.

qwe8585.

QtQuick module issue

Hi there Steve!

Something tells me this likely is an issue with my machine, but have you come across this error before?

$ python main.py
QQmlApplicationEngine failed to load component
/granblue-automation-pyautogui/gui/qml/main.qml:1:1: plugin cannot be loaded for module "QtQuick": Cannot load library \granblue-automation-pyautogui\venv\lib\site-packages\PySide2\qml\QtQuick.2\qtquick2plugin.dll: The specified module could
not be found.

The odd part is that qtquick2plugin.dll is indeed in that folder...

Random clicking feature

Thanks for sharing! Awesome!
But do you use a random shift while clicking buttons/images? Cygames record the clicking position information and send it back to their server side.

Rerolling Summons

Sorry, back again! It seems like when rerolling summons during Raid mode, the bot never actually retreats from the trial, which causes it to hang.

Xeno Diablo Clash

Hello there Steve!

I know we have support for the normal showdowns.
But Xeno Diablo Clash is here!
I hope we can get support for it.
Thanks in advance!

qwe8585.

Unable to install one of the requirements - Autopy

Hi!

(WARNING: LONG BLOCK OF TEXT BELOW)

I am very new to Python, but a little familiar with code structure and the such. I have very limited C/C++ knowledge, so I can somehow figure out what's happening when I see even foreign code for example. So forgive me if I sound dumb, or missed very simple steps!

So I tried installing this, following the instructions by the letter, but I run into a problem when Python tries to install Autopy: It cannot somehow find a compatible version for what's being asked from the pip installer. So I've tried directly going to their git page and download and install it myself (I am literally running in the dark here, reading Python commands as I go), and I am completely being blocked by this error, and I cannot. unfortunately, translate it anymore:

C:\Users\havoc\Desktop\granblue-automation-pyautogui-main>py -m pip install autopy-4.0.0.tar.gz Processing c:\users\havoc\desktop\granblue-automation-pyautogui-main\autopy-4.0.0.tar.gz Building wheels for collected packages: autopy Building wheel for autopy (setup.py) ... error ERROR: Command errored out with exit status 1: command: 'C:\Program Files (x86)\Python\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\havoc\\AppData\\Local\\Temp\\pip-req-build-xxjv69ss\\setup.py'"'"'; __file__='"'"'C:\\Users\\havoc\\AppData\\Local\\Temp\\pip-req-build-xxjv69ss\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\havoc\AppData\Local\Temp\pip-wheel-jfpocj5k' cwd: C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\ Complete output (139 lines): running bdist_wheel running build running build_py creating build creating build\lib creating build\lib\autopy copying autopy\__init__.py -> build\lib\autopy running build_ext running build_rust Updating crates.io index cargo rustc --lib --manifest-path Cargo.toml --features pyo3/extension-module --target x86_64-pc-windows-msvc --release --verbose -- --crate-type cdylib Compiling autocfg v1.0.1 Compiling cfg-if v1.0.0 Compiling proc-macro2 v0.4.30 Compiling unicode-xid v0.1.0 Compiling lazy_static v1.4.0 Compiling proc-macro2 v1.0.26 Compiling syn v0.15.44 Compiling libc v0.2.93 Compiling unicode-xid v0.2.1 Compiling scopeguard v1.1.0 Compiling memchr v2.3.4 Compiling rayon-core v1.9.0 Running rustc --crate-name autocfg C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\autocfg-1.0.1\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debug-assertions=off -C metadata=ea465f7a7b6278b6 -C extra-filename=-ea465f7a7b6278b6 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name cfg_if --edition=2018 C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\cfg-if-1.0.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=8bbb5a4cb441b35b -C extra-filename=-8bbb5a4cb441b35b --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps --target x86_64-pc-windows-msvc -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name build_script_build C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\proc-macro2-0.4.30\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="default"" --cfg "feature="proc-macro"" -C metadata=e49362ff5a049737 -C extra-filename=-e49362ff5a049737 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\proc-macro2-e49362ff5a049737 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name unicode_xid C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\unicode-xid-0.1.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="default"" -C metadata=2961e2639d42de8a -C extra-filename=-2961e2639d42de8a --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name lazy_static C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\lazy_static-1.4.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=2a6a8d760a25d41b -C extra-filename=-2a6a8d760a25d41b --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps --target x86_64-pc-windows-msvc -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name build_script_build --edition=2018 C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\proc-macro2-1.0.26\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="default"" --cfg "feature="proc-macro"" -C metadata=20bee6311394f03e -C extra-filename=-20bee6311394f03e --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\proc-macro2-20bee6311394f03e -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name build_script_build C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\syn-0.15.44\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="clone-impls"" --cfg "feature="default"" --cfg "feature="derive"" --cfg "feature="extra-traits"" --cfg "feature="full"" --cfg "feature="parsing"" --cfg "feature="printing"" --cfg "feature="proc-macro"" --cfg "feature="quote"" -C metadata=e3f568836e4026b6 -C extra-filename=-e3f568836e4026b6 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\syn-e3f568836e4026b6 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name build_script_build C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\libc-0.2.93\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="default"" --cfg "feature="std"" -C metadata=3308cf3071d09cc2 -C extra-filename=-3308cf3071d09cc2 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\libc-3308cf3071d09cc2 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name unicode_xid C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\unicode-xid-0.2.1\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="default"" -C metadata=c7524b7d78273a32 -C extra-filename=-c7524b7d78273a32 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name scopeguard C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\scopeguard-1.1.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no --cfg "feature="default"" --cfg "feature="use_std"" -C metadata=ebd248a620be7a8a -C extra-filename=-ebd248a620be7a8a --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps --target x86_64-pc-windows-msvc -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name build_script_build C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\memchr-2.3.4\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="default"" --cfg "feature="std"" --cfg "feature="use_std"" -C metadata=8b945bf47907a2d1 -C extra-filename=-8b945bf47907a2d1 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\memchr-8b945bf47907a2d1 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowRunningrustc --crate-name build_script_build --edition=2018 C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\rayon-core-1.9.0\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=4375927583755be9 -C extra-filename=-4375927583755be9 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\rayon-core-4375927583755be9 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowCompiling syn v1.0.69 Runningrustc --crate-name build_script_build --edition=2018 C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\syn-1.0.69\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="clone-impls"" --cfg "feature="default"" --cfg "feature="derive"" --cfg "feature="full"" --cfg "feature="parsing"" --cfg "feature="printing"" --cfg "feature="proc-macro"" --cfg "feature="quote"" -C metadata=7f2fc2a7963ee07b -C extra-filename=-7f2fc2a7963ee07b --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\syn-7f2fc2a7963ee07b -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowCompiling getrandom v0.1.16 Runningrustc --crate-name build_script_build --edition=2018 C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\getrandom-0.1.16\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature="std"" -C metadata=7f2182b4fc40a5d0 -C extra-filename=-7f2182b4fc40a5d0 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\getrandom-7f2182b4fc40a5d0 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allowCompiling proc-macro-hack-impl v0.4.3 Runningrustc --crate-name proc_macro_hack_impl C:\Users\havoc.cargo\registry\src\github.com-1ecc6299db9ec823\proc-macro-hack-impl-0.4.3\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type proc-macro --emit=dep-info,link -C prefer-dynamic -C embed-bitcode=no -C debug-assertions=off -C metadata=716e5c57b6188f72 -C extra-filename=-716e5c57b6188f72 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --extern proc_macro --cap-lints allowerror: linkerlink.exe` not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: could not compile rayon-core

Caused by:
process didn't exit successfully: rustc --crate-name build_script_build --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\rayon-core-1.9.0\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=4375927583755be9 -C extra-filename=-4375927583755be9 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\rayon-core-4375927583755be9 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but link.exe was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: build failed
error: cargo failed with code: 101


ERROR: Failed building wheel for autopy
Running setup.py clean for autopy
Failed to build autopy
Installing collected packages: autopy
Running setup.py install for autopy ... error
ERROR: Command errored out with exit status 1:
command: 'C:\Program Files (x86)\Python\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\setup.py'"'"'; file='"'"'C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\havoc\AppData\Local\Temp\pip-record-litp3q39\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Program Files (x86)\Python\Include\autopy'
cwd: C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss
Complete output (138 lines):
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.9
creating build\lib.win-amd64-3.9\autopy
copying autopy_init_.py -> build\lib.win-amd64-3.9\autopy
running build_ext
running build_rust
cargo rustc --lib --manifest-path Cargo.toml --features pyo3/extension-module --target x86_64-pc-windows-msvc --release --verbose -- --crate-type cdylib
Compiling autocfg v1.0.1
Compiling cfg-if v1.0.0
Compiling proc-macro2 v0.4.30
Compiling unicode-xid v0.1.0
Compiling proc-macro2 v1.0.26
Compiling lazy_static v1.4.0
Compiling libc v0.2.93
Compiling syn v0.15.44
Compiling unicode-xid v0.2.1
Compiling memchr v2.3.4
Compiling scopeguard v1.1.0
Compiling syn v1.0.69
Running rustc --crate-name autocfg C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\autocfg-1.0.1\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debug-assertions=off -C metadata=ea465f7a7b6278b6 -C extra-filename=-ea465f7a7b6278b6 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name cfg_if --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\cfg-if-1.0.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=8bbb5a4cb441b35b -C extra-filename=-8bbb5a4cb441b35b --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps --target x86_64-pc-windows-msvc -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name build_script_build C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\proc-macro2-0.4.30\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" --cfg "feature=\"proc-macro\"" -C metadata=e49362ff5a049737 -C extra-filename=-e49362ff5a049737 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\proc-macro2-e49362ff5a049737 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name unicode_xid C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\unicode-xid-0.1.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" -C metadata=2961e2639d42de8a -C extra-filename=-2961e2639d42de8a --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name build_script_build --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\proc-macro2-1.0.26\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" --cfg "feature=\"proc-macro\"" -C metadata=20bee6311394f03e -C extra-filename=-20bee6311394f03e --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\proc-macro2-20bee6311394f03e -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name lazy_static C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\lazy_static-1.4.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=2a6a8d760a25d41b -C extra-filename=-2a6a8d760a25d41b --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps --target x86_64-pc-windows-msvc -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name build_script_build C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\libc-0.2.93\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" --cfg "feature=\"std\"" -C metadata=3308cf3071d09cc2 -C extra-filename=-3308cf3071d09cc2 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\libc-3308cf3071d09cc2 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name build_script_build C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\syn-0.15.44\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"clone-impls\"" --cfg "feature=\"default\"" --cfg "feature=\"derive\"" --cfg "feature=\"extra-traits\"" --cfg "feature=\"full\"" --cfg "feature=\"parsing\"" --cfg "feature=\"printing\"" --cfg "feature=\"proc-macro\"" --cfg "feature=\"quote\"" -C metadata=e3f568836e4026b6 -C extra-filename=-e3f568836e4026b6 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\syn-e3f568836e4026b6 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name unicode_xid C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\unicode-xid-0.2.1\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" -C metadata=c7524b7d78273a32 -C extra-filename=-c7524b7d78273a32 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name build_script_build C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\memchr-2.3.4\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" --cfg "feature=\"std\"" --cfg "feature=\"use_std\"" -C metadata=8b945bf47907a2d1 -C extra-filename=-8b945bf47907a2d1 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\memchr-8b945bf47907a2d1 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name scopeguard C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\scopeguard-1.1.0\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no --cfg "feature=\"default\"" --cfg "feature=\"use_std\"" -C metadata=ebd248a620be7a8a -C extra-filename=-ebd248a620be7a8a --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps --target x86_64-pc-windows-msvc -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\x86_64-pc-windows-msvc\release\deps -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Running rustc --crate-name build_script_build --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\syn-1.0.69\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"clone-impls\"" --cfg "feature=\"default\"" --cfg "feature=\"derive\"" --cfg "feature=\"full\"" --cfg "feature=\"parsing\"" --cfg "feature=\"printing\"" --cfg "feature=\"proc-macro\"" --cfg "feature=\"quote\"" -C metadata=7f2fc2a7963ee07b -C extra-filename=-7f2fc2a7963ee07b --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\syn-7f2fc2a7963ee07b -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Compiling rayon-core v1.9.0
Running rustc --crate-name build_script_build --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\rayon-core-1.9.0\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=4375927583755be9 -C extra-filename=-4375927583755be9 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\rayon-core-4375927583755be9 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Compiling getrandom v0.1.16
Running rustc --crate-name build_script_build --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\getrandom-0.1.16\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"std\"" -C metadata=7f2182b4fc40a5d0 -C extra-filename=-7f2182b4fc40a5d0 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\getrandom-7f2182b4fc40a5d0 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
Compiling bitflags v1.2.1
Running rustc --crate-name build_script_build C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\bitflags-1.2.1\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off --cfg "feature=\"default\"" -C metadata=3a680c004f042875 -C extra-filename=-3a680c004f042875 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\bitflags-3a680c004f042875 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow
error: linker link.exe not found
|
= note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: could not compile `rayon-core`

Caused by:
  process didn't exit successfully: `rustc --crate-name build_script_build --edition=2018 C:\Users\havoc\.cargo\registry\src\github.com-1ecc6299db9ec823\rayon-core-1.9.0\build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debug-assertions=off -C metadata=4375927583755be9 -C extra-filename=-4375927583755be9 --out-dir C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\build\rayon-core-4375927583755be9 -L dependency=C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\target\release\deps --cap-lints allow` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option

error: aborting due to previous error

error: build failed
error: cargo failed with code: 101

----------------------------------------

ERROR: Command errored out with exit status 1: 'C:\Program Files (x86)\Python\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\setup.py'"'"'; file='"'"'C:\Users\havoc\AppData\Local\Temp\pip-req-build-xxjv69ss\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\havoc\AppData\Local\Temp\pip-record-litp3q39\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Program Files (x86)\Python\Include\autopy' Check the logs for full command output.`

Exit no longer exiting

Whenever my script reads to exit it just runs an attack and refreshes, used to work (haven't used in pretty long time)

image

Skill Kill Hangs

The bot can't seem to handle when waves/battles end due to skill use, such as when slime blasting. As of now, you need to put extra commands after the skill which will wipe the wave to make sure the bot won't progress to the next turn while death animations are playing, then put the skills to be used on the next turn, which causes the bot to waste a turn attacking. Trying to put all of the skills on the same turn causes the bot to skip past them when the "next* button appears, wasting the action.

Dread Barrage Missions

Hello there Steve!

The script crashes when the dread barrage missions popup comes up:
image

I'm linking the log:
Dread Barrage.txt

Also Dread Barrage is now a token drawbox type event I don't know if that changes anything.

Thanks in advance!
qwe8585

Current event (token drawboxes) bug "IndexError: list index out of range" when trying to locate banner.

0:00:00 [INFO] Initializing EasyOCR reader...
0:00:02 [INFO] EasyOCR reader initialized.
0:00:03 [SUCCESS] Bot's current location is at HOME.
0:00:03 [INFO] Bot is at the Home screen.

0:00:03 [DEBUG] Recalibrating the dimensions of the game window...
0:00:03 [SUCCESS] Found the HOME button at Point(x=1773, y=1002).
0:00:03 [SUCCESS] Found the HOME_NEWS button at Point(x=1375, y=107).
0:00:03 [SUCCESS] Found the HOME_MENU button at Point(x=1787, y=104).
0:00:03 [SUCCESS] Dimensions of the game window has been successfully recalibrated.

********************************************************************************
********************************************************************************
0:00:03 [INFO] Screen Size: Size(width=1920, height=1080)
0:00:03 [INFO] Game Window Dimensions: Region(1340, 80, 1750, 946)
********************************************************************************
********************************************************************************
0:00:03 [SUCCESS] Bot's current location is at HOME.


################################################################################
################################################################################
0:00:03 [FARM] Starting Farming Mode for Event (Token Drawboxes).
0:00:03 [FARM] Farming 20x Repeated Runs at VH Event Raid.
################################################################################
################################################################################

0:00:04 [SUCCESS] Bot's current location is at HOME.
0:00:04 [INFO] Bot is at the Home screen.
0:00:04 [SUCCESS] Bot's current location is at HOME.
0:00:04 [DEBUG] Attempting to find and click the button: "home_menu".
0:00:04 [SUCCESS] Found the HOME_MENU button at Point(x=1787, y=104).
0:00:05 [DEBUG] Failed to detect any occurrences of EVENT_BANNER images.
0:00:05 [DEBUG] Failed to detect any occurrences of EVENT_BANNER_BLUE images.

0:00:05 [ERROR] Bot encountered exception in MapSelection select_map(): 
Traceback (most recent call last):
  File "C:\Users\stijn\Desktop\granblue-automation-pyautogui-main\map_selection.py", line 543, in select_map
    self._game.mouse_tools.move_and_click_point(banner_locations[0][0], banner_locations[0][1])
IndexError: list index out of range


0:00:05 [ERROR] Bot encountered exception in Farming Mode: 
Traceback (most recent call last):
  File "C:\Users\stijn\Desktop\granblue-automation-pyautogui-main\game.py", line 1945, in start_farming_mode
    raise Exception("Confirming the location of the Summon Selection screen after selecting the mission returned False.")
Exception: Confirming the location of the Summon Selection screen after selecting the mission returned False.


################################################################################
################################################################################
0:00:05 [FARM] Ending Farming Mode.
################################################################################
################################################################################

Bug with the current drawbox event "The Divine Generals Assembly". It seems that it's unable to find the banner for the event.
Even though the banner is visible on the menu.
image

Dread Barrage

Hello there Steve!

Keep up the good work!

I know this is pretty tall order but I couldn't make the event tab work with the new event "Dread Barrage".

Could you please check it?

qwe8585.

Event Drawbox Difficulty Deadzone

Just like with Guild Wars, the current clicking zone between the AP and the difficulty is a deadzone.

Maybe making the clicking selection area something like this would work better?
image

Empty Config

The latest release seems to be generating an empty config.ini file.

[WARNING] Could not find any valid room code

Hi Steve,

I have noticed that the warning message " [WARNING] Could not find any valid room code" always showing from 0:00 am (GMT +8),. Are there any limitations on the raid finder?

Cheers,
Yi

Turn waiting charged attack

I've noticed when I have charged attacks going in a turn it tries to start the next turn whilst they are still going off.

Also suggest to add a full auto functionality because some quests/raids for me personally are full auto anyway

Just noticed bot is unable to detect quest button I believe due to strike time, will test more and find out.

Virtualiztaion

Hello there Steve!

Keep up the good work!

Your applications works very well on my Windows 10 machine.

My problem is I tried to circumvent the separate machine part of the application.

It is a windows 10 machine running in VMware workstation and while it starts up and finds the home button it doesn't move the mouse.

I just wanted to know if I messed up or if the application can't run in a virtual environment.

qwe8585.

Script Improvements

Hello again! I was wondering how feasible it would be to add in some wide-reaching improvements to creatable scripts, like a certain other bot that is not available.

https://github.com/Masuzu/ZooeyBot/wiki/Lua-scripts

It was extremely extensible and could feasibly recreate any behavior you wanted, even precise management of Korwa's Fil stacks or Rosetta's Rose Barrier mechanics using user-defined variables.

Parsing combat script file names in config.ini

There is a bug currently where the combat script file names are being misread in config.ini.

In a situation where you want to farm Dimensional Halo with a different combat script than the one being used in Farming Mode, you would set in the field:

dimensional_halo_combat_script = myscript

When the bot reaches Dimensional Halo, it would misread it as the following:

scripts/C:/Users/my_profile/Desktop/granblue-automation-pyautogui/scripts/myscript.txt

instead of:

C:/Users/my_profile/Desktop/granblue-automation-pyautogui/scripts/myscript.txt

In addition, the instructions for using another combat script in the config.ini is not being clear to the user that they actually cannot include the file extension in the input because otherwise if the user did:

dimensional_halo_combat_script = myscript.txt

It would be misread as:

scripts/C:/Users/my_profile/Desktop/granblue-automation-pyautogui/scripts/myscript.txt.txt

To fix:

  • Get rid of the appending of "scripts/" in front of the path.
  • Clarify the instructions for using other combat scripts in the config.ini

Raid Already Defeated

Requesting for the bot to automatically close and proceed if the "This raid has already been defeated" window appears due to using a skill on a raid which has already reached 0 HP.

Also, sorry for the double issue opening! Is it better to open one issue at a time for separate cases, or post multiple issues/suggestions in one thread?

Bug trying to start event drawbox raid

################################################################################
################################################################################
0:00:05 [FARM] Starting Farming Mode for Event (Token Drawboxes).
0:00:05 [FARM] Farming 15x Repeated Runs at EX Event Raid.
################################################################################
################################################################################

0:00:05 [SUCCESS] Bot's current location is at HOME.
0:00:05 [INFO] Bot is at the Home screen.
0:00:05 [SUCCESS] Bot's current location is at HOME.
0:00:05 [DEBUG] Attempting to find and click the button: "home_menu".
0:00:05 [SUCCESS] Found the HOME_MENU button at Point(x=3254, y=136).
0:00:07 [INFO] Occurrence for EVENT_BANNER found at: Point(x=2891, y=745)
0:00:10 [WARNING] Failed to confirm the bot's location at EVENT_DAILY_MISSIONS.
0:00:10 [DEBUG] Now scrolling the screen from the "Home" button's coordinates at (3240, 1352) by -200 clicks...
0:00:11 [INFO] Now hosting Event Raid...
0:00:11 [DEBUG] Attempting to find and click the button: "event_raid_battle".
0:00:11 [SUCCESS] Found the EVENT_RAID_BATTLE button at Point(x=2890, y=552).
0:00:12 [DEBUG] Now scrolling the screen from the "Home" button's coordinates at (3240, 1352) by -400 clicks...
0:00:13 [DEBUG] Attempting to find and click the button: "event_raid_extreme".
0:00:13 [SUCCESS] Found the EVENT_RAID_EXTREME button at Point(x=3049, y=579).

0:00:14 [INFO] Now waiting for event_raid_extreme to vanish from screen...
0:00:18 [ERROR] event_raid_extreme should have vanished from the screen after 3 seconds but did not. Exact error is: 
The target event_raid_extreme was found on the screen while it was not expected
0:00:18 [INFO] Not enough materials to host Extreme. Hosting Very Hard instead...
0:00:18 [DEBUG] Attempting to find and click the button: "event_very_hard_raid".

0:00:18 [ERROR] Bot encountered exception in MapSelection select_map(): 
Traceback (most recent call last):
  File "C:\Users\Stijn\Desktop\granblue-automation-pyautogui-main\map_selection.py", line 633, in select_map
    self._game.find_and_click_button("event_very_hard_raid")
  File "C:\Users\Stijn\Desktop\granblue-automation-pyautogui-main\game.py", line 332, in find_and_click_button
    temp_location = self.image_tools.find_button(button_name.lower(), tries=tries, suppress_error=suppress_error)
  File "C:\Users\Stijn\Desktop\granblue-automation-pyautogui-main\image_utils.py", line 107, in find_button
    button_location = pyautogui.locateCenterOnScreen(f"images/buttons/{button_name.lower()}.png", confidence=custom_confidence, grayscale=grayscale_check,
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyautogui\__init__.py", line 175, in wrapper
    return wrappedFunction(*args, **kwargs)
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyautogui\__init__.py", line 207, in locateCenterOnScreen
    return pyscreeze.locateCenterOnScreen(*args, **kwargs)
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyscreeze\__init__.py", line 400, in locateCenterOnScreen
    coords = locateOnScreen(image, **kwargs)
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyscreeze\__init__.py", line 360, in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyscreeze\__init__.py", line 340, in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyscreeze\__init__.py", line 197, in _locateAll_opencv
    needleImage = _load_cv2(needleImage, grayscale)
  File "C:\Users\Stijn\AppData\Local\Programs\Python\Python38\lib\site-packages\pyscreeze\__init__.py", line 160, in _load_cv2
    raise IOError("Failed to read %s because file is missing, "
OSError: Failed to read images/buttons/event_very_hard_raid.png because file is missing, has improper permissions, or is an unsupported or invalid format


0:00:18 [ERROR] Bot encountered exception in Farming Mode: 
Traceback (most recent call last):
  File "C:\Users\Stijn\Desktop\granblue-automation-pyautogui-main\game.py", line 2010, in start_farming_mode
    raise Exception("Confirming the location of the Summon Selection screen after selecting the mission returned False.")
Exception: Confirming the location of the Summon Selection screen after selecting the mission returned False.


################################################################################
################################################################################
0:00:18 [FARM] Ending Farming Mode.
################################################################################
################################################################################

Bot ends with cursor hovering the image of the raid
image

Combat system 2.0

Hello there Steve!

The bot doesn't recognize the full auto button if it's in a combat system 2.0 battle:

image

image

I'm linking the log:
COMBAT 2.0.txt

Thanks in advance!
qwe8585

Summon loop.

Hello there Steve!

My newest find is a summon loop bug.

Summon_loop

The script scroll to the bottom but if doesn't find the selected summon it just loops around trying to find it.

I'm linking the log too:
Summon_loop.txt

qwe8585.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.