起因
本人在平時偶爾玩玩陰陽師,最近陰陽師推出了拜師系統,獎勵豐厚。收夠五個徒弟還能有動態框框和皮蛋。但是自己又不是魔鬼那種巨佬,又沒人看的上。故開了個小號,小號又沒有櫻餅開不了系統自帶的代刷系統。想到python能夠通過模塊來控制鼠標,那么能不能通過python控制鼠標來代肝呢。
實現
python用來控制鼠標之類的系統控件的模塊為pywin32,pywin32模塊下載地址在安裝時需先配置python環境,安裝完pywin32后就可以開始編碼了。(本人使用網易陰陽師官方電腦版客戶端登錄)
import random
import time
import win32api, win32gui, win32con
# 需要點擊的坐標
pos = {
'people':(578, 336),#單人開始按鈕的坐標
'team':(659, 398),#多人組隊開始按鈕的坐標
}
def reset_window_pos(targetTitle):
'''
搜索桌面上的應用,將對應應用名的窗口固定並拉伸尺寸
'''
hWndList = []
win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)
for hwnd in hWndList:
title = win32gui.GetWindowText(hwnd)
if (title.find(targetTitle) >= 0): #調整目標窗口到坐標(600,300),大小設置為(600,600)
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0,0,800,0, win32con.SWP_SHOWWINDOW)
def ClickLeftCur():
'''
鼠標的單擊事件
'''
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
time.sleep(0.05)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
def moveCurPos(pos):
'''
鼠標的移動事件
'''
win32api.SetCursorPos(pos)
def getCurPos():
'''
獲取鼠標的坐標
'''
return win32gui.GetCursorPos()
def GetRandom():
'''
生成隨機坐標元祖
'''
return (random.randint(20,700),random.randint(300,400))
if __name__ == '__main__':
time.sleep(2)
# 獲取當前鼠標的坐標
# xy = getCurPos()
# print(xy)
# 獲取陰陽師手游的窗口並將它固定
reset_window_pos('陰陽師-網易游戲')
# 循環操作
for i in range(100):
# 移動到單人開始的坐標,模擬點擊,並等待23秒
# 組隊時,將pos['people']改為pos['team']即可
moveCurPos(pos['people'])
ClickLeftCur()
time.sleep(23)
# 戰斗結算畫面,隨機點擊御魂下方的畫面
moveCurPos(GetRandom())
ClickLeftCur()
time.sleep(1.5)
moveCurPos(GetRandom())
ClickLeftCur()
time.sleep(3)
moveCurPos(GetRandom())
ClickLeftCur()
moveCurPos(pos['people'])
ClickLeftCur()
ClickLeftCur()
#等待轉場動畫結束
time.sleep(3)
其中的時間設定可根據具體情況來設定。運行時需要使用管理員權限來運行不然會報錯
這只是一段粗制濫造的代碼,測試下來刷了三四百體力沒啥問題。雖然程序友好性極差,但已經基本滿足了我的個人需求。可能等以后有新需求了會再做優化吧。
