日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python挂机脚本阴阳师_Python简单实现阴阳师挂机脚本

發布時間:2023/12/19 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python挂机脚本阴阳师_Python简单实现阴阳师挂机脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考大佬們的博客,湊出了陰陽師的簡單掛機腳本,對各個博主進行感謝,鞠躬.jpg

實現原理:

對各個按鈕等需要點擊的地方進行截圖,然后對整個屏幕截屏,通過模板匹配得到截圖在截屏中的坐標位置,進行點擊

實現方法:

對整個屏幕進行截圖,并保存

1 ####截圖方法1####

2 importwin32gui3 importwin32ui4 importwin32con5 importwin32api6 defPrintscreen():7 #獲取桌面

8 hdesktop =win32gui.GetDesktopWindow()9

10 #分辨率適應

11 width =win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)12 height =win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)13 left =win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)14 top =win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)15 #width=1920 # 因為用win32api.GetSystemMetrics獲取的分辨率不對,于是我直接手輸入進去的

16 #height=1080

17

18 #創建設備描述表

19 desktop_dc =win32gui.GetWindowDC(hdesktop)20 img_dc =win32ui.CreateDCFromHandle(desktop_dc)21

22 #創建一個內存設備描述表

23 mem_dc =img_dc.CreateCompatibleDC()24

25 #創建位圖對象

26 screenshot =win32ui.CreateBitmap()27 screenshot.CreateCompatibleBitmap(img_dc, width, height)28 mem_dc.SelectObject(screenshot)29

30 #截圖至內存設備描述表

31 mem_dc.BitBlt((0, 0), (width, height), img_dc, (left, top), win32con.SRCCOPY)32

33 #將截圖保存到文件中

34 screenshot.SaveBitmapFile(mem_dc, 'yuan.png')35

36 #內存釋放

37 mem_dc.DeleteDC()38 win32gui.DeleteObject(screenshot.GetHandle())39

40 #測試

41 Printscreen()

1 ####截圖方法2####

2 from PIL importImage3 from PIL importImageGrab4

5 defPrintscreen():6 #截圖坐標 左上角 ,右下角

7 size = (0, 0,1920,1080)8 img =ImageGrab.grab(size)9 #保存截圖

10 img.save("yuan.png")11 print('截圖進行了一次刷新')12 #打開截圖

13 #img.show()

14

15 #測試

16 Printscreen()

通過模板匹配得到截圖的坐標位置

模板匹配參考博客

圖像篩選參考博客

注:模板匹配具有自身的局限性,主要表現在它只能進行平行移動,若原圖像中的匹配目標發生旋轉或大小變化,該算法無效。所以打開陰陽師后不要進行放大或縮小。

1 importcv22 importnumpy as np3 from matplotlib importpyplot as plt4 importmath5

6 ###圖像匹配###

7 defImage_Discern(imgone,imgtwo):8 #1.模板匹配

9 #大圖

10 img =cv2.imread(imgone)11 img_gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)12

13 #小圖

14 template =cv2.imread(imgtwo, 0)15 h, w = template.shape[:2] #rows->h, cols->w

16 img2 =img.copy()17

18 #對比圖像

19 res =cv2.matchTemplate(img_gray, template, cv2.TM_SQDIFF_NORMED)20

21 #返回坐標

22 min_val, max_val, min_loc, max_loc =cv2.minMaxLoc(res)23 top_left =min_loc24 bottom_right = (top_left[0] + w, top_left[1] +h)25

26 #計算中心坐標

27 a1, a2 =top_left28 b1, b2 =bottom_right29 c1 = (a1 + w/2)*0.8 #0.8匹配屏幕分辨率(因為分辨率原因這里乘0.8用于適應平復分辨率坐標位置)

30 c2 = (a2 + h/2)*0.8

31 e1 =math.ceil(c1)32 e2 =math.ceil(c2)33 d1 =(e1, e2)34 #print('中心坐標為:' , d1)

