查看: 7492|回复: 104

[辅助工具] 某顶之奕赌狗神器自用自动拿牌,python高端界面版全部源码

  [复制链接]
发表于 2020-9-23 10:10 | 显示全部楼层 |阅读模式
非法程序、 2020-9-23 10:10 7492 104 显示全部楼层
某顶之奕.jpg
免责声明
一. 本软件/源码完全出于个人兴趣爱好,由本人在业余时间开发.是一款安全,绿色,可靠的技术学习产品知识点包括python 线程 qt 调用大漠等等. 调用dll等!

二. 利用本软件/源码所做出的而衍生的软件作品,和本人无关.

三. 本软件绝对不针对任何一款游戏或者游戏开发商,如果有人利用本软件/源码运营游戏辅助,本人将保留追究其民事以及刑事责任的权利.

四. 因使用本软件/源码而引致的任何意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其所造成的任何损失,本人概不负责,亦概不承担任何民事或刑事法律责任。

五. 本软件的功能用python实现,但与python官方无任何关系.

六. 当你第一次开始使用本人所提供的任何软件/源码及资源的那一刻起就将被视为对本声明全部内容的认可。同时您必须认可上述免责条款,方可使用本源码/软件及资源。如有任何异议,建议立刻删除本源码/软件及资源并且停止使用.

七. 以上内容,本人保留最终解释权。

源码使用说明:

main.py为主入口

第一次启动需要下载很多棋子图,所以要很久!


再次提醒,本源码仅供技术交流,和学习python之用!请勿用于销售,运营,等违法的活动!

本源码,并没有经过大量实验,所以还有很多bug,发出来只是为了互相交流编程技术和提高水平.代码有什么地方写的希拉的

知识点包括python 线程 qt 调用大漠等等. 调用dll等!

欢迎论坛评论!并没有所有功能都写完,本人小白,,所以写的很慢!会持续更新源码!就这个帖子.不新开了!

源码+成品:  python打包编译口令  pyinstaller -F main.py
部分源码见二楼
游客,如果您要查看本帖隐藏内容请回复
发表于 2020-9-23 10:18 | 显示全部楼层
zxsaqw00 2020-9-23 10:18 显示全部楼层
怎么用不了啊
N9SIXD1BK%8%(GQ`~@FOJ{0.png

点评

一样模块加载失败  详情 回复 发表于 2020-9-23 16:58
我也一样 你解决了吗  详情 回复 发表于 2020-9-23 13:25
回复

使用道具 举报

 楼主| 发表于 2020-9-23 10:10 | 显示全部楼层
  1. import sys,mainInterface,requests,os,SquadList,strategyForm,souPaiJieZou,zhengrongZWForm
  2. from PyQt5.QtWidgets import QApplication,QMainWindow,QVBoxLayout,QLabel,QFrame,QAbstractItemView,QTableWidgetItem,QWidget
  3. from PyQt5.QtCore import Qt
  4. from PyQt5.QtGui import QCursor,QPixmap,QImage
  5. from TFT import TFT
  6. from NaiPai import AutoOPlayingChess,regDM,unRegDM
  7. import threading
  8. def buttonClick():
  9.     #取出对象mainWindow.sender()
  10.     if mainWindow.sender().text()=='官方阵容':
  11.         if squadList.isVisible():
  12.             squadList.setVisible(False)
  13.         else:
  14.             squadList.setVisible(True)
  15.             if squadListUI.tabZhengR.rowCount() ==0:
  16.                 squadList.show()  # 显示
  17.                 loadingList()

  18.     if mainWindow.sender().text()=='关闭':
  19.         mainWindow.close()
  20.         squadList.close()
  21.         straForm.close()
  22.         spjzFrom.close()
  23.         zrzwFrom.close()
  24.     print('单击了',mainWindow.sender().text())
  25. def tablistClick():
  26.     global dangqianData,spjzFrom,zrzwFrom
  27.     row = squadListUI.tabZhengR.selectedItems()[0].row()
  28.     dangqianData=strategyS[row]
  29.     if spjzFrom != '':
  30.         spjzFrom.setVisible(False)
  31.     showZhengRongZW(True)
  32. def loadingList():
  33.     squadListUI.tabZhengR.setRowCount(len(list))
  34.     squadListUI.tabZhengR.setColumnCount(11)
  35.     # 禁止编辑
  36.     squadListUI.tabZhengR.setEditTriggers(QAbstractItemView.NoEditTriggers)
  37.     # 整行选择
  38.     squadListUI.tabZhengR.setSelectionBehavior(QAbstractItemView.SelectRows)
  39.     # 水平表格头显示和隐藏
  40.     squadListUI.tabZhengR.horizontalHeader().setVisible(False)
  41.     # 垂直表格头显示和隐藏
  42.     squadListUI.tabZhengR.verticalHeader().setVisible(False)
  43.     for i,item in enumerate(list):
  44.         strategy = tft.get_strategy(item['line_id'])
  45.         strategyS.append(strategy)
  46.         # 设置阵容强度
  47.         tphot = QLabel()

  48.         tphot.setAlignment(Qt.AlignCenter)
  49.         tphot.setStyleSheet('''
  50.                  background-image: url(data/hot.png);
  51.                  color: #98794C;
  52.                  font-size:28px;
  53.                  font:微软雅黑;
  54.                  padding: 1px;  
  55.                  background-position:center;
  56.              ''')
  57.         tphot.setText(item['quality'])
  58.         tphot.setAlignment(Qt.AlignCenter)
  59.         squadListUI.tabZhengR.setCellWidget(i, 0, tphot)
  60.         # 设置阵容名
  61.         tabItem = QTableWidgetItem(item['line_name'])
  62.         squadListUI.tabZhengR.setItem(i, 1, tabItem)


  63.         hero_location=strategy['hero_location']
  64.         level_3_heros=strategy['level_3_heros']
  65.         for j,heroitem in enumerate(hero_location):
  66.             chessData = chessId_get_data(chess, heroitem['hero_id'])
  67.             tpgFrame= QFrame()

  68.             if 'isChosenHero' in heroitem:
  69.                 if heroitem['isChosenHero']!=None:
  70.                     tpgFrame.setObjectName('tpgFrame')
  71.             tpgFrame.setStyleSheet('''
  72.                 #tpgFrame{
  73.                     border: 1px solid #DF8AE7;
  74.                     border-radius: 5px;
  75.                         }''')
  76.             vbox = QVBoxLayout()

  77.             tp = QLabel(tpgFrame)
  78.             if heroitem['hero_id'] in level_3_heros:
  79.                 tp.setText('★★★')
  80.             tphot.setAlignment(Qt.AlignCenter)
  81.             tp.setStyleSheet('''
  82.                 margin: 1px;               
  83.                 color: #FDBC03;
  84.                 font-size:12px;
  85.                 font:微软雅黑;
  86.             ''')
  87.             tp.setMaximumSize(42, 12)
  88.             tp.setMinimumSize(42, 12)
  89.             tphot.setAlignment(Qt.AlignCenter)

  90.             tp1 = QLabel(tpgFrame)
  91.             tp1.setMaximumSize(42, 42)
  92.             tp1.setMinimumSize(42, 42)
  93.             #让图像适应标签
  94.             tp1.setScaledContents(True)
  95.             if chessData["price"] =='1':
  96.                 color = '#989898'
  97.             elif chessData["price"] =='2':
  98.                 color = '#58B137'
  99.             elif chessData["price"] =='3':
  100.                 color = '#3678C8'
  101.             elif chessData["price"] =='4':
  102.                 color = '#C81FC8'
  103.             else:
  104.                 color = '#FDBC03'


  105.             tp1.setStyleSheet(f'''
  106.                     margin: 1px;
  107.                     border: 1px solid {color};
  108.                     border-radius: 10px;  
  109.                     ''')

  110.             chessPath = f"data/chess/{chessData['name']}"
  111.             try:
  112.                 with open(chessPath, 'rb')as f:
  113.                     img = QImage.fromData(f.read())
  114.                     tp1.setPixmap(QPixmap.fromImage(img))
  115.             except:
  116.                 url = f"https://game.gtimg.cn/images/lol/act/img/tft/champions/{chessData['name']}"
  117.                 res = requests.get(url)
  118.                 img = QImage.fromData(res.content)
  119.                 tp1.setPixmap(QPixmap.fromImage(img))
  120.                 with open(chessPath, 'wb')as f:
  121.                     f.write(res.content)
  122.             vbox.addWidget(tp)
  123.             vbox.addWidget(tp1)
  124.             vbox.setContentsMargins(1,0,1,1)
  125.             #控件间距
  126.             vbox.setSpacing(1)
  127.             tpgFrame.setLayout(vbox)
  128.             squadListUI.tabZhengR.setCellWidget(i, 2 + j, tpgFrame)

  129.     # 行列大小根据内容调整大小

  130.     squadListUI.tabZhengR.resizeRowsToContents()
  131.     squadListUI.tabZhengR.resizeColumnsToContents()
  132. def mainWindowInitialize():

  133.     '''
  134.     界面初始化
  135.     :return:
  136.     '''
  137.     mainWindow.move(0, 0)
  138.     ui.horizontalLayout.setContentsMargins(0,0,1,0)
  139.     mainWindow.resize(566, 40)
  140.     mainWindow.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
  141.     #绑定事件
  142.     ui.pushButton.clicked.connect(buttonClick)
  143.     ui.pushButton_2.clicked.connect(buttonClick)
  144.     ui.pushButton_3.clicked.connect(buttonClick)
  145.     ui.pushButton_4.clicked.connect(buttonClick)
  146.     ui.pushButton_5.clicked.connect(buttonClick)

  147.     path = 'data/chess/'
  148.     if os.path.isdir(path) == False:
  149.         os.makedirs(path)
  150.     path = 'data/equip/'
  151.     if os.path.isdir(path) == False:
  152.         os.makedirs(path)
  153. def squadListInitialize():
  154.     '''
  155.     界面初始化
  156.     :return:
  157.     '''
  158.     # 加载官方列表
  159.     squadList.resize(800, 240)
  160.     squadListUI.verticalLayout.setContentsMargins(1, 0, 0, 1)
  161.     squadList.move(0, mainWindow.geometry().height()-3)
  162.     squadList.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
  163.     squadListUI.tabZhengR.clicked.connect(tablistClick)
  164. def straFormInitialize():
  165.     # 加载攻略栏目
  166.     straForm.move(app.desktop().screenGeometry().width()-straForm.geometry().width(), 0)
  167.     straForm.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
  168.     #绑定栏目按钮功能
  169.     straFormUI.pushButton_5.clicked.connect(showShouPaiJieZou)
  170.     straFormUI.pushButton_4.clicked.connect(showZhengRongZW)
  171.     straFormUI.pushButton.clicked.connect(updataAutoChess)
  172. def showShouPaiJieZou():
  173.     global spjzFrom
  174.     # ----------搜牌节奏-克制分析------------------
  175.     if spjzFrom!='':
  176.         if spjzFrom.isVisible() :
  177.             spjzFrom.setVisible(False)
  178.             return


  179.     if dangqianData!='':
  180.         spjzFrom = souPaiJieZou.SoPaiJieZou(dangqianData)
  181.         spjzFrom.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
  182.         spjzFrom.show()
  183.         spjzFrom.move(app.desktop().screenGeometry().width() - spjzFrom.geometry().width(),straForm.geometry().height() - 3)
  184. def showZhengRongZW(kg=False):
  185.     global zrzwFrom,chess
  186.     # ----------阵容站位------------------
  187.     if kg!=True:
  188.         if zrzwFrom != '':
  189.             if zrzwFrom.isVisible():
  190.                 zrzwFrom.setVisible(False)
  191.                 return
  192.     if dangqianData!='':
  193.         zrzwFrom = zhengrongZWForm.ZhengRongZW(dangqianData,chess)
  194.         zrzwFrom.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
  195.         zrzwFrom.show()
  196.         zrzwFrom.move(app.desktop().screenGeometry().width() - zrzwFrom.geometry().width(),straForm.geometry().height() - 3)
  197. def chessId_get_data(chess, hero_id):
  198.     '''
  199.     根据棋子的id返回棋子数据
  200.     :param chess:
  201.     :param hero_id:
  202.     :return:
  203.     '''
  204.     for n in range(len(chess)):
  205.         if hero_id == chess[n]['chessId']:
  206.             return chess[n]
  207. def updataAutoChess():
  208.     global atpc,chess
  209.     chessList = []  # 模拟选中的棋子池,没界面模拟一下
  210.     if  dangqianData!='':
  211.         hero_location=dangqianData['hero_location']
  212.         for item in hero_location:
  213.             #print(item)
  214.             #获取棋子名称
  215.             chessDATA= chessId_get_data(chess,item['hero_id'])
  216.             chessList.append(chessDATA['title'])
  217.         if len(chess)>0:
  218.             # 将需要购买的棋子放入池子中
  219.             atpc.chess=chessList
  220.             print('目前的自动列表:',atpc.chess)
  221. if __name__=='__main__':
  222.     dangqianData=''
  223.     spjzFrom = ''
  224.     zrzwFrom = ''
  225.     # 创建一个QApplication类的实例
  226.     app=QApplication(sys.argv)
  227.     #----------mainwindow------------------
  228.     mainWindow=QMainWindow()#创建一个界面
  229.     ui=mainInterface.Ui_MainWindow()#实例化ui界面对象
  230.     ui.setupUi(mainWindow)#运行里面的代码
  231.     mainWindowInitialize() #初始化赋值
  232.     mainWindow.show() #显示
  233.     # ----------strategyForm------------------
  234.     straForm = QWidget()  # 创建一个界面
  235.     straFormUI = strategyForm.Ui_strategyForm()  # 实例化ui界面对象
  236.     straFormUI.setupUi(straForm)  # 运行里面的代码
  237.     straFormInitialize()  # 初始化赋值
  238.     straForm.show()  # 显示

  239.     #------------squadList--------------------
  240.     squadList = QWidget()
  241.     squadListUI = SquadList.Ui_SquadFrom()
  242.     squadListUI.setupUi(squadList)
  243.     squadListInitialize()




  244.     tft = TFT()
  245.     # 可以使用print(列表名)打印数据
  246.     chess = tft.get_chess()  # 获取所有的棋子数据 返回一个列表
  247.     equip = tft.get_equip()  # 获取所有的装备数据 返回一个列表
  248.     job = tft.get_job()  # 获取所有的职业数据 返回一个列表
  249.     race = tft.get_race()  # 获取所有的羁绊数据 返回一个列表
  250.     list = tft.get_linelist()
  251.     strategyS=[]


  252.     #自动拿牌-------------------

  253.     # 初始化必要数据
  254.     reg_code = "luxiaolan63735f4be12fda045a12cf1b2927d5cbc19c"  # 大漠后台的注册码
  255.     ver_info = 'www.52pojie.cn'  # 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
  256.     dictPath = '1920.txt'  # 字库路径
  257.     processName = 'League of Legends.exe'  # 进程名
  258.     # ----------------------------------------------------------------------------
  259.     # 创建自动购买棋子对象
  260.     atpc = AutoOPlayingChess()
  261.     # 登录大漠,免费版的大漠就可以省略这一步
  262.     value = atpc.dmReg(reg_code, ver_info)
  263.     # 设置好字库和配置
  264.     atpc.SetDict(dictPath)
  265.     # 判断是否登录成功
  266.     if value == 1:  # 免费版的就不要这个if了
  267.         print(f'验证成功!')# 接下来就可以自己查接口说明来使用里面的全部方法了
  268.         # 启动自动购买棋子程序线程
  269.         t = threading.Thread( target=atpc.startAuto)
  270.         t.setDaemon(True)
  271.         t.start()
  272.     else:
  273.         if value == -2:
  274.             print('进程没有以管理员方式运行或者被第三方杀毒拦截. (建议关闭uac和杀毒软件),请用管理员权限运行本程序!')
  275.         else:
  276.             print(f'验证失败,失败代码为:{value},大概率是被杀毒拦截了!')



  277.     #进入程序主循环,并通过exit函数确保主循环安全结束
  278.     sys.exit(app.exec_())
复制代码


回复

使用道具 举报

发表于 2020-9-23 10:12 | 显示全部楼层
zxsaqw00 2020-9-23 10:12 显示全部楼层
自打看了楼主的帖子,腰不酸背不疼,一口气上二楼
回复

使用道具 举报

发表于 2020-9-23 10:15 | 显示全部楼层
Yenzery 2020-9-23 10:15 显示全部楼层
顶顶更健康
回复

使用道具 举报

发表于 2020-9-23 10:16 | 显示全部楼层
beimi112 2020-9-23 10:16 显示全部楼层
自打看了楼主的帖子,腰不酸背不疼,一口气上二楼
回复

使用道具 举报

发表于 2020-9-23 10:30 | 显示全部楼层
自打看了楼主的帖子,腰不酸背不疼,一口气上二楼
回复

使用道具 举报

发表于 2020-9-23 10:38 | 显示全部楼层
Zhan9JiaYu 2020-9-23 10:38 显示全部楼层
顶顶更健康
回复

使用道具 举报

发表于 2020-9-23 10:48 | 显示全部楼层
wdsjqe 2020-9-23 10:48 显示全部楼层
66666666666666
回复

使用道具 举报

发表于 2020-9-23 10:52 | 显示全部楼层
6106855123 2020-9-23 10:52 显示全部楼层
遇见神贴岂能不顶
回复

使用道具 举报

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

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

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