Alex-Beng / Yap

超快的原神自动拾取 | Ultra-fast Genshin Impact Auto Pickup
GNU General Public License v3.0
92 stars 10 forks source link
genshin-impact rust
# Yap Yet Another Genshin Impact Pickupper 又一个原神拾取器 _Named from [Yas](https://github.com/wormtql/yas)_

介绍

借鉴了Yas代码实现的自动拾取器。

一个开箱即用、识别飞快、占用资源极低、可配置黑名单的自动拾取器,解放滚轮和拾取键(还有Y键probably,Y键失效中,待修复), Which may be the best open source pickupper in terms of performance, usability and configurability.

pickup demo cpu

视频演示:v0.1.0锄地 v0.1.1捡狗粮 (过于老旧了,目前性能更好)

模型训练:yap-train(detach fork from yas-train)

友情链接:BetterGI--更好的原神(更多有用的功能)

原理

使用基于L*/灰度通道的模板匹配(which is used in other naive pickuppers 基于轮廓提取+特征匹配的方案,实现μs级别的拾取键的定位; 基于alpha通道实现debug模式都能μs级别的拾取键的定位; 通过固定位置关系截取拾取物的文字; 之后,与Yas一样,使用SVTR网络对预处理后的区域图片进行识别;

目前的策略是截取包含拾取键上下两个可能存在的拾取物文字,共五个区域。 然后根据黑白名单,利用硬编码的自上而下拾取算法,生成动作序列ops,再进行执行。

其中黑白名单的逻辑是:白名单中的强制拾取/交互,黑名单仅对不在白名单的生效。

其中,黑名单 = 默认黑名单 + 用户配置黑名单。 默认黑名单包括了NPC/自机角色、机关/操作/宝箱等探索交互、各种秘境

当遇到连续多个(大于等于两个)拾取/交互,或者遇到(白名单内的)调查,会触发彻底疯狂,连续按拾取键+滚动10下。

使用

目前支持windows,PC客户端(已支持云原神),16:9分辨率。

16:10分辨率拾取处于测试阶段(作者没有硬件来测试),可能会有bug。

全局快捷键见下表:

快捷键 功能
Alt + 0 暂停。切换是否拾取
Alt + 8 切换是否使用单区域模式,便于拾取单个物品,默认关闭

隐藏功能见:other_funcs.md

获取release

目前有两种release,一种是由github actions自动构建的nightly版本,一种是手动构建的release版本。前者可能会有bug,后者较为稳定。

PS:可以使用nightly版本帮助debug。srds,作者已经懒得发手工构建的版本了,直接下最新的nightly即可。

  1. 点击此处下载release压缩包,解压获得yap.exe应用。

  2. 如果使用过旧版本,路径下有black_lists.json, white_lists.json,Yap会自动合并为config.json,并删去默认黑名单中存在的交互/物品名称; 如果是第一次使用,Yap也会自动生成一个空白的config.json

  3. 使用记事本/VSCode等编辑器打开config.json,添加需要拉黑 or 必须交互/拾取的名称,注意需要使用英文符号,如:

{
  "black_list": [
    "史莱姆凝液",
    "薄荷",
    "甜甜花",
    "树莓"
  ],
  "white_list": [
    "芙萝拉",
    "调查",
    "薄荷",
    "甜甜花",
    "树莓",
    "传送锚点"
  ]
}
  1. 可选:
    点击展开/折叠

使用config.json配置拾取参数、拾取键以及余弦匹配阈值以及其他参数,如:

{
  "black_list": [
    "史莱姆凝液",
    "薄荷",
    "甜甜花",
    "树莓"
  ],
  "white_list": [
    "芙萝拉",
    "调查",
    "薄荷",
    "甜甜花",
    "树莓",
    "传送锚点"
  ],
  "click_tp": false,
  "f_gap": 85,
  "f_internal": 50,
  "infer_gap": 0,
  "scroll_gap": 70,
  "pick_key": "f",
  "cos_thre": 0.9977,
   "uid_mask": true,
    "press_y": true
}
参数 功能
click_tp 是否自动点击传送锚点
f_gap 拾取键松开后的冷却时间,单位ms
f_internal 拾取键摁下到松开等待时间,单位ms
infer_gap 检测间隔,单位ms
scroll_gap 滚轮滚动后的冷却时间,单位ms
pick_key 拾取键,默认为f
cos_thre 余弦匹配阈值,越大越严格,越小越宽松
uid_mask 是否生成UID遮罩
press_y 是否自动摁Y键

  1. 右键yap.exe选择以管理员身份运行

  2. 性能调优(如果你会使用命令行/json设置参数的话)

自行构建

cargo build

Just enjoy it!