35

36 ###測試圖像匹配,彈出圖像顯示匹配位置###

37 #在匹配點畫小圓心

38 #cv2.circle(res, top_left, 10, 0, 2)

39 #cv2.imshow("res", res)

40

41 ## 畫矩形

42 #cv2.rectangle(img2, top_left, bottom_right, (0, 255, 0), 2)

43 #cv2.imshow("img2",img2)

44 #cv2.waitKey(0)

45

46 #兩張圖片是否匹配

47 #print('各個參數為:',min_val, max_val, min_loc, max_loc)

48

49 ###進行圖像篩選###

50 if min_val <= 0.03:51 #print('圖片匹配')

52 return(d1)53 else:54 #print('圖片不匹配')

55 return(0)56

57

58 #測試

59 #Image_Discern('e1.png','a2.png') # (大圖,小圖)匹配圖像

通過坐標位置進行點擊

鼠標點擊參考博客

1 importwin32api2 importwin32con3 importwin32gui4 importtime5 importrandom6

7 defxunzhao():8

9 wdname = u'陰陽師-網易游戲'

10 #取得窗口句柄

11 hwnd =win32gui.FindWindow(0, wdname)12 if nothwnd:13 print("窗口找不到,請確認窗口句柄名稱:【%s】" %wdname )14 exit()15 #窗口顯示最前面

16 win32gui.SetForegroundWindow(hwnd)17

18 def move_click(x, y, t=0): #移動鼠標并點擊左鍵

19 suiji1 = random.randint(0,10)20 suiji2 = random.randint(0,10)21

22 #print('鼠標抖動隨機數為:+',suiji2,' +',suiji1)

23 win32api.SetCursorPos((x+suiji1, y+suiji2)) #設置鼠標位置(x, y),設置隨機數,以防被封

24 time.sleep(0.1)25 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)26 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) #點擊鼠標左鍵

27 #print('模擬點擊')

28 return029

30 #測試

31 #while True :

32 #suiji = random.randint(0,5) #獲得隨機數

33 #xunzhao() #游戲頂置,獲得句柄

34 #time.sleep(suiji) #間隔時間

35 #move_click(1280, 685) #坐標點擊

一個簡陋的實例

有基本的方法后,然后就可以寫代碼進行掛機了。

貼一個自己刷探索的代碼,其中click模塊為鼠標模擬點擊,printscreen模塊為截屏,image_discern模塊為模板匹配

1 importclick2 importprintscreen3 importimage_discern4 importtime5

6 ###進行圖標點擊###

7 defIdentify_Click(little):8 a = 0.1

9 click.xunzhao()10 time.sleep(a) #間隔秒數

11 printscreen.Printscreen() #截圖

12 time.sleep(a)13 b1 = image_discern.Image_Discern('yuan.png', little) #圖像對比

14 for i in range(1,10):15 if b1 ==0:16 print('準備再次尋找第',i,'次')17 time.sleep(a)18 click.xunzhao()19 time.sleep(a)20 printscreen.Printscreen()21 time.sleep(a)22 b1 = image_discern.Image_Discern('yuan.png', little)23 else:24 time.sleep(a)25 printscreen.Printscreen() #截圖

26 b1 = image_discern.Image_Discern('yuan.png', little) #圖像對比

27 a1, a2 = b1 #地址賦值

28 click.move_click(a1, a2) #模擬點擊

29 time.sleep(a)30 break

31

32 ###尋找場景內是否有相應圖標###

33 defIdentify_Click_Seek(little):34 a = 0.1

35 click.xunzhao()36 time.sleep(a) #間隔秒數

37 printscreen.Printscreen() #截圖

38 time.sleep(a)39 b1 = image_discern.Image_Discern('yuan.png', little) #圖像對比

40 if b1 ==0:41 #print('沒有相應圖標')

42 return(False)43 else:44 #print('找到相應圖標')

45 return(True)

上面那代碼塊為identify_click模塊

1 importtime2 importidentify_click3 importrandom4

5 defTansuo():6

7 b=08 whileTrue:9 a = ('-----------------')10 ##判斷體力是否足夠##

11 if identify_click.Identify_Click_Seek('./png/tansuo/tansuo13.png'):12 print(a)13 print('體力不足')14 break #結束循環

15 ###組隊結束戰斗###

16 if identify_click.Identify_Click_Seek('./png/tansuo/tansuo17.png'):17 print(a)18 print('戰斗結束,回到組隊頁面')19 break #結束循環

20 ##判斷是否結束##

21 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo12.png'):22 print(a)23 print('探索結束!!')24 break

25 ##判斷戰斗結束##

26 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo04.png'):27 identify_click.Identify_Click('./png/tansuo/tansuo04.png')28 print(a)29 print('戰斗結束')30 continue #跳出本次循環

31 ##判斷準備按鈕##

32 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo08.png'):33 identify_click.Identify_Click('./png/tansuo/tansuo08.png')34 print(a)35 print('戰斗開始')36 whileTrue:37 if identify_click.Identify_Click_Seek('./png/tansuo/tansuo15.png'):38 identify_click.Identify_Click('./png/tansuo/tansuo15.png')39 break

40 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo04.png'):41 identify_click.Identify_Click('./png/tansuo/tansuo04.png')42 break

43 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo16.png'):44 identify_click.Identify_Click('./png/tansuo/tansuo16.png')45 else:46 time.sleep(0.1)47 if identify_click.Identify_Click_Seek('./png/tansuo/tansuo15.png'):48 print('!!!!!!!!!!!')49 print('!戰斗失敗,中止腳本!')50 print('!!!!!!!!!!!')51 break

52 continue #跳出本次循環

53 ##BOSS##

54 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo07.png'):55 print(a)56 print('發現BOSS')57 identify_click.Identify_Click('./png/tansuo/tansuo07.png')58 continue

59 ##小怪##

60 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo03.png'):61 print(a)62 print('發現小怪')63 identify_click.Identify_Click('./png/tansuo/tansuo03.png')64 continue

65 ##獎勵寶箱##

66 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo09.png'):67 identify_click.Identify_Click('./png/tansuo/tansuo09.png')68 time.sleep(random.randint(1,2))69 whileTrue:70 if identify_click.Identify_Click_Seek('./png/tansuo/tansuo10.png'):71 identify_click.Identify_Click('./png/tansuo/tansuo11.png')72 break

73 else:74 time.sleep(2)75 print(a)76 print('領取獎勵寶箱')77 continue

78 ##進行走動##

79 elif identify_click.Identify_Click_Seek('./png/tansuo/tansuo05.png'):80 print(a)81 print('進行走動')82 b = b+1

83 if b < 5:84 identify_click.Identify_Click('./png/tansuo/tansuo05.png')85 print('向右')86 time.sleep(random.randint(3,4)) #間隔3~4秒

87 continue

88 else:89 identify_click.Identify_Click('./png/tansuo/tansuo06.png')90 print('向左')91 time.sleep(random.randint(3,4)) #間隔3~4秒

92 continue

93

94 time.sleep(0.5) #間隔3~4秒

95 return(True)96

97 #測試

98 Tansuo()

當中的圖片

這些是最近東拼西湊的代碼,簡單的代替了下無聊的手點鼠標環節,雖然說游戲內有櫻餅這一說,但我是個窮人。玩游戲的同時,可以學點東西,何樂而不為呢,哈哈哈。以后可能還會去進行優化,修改。

還有一個簡單實現的方法,運用pyautogui庫,進行鼠標點擊、截屏等操作,pyautogui庫使用方法參考博客

最后再次感謝各位大佬的博客

總結

以上是生活随笔為你收集整理的python挂机脚本阴阳师_Python简单实现阴阳师挂机脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。