Valorant Artanis Triggerbot
Features of Valorant Color Triggerbot:
Supports color recognition for red, purple, and yellow targets.
Allows customization of trigger activation through keyboard inputs.
Offers both hold and toggle modes for user preference.
Tested over 9 hours of gameplay without any bans reported.
How to Use the Valorant Artanis Triggerbot Hack?
Make sure that you have the script on your device; so click the download button below and download the script on your PC
Unzip the python script into any directory on your computer
Make sure you have installed Python on your PC
Run click-me.bat.
Enter a key for the trigger (e.g., “9”). Note: Virtual keyboard isn’t supported at the moment, but you can change it in a macro.
Choose your enemy highlight color (red, purple, or yellow — personally, I prefer yellow).
Select the mode (hold or toggle — toggle works best for me).
Launch Valorant and have fun!
Source Code
python
import time
import threading
from pynput import mouse, keyboard
from ctypes import WinDLL
import numpy as np
import cv2
from mss import mss as mss_module
RED = "\033[91m"
GRAY = "\033[90m"
RESET = "\033[0m"
ARTANIS_ASCII = f"""
{RED} ▄▄▄ {GRAY}██▀███ {RED}▄▄▄█████▓ {GRAY}▄▄▄ {RED}███▄ █ {GRAY}██▓ {RED}██████ {RESET}
{RED}▒████▄ {GRAY}▓██ ▒ ██▒{RED}▓ ██▒ ▓▒{GRAY}▒████▄ {RED}██ ▀█ █ {GRAY}▓██▒{RED}▒██ ▒ {RESET}
{RED}▒██ ▀█▄ {GRAY}▓██ ░▄█ ▒{RED}▒ ▓██░ ▒░{GRAY}▒██ ▀█▄ {RED}▓██ ▀█ ██▒{GRAY}▒██▒{RED}░ ▓██▄ {RESET}
{RED}░██▄▄▄▄██ {GRAY}▒██▀▀█▄ {RED}░ ▓██▓ ░ {GRAY}░██▄▄▄▄██ {RED}▓██▒ ▐▌██▒{GRAY}░██░{RED} ▒ ██▒{RESET}
{RED} ▓█ ▓██▒{GRAY}░██▓ ▒██▒{RED} ▒██▒ ░ {GRAY} ▓█ ▓██▒{RED}▒██░ ▓██░{GRAY}░██░{RED}▒██████▒▒{RESET}
{RED} ▒▒ ▓▒█░{GRAY}░ ▒▓ ░▒▓░{RED} ▒ ░░ {GRAY} ▒▒ ▓▒█░{RED}░ ▒░ ▒ ▒ {GRAY}░▓ {RED}▒ ▒▓▒ ▒ ░{RESET}
{RED} ▒ ▒▒ ░{GRAY} ░▒ ░ ▒░{RED} ░ {GRAY} ▒ ▒▒ ░{RED}░ ░░ ░ ▒░{GRAY} ▒ ░{RED}░ ░▒ ░ ░{RESET}
{RED} ░ ▒ {GRAY} ░░ ░ {RED} ░ {GRAY} ░ ▒ {RED} ░ ░ ░ {GRAY} ▒ ░{RED}░ ░ ░ {RESET}
{RED} ░ ░{GRAY} ░ {RED} {GRAY} ░ ░{RED} ░ {GRAY} ░ {RED} ░ {RESET}
"""
print(ARTANIS_ASCII)
HOTKEYS = [] # for special keys it should be something like keyboard.Key.shift, and keyboard.KeyCode.from_char('a') for normal alphanumeric keys. You can refer to [url]https://pynput.readthedocs.io/en/latest/keyboard.html[/url]
MOUSE_BUTTONS = [mouse.Button.middle, mouse.Button.right] # mouse.Button.middle, mouse.Button.right, mouse.button.back, mouse.button.forward
EXIT_KEY = keyboard.Key.end
TOGGLE_KEY = keyboard.Key.insert
SHOOT_KEY = 'l'
DELAY = 50
BASE_DELAY = 0.01
print(f"Press '{RED}{TOGGLE_KEY.name}{RESET}' to enable or disable the script")
print(f"Press '{RED}{EXIT_KEY.name}{RESET}' to exit the program")
if HOTKEYS:
formatted_hotkeys = ', '.join(
f"'{key.char}'" if hasattr(key, 'char') else key.name for key in HOTKEYS
)
else:
formatted_hotkeys = "none"
if MOUSE_BUTTONS:
formatted_mouse_buttons = ', '.join(button.name for button in MOUSE_BUTTONS)
else:
formatted_mouse_buttons = "none"
print(f"Press the mouse buttons {RED}{formatted_mouse_buttons}{RESET} or the keys {RED}{formatted_hotkeys}{RESET} to start the trigger")
print("")
lib_user32 = WinDLL("user32", use_last_error=True)
lib_shcore = WinDLL("shcore", use_last_error=True)
lib_shcore.SetProcessDpiAwareness(2)
SCREEN_WIDTH = lib_user32.GetSystemMetrics(0)
SCREEN_HEIGHT = lib_user32.GetSystemMetrics(1)
CAPTURE_ZONE = 3
GRAB_AREA = (
int(SCREEN_WIDTH / 2 - CAPTURE_ZONE),
int(SCREEN_HEIGHT / 2 - CAPTURE_ZONE),
int(SCREEN_WIDTH / 2 + CAPTURE_ZONE),
int(SCREEN_HEIGHT / 2 + CAPTURE_ZONE),
)
class Colors:
yellow = ((np.array([30, 160, 240]), np.array([30, 255, 255])), # aggressive filtering, for range 2-3
(np.array([30, 160, 240]), np.array([30, 255, 255])), # gracious for range 0-1
(np.array([30, 160, 240]), np.array([30, 255, 255]))) # lenient filtering for square mask in range 0-1
purple = ((np.array([145, 150, 240]), np.array([150, 255, 255])), # aggressive filtering, for range 2-3
(np.array([140, 70, 80]), np.array([155, 255, 255])), # gracious for range 0-1
(np.array([140, 70, 80]), np.array([170, 255, 255]))) # lenient filtering for square mask in range 0-1
antiphoenix = ((np.array([145, 150, 240]), np.array([150, 255, 255])), # aggressive filtering, for range 2-3
(np.array([140, 70, 204]), np.array([150, 255, 255])), # gracious for range 0-1
(np.array([15, 194, 150]), np.array([18, 235, 200]))) # phoenix hair tracking
primary = ((np.array([145, 180, 240]), np.array([149, 255, 255])), # HYPER aggressive filtering, for range 2-3
(np.array([140, 70, 204]), np.array([150, 255, 255])), # gracious for range 0-1
(np.array([15, 194, 150]), np.array([18, 235, 200])), # phoenix hair tracking
(np.array([140, 70, 80]), np.array([170, 255, 255]))) # lenient purple
aggressive = (([0,0,0], [0,0,0]), # Red
(np.array([145, 110, 125]), np.array([150, 255, 255])), # Purple
(np.array([145, 150, 240]), np.array([150, 255, 255])), # Purple Increase Precision
(np.array([30, 150, 200]), np.array([30, 165, 255]))) # Yellow
standard = (([0,0,0], [0,0,0]), # Red
(np.array([140, 70, 100]), np.array([150, 255, 255])), # Purple
(np.array([140, 70, 204]), np.array([150, 255, 255])), # 204 240 Purple Increase Precision 150
(np.array([30, 125, 150]), np.array([30, 255, 255]))) # Yellow
test = ((np.array([0, 0, 0]), np.array([0, 0, 0])), # Red
(np.array([0, 0, 0]), np.array([255, 255, 0])), # blk
(np.array([79, 180, 250]), np.array([80, 190, 255])), # lime green
(np.array([0, 0, 245]), np.array([0, 0, 255])), # white
(np.array([30, 125, 150]), np.array([30, 255, 255])), # Yellow
(np.array([0, 0, 0]), np.array([0, 0, 0])), # Red
(np.array([15, 100, 100]), np.array([16, 230, 230])), # Orng
(np.array([15, 100, 100]), np.array([16, 230, 230])), # Orng
(np.array([30, 125, 150]), np.array([30, 255, 255])), # Yellow
(np.array([15, 234, 0]), np.array([20, 235, 255])), # phenix brown
(np.array([17, 234, 0]), np.array([18, 235, 255])), # phenix hair specific
(np.array([0, 125, 0]), np.array([10, 130, 255])), # phenix brown
(np.array([15, 194, 0]), np.array([20, 235, 255]))) # a bit gracious but works better at long range
kill = ((np.array([70, 0, 200]), np.array([90, 50, 255])), # white lime
(np.array([0, 0, 240]), np.array([0, 0, 255])), # white
(np.array([79, 180, 250]), np.array([80, 190, 255])), # lime green
(np.array([79, 180, 250]), np.array([80, 190, 255]))) # lime green
class ScreenCapture:
def __init__(self):
self.screen_capture = mss_module()
def capture_image(self, grab_area):
img = np.array(self.screen_capture.grab(grab_area))
img = cv2.resize(img, (0, 0), fx=0.5, fy=0.5)
roi_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
return roi_hsv
class ColorDetection:
def __init__(self, lower_hsv, upper_hsv):
self.lower_hsv = lower_hsv
self.upper_hsv = upper_hsv
def detect_color(self, roi_hsv):
mask = cv2.inRange(roi_hsv, self.lower_hsv, self.upper_hsv)
kernel = np.ones((2, 2), np.uint8)
dilated = cv2.dilate(mask, kernel, iterations=1)
contours, _ = cv2.findContours(dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
return contours
class Trigger:
def __init__(self):
self.screen_capture = ScreenCapture()
self.color_detection = ColorDetection(*Colors.purple[2]) # players color
self.is_active = False
self.is_enabled = True
self.should_exit = threading.Event()
def search(self):
roi_hsv = self.screen_capture.capture_image(GRAB_AREA)
contours = self.color_detection.detect_color(roi_hsv)
if self.is_active and contours:
actual_delay = BASE_DELAY + (BASE_DELAY * DELAY / 100.0)
time.sleep(actual_delay)
keyboard.Controller().press(SHOOT_KEY)
keyboard.Controller().release(SHOOT_KEY)
time.sleep(np.random.uniform(0.090, 0.12))
def on_keyboard_press(self, key):
if key == TOGGLE_KEY:
self.is_enabled = not self.is_enabled
print(f"Trigger {'enabled' if self.is_enabled else 'disabled'}")
if key == EXIT_KEY:
print("Exiting program...")
self.exit_program()
if self.is_enabled and key in HOTKEYS:
self.is_active = True
def on_keyboard_release(self, key):
if self.is_enabled and key in HOTKEYS:
self.is_active = False
def on_mouse_click(self, x, y, button, pressed):
if self.is_enabled and button in MOUSE_BUTTONS:
self.is_active = pressed
def exit_program(self):
self.should_exit.set()
def start_(self):
listener_keyboard = keyboard.Listener(on_press=self.on_keyboard_press, on_release=self.on_keyboard_release)
listener_mouse = mouse.Listener(on_click=self.on_mouse_click)
listener_keyboard.start()
listener_mouse.start()
while not self.should_exit.is_set():
if self.is_active:
self.search()
time.sleep(0.01)
def main():
bot = Trigger()
bot.start_()
if __name__ == "__main__":
main()