From 2ba7d2368be3b4b26f7054e7173486da86aa69ef Mon Sep 17 00:00:00 2001 From: Wissem Date: Tue, 8 Aug 2023 16:56:42 +0100 Subject: [PATCH] Add files via upload --- ACV.py | 126 ++++++++++++++++++++++++++++++++++ build.config.json | 81 ++++++++++++++++++++++ champ.txt | 1 + config.json | 61 +++++++++++++++++ icon.ico | Bin 0 -> 29634 bytes test.py | 17 +++++ userInterface.ui | 167 ++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 453 insertions(+) create mode 100644 ACV.py create mode 100644 build.config.json create mode 100644 champ.txt create mode 100644 config.json create mode 100644 icon.ico create mode 100644 test.py create mode 100644 userInterface.ui diff --git a/ACV.py b/ACV.py new file mode 100644 index 0000000..e7886e6 --- /dev/null +++ b/ACV.py @@ -0,0 +1,126 @@ +from pynput.keyboard import Listener as keyboardListener +from pynput.mouse import Controller, Button +from PyQt5.QtWidgets import QApplication +from pyautogui import screenshot +from os import startfile, path +from PyQt5.uic import loadUi +from threading import Thread +from time import sleep +from sys import exit +import json + + +def keyPress(key): + if str(key) == "<67>": + main() + listener.stop() + + +def main(): + mouse = Controller() + if not path.exists("./champ.txt"): + open("./champ.txt", "w").write("champNameHere") + startfile("champ.txt") + exit() + + with open("./champ.txt", "r") as f: + fav_champ = str(f.readline().strip()).lower() + + lockBtnPos = (950, 800) # old (770, 655) + newPos = (0, 0) + basePos = (540, 925) + squareXDiff = 85 + squareYDiff = 65 + + if fav_champ in allAgents: + agentsLineOrder = len(allAgents) // 2 + newPos = ( + 540 + (allAgents.index(fav_champ) % agentsLineOrder) * squareXDiff, + 925 + (allAgents.index(fav_champ) // agentsLineOrder) * squareYDiff, + ) + + if newPos != (0, 0): + sleep(0.1) + mouse.position = newPos + mouse.click(Button.left, 2) + sleep(0.1) + mouse.position = lockBtnPos + sleep(0.1) + mouse.click(Button.left, 1) + else: + startfile("champ.txt") + exit() + + +def initScreenListenerThread(): + global screenListenerThread + screenListenerThread = Thread(target=initialiseScreenListener, daemon=True).start() + + +def initialiseScreenListener(): + while True: + im = screenshot() + validPixels = 1 + for i in range(pixelsPositions.__len__()): + pixelColor = im.getpixel(pixelsPositions[i]) + if pixelsColors[i] == pixelColor: + validPixels += 1 + else: + break + if validPixels == 4: + listener.stop() + main() + break + exit() + sleep(0.05) + + +def changeAgent(): + newAgent = fen.agentName.text() + if newAgent in allAgents and path.exists("./champ.txt"): + with open("./champ.txt", "w") as f: + f.write(fen.agentName.text()) + else: + fen.agentName.setText("agent not valid !") + + +############## Main Program ############## + + +App = QApplication([]) +fen = loadUi("userInterface.ui") + +global allAgents +# get config data from "config.json" +with open("config.json", "r") as f: + data = json.loads(f.read()) + allAgents = data["agents"] + agentsPreferredMap = data["preferredAgentMap"] + mapsPixelsColors = data["mapsPixelsColors"] + pixelsPositions = list(tuple(pointPos) for pointPos in data["pointsPos"]) + maps = list(agentsPreferredMap.keys()) + print(pixelsPositions) + +exit() + +if path.exists("./champ.txt"): + with open("./champ.txt", "r") as f: + fav_champ = str(f.readline().strip()).lower() + if len(fav_champ) > 0: + fen.agentName.setText(fav_champ) + +fen.initialiseBtn.clicked.connect(initScreenListenerThread) +fen.selectBtn.clicked.connect(changeAgent) +fen.exitBtn.clicked.connect(exit) + + +pixelsPositions = [(0, 100), (0, 200), (0, 300), (0, 400)] +pixelsColors = [(55, 168, 227), (68, 174, 226), (89, 178, 227), (106, 177, 222)] + +global listener +listener = keyboardListener(on_press=keyPress) +listener.start() + + +fen.show() +App.exec() diff --git a/build.config.json b/build.config.json new file mode 100644 index 0000000..1dff6d7 --- /dev/null +++ b/build.config.json @@ -0,0 +1,81 @@ +{ + "version": "auto-py-to-exe-configuration_v1", + "pyinstallerOptions": [ + { + "optionDest": "noconfirm", + "value": true + }, + { + "optionDest": "filenames", + "value": "D:/code/projects/auto champ (valorant) selector/source_code/ACV.py" + }, + { + "optionDest": "onefile", + "value": false + }, + { + "optionDest": "console", + "value": true + }, + { + "optionDest": "icon_file", + "value": "D:/code/projects/auto champ (valorant) selector/source_code/icon.ico" + }, + { + "optionDest": "ascii", + "value": false + }, + { + "optionDest": "clean_build", + "value": false + }, + { + "optionDest": "strip", + "value": false + }, + { + "optionDest": "noupx", + "value": false + }, + { + "optionDest": "disable_windowed_traceback", + "value": false + }, + { + "optionDest": "embed_manifest", + "value": true + }, + { + "optionDest": "uac_admin", + "value": false + }, + { + "optionDest": "uac_uiaccess", + "value": false + }, + { + "optionDest": "win_private_assemblies", + "value": false + }, + { + "optionDest": "win_no_prefer_redirects", + "value": false + }, + { + "optionDest": "bootloader_ignore_signals", + "value": false + }, + { + "optionDest": "argv_emulation", + "value": false + }, + { + "optionDest": "datas", + "value": "D:/code/projects/auto champ (valorant) selector/source_code/champ.txt;." + } + ], + "nonPyinstallerOptions": { + "increaseRecursionLimit": true, + "manualArguments": "" + } +} \ No newline at end of file diff --git a/champ.txt b/champ.txt new file mode 100644 index 0000000..d1f7f74 --- /dev/null +++ b/champ.txt @@ -0,0 +1 @@ +kay/o \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..2e0e426 --- /dev/null +++ b/config.json @@ -0,0 +1,61 @@ +{ + "preferredAgentMap": { + "Ascent": "astra", + "Bind": "breach", + "Breeze": "brimstone", + "Fracture": "", + "Haven": "", + "Icebox": "", + "Pearl": "", + "Split": "" + }, + + "pointsPos": [ + [0, 100], + [0, 200], + [0, 300], + [0, 400] + ], + + "mapsPixelsColors": { + "Ascent": [ + [55, 168, 227], + [68, 174, 226], + [89, 178, 227], + [106, 177, 222], + [0, 0, 0] + ], + "Bind": [], + "Breeze": [], + "Fracture": [], + "Haven": [], + "Icebox": [], + "Pearl": [], + "Split": [] + }, + + "agents": [ + "astra", + "breach", + "brimstone", + "chamber", + "cypher", + "deadlock", + "fade", + "gekko", + "harbor", + "jett", + "kay/o", + "killjoy", + "neon", + "omen", + "phoenix", + "raze", + "reyna", + "sage", + "skye", + "sova", + "viper", + "yoru" + ] +} diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..538de2404dddc10a2d20de9ea3d65440bce31196 GIT binary patch literal 29634 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 literal 0 HcmV?d00001 diff --git a/test.py b/test.py new file mode 100644 index 0000000..d084ad0 --- /dev/null +++ b/test.py @@ -0,0 +1,17 @@ +from pynput.mouse import Controller, Button +from time import sleep + + +sleep(2) +mouse = Controller() + +mouse.position = (770, 655) +# mouse.position = (435 + 65 + 65, 740 + 65) +# mouse.position = (435 + 65 + 65, 740 + 65) +exit() + +i = 1 +while True: + print(f"{i} : ", mouse.position) + i += 1 + sleep(1) diff --git a/userInterface.ui b/userInterface.ui new file mode 100644 index 0000000..ddc6e93 --- /dev/null +++ b/userInterface.ui @@ -0,0 +1,167 @@ + + + Form + + + + 0 + 0 + 426 + 267 + + + + Form + + + QWidget { +background-color: #000; +color: #EEE; +} + +QPushButton { + border-radius: 10px; + color: white; + border: 1px solid #999; +} +QPushButton:hover { + border-color: red; +} + +#title { + color: red; +} + +QLabel { + background-color: transparent; +} + + + + + 20 + 10 + 261 + 61 + + + + + 16 + 75 + true + + + + Agent Auto Picker + + + Qt::AlignCenter + + + + + + 150 + 180 + 151 + 41 + + + + + 12 + 75 + true + + + + PointingHandCursor + + + INITIALISE + + + + + + 310 + 20 + 101 + 41 + + + + + 12 + 75 + true + + + + PointingHandCursor + + + EXIT + + + + + + 120 + 240 + 211 + 16 + + + + ShortCut : CTRL + SHIFT + ALT + C + + + + + + 40 + 100 + 251 + 41 + + + + + 10 + + + + padding: 5px; +border-radius: 10px; +border: 1px solid #999; + + + Select Agent + + + + + + 310 + 100 + 101 + 41 + + + + + 10 + 75 + true + + + + Select + + + + + +