查看: 755|回复: 2

[辅助源码] 云顶之奕赌狗福音自动买卡python纯源码,后台鼠标不占用前台版!

[复制链接]
发表于 2020-9-18 10:19 | 显示全部楼层 |阅读模式
非法程序、 2020-9-18 10:19 755 2 显示全部楼层
暂无界面 请自己写..自用的话随便写个命令行就好了 !接下来会把官方卡组对接进去.慢慢来!贼流畅,用python写dm脚本效率其实还可以的比易语言稳定,异常更容易发现和处理!
  1. import os,time
  2. from win32com.client import Dispatch
  3. # 注册大漠到系统中.
  4. def regDM():
  5.     '''
  6.     注册大漠插件,需要把文件dm.dll放在根目录
  7.     :return: 返回大漠对象
  8.     '''
  9.     try:
  10.         dm = Dispatch('dm.dmsoft')
  11.     except:
  12.         os.system('regsvr32 dm.dll')
  13.         dm = Dispatch('dm.dmsoft')
  14.     return dm

  15. # 从系统中卸载大漠
  16. def unRegDM():
  17.     '''
  18.     从系统中卸载大漠插件
  19.     :return:
  20.     '''
  21.     os.system('regsvr32 dm.dll /u')
  22. class AutoOPlayingChess():
  23.     '''
  24.     自动购买棋子,后台鼠标,不占用前台用户的鼠标体验
  25.     '''
  26.     def __init__(self):
  27.         self.dm=regDM()
  28.         self.hwnd =0
  29.         self.chess=[]
  30.     def __del__(self):
  31.         self.dm.UnBindWindow()
  32.     def dmReg(self,reg_code, ver_info=''):
  33.         '''
  34.         登录大漠.就是身份验证一下,从而使用插件的高级功能,如果你的是3.xx的免费版本,就不需要这步
  35.         :param reg_code: 大漠后台的注册码
  36.         :param ver_info: 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
  37.         :return: 返回1表示成功,其它值请查接口说明
  38.         '''
  39.         value = self.dm.reg(reg_code, ver_info)
  40.         return value
  41.     def SetDict(self,path,errorMsg=0):
  42.         '''
  43.         设置字库,顺便关掉错误提示
  44.         :param path: 字库路径
  45.         :param errorMsg: 默认为关闭错误提示,如果要设置请填1
  46.         :return:0失败,1成功!
  47.         '''
  48.         self.dm.SetShowErrorMsg(errorMsg)
  49.         return self.dm.SetDict(0, path)
  50.     def checkHwnd(self,processName):
  51.         '''
  52.         循环寻找窗口,直到成功才返回
  53.         :param processName: 进程名
  54.         :return: 返回目标窗口句柄
  55.         '''

  56.         while self.hwnd==0:
  57.             self.hwnd=self.dm.FindWindowByProcess(processName,'','')
  58.             time.sleep(1)
  59.     def chessAdd(self,chessName):
  60.         '''
  61.         将名为chessName的棋子添加进购买库
  62.         :param chessName: 棋子名
  63.         :return:
  64.         '''
  65.         if chessName not in self.chess:
  66.             self.chess.append(chessName)
  67.     def delChess(self,i):
  68.         '''
  69.         删除序号为i的购买池中的棋子
  70.         :param i: 序号
  71.         :return:
  72.         '''
  73.         del self.chess[i]
  74.     def removeChess(self,chessName):
  75.         '''
  76.         删除名字为chessName的购买池中的棋子
  77.         :param chessName: 棋子名
  78.         :return:
  79.         '''
  80.         self.chess.remove(chessName)
  81.     def startAuto(self,starX=200,starY=100,color_format="ffffff-060606",sim=0.9):
  82.         '''
  83.         启动自动购买棋子程序,默认1920*1080分辨率不需要改东西,,如果是更高的分辨率贼需要自己量参数
  84.         :param starX: 识别开始的x坐标 商店1号棋子的名字 的x坐标.,可以小,但是不能大
  85.         :param starY: 商店棋子名字距离屏幕最下方的距离 可以大 不能小
  86.         :param color_format: 颜色格式串
  87.         :param sim:相似度,取值范围0.1-1.0
  88.         :return:如果返回False说明绑定失败.运行失败!
  89.         '''
  90.         dm_ret = self.dm.BindWindowEx(self.hwnd, "dx2",
  91.                                  "dx.mouse.position.lock.api|dx.mouse.clip.lock.api|dx.mouse.input.lock.api|dx.mouse.state.api|dx.mouse.state.message|dx.mouse.api|dx.mouse.cursor",
  92.                                  "normal", "dx.public.active.api", 0)
  93.         if dm_ret == 0:
  94.             print('绑定失败!')
  95.             return False
  96.         ret, ScreenWidth, ScreenHeight = self.dm.GetClientSize(self.hwnd)
  97.         lScreenHeight = ScreenHeight - starY
  98.         bd = False
  99.         ls = []
  100.         while True:
  101.             if len(self.chess)>0:#判断自动购买棋子池是否有需要购买的棋子,有需要才有必要运行下面的代码
  102.                 sls = self.dm.OcrEx(starX, lScreenHeight, ScreenWidth, ScreenHeight, color_format, sim).split('|')
  103.                 print(sls)
  104.                 for item in sls:
  105.                     s = item.split('字库和dm.dll
  106. 打包:[url]https://www.lanzoui.com/iWnW1gq155i[/url]
  107. 百度链接: [url]https://pan.baidu.com/s/10mc2rT9Pq1IrkSb6Nq8_Og[/url] 提取码: 5i8x
  108. 持续更新中...只为练手和技术交流!纯源码,不编译!切勿用于非法用途!否则后果自负!本人不承担任何法律责任!
  109. )
  110.                     if s[0] in chess:
  111.                         print(s[0], bd)
  112.                         if ls != sls:
  113.                             bd = False
  114.                         if bd == False:
  115.                             for i in range(2):
  116.                                 self.dm.MoveTo(int(s[1]) + 20, int(s[2]) - 20)
  117.                                 self.dm.LeftClick()
  118.                                 time.sleep(0.1)
  119.                                 ls = self.dm.OcrEx(starX, lScreenHeight, ScreenWidth, ScreenHeight, color_format, sim).split('|')
  120.                                 if ls == sls:
  121.                                     bd = True
  122.                                 else:
  123.                                     bd = False
  124.                                     break

  125. if __name__ == "__main__":
  126.     chess=[]#模拟选中的棋子池,没界面模拟一下
  127.     chess.append('卡特琳娜')
  128.     chess.append('金克丝')
  129.     chess.append('盖伦')
  130.     chess.append('嘉文四世')
  131.     chess.append('赵信')
  132.     chess.append('瑟庄妮')
  133.     chess.append('阿兹尔')
  134.     chess.append('奈德丽')
  135.     chess.append('蔚')
  136.     #初始化必要数据
  137.     reg_code = "luxiaolan63735f4be12fda045a12cf1b2927d5cbc19c"    # 大漠后台的注册码,,这个就得自己去大漠注册了便宜的很..自用的话,我这可以暂时用用也就100块钱了,别一直漂我这个,
  138.     ver_info = '52pojie'  # 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
  139.     dictPath='1920.txt'#字库路径
  140.     #----------------------------------------------------------------------------
  141.     #创建自动购买棋子对象
  142.     atpc = AutoOPlayingChess()
  143.     #登录大漠,免费版的大漠就可以省略这一步
  144.     value=atpc.dmReg(reg_code,ver_info)
  145.     #设置好字库和配置
  146.     atpc.SetDict(dictPath)
  147.     #判断是否登录成功
  148.     if value == 1:#免费版的就不要这个if了,,注意了免费版没办法后台鼠标
  149.         print(f'验证成功!')
  150.         # 接下来就可以自己查接口说明来使用里面的全部方法了
  151.         atpc.checkHwnd('League of Legends.exe')
  152.         #将需要购买的棋子放入池子中
  153.         atpc.chess=chess
  154.         #启动自动购买棋子程序
  155.         atpc.startAuto()
  156.     else:
  157.         if value == -2:
  158.             print('进程没有以管理员方式运行或者被第三方杀毒拦截. (建议关闭uac和杀毒软件),请用管理员权限运行本程序!')
  159.         else:
  160.             print(f'验证失败,失败代码为:{value},大概率是被杀毒拦截了!')
复制代码
字库和dm.dll
打包:https://www.lanzoui.com/iWnW1gq155i
百度链接: https://pan.baidu.com/s/10mc2rT9Pq1IrkSb6Nq8_Og 提取码: 5i8x
持续更新中...只为练手和技术交流!纯源码,不编译!切勿用于非法用途!否则后果自负!本人不承担任何法律责任!
发表于 2020-9-18 11:25 | 显示全部楼层
75603925 2020-9-18 11:25 显示全部楼层
好贴支持!感谢楼主,好人一生平安好贴帮顶!自打看了楼主的帖子,腰不酸背不疼,一口气上二楼当时我就念了一句林则徐的诗
回复

使用道具 举报

头像被屏蔽
发表于 2020-9-18 11:30 | 显示全部楼层
lelebeidao 2020-9-18 11:30 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表