自己写的yys御魂python脚本
本帖最后由 Boffon 于 2020-4-1 23:24 编辑突然发现觉醒副本也能用!!!突破也可以试一下
最近买了30买了一个礼包,但是花和战升级太慢了,于是花了半天的时间用python写了一个脚本只能肝御魂,写完发现,虽然解放双手但是费体力,并且不能后台,电脑不能使用;
我的思路是用图像识别的方式,比较hash值来判断执行程序
拿到后还要根据自己的情况设置时间
下一个准备研究一下探索副本,欢迎大家一起交流;
print("正在加载库")
import win32api
import win32con
import time
import random
import win32gui
import random
from PIL import Image, ImageGrab
# %matplotlib inline
print("加载完成")
print("正在定义函数")
def move_click(x, y, t=0):# 移动鼠标并点击左键
win32api.SetCursorPos((x, y))# 设置鼠标位置(x, y)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN |
win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)# 点击鼠标左键
if t == 0:
time.sleep(random.random()*2+1)# sleep一下
else:
time.sleep(t)
return 0
def get_posx(x, window_size):# 返回x相对坐标
return (window_size - window_size) * x /870
def get_posy(y, window_size):# 返回y相对坐标
return (window_size - window_size) * y /520
def get_window_info():# 获取阴阳师窗口信息
wdname = '阴阳师-网易游戏'
handle = win32gui.FindWindow(0, wdname)# 获取窗口句柄
if handle == 0:
print('请打开PC端阴阳师,并进入御魂界面,选定御魂层数')
return None
else:
return win32gui.GetWindowRect(handle)
def get_hash(img):
img = img.resize((16, 16), Image.ANTIALIAS).convert('L')# 抗锯齿 灰度
avg = sum(list(img.getdata())) / 256# 计算像素平均值
s = ''.join(map(lambda i: '0' if i < avg else '1', img.getdata()))# 每个像素进行比对,大于avg为1,反之为0
return ''.join(map(lambda j: '%x' % int(s, 2), range(0, 256, 4)))
def hamming(hash1, hash2, n=20):
b = False
assert len(hash1) == len(hash2)
if sum(ch1 != ch2 for ch1, ch2 in zip(hash1, hash2)) < n:
b = True
return b
def resolution():# 获取屏幕分辨率
return win32api.GetSystemMetrics(0), win32api.GetSystemMetrics(1)
print("函数定义完成")
print("正在读取对比图")
hash1='fe7ef01e6386c7c287e08ff01df83ffc3ffc1bf809f00de003c001820004381f'
hash3='09e03ff07ff27fe47ff87f783f7f7f0f4fef7e3f302f00000000000180000000'
print("脚本准备完成")
print("正在图像识别")
window_size=get_window_info()
topx, topy = window_size, window_size
a=topx + get_posx(732, window_size)
b=topy + get_posy(408, window_size)
c=topx + get_posx(832, window_size)
d=topy + get_posy(508, window_size)
img_ready = ImageGrab.grab((topx + get_posx(732, window_size), topy + get_posy(408, window_size),
topx + get_posx(832, window_size), topy + get_posy(508, window_size)))
# 查看图片
# img_ready
print("图像识别完成")
print("ma'shang")
hash2=get_hash(img_ready)
n=int(input("请输入要刷几次御魂:"))
for i in range(n):
print("正在进行第"+str(i)+"次御魂")
if hamming(hash1, hash2, n=20):
e=random.randint(int(a)+10,int(c)-10)
f=random.randint(int(b)+10,int(d)-10)
move_click(e,f)
time.sleep(random.randint(3,4))
e=random.randint(1013,1112)
f=random.randint(520,667)
move_click(e,f)
win32api.SetCursorPos((random.randint(200,500),random.randint(200,500)))
time.sleep(random.randint(1,3))
win32api.SetCursorPos((random.randint(200,500),random.randint(200,500)))
move_click(random.randint(200,500),random.randint(200,500))
g=random.randint(40,45)
time.sleep(g)
window_size=get_window_info()
topx, topy = window_size, window_size
a1=topx + get_posx(350, window_size)
c1=topx + get_posx(510, window_size)
b1=topy + get_posy(280, window_size)
d1=topy + get_posy(450, window_size)
img2 = ImageGrab.grab((a1,b1,c1,d1))
hash4=get_hash(img2)
if hamming(hash3,hash4,n=20):
e=random.randint(1013,1112)
f=random.randint(520,667)
move_click(e,f)
time.sleep(random.randint(3,4))
print("第"+str(i+1)+"次御魂已完成")
print("任务全部完成")
Boffon 发表于 2020-4-1 19:24
我也是,过段时间碰一碰,要有需求才有学习的动力啊
其实俺是在做毕设被逼着学Python的{:301_972:}{:301_972:}学了之后看到很多人说作用大(好像是这么回事,虽然还啥也做不了{:1_937:}),所以我决定还会继续深入学习:lol UPC 发表于 2020-4-1 19:37
其实俺是在做毕设被逼着学Python的学了之后看到很多人说作用大(好像是这么回事, ...
我也是之前毕业设计的时候学了一点,现在上班了偶尔娱乐一下 谢谢分享 学习了...唉呸!....收藏了,python入门中{:301_1000:} 一脸懵,看不懂呀{:1_909:} 虽然用不到,还是赞一下。 虽然现在不玩了,还是要支持下 谢谢分享,下载试用一下 过来学习一下,看看源码,感谢分享 UPC 发表于 2020-4-1 17:26
学习了...唉呸!....收藏了,python入门中
我也是,过段时间碰一碰,要有需求才有学习的动力啊
页:
[1]
2