如果您玩过GTA RP nopixel,您知道它具有非常具有挑战性的迷你游戏,其中之一称为“ Thermite”。
在这个迷你游戏中,您只能在5秒内记住该模式,然后要求您快速重复它,正如您可能想象的那样。
但不用担心,这是我的脚本进行救援的地方,您要做的就是按HOTKEY在记录模式上,然后按另一个脚本重复其刚刚记录的内容。
克隆github repo here。
查看bot视频here。
代码解释了
线(12)记录功能
def record():
img_bgr = pag.screenshot()
img_bgr = np.array(img_bgr)
img_rgb = img_bgr[:,:,::-1].copy()
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread('obj/' + WIMG + '.jpg',0)
w, h = template.shape[::-1]
res = cv.matchTemplate(img_gray, template,cv.TM_SQDIFF_NORMED)
mn,mx,mnLoc,mxLoc = cv.minMaxLoc(res)
当用户按下时,调用此功能
“ Ctrl + Shift + Alt + O”
启动模式录制过程。
它通过使用pyautogui.screenshot函数拍摄整个屏幕的屏幕截图,然后查找屏幕的一部分,看起来完全像白色正方形,通过将白色正方形的模板图像与openCENT进行比较的模板图像,并使用openCV“ cv” .matchtemplate“函数。
线(23)记录函数续
print(mx)
threshold = 0.05
loc = np.where(res <= threshold)
points = []
for pt in zip(*loc[::-1]):
close = False
for p in points:
if abs(pt[0] - p[0]) < 10 and abs(pt[1] - p[1]) < 10:
close = True
break
if close:
continue
points.append(pt)
cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
global Whites
Whites = points
在记录功能的这一部分中,它寻找匹配项,并将它们保存在“白色”中,将它们处理到屏幕位置元组后。
线(43)GO功能
def go():
global Whites
print(Whites)
for pt in Whites:
pag.click(pt[0] + 30, pt[1] + 30)
sleep(0.05)
用户按下时执行此功能
“ Ctrl + Shift + Alt + P”
它通过单击录制的屏幕位置来工作,该位置由“记录”函数保存。
它跨越全局列表“白色”,并使用pyautogui.click函数单击每个屏幕位置。
def kb_listener():
def on_release(key):
print(str(key))
if str(key) == "<79>":
record()
elif str(key) == "<80>":
go()
with Listener(on_release=on_release) as listener:
listener.join()
这是我们通常的键盘侦听器函数,当用户按正确组合时,该功能执行“记录”和“ go”功能(请检查PYNPUT文档以获取有关此功能的更多信息)。
line(62)脚本主代码
if __name__ == '__main__':
WIMG = input("Type 7 for 7x7, 8 for 8x8 then press Enter\n")
if not (WIMG in ("7", "8")):
print("Type either 7 or 8 to run this bot, Exiting...")
quit()
print("Running...")
while True:
kb_listener()
该部分负责运行整个脚本并加载全局变量'Wimg',该脚本的选择器是Minigame Square大小,7x7和8x8的选择器。
感谢您的阅读。