Cristy 发表于 2022-12-23 15:38

[Python]win32api+pyautogui+百度OCR等实现CF交易所指定物品、指定价格抢购开箱

本帖最后由 Cristy 于 2023-7-24 09:25 编辑

1. 背景
      12月20号的时候,挂机游戏突然获得了一个【蔷薇宝箱】宝箱。在南部大区,蔷薇宝箱售价日常范围是7800-8500,基本8500以上没有人购买。箱子能开出8800CF点、蔷薇零件、蔷薇设计图、蔷薇多种涂装。除了金色涂装(售价为1w+)和8800CF点 则为赚,其他都只能卖1-2千。故而用人品博一搏,发现开8800CF点的概率极高。经过测试 开了30个箱子出CF点的概率达到90%以上。当然这个也是看运气的。于是拿着官方送的启动资金一直刷,直到刷了2w+。正碰上虎年新的抽奖活动可以使用CF点券抽奖,于是做了这个脚本。该脚本亦归类到我的Python自学学习项目之中,作为Python控制键鼠、ocr功能的实现示例。


2. 功能
      1. 自动刷新交易所查询最新价格
      2. 自动开启新宝箱
      3. 钥匙不够自动购买


3. 实现基本原理
      1. 自动点击、自动输入、自动按键、自动截图
             使用了win32api、win32gui、pyautogui、pyperclip等库
         主要为游戏设置固定的分辨率(1280*720)将游戏定在屏幕左上角。方便很多固定的按钮去使用固定坐标点击(比如个人仓库、交易所)等按钮
      2. CF点刷新、最新价格刷新、开箱信息
         使用pyautogui截图+百度OCR通用版本识别图片信息
         其中内部百度OCR使用的utools OCR-图片转文字的接口获取,故而未作限制,也可以使用个人access-token一个月1000次的使用量。


4. 个人环境
      Windows 11 家庭中文版
      Python3.9


5. 使用方法
      1. 安装Python环境及相关Python库
      2. 游戏设置分辨率为1280*720及窗口化
      3. 修改配置信息
            
         4. 启动脚本原理鼠标


6. 存在的问题
      1. 开箱礼物结果识别问题
               目前测试如果识图范围太大会识别不准、太小则截图不全。尚没有解决办法
      2. 在某些情况下,当截图、识图失败自动重试超过指定次数会掉线。
      3. 因为开始写这个是为了开蔷薇宝箱,所以买到商品会立马去开箱。也就是哪怕设置的不是箱子类商品,目前依然会做开箱动作
      4. 因为个人技术修养较低,代码凌乱


7.可以完善添加的功能
      1. 账号掉线重登
      2. 开出不要的物品自动交易卖出
      3. CF点券不足卖出指定交易物品等待成功后继续收购宝箱


8. 持续更新


2023-1-11 更新脚本删除了多余的日志,根据新版本界面布局更新了固定按钮的坐标。
         建议购买蔷薇宝箱使用8000以下 提高单次交易收益,降低交易频率。多次开箱感觉会保底出CF点以外的东西。
2023-2-10 取消了大部分日志,添加更多截图识别容错。并且炫耀一下我的cf点,从获得第一个箱子挂机至今已经翻了10番

2023-7-24提供新思路:和其他好友交流得到的新思路,抓刷新封包实现秒刷新功能(这个封号刷新频率越高封号概率越高)
         但是因为CF版本更新脚本已经失效。交易所规则变成了登录30分钟后才可交易。   






百度OCR Python调用方法 借鉴CSDN大佬源码
https://blog.csdn.net/u012399690/article/details/121406428

主要脚本源码:
cfs_jys.py
baiduOcrApi.py
baiduOcr.py
初始版
2023-1-11更新
2023-2-10更新
免费下载入口
https://wwcy.lanzoum.com/b09u0scgb
密码:52pj
2023-2-10 版本文件https://wwcy.lanzoum.com/iJLvO0n414qj
密码:52pj

Cristy 发表于 2024-4-3 11:46

Darwin9331 发表于 2024-3-17 17:26
你这些都是自己写的吗,看啥学的

个人一般是用到了就去百度搜。
1. 一开始只是写一点文本处理。比如从文本读取 数据 每一行做同样的处理,去除空格之类的
2. 然后就是 重复发送http请求比如翻译之类的需要用第三方库或者调用百度、有道的api
一般我自己工作、游戏 用到的就这些http请求、模拟点击基本能解决大部分问题。然后根据每次的需要添加,比如开始就一个for循环后面发现有些网站不准你一直调用,就得加time.sleep 停顿。还有涉及到同时多次,所以又可以看看并发调用之类的。模拟鼠标键盘这种用得比较少,什么时候需要就去再看看相关文档、博客。
   我是个半瓢水...用到哪里看哪里{:1_932:}

Cristy 发表于 2022-12-25 02:09

cgzrjl 发表于 2022-12-24 13:06
想知道游戏不会检测自动脚本吗?

不加入游戏应该不会吧。同类型的 按键精灵 挂机脚本自己也用过也没有涉及到封号。不知道游戏对于这几个底层控件有没有检测。
鼠标宏是有检测的。

pojie6 发表于 2022-12-24 07:16

很好学习code,谢谢分享

Cristy 发表于 2022-12-24 11:39

pojie6 发表于 2022-12-24 07:16
很好学习code,谢谢分享

{:1_893:}非常感谢

cgzrjl 发表于 2022-12-24 13:06

想知道游戏不会检测自动脚本吗?

ange7 发表于 2023-1-10 16:23

牛的牛的

DFXJ3315 发表于 2023-2-5 20:51

大哥们有没有查询不限价道具的软件,求分享一下。

Cristy 发表于 2023-2-8 21:33

DFXJ3315 发表于 2023-2-5 20:51
大哥们有没有查询不限价道具的软件,求分享一下。

能提供思路吗?有思路理论就能搞

dzp931230 发表于 2023-8-25 15:22

大佬能搞个封包 记录自己在交易所上架的道具ID和根据ID直接购买道具吗

Enzo2002 发表于 2023-11-27 22:32

可以学习学习
页: [1] 2
查看完整版本: [Python]win32api+pyautogui+百度OCR等实现CF交易所指定物品、指定价格抢购开箱