嗨,所以我想在 Python 中创建一个脚本,当它检测到某种颜色时,它会在给定位置单击,但 roblox 没有检测到单击或它在其他位置注册,我怎么知道我可以使用除 pyautogui 之外的其他内容,但什么?也对代码中的注释感到抱歉(这是波兰语)
import pyautogui
import pygetwindow as gw
from PIL import ImageGrab
import time
import colorsys
def get_mouse_position():
return pyautogui.position()
def move_to_position(x, y):
pyautogui.moveTo(x, y, duration=0.5)
def click_after_checking(click_position):
move_to_position(*click_position)
pyautogui.click()
def hex_to_rgb(hex_color):
hex_color = hex_color.lstrip("#")
rgb = tuple(int(hex_color[i:i + 2], 16) for i in (0, 2, 4))
return rgb
def rgb_to_hsl(rgb_color):
hsl = colorsys.rgb_to_hls(rgb_color[0] / 255.0, rgb_color[1] / 255.0, rgb_color[2] / 255.0)
return hsl
def color_distance(hsl1, hsl2):
return sum((a - b) ** 2 for a, b in zip(hsl1, hsl2)) ** 0.5
def detect_color_and_click(target_color, check_and_click_positions, final_click_position):
target_hsl = rgb_to_hsl(hex_to_rgb(target_color))
screenshot = ImageGrab.grab()
for i, (check_position, click_position) in enumerate(check_and_click_positions):
pixel_color = screenshot.getpixel(check_position)
pixel_hsl = rgb_to_hsl(pixel_color)
distance = color_distance(target_hsl, pixel_hsl)
if distance < 0.2: # Dystans kolorów poniżej 0.2 uznawany jest za podobny
print(f"[{i+1}/{len(check_and_click_positions)}] Znaleziono podobny kolor na pozycji {check_position}, przemieszczam myszkę i klikam")
click_after_checking(click_position)
time.sleep(1) # Dodaj opóźnienie po każdym sprawdzeniu koloru
# Przesuń myszkę do ostatecznej pozycji po sprawdzeniu wszystkich kolorów
print(f"Sprawdzenie wszystkich kolorów zakończone, przemieszczam myszkę do ostatecznej pozycji {final_click_position}")
move_to_position(*final_click_position)
pyautogui.click()
time.sleep(1) # Dodaj opóźnienie po kliknięciu w ostateczne miejsce
# Przykładowy kolor do porównania (fioletowy)
target_color = "#A73DEF"
check_and_click_positions = [((455, 502), (457, 480)),
((700, 502), (700, 476))] # Lista par pozycji do sprawdzenia i kliknięcia ((check_x, check_y), (click_x, click_y))
final_click_position = (497, 137) # Ostateczna pozycja do kliknięcia (x, y)
while True:
detect_color_and_click(target_color, check_and_click_positions, final_click_position)
time.sleep(2)
我最近也遇到了同样的问题。由于 Roblox 的反作弊系统,该库无法在 Roblox 上运行(哇,他们的反作弊系统第一次发挥作用)