找回密码
  注册[Register]
查看: 1009|回复: 8

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

[复制链接]
发表于 2020-9-18 08:02 来自手机 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

#暂无界面 请自己写..自用的话随便写个命令行就好了 !接下来会把官方卡组对接进去.慢慢来!贼流畅,用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('

  106. 字库和dm.dll打包:https://www.lanzoui.com/iWnW1gq155i持续更新中...只为练手和技术交流!纯源码,不编译!切勿用于非法用途!否则后果自负!本人不承担任何法律责任!

  107. )
  108.                     if s[0] in chess:
  109.                         print(s[0], bd)
  110.                         if ls != sls:
  111.                             bd = False
  112.                         if bd == False:
  113.                             for i in range(2):
  114.                                 self.dm.MoveTo(int(s[1]) + 20, int(s[2]) - 20)
  115.                                 self.dm.LeftClick()
  116.                                 time.sleep(0.1)
  117.                                 ls = self.dm.OcrEx(starX, lScreenHeight, ScreenWidth, ScreenHeight, color_format, sim).split('|')
  118.                                 if ls == sls:
  119.                                     bd = True
  120.                                 else:
  121.                                     bd = False
  122.                                     break

  123. if __name__ == "__main__":
  124.     chess=[]#模拟选中的棋子池,没界面模拟一下
  125.     chess.append('卡特琳娜')
  126.     chess.append('金克丝')
  127.     chess.append('盖伦')
  128.     chess.append('嘉文四世')
  129.     chess.append('赵信')
  130.     chess.append('瑟庄妮')
  131.     chess.append('阿兹尔')
  132.     chess.append('奈德丽')
  133.     chess.append('蔚')
  134.     #初始化必要数据
  135.     reg_code = "luxiaolan63735f4be12fda045a12cf1b2927d5cbc19c"    # 大漠后台的注册码,,这个就得自己去大漠注册了便宜的很..自用的话,我这可以暂时用用也就100块钱了,别一直漂我这个,
  136.     ver_info = '52pojie'  # 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
  137.     dictPath='1920.txt'#字库路径
  138.     #----------------------------------------------------------------------------
  139.     #创建自动购买棋子对象
  140.     atpc = AutoOPlayingChess()
  141.     #登录大漠,免费版的大漠就可以省略这一步
  142.     value=atpc.dmReg(reg_code,ver_info)
  143.     #设置好字库和配置
  144.     atpc.SetDict(dictPath)
  145.     #判断是否登录成功
  146.     if value == 1:#免费版的就不要这个if了,,注意了免费版没办法后台鼠标
  147.         print(f'验证成功!')
  148.         # 接下来就可以自己查接口说明来使用里面的全部方法了
  149.         atpc.checkHwnd('League of Legends.exe')
  150.         #将需要购买的棋子放入池子中
  151.         atpc.chess=chess
  152.         #启动自动购买棋子程序
  153.         atpc.startAuto()
  154.     else:
  155.         if value == -2:
  156.             print('进程没有以管理员方式运行或者被第三方杀毒拦截. (建议关闭uac和杀毒软件),请用管理员权限运行本程序!')
  157.         else:
  158.             print(f'验证失败,失败代码为:{value},大概率是被杀毒拦截了!')
复制代码


字库和dm.dll打包:https://www.lanzoui.com/iWnW1gq155i持续更新中...只为练手和技术交流!纯源码,不编译!切勿用于非法用途!否则后果自负!本人不承担任何法律责任!

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-9-18 08:02 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:02 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:03 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:05 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:05 | 显示全部楼层
好的,非常感谢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:19 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:29 | 显示全部楼层
感谢楼主分享!大牛有你更精彩!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-9-18 08:40 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|广告投放|大牛论坛

GMT+8, 2024-6-9 10:09 , Processed in 0.035088 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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