最近玩阴阳师玩上头了,可是刷土一直手动也不是办法,就想着写个脚本来帮助自己提高一下练度
好的话不多说我们进入正题。
主要思路:通过判断魂土挑战位置来模拟鼠标操作
具体实现:使用pyautogui进行模拟鼠标操作
每次挑战完成后使用python的cv2库进行图片对比进行结算。
主要实现代码:
首先导入所需的库
import cv2
import pyautogui as p
import random
import time
截屏函数:
def get_screen():
# 截屏口令 保存图片
#img = p.screenshot(region=(0,0, 1280, 720)) #截取范围是左0,右0,1280x720的范围
img = p.screenshot()
img.save('save.png')
img = cv2.imread('save.png', 0)
return img
匹配函数:
通过对比结束的图片来进行后续操作
def match(img1,template):#匹配图片
res=cv2.matchTemplate(img1,template,cv2.TM_CCOEFF_NORMED)
max=res.max()
return max
matchTemplate匹配两张图片,若有相似则返回一个数值,这里我们直接将它return即可。
实现:
import cv2
import pyautogui as p
import random
import time
def get_screen():
# 截屏口令 保存图片
#img = p.screenshot(region=(0,0, 1280, 720)) #截取范围是左0,右0,1280x720的范围
img = p.screenshot()
img.save('save.png')
img = cv2.imread('save.png', 0)
return img
def match(img1,template):#匹配图片
res=cv2.matchTemplate(img1,template,cv2.TM_CCOEFF_NORMED)
max=res.max()
return max
print("脚本执行开始......请以管理员权限运行")
print("使用前记得打开御魂加成")
print("作者:WMHuii QQ:1872157865 beta2.0 ")
match_degree=0.99#
t_end = cv2.imread('pass_time.png',0)#读取图片
t_end2 = cv2.imread('end.png',0)
i=1
while(True):
#1380 760
#1450 820
#initialization
x = random.randint(1380, 1450)
y = random.randint(760, 820)
shortt = random.uniform(1, 1.5)
speed = random.uniform(1, 1.5) # 设置速度
#############
p.moveTo(x, y, speed)
p.click()
while(True):
match_result = match(t_end, get_screen())
if(match_result>match_degree):
break
p.click()
time.sleep(0.5)
p.click()
time.sleep(1.5)
p.click()
print('\r' + 'match success! 完成了' + str(i) + '次!', end='', flush=True)
time.sleep(1)
p.click()
i+=1
time.sleep(shortt)
最后为了防止官方检测,加入随机函数random随机范围内的鼠标位置。然后用pyinstaller打包成exe即可使用。
至此,一个简易的刷魂土脚本实现完成。
当然,这局限性很大,比如不同的副本无法很好的匹配。
在下一篇我将讲述如何获取匹配图片后的坐标再进行操作