某顶之奕赌狗福音自动买卡python纯源码,后台鼠标不占用前台版!
#暂无界面 请自己写..自用的话随便写个命令行就好了 !接下来会把官方卡组对接进去.慢慢来!贼流畅,用python写dm脚本效率其实还可以的比易语言稳定,异常更容易发现和处理!import os,time
from win32com.client import Dispatch
# 注册大漠到系统中.
def regDM():
'''
注册大漠插件,需要把文件dm.dll放在根目录
:return: 返回大漠对象
'''
try:
dm = Dispatch('dm.dmsoft')
except:
os.system('regsvr32 dm.dll')
dm = Dispatch('dm.dmsoft')
return dm
# 从系统中卸载大漠
def unRegDM():
'''
从系统中卸载大漠插件
:return:
'''
os.system('regsvr32 dm.dll /u')
class AutoOPlayingChess():
'''
自动购买棋子,后台鼠标,不占用前台用户的鼠标体验
'''
def __init__(self):
self.dm=regDM()
self.hwnd =0
self.chess=[]
def __del__(self):
self.dm.UnBindWindow()
def dmReg(self,reg_code, ver_info=''):
'''
登录大漠.就是身份验证一下,从而使用插件的高级功能,如果你的是3.xx的免费版本,就不需要这步
:param reg_code: 大漠后台的注册码
:param ver_info: 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
:return: 返回1表示成功,其它值请查接口说明
'''
value = self.dm.reg(reg_code, ver_info)
return value
def SetDict(self,path,errorMsg=0):
'''
设置字库,顺便关掉错误提示
:param path: 字库路径
:param errorMsg: 默认为关闭错误提示,如果要设置请填1
:return:0失败,1成功!
'''
self.dm.SetShowErrorMsg(errorMsg)
return self.dm.SetDict(0, path)
def checkHwnd(self,processName):
'''
循环寻找窗口,直到成功才返回
:param processName: 进程名
:return: 返回目标窗口句柄
'''
while self.hwnd==0:
self.hwnd=self.dm.FindWindowByProcess(processName,'','')
time.sleep(1)
def chessAdd(self,chessName):
'''
将名为chessName的棋子添加进购买库
:param chessName: 棋子名
:return:
'''
if chessName not in self.chess:
self.chess.append(chessName)
def delChess(self,i):
'''
删除序号为i的购买池中的棋子
:param i: 序号
:return:
'''
del self.chess
def removeChess(self,chessName):
'''
删除名字为chessName的购买池中的棋子
:param chessName: 棋子名
:return:
'''
self.chess.remove(chessName)
def startAuto(self,starX=200,starY=100,color_format="ffffff-060606",sim=0.9):
'''
启动自动购买棋子程序,默认1920*1080分辨率不需要改东西,,如果是更高的分辨率贼需要自己量参数
:param starX: 识别开始的x坐标 商店1号棋子的名字 的x坐标.,可以小,但是不能大
:param starY: 商店棋子名字距离屏幕最下方的距离 可以大 不能小
:param color_format: 颜色格式串
:param sim:相似度,取值范围0.1-1.0
:return:如果返回False说明绑定失败.运行失败!
'''
dm_ret = self.dm.BindWindowEx(self.hwnd, "dx2",
"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",
"normal", "dx.public.active.api", 0)
if dm_ret == 0:
print('绑定失败!')
return False
ret, ScreenWidth, ScreenHeight = self.dm.GetClientSize(self.hwnd)
lScreenHeight = ScreenHeight - starY
bd = False
ls = []
while True:
if len(self.chess)>0:#判断自动购买棋子池是否有需要购买的棋子,有需要才有必要运行下面的代码
sls = self.dm.OcrEx(starX, lScreenHeight, ScreenWidth, ScreenHeight, color_format, sim).split('|')
print(sls)
for item in sls:
s = item.split('
字库和dm.dll打包:https://www.lanzoui.com/iWnW1gq155i持续更新中...只为练手和技术交流!纯源码,不编译!切勿用于非法用途!否则后果自负!本人不承担任何法律责任!
)
if s in chess:
print(s, bd)
if ls != sls:
bd = False
if bd == False:
for i in range(2):
self.dm.MoveTo(int(s) + 20, int(s) - 20)
self.dm.LeftClick()
time.sleep(0.1)
ls = self.dm.OcrEx(starX, lScreenHeight, ScreenWidth, ScreenHeight, color_format, sim).split('|')
if ls == sls:
bd = True
else:
bd = False
break
if __name__ == "__main__":
chess=[]#模拟选中的棋子池,没界面模拟一下
chess.append('卡特琳娜')
chess.append('金克丝')
chess.append('盖伦')
chess.append('嘉文四世')
chess.append('赵信')
chess.append('瑟庄妮')
chess.append('阿兹尔')
chess.append('奈德丽')
chess.append('蔚')
#初始化必要数据
reg_code = "luxiaolan63735f4be12fda045a12cf1b2927d5cbc19c" # 大漠后台的注册码,,这个就得自己去大漠注册了便宜的很..自用的话,我这可以暂时用用也就100块钱了,别一直漂我这个,
ver_info = '52pojie'# 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
dictPath='1920.txt'#字库路径
#----------------------------------------------------------------------------
#创建自动购买棋子对象
atpc = AutoOPlayingChess()
#登录大漠,免费版的大漠就可以省略这一步
value=atpc.dmReg(reg_code,ver_info)
#设置好字库和配置
atpc.SetDict(dictPath)
#判断是否登录成功
if value == 1:#免费版的就不要这个if了,,注意了免费版没办法后台鼠标
print(f'验证成功!')
# 接下来就可以自己查接口说明来使用里面的全部方法了
atpc.checkHwnd('League of Legends.exe')
#将需要购买的棋子放入池子中
atpc.chess=chess
#启动自动购买棋子程序
atpc.startAuto()
else:
if value == -2:
print('进程没有以管理员方式运行或者被第三方杀毒拦截. (建议关闭uac和杀毒软件),请用管理员权限运行本程序!')
else:
print(f'验证失败,失败代码为:{value},大概率是被杀毒拦截了!')
字库和dm.dll打包:https://www.lanzoui.com/iWnW1gq155i持续更新中...只为练手和技术交流!纯源码,不编译!切勿用于非法用途!否则后果自负!本人不承担任何法律责任!
谢谢分享 谢谢大佬 谢谢大牛 6666666666 好的,非常感谢 6666 感谢楼主分享!大牛有你更精彩! 感谢楼主分享
页:
[1]