嘿,我正在尝试解决一个问题,每当我通过 exe 文件关闭此代码时。我的键盘被延迟,以解决我必须关闭程序窗口或重新打开它的问题。
任何人都可以修复此代码并删除此键盘延迟,因为我对编码仍然陌生。 该怎么办任何人都可以解释一下吗
import keyboard
import pyautogui
import time
import ctypes
import PIL.ImageGrab
import PIL.Image
import winsound
import os
import mss
from colorama import Fore, Style, init
S_HEIGHT, S_WIDTH = (PIL.ImageGrab.grab().size)
PURPLE_R, PURPLE_G, PURPLE_B = (250, 100, 250)
TOLERANCE = 31
GRABZONE = 10
TRIGGER_KEY = "ctrl + alt"
SWITCH_KEY = "ctrl + tab"
GRABZONE_KEY_UP = "ctrl + up"
BUNNY_KEY = "ctrl + space"
GRABZONE_KEY_DOWN = "ctrl + down"
mods = ["OPERATOR/MARSHAL", "GUARDIAN", "VANDAL/PHANTOM/SHOTGUNS"]
pyautogui.FAILSAFE = False
class FoundEnemy(Exception):
pass
class triggerBot():
def __init__(self) -> None:
self.toggled = False
self._bunny = False
self.mode = 1
self.last_reac = 0
def toggle(self) -> None: self.toggled = not self.toggled
def bunnyy(self) -> None: self._bunny = not self._bunny
def switch(self):
if self.mode != 2: self.mode += 1
else: self.mode = 0
if self.mode == 0: winsound.Beep(200, 200)
if self.mode == 1: winsound.Beep(200, 200), winsound.Beep(200, 200)
if self.mode == 2: winsound.Beep(200, 200), winsound.Beep(200, 200), winsound.Beep(200, 200)
def click(self) -> None:
ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # sol bas
ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # sol bırak
def approx(self, r, g ,b) -> bool: return PURPLE_R - TOLERANCE < r < PURPLE_R + TOLERANCE and PURPLE_G - TOLERANCE < g < PURPLE_G + TOLERANCE and PURPLE_B - TOLERANCE < b < PURPLE_B + TOLERANCE
def grab(self) -> None:
with mss.mss() as sct:
bbox=(int(S_HEIGHT/2-GRABZONE), int(S_WIDTH/2-GRABZONE), int(S_HEIGHT/2+GRABZONE), int(S_WIDTH/2+GRABZONE))
sct_img = sct.grab(bbox)
return PIL.Image.frombytes('RGB', sct_img.size, sct_img.bgra, 'raw', 'BGRX')
def scan(self) -> None:
start_time = time.time()
pmap = self.grab()
try:
for x in range(0, GRABZONE*2):
for y in range(0, GRABZONE*2):
r, g, b = pmap.getpixel((x,y))
if self.approx(r, g, b): raise FoundEnemy
except FoundEnemy:
self.last_reac = int((time.time() - start_time)*1000)
self.click()
if self.mode == 0: time.sleep(0.5)
if self.mode == 1: time.sleep(0.25)
if self.mode == 2: time.sleep(0.1)
print_banner(self)
def bunny(self) -> None:
while True:
if keyboard.is_pressed("space"): pyautogui.press("space")
else: break
def print_banner(bot: triggerBot) -> None:
os.system("cls")
print(Style.BRIGHT + Fore.CYAN + " 🇵🇷🇮🇲🇪 🇭🇦🇨🇰🇸 - 🇵🇦🇮🇩 🇨🇭🇪🇦🇹🇸 " + Style.RESET_ALL)
print("===== Controls =====")
print("Activate :", Fore.YELLOW + TRIGGER_KEY + Style.RESET_ALL)
print("Change Gun :", Fore.YELLOW + SWITCH_KEY + Style.RESET_ALL)
print("FOV Circle Size(I Think) :", Fore.YELLOW + GRABZONE_KEY_UP + "/" + GRABZONE_KEY_DOWN + Style.RESET_ALL)
print("Bunny Hop :", Fore.YELLOW + BUNNY_KEY + Style.RESET_ALL)
print("==== Settings ===")
print("Gun :", Fore.CYAN + mods[bot.mode] + Style.RESET_ALL)
print("FOV Circle :", Fore.CYAN + str(GRABZONE) + "x" + str(GRABZONE) + Style.RESET_ALL)
print("Trigger Bot :", (Fore.GREEN if bot.toggled else Fore.RED) + ("Enabled" if bot.toggled else "Disabled") + Style.RESET_ALL)
print("Bunny-Hop :", (Fore.GREEN if bot._bunny else Fore.RED) + ("Enabled" if bot._bunny else "Disabled") + Style.RESET_ALL)
print("T-Bot Reactime Time :", Fore.CYAN + str(bot.last_reac) + Style.RESET_ALL + " ms ("+str((bot.last_reac)/(GRABZONE*GRABZONE))+"ms/pix)")
if __name__ == "__main__":
bot = triggerBot()
print_banner(bot)
while True:
if keyboard.is_pressed(SWITCH_KEY):
bot.switch()
print_banner(bot)
while keyboard.is_pressed(SWITCH_KEY): pass
if keyboard.is_pressed(GRABZONE_KEY_UP):
GRABZONE += 5
print_banner(bot)
winsound.Beep(400, 200)
while keyboard.is_pressed(GRABZONE_KEY_UP): pass
if keyboard.is_pressed(GRABZONE_KEY_DOWN):
GRABZONE -= 5
print_banner(bot)
winsound.Beep(300, 200)
while keyboard.is_pressed(GRABZONE_KEY_DOWN): pass
if keyboard.is_pressed(TRIGGER_KEY):
bot.toggle()
print_banner(bot)
if bot.toggled: winsound.Beep(440, 75), winsound.Beep(700, 100)
else: winsound.Beep(440, 75), winsound.Beep(200, 100)
while keyboard.is_pressed(TRIGGER_KEY): pass
if keyboard.is_pressed(BUNNY_KEY):
bot.bunny()
print_banner(bot)
if bot._bunny: winsound.Beep(440, 75), winsound.Beep(700, 100)
else: winsound.Beep(440, 75), winsound.Beep(200, 100)
while keyboard.is_pressed(BUNNY_KEY): pass
if bot.toggled: bot.scan()
if bot._bunny:
if keyboard.is_pressed("space"): bot.bunny()
您可以在主循环中实现中断条件以允许中断或终止脚本。
if __name__ == "__main__":
bot = triggerBot()
print_banner(bot)
running = True # Flag to control the main loop
while running: # Main loop controlled by the 'running' flag
if keyboard.is_pressed('q'): # Press 'q' to exit the loop and terminate the script
running = False
break
# Rest of your code
driver.quit()