Yiyuan-Dong/AutoHS

获取屏幕截图时疑似有hug

Opened this issue · 10 comments

运行脚本时鼠标一直点中间,查看代码后发现get screen获取到的游戏界面一直是刚进去的那个门的界面,因此一直判断为wait main menu状态。将catch screen中获取到的界面保存后查看为下图
im_opencv

显示分辨率和炉石分辨率已设1920*1080,缩放比例已设100%,游戏全屏也设了。不知道是哪里出了问题 : (

我试了一下, 截图功能确实有BUG, 似乎获取的一直是第一次对炉石截图的结果......
我这几天试一试用新的截图方法修一下:)

bz可能已经封掉通过句柄截图的方法,考虑下确定了当前窗口为炉石后,用PIL截图?

bz可能已经封掉通过句柄截图的方法,考虑下确定了当前窗口为炉石后,用PIL截图?

这方法应该是可行的。但是我最近到期末了,可能要过年的时候再来试试了……

俺改了,把get_screen.py的截图改成整个屏幕就行了
hwin = win32gui.GetDesktopWindow()
hwndDC = win32gui.GetWindowDC(hwin)
在添加下俺的定位点
list(im_opencv[1070][1090][:3]) == [20, 51, 104]
总之感谢作者吧

俺改了,把get_screen.py的截图改成整个屏幕就行了 hwin = win32gui.GetDesktopWindow() hwndDC = win32gui.GetWindowDC(hwin) 在添加下俺的定位点 list(im_opencv[1070][1090][:3]) == [20, 51, 104] 总之感谢作者吧

牛逼!

试了下好像还是会有这个问题,会一直点中间,状态判断一直是battle,没办法直接在WaitMainMenu()里面加了个break就好了

俺改了,把get_screen.py的截图改成整个屏幕就行了 hwin = win32gui.GetDesktopWindow() hwndDC = win32gui.GetWindowDC(hwin) 在添加下俺的定位点 list(im_opencv[1070][1090][:3]) == [20, 51, 104] 总之感谢作者吧

老哥你的代码里FSM_action.py第208行的CHOOSE_CARD_INTERVAL是啥呀,没有定义啊

俺改了,把get_screen.py的截图改成整个屏幕就行了 hwin = win32gui.GetDesktopWindow() hwndDC = win32gui.GetWindowDC(hwin) 在添加下俺的定位点 list(im_opencv[1070][1090][:3]) == [20, 51, 104] 总之感谢作者吧

老哥你的代码里FSM_action.py第208行的CHOOSE_CARD_INTERVAL是啥呀,没有定义啊

我看了看,好像FSM_action.py里面没有CHOOSE_CARD_INTERVAL这个变量,要不你检查一下是不是最新版本的代码?

俺改了,把get_screen.py的截图改成整个屏幕就行了 hwin = win32gui.GetDesktopWindow() hwndDC = win32gui.GetWindowDC(hwin) 在添加下俺的定位点 list(im_opencv[1070][1090][:3]) == [20, 51, 104] 总之感谢作者吧

老哥你的代码里FSM_action.py第208行的CHOOSE_CARD_INTERVAL是啥呀,没有定义啊

我看了看,好像FSM_action.py里面没有CHOOSE_CARD_INTERVAL这个变量,要不你检查一下是不是最新版本的代码?

哈哈,我把你俩的代码合了一下,能跑了,用你的策略,那位老哥的截屏。多谢大佬开源啦