import win32api, win32con, time, cv2,win32gui
import lunia.pictool as lp, stant as lc,lunia.luniatool as lt,numpy as np,lunia.numberpictool as ln
from PIL import Image, ImageGrabclass AccessoryTool:windowTitle='[#] Lunia [#]'prepareOffset=(725,365)inputboxOffset=(400,375)inputokOffset=(411,416)loseOffset=(83,574)getoutOffset=(503,614)codeOffset1=(390,320)codeOffset2=(420,335)wds,wdposes=[],[]npt=ln.NumberPicTool()#游戏要等130s才能退出,加载有时要半分钟以上,姑且给45swait1,wait2=130,45#胜利等到30swait3,wait4=30,7runTimes=70teamPersons=Nonedef findLuniaWindows(self,x,mouse):if win32gui.GetWindowText(x)==self.windowTitle:self.wds.append(x)self.wdposes.append(win32gui.GetWindowRect(x))amPersons=int(len(self.wds)/2)def calculatePos(self,i,offset):return self.wdposes[i][0] + offset[0], self.wdposes[i][1] + offset[1]# 第i窗口点击准备def prepare(self,i):#把窗口移动到最前面time.sleep(.3)win32gui.SetForegroundWindow(self.wds[i])time.sleep(1)pos = self.calculatePos(i, self.prepareOffset)time.sleep(.3)win32api.SetCursorPos(pos)time.sleep(.use_click()time.sleep(.3)pos = self.calculatePos(i, self.inputboxOffset)win32api.SetCursorPos(pos)time.sleep(.use_click()codeCode(i)print('t第{}个窗口code是{}'.format(i,code))for j in code:lt.key_click(keycode=48+int(j))time.sleep(.3)pos = self.calculatePos(i, self.inputokOffset)win32api.SetCursorPos(pos)time.sleep(.use_click()def startGame(self,i=0):#把窗口移动到最前面time.sleep(.3)win32gui.SetForegroundWindow(self.wds[i])time.sleep(1)pos = self.calculatePos(i, self.prepareOffset)time.sleep(.3)win32api.SetCursorPos(pos)time.sleep(.use_click()# 第i窗口认输def loseGame(self,i):time.sleep(.3)win32gui.SetForegroundWindow(self.wds[i])time.sleep(1)time.sleep(.3)lt.key_click(keycode=lc.ESCCODE,scanCode=lc.ESCSCANCODE)pos = self.calculatePos(i, self.loseOffset)time.sleep(.3)win32api.SetCursorPos(pos)time.sleep(.use_click()time.sleep(.3)lt.key_click(keycode=lc.F1CODE)# 第i窗口截图def captureWindow(self,i,doActive=False):if doActive:time.sleep(.3)win32gui.SetForegroundWindow(self.wds[i])time.sleep(1)return self.capture(*self.calculatePos(deOffset1),*self.calculatePos(deOffset2))def capture(self,x1, y1, x2, y2):img = ab((x1, y1, x2, y2))# img = binaryPic(img)# cv2.imwrite(r'D:360down2.png',img)# img.save(r'D:360down2.png')return img#读取第i个窗口的验证码def getCode(self,i):# img1=Image.open(r"D:360down1.png")# text = pytesseract.image_to_string(img1)img= self.captureWindow(i)img=np.asarray(img)code=Code(img)return codedef sortWindows(self):#to do:这里要测试顺序是否正确,貌似对了self.wds=[x for y, x in sorted(zip(self.wdposes,self.wds),key=lambda x:x[0][0])]self.wdposes=sorted(self.wdposes,key=lambda x:x[0])print('窗口句柄是{}'.format(self.wds))print('窗口坐标是{}'.format(self.wdposes))def __init__(self):win32gui.EnumWindows(self.findLuniaWindows, 0)self.sortWindows()def progress(self):for i in range(1,len(self.wds)):time.sleep(.5)self.prepare(i)self.startGame()#听说等130s即可,加载地图也要时间time.sleep(self.wait1+self.wait2)for i in amPersons,len(self.wds)):time.sleep(.5)self.loseGame(i)def main(self):i=0while i<self.runTimes:i+=1print('第{}/{}轮已经开始'.format(i,self.runTimes))self.progress()time.sleep(self.wait3+self.amPersons)if __name__ == "__main__":AccessoryTool().main()
本文发布于:2024-01-27 23:17:13,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063686343246.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |