Compare commits

..

391 Commits

Author SHA1 Message Date
Jamis
7c4c101ef5 校准紫晶块路线 (#1589)
* Correct pathing for amethyst crystals

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-14 18:43:50 +08:00
zaodonganqi
a3b3a8c746 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-14 04:05:48 +00:00
a26500456d 精英 readme 忘记更新 (#1588) 2025-08-14 12:05:29 +08:00
zaodonganqi
eb216dd3b8 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-14 00:55:27 +00:00
yanying09
721b259b02 Add files via upload (#1586)
4晶蝶
2025-08-14 08:54:37 +08:00
zaodonganqi
4b6285a232 update repo.json 2025-08-14 00:54:04 +00:00
b275caf7c8 狗粮+精英 8.13 (#1587)
狗粮: 1.修复强制黑芙的摔死bug
精英: 1.研究方法进入[沙暴]区域
2025-08-14 08:53:45 +08:00
zaodonganqi
bbb043e7f4 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-13 14:59:22 +00:00
this-Fish
9de10157fc 地圖追蹤 : 海露花&帕蒂沙兰 路徑優化 (#1584)
* Delete repo/pathing/地方特产/枫丹/海露花/芭芭拉效率路线@寥寥轻舟 directory

* 地圖追蹤 : 海露花 路徑優化

* Delete repo/pathing/地方特产/须弥/帕蒂沙兰 directory

* 地圖追蹤 : 帕蒂沙兰 路徑優化

* 自动修复 JSON 格式和版本号 [ci skip]

* 補充README.md

* 自动修复 JSON 格式和版本号 [ci skip]

* Add files via upload

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-13 22:50:53 +08:00
Jamis
4fd7090831 校准水晶块路线 (#1582)
* correct pathing for crystal chunks

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-13 18:39:00 +08:00
Jamis
e14f59918f 修正须弥地区水晶块路线,删除两条失败率高的路线 (#1579)
* fix pathing for crystal chunks in Sumeru

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-13 15:57:34 +08:00
zaodonganqi
25e651aad8 update repo.json 2025-08-13 07:26:21 +00:00
this-Fish
50da8dfd95 JS : Auto Theft NPC & 原食 改用orc方式應對納塔商人交互 (#1580)
修正模擬操作會導致BUG納塔商人交互失敗
改用orc方式應對納塔商人交互
2025-08-13 15:25:33 +08:00
zaodonganqi
6d658e5079 update repo.json 2025-08-13 03:39:09 +00:00
Jamis
7eb7b8131f 校准须弥地区水晶块路线 (#1578)
* Correct pathing for crystal chunks in Sumeru

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-13 11:04:10 +08:00
zaodonganqi
96cfb3dd90 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-13 02:14:01 +00:00
zaodonganqi
4a88eaac02 update repo.json 2025-08-13 01:50:59 +00:00
mno
af6355963d js:锄地一条龙1.4.2 (#1576)
### 1.4.2(2025.08.13)
1.修改拾取后延时效果
2025-08-13 09:50:43 +08:00
zaodonganqi
de6e48946b update repo.json 2025-08-13 01:50:13 +00:00
躁动的氨气
439970db04 全自动使用多个兑换码归档 (#1577)
* 自动使用兑换码归档

* Delete repo/js/全自动使用多个兑换码 directory

* 全自动使用多个兑换码归档
2025-08-13 09:49:24 +08:00
zaodonganqi
2bd1122df8 update repo.json 2025-08-13 01:40:26 +00:00
躁动的氨气
da329d7353 自动使用兑换码归档 (#1575) 2025-08-13 09:36:30 +08:00
zaodonganqi
833a6f1290 update repo.json 2025-08-13 01:30:15 +00:00
躁动的氨气
447a72b303 清除归档后的自动使用兑换码残留
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-13 09:29:25 +08:00
zaodonganqi
68ffddf868 update repo.json 2025-08-13 00:54:53 +00:00
zaodonganqi
9724dfecf8 update repo.json 2025-08-13 00:53:46 +00:00
this-Fish
16e191fd05 JS : Auto Theft NPC & 原食 修改納塔商人交互方式 (#1574) 2025-08-13 08:52:59 +08:00
zaodonganqi
71823d7b84 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-12 15:29:42 +00:00
4d9fb412aa 狗粮pro +精英+批发 8.12 (#1572)
精英:
1.101优化
狗粮:
芙宁娜状态外置调整
2025-08-12 23:29:21 +08:00
Jamis
7647322f5a 新增更多枫丹地区萃凝晶路线 (#1571)
* Add more pathing for condessence crystals

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-12 23:02:21 +08:00
Tool_tingsu
453aadcd87 地图追踪 澄晶实01 路线优化 (#1569)
* Delete repo/pathing/食材与炼金/澄晶实/纳西妲收集@Tool_tingsu/01-澄晶实-隆崛坡地下-4个.json

* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

* Update 01-澄晶实-隆崛坡地下-4个.json

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-12 20:31:02 +08:00
Jamis
e6fd631fdd 补充枫丹地区萃凝晶路线 (#1570)
* Add more pathing for condessence crystals

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-12 20:29:10 +08:00
MisakaAldrich
fd85cc5816 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-12 08:43:38 +00:00
起个名字好难的喵
b048e7fb23 fix typo 2025-08-12 16:42:50 +08:00
zaodonganqi
18fe49b8bd update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-12 08:26:37 +00:00
mno
fbf7fcd245 js:锄地一条龙1.4.0 (#1568)
* js:锄地一条龙1.4.0

### 1.4.0(2025.08.12)
1.增加拾取模式,模板匹配拾取并设为默认项,之前的拾取模式改名为ocr拾取

* js:性能测试

增加自定义配置选择测试项目和识图区域大小

* js:锄地一条龙

适当增加拾取后延时
2025-08-12 16:26:17 +08:00
Jamis
38f662590c 校准枫丹、纳塔地区萃凝晶路线 (#1566)
* correct pathing for condessence crystals

* Shorten wait times

* 自动修复 JSON 格式和版本号 [ci skip]

* Use 1-second delay before teleporting

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-12 15:51:02 +08:00
MisakaAldrich
1ae6e698a1 update repo.json 2025-08-12 07:43:56 +00:00
起个名字好难的喵
8b97ee6e81 fix autowoodcutting-pathing bgi_version (#1567) 2025-08-12 15:43:20 +08:00
zaodonganqi
38f81ceebb update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-12 04:54:05 +00:00
Jamis
106c9dac4d 校准枫丹地区萃凝晶路线 (#1565)
* correct pathing for condessence crystals

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-12 12:37:24 +08:00
zaodonganqi
7a8c01d348 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-12 03:38:46 +00:00
躁动的氨气
262f229bf9 自动兑换码归档 (#1563) 2025-08-12 11:37:57 +08:00
zaodonganqi
43c5c89794 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-12 02:08:19 +00:00
mno
0431d3998a js:AAA狗粮批发0.0.4 (#1562) 2025-08-12 10:07:57 +08:00
MisakaAldrich
8082a7bdb7 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-11 18:08:24 +00:00
e5bd270343 狗粮pro+精英js+AAA批发 (#1561) 2025-08-12 02:08:04 +08:00
zaodonganqi
9fc55c10ca update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-11 13:24:45 +00:00
zaodonganqi
0b0188700c update repo.json 2025-08-11 13:22:33 +00:00
躁动的氨气
d90654503f 修复文件目录 (#1560)
* Delete repo/pathing/食材与炼金/烛伞蘑菇/desktop.ini

* Delete repo/pathing/食材与炼金/烛伞蘑菇/icon.ico

* Delete repo/pathing/食材与炼金/烛伞蘑菇/烛伞蘑菇-彩石顶(纳西妲)-9.json
2025-08-11 21:21:45 +08:00
xiayutianXYT
224a476f39 地图追踪:烛伞蘑菇 (#1558)
* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-11 21:18:37 +08:00
Tool_tingsu
feb6361c06 Add files via upload (#1559) 2025-08-11 21:17:52 +08:00
zaodonganqi
aa67aaf70c update repo.json 2025-08-11 12:36:02 +00:00
zaodonganqi
184fb98ba9 update repo.json 2025-08-11 12:33:53 +00:00
Tool_tingsu
d88ead299a js 提瓦特扫描仪 蒙德路线 1-14 2025-08-11 20:33:02 +08:00
zaodonganqi
07d7f872c4 update repo.json 2025-08-11 12:01:16 +00:00
Jamis
8d10b74d24 README -> README.md (#1554) 2025-08-11 20:00:27 +08:00
Jamis
b4f4c5bd89 增加萃凝晶枫丹地区地下路线 (#1552)
* add underground path

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-11 19:40:30 +08:00
zaodonganqi
e50974b746 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-11 11:16:22 +00:00
呱呱z
320af9455f 新建简易版自动循环使用料理 (#1550)
* Create 文件夹新建

* Add files via upload

* Delete repo/js/自动循环使用料理/文件夹新建
2025-08-11 19:15:34 +08:00
zaodonganqi
118709ed63 update repo.json 2025-08-11 11:02:00 +00:00
躁动的氨气
c93cb92c3a 删除多项争议内容,归位成就目录 (#1551) 2025-08-11 19:01:13 +08:00
Jamis
9135788e86 增加须弥地区水晶块路线,增加README (#1549)
* Add more

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-11 18:40:45 +08:00
zaodonganqi
f7b8a35b0a update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-11 05:55:25 +00:00
小大XD
7419d81157 全自动沙漠书 (#1548)
* 全自动沙漠书(修了的(1))

* 自动修复 JSON 格式和版本号 [ci skip]

* fix folder

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com>
2025-08-11 13:16:48 +08:00
this-Fish
4bd431bcb8 地圖追蹤 : 紫晶块[大剑]@蜜柑魚 路徑優化 (#1545)
* 地圖追蹤 : 紫晶块[大剑]@蜜柑魚 路徑優化

火神趕路結尾加上E下車
A02調整戰鬥位、避免點到鍋
A05調整前往第一個礦點路徑

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-11 12:56:10 +08:00
this-Fish
3770f39246 JS : Auto Theft NPC & 原食 2.0.1 (#1546)
新增纳塔杂货店NPC
2025-08-11 12:55:32 +08:00
zaodonganqi
01654f0797 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-11 01:13:02 +00:00
zaodonganqi
7aa6ec4306 update repo.json 2025-08-11 01:07:17 +00:00
2f25fd3b6a 狗粮pro +精英js (#1544)
狗粮
1优化些许点位
精英
1,分层添加路径信息
2.调整几条路线规划;601大宝/次数盾分开;几处容易打不到的怪物移除
2025-08-11 09:06:58 +08:00
Jamis
cb4a28bb93 增加更多须弥地区水晶块路线 (#1543)
* merge two paths

* add more

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-11 00:05:37 +08:00
physligl
67f3b5a571 update repo.json 2025-08-10 14:00:45 +00:00
秋云
62a04b25ff fix:settings 2025-08-10 22:00:19 +08:00
Jamis
fe8e33e72b 增加千壑沙地水晶块路线 (#1542)
* Add crystal chunks pathing for desert of Hadramaveth

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-10 19:17:56 +08:00
zaodonganqi
ad7b99e761 update repo.json 2025-08-10 11:05:51 +00:00
呱呱z
16b452985f 战斗策略:伊涅芙+芙宁娜+万叶+白术 (#1538)
* 战斗策略:伊涅芙+芙万+白术
2025-08-10 19:05:06 +08:00
zaodonganqi
9532762baa update repo.json 2025-08-10 10:51:14 +00:00
mno
26d378d1cb js:AAA狗粮批发0.0.2 (#1540)
修复无记录文件时报错
2025-08-10 18:50:58 +08:00
Tool_tingsu
287b72a377 Update main.js (#1541) 2025-08-10 18:50:14 +08:00
zaodonganqi
d45eef380a update repo.json 2025-08-10 09:07:04 +00:00
mno
b67c244132 js:AAA狗粮批发增加保留文件 (#1539)
"saved_files": [
    "records/*.txt"
  ],
2025-08-10 17:04:21 +08:00
zaodonganqi
284aff3f19 update repo.json 2025-08-10 08:48:58 +00:00
mno
681508624d js:aaa狗粮批发测试版本 (#1537)
同时,之前的自动狗粮js
### 1.7.7(2025.08.10)
1.移除了存在bug的不卡时间,尽量跑A模式
2025-08-10 16:48:38 +08:00
physligl
d910e80e20 update repo.json 2025-08-10 08:45:16 +00:00
秋云
85688a88fe Merge remote-tracking branch 'upstream/main' 2025-08-10 16:44:24 +08:00
秋云
740a5cd2fa 补充 main.js 2025-08-10 16:43:52 +08:00
physligl
3eadee4932 update repo.json 2025-08-10 08:39:12 +00:00
秋云
4c6ae94d65 Merge remote-tracking branch 'upstream/main' 2025-08-10 16:37:06 +08:00
秋云
28f7f600da RDP:补充说明文件 2025-08-10 16:36:49 +08:00
physligl
b53f94aecb update repo.json 2025-08-10 08:35:02 +00:00
秋云
9176f1564e 四方八方之网 main.js 2025-08-10 16:34:37 +08:00
physligl
e4f111b1ab update repo.json 2025-08-10 08:28:14 +00:00
秋云
f4087871b9 fix: move file. 2025-08-10 16:27:48 +08:00
physligl
fbc9e9b71c update repo.json 2025-08-10 08:25:21 +00:00
火山
939a96cf48 Python脚本:1Remote_RDP_Autoreconnection (#1536)
基于1Remote软件的Rdp本地远程日志监控,并自动检测断连重启的Python脚本。需要看readme才能使用!!
2025-08-10 16:25:01 +08:00
Jamis
1dc0c910c7 重构须弥与纳塔地区水晶块路线,修正部分路线,增加新路线 (#1535)
* refactor crystal chunks path in Sumeru and Natlan

* update

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-10 16:07:10 +08:00
physligl
d188ac8a41 update repo.json 2025-08-10 07:25:23 +00:00
秋云
1f1198f712 fix: 整合四方八方之网 2025-08-10 15:24:54 +08:00
Tool_tingsu
afd8c2fc60 地图追踪 澄晶实 路线优化 (#1534)
* Delete repo/pathing/食材与炼金/澄晶实 directory

* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

* Update 01-澄晶实-隆崛坡地下-4个.json

* Update 02-澄晶实-祖遗庙宇地下1-4个.json

* Update 03-澄晶实-祖遗庙宇地下2-8个.json

* Update 04-澄晶实-溶水域地下1-12个.json

* Update 05-澄晶实-溶水域地下2-14个.json

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-10 14:42:24 +08:00
MisakaAldrich
6a7298a6d9 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-10 03:43:50 +00:00
起个名字好难的喵
a47e786567 JS脚本: 自动伐木地图追踪版 修复悬铃木几处可能的卡死 (#1533) 2025-08-10 11:43:34 +08:00
MisakaAldrich
554ca6068d update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-10 00:27:20 +00:00
起个名字好难的喵
b69c88158e JS脚本: 自动伐木地图追踪版 action改造 (#1532)
* JS脚本: 自动伐木地图追踪版 桃椰子木action改造

* JS脚本 自动伐木地图追踪版 action改造

* 更新文档

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-10 08:27:00 +08:00
zaodonganqi
1087485a6a update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-09 15:57:45 +00:00
躁动的氨气
a49c2a01bc 删除风神瞳空目录 (#1531) 2025-08-09 23:57:03 +08:00
zaodonganqi
eb7e5f7492 update repo.json 2025-08-09 15:23:45 +00:00
kaedelcb
6e72e32000 v.3.5版本 全自动枫丹地脉花 :20250809 (#1529)
- **优化**:
1. 树脂识别错误纠正处理。
2. 异步检测错误打开地脉花优化时序。
2025-08-09 23:23:30 +08:00
kaedelcb
f5d9456fb3 v.1.8版本 自动幽境危战 20250809 (#1530)
- **优化**:
1. 进入各种页面的等待时间增加,防止卡顿报错。
2. 树脂识别错误纠正处理。
2025-08-09 23:23:16 +08:00
MisakaAldrich
c93537f714 update repo.json 2025-08-09 14:45:20 +00:00
起个名字好难的喵
c305d02c6e JS脚本: 自动伐木地图追踪版 新action测试 (#1528) 2025-08-09 22:45:03 +08:00
Jamis
84070b09a7 增加须弥地区水晶块路线(部分) (#1527)
* Add pathing for crystal chunks in Sumeru

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-09 22:39:03 +08:00
zaodonganqi
7fe9a9e173 update repo.json 2025-08-09 13:39:26 +00:00
Jamis
7dc2fa29f1 改进紫晶块路线对满命玛薇卡的适配 (#1526) 2025-08-09 21:38:44 +08:00
zaodonganqi
57881d945b update repo.json 2025-08-09 11:41:24 +00:00
躁动的氨气
c3b5280b72 删除无效文件 (#1525) 2025-08-09 19:40:33 +08:00
zaodonganqi
4719de53b5 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-09 08:26:05 +00:00
躁动的氨气
7509996b37 修改目录结构 (#1524) 2025-08-09 16:25:23 +08:00
zaodonganqi
278b894135 update repo.json 2025-08-09 07:41:13 +00:00
Tool_tingsu
d3fa48dda7 js boss相关路线更新 (#1523) 2025-08-09 15:40:31 +08:00
zaodonganqi
9a729b5c80 update repo.json 2025-08-09 07:37:27 +00:00
5117600049
4776b045c9 更新首领讨伐的攀爬检测逻辑 (#1520) 2025-08-09 15:36:42 +08:00
小大
553691c92b 神瞳2.0 删除1.0 (#1522)
* 神瞳2.0 删除1.0

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-09 15:36:12 +08:00
zaodonganqi
f0aebe1ba0 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-09 03:49:49 +00:00
提瓦特钓鱼玳师
c61d1111f2 JS脚本:提瓦特全自动钓鱼【修复】 (#1519)
* 修复了月卡等待异常的问题

* Delete repo/js/AutoFishingTeyvat/assets/archive.json

* Delete repo/js/AutoFishingTeyvat/READEME.md
2025-08-09 11:49:31 +08:00
zaodonganqi
eeccb07ea1 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-09 02:35:34 +00:00
Jamis
cf21699739 新增js脚本: 每日领取闪闪礼蛋 (#1518) 2025-08-09 10:34:54 +08:00
MisakaAldrich
6713bfe4c2 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-09 01:36:16 +00:00
起个名字好难的喵
7c46fe824e removed old_version pathing 2025-08-09 09:35:29 +08:00
小大
e09a2ca287 锚点1.1 (#1517)
* 锚点1.1

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-09 09:29:53 +08:00
MisakaAldrich
c4bdcdb5a9 update repo.json 2025-08-09 01:29:19 +00:00
340c68aee0 狗粮pro 8.8 (#1516)
1.更新富AB规划
2.优化些许点位
2025-08-09 09:29:00 +08:00
zaodonganqi
8cabe52bf1 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-08 14:35:10 +00:00
Tool_tingsu
15e958c018 js 配对界面切换角色 更新清理角色缓存 (#1513)
* Delete repo/pathing/地方特产/枫丹/苍晶螺/13-苍晶螺-自然哲学学院2-7个.json

* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

* Update 13-苍晶螺-自然哲学学院2-7个.json

* 123

* 自动修复 JSON 格式和版本号 [ci skip]

* 1

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 22:32:51 +08:00
Tool_tingsu
a08cd67ae7 js 纪行周常-10个boss一条龙 更新路线为分层地图版,取消键鼠 (#1515)
* Delete repo/pathing/地方特产/枫丹/苍晶螺/13-苍晶螺-自然哲学学院2-7个.json

* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

* Update 13-苍晶螺-自然哲学学院2-7个.json

* 123

* 自动修复 JSON 格式和版本号 [ci skip]

* 1

* 2

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 22:32:07 +08:00
Tool_tingsu
60996576c6 js 首领讨伐一条龙 更新路线为分层地图版本,取消键鼠录制的使用 (#1514)
* Delete repo/pathing/地方特产/枫丹/苍晶螺/13-苍晶螺-自然哲学学院2-7个.json

* 归档苍晶螺js

* 归档

* 1

* 2
2025-08-08 22:31:52 +08:00
xiayutianXYT
d27600a2e0 地图追踪:小驮兽(面具驮) (#1512)
* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 22:31:22 +08:00
zaodonganqi
96e7e9b62d update repo.json 2025-08-08 14:10:32 +00:00
Tool_tingsu
a068edd135 js 苍晶螺拾取归档 (#1511)
* Delete repo/pathing/地方特产/枫丹/苍晶螺/13-苍晶螺-自然哲学学院2-7个.json

* 归档苍晶螺js

* 归档
2025-08-08 22:09:50 +08:00
Tool_tingsu
46f613db00 初露之源 汐藻 风神瞳 更新占用 (#1510)
* Delete repo/pathing/地方特产/枫丹/苍晶螺/13-苍晶螺-自然哲学学院2-7个.json

* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

* Update 13-苍晶螺-自然哲学学院2-7个.json

* 123

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 22:09:25 +08:00
zaodonganqi
8d84529293 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-08 11:21:51 +00:00
小大
00f19aae51 神瞳 (#1509)
* 神瞳

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 19:11:56 +08:00
小大
db492c39ac 锚点 (#1508)
* 锚点

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 18:52:42 +08:00
xiayutianXYT
1cefb7163b 地图追踪:大驮兽 (#1505)
* Add files via upload

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 18:48:44 +08:00
秋云
97fdcc5275 Update README.md
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-08 16:42:39 +08:00
MisakaAldrich
99ab3801f9 update repo.json 2025-08-08 08:05:13 +00:00
起个名字好难的喵
99ddb138e5 fix authors 2025-08-08 16:04:11 +08:00
起个名字好难的喵
3a696c4f86 fix bgi_version 2025-08-08 15:59:02 +08:00
禹仔二号
63f3aae673 小大 (#1504)
* feat(repo): 添加枫丹-锚点-苍晶区-地面路径

- 新增枫丹-锚点-苍晶区-地面路径文件
- 路径覆盖苍晶区地面区域,包括多个拾取点和行走路径
- 文件格式为JSON,包含路径点的坐标和动作参数

* 自动修复 JSON 格式和版本号 [ci skip]

* feat(archive): 添加海岛活动-遥遥同旅-第一关脚本

- 新增自动按键操作脚本,实现一系列预设的按键组合操作
- 主要涉及的键位有:VK_D、VK_A、VK_SPACE、VK_Q
- 添加 manifest.json 文件,包含脚本的基本信息和配置

* feat(pathing): 添加悠悠度假村锚点和神瞳路径

- 新增 4 个锚点路径文件,覆盖悠悠度假村区域
- 新增 4 个火神瞳路径文件,包含该区域的神瞳收集路线
- 所有路径均由小大作者创建

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com>
2025-08-08 15:52:23 +08:00
xd1145
aa68e2e683 纳塔5.8 全自动神瞳 1-2 (#1502)
* 纳塔5.8 全自动神瞳 1-2

* 5.8神瞳 1-3 悠悠集市东方 2个

* fix typo

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com>
Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-08 12:56:47 +08:00
MisakaAldrich
eca4312ad4 update repo.json 2025-08-08 04:24:48 +00:00
xd1145
921c8f4a37 地图追踪: 5.8 纳塔 神瞳全自动收集 七天神像旁 2个 (#1501) 2025-08-08 12:23:59 +08:00
MisakaAldrich
60872fd13c update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-08 01:56:38 +00:00
火山
521b79a6f1 战斗策略:伊涅芙+龙芙万 (#1500) 2025-08-08 09:55:57 +08:00
MisakaAldrich
6eaf7ce057 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-07 17:21:42 +00:00
起个名字好难的喵
6733c2a178 JS脚本: 鳄鱼好感修复fakelog 2025-08-08 01:21:11 +08:00
physligl
abc2749375 update repo.json 2025-08-07 15:29:11 +00:00
秋云
49d408b5d3 fix: 手动管理截图内存 2025-08-07 23:28:34 +08:00
MisakaAldrich
1b58b1df40 update repo.json 2025-08-07 14:45:14 +00:00
起个名字好难的喵
92d29a8e31 add js authors 2025-08-07 22:44:47 +08:00
起个名字好难的喵
8423ec45c9 秋秋云,我已登神 2025-08-07 22:44:13 +08:00
起个名字好难的喵
8342c87404 archive js battlepass 2025-08-07 22:36:45 +08:00
zaodonganqi
b446f0c98c update repo.json 2025-08-07 12:00:08 +00:00
mno
c23b44399a js:锄地一条龙1.3.6 (#1499)
### 1.3.6(2025.08.07)
1.进一步优化内存占用
2025-08-07 19:59:46 +08:00
MisakaAldrich
8820ec19ab update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-07 07:10:46 +00:00
mno
6ae02e50ff js:锄地一条龙增加保留拾取名单.json (#1498) 2025-08-07 15:10:28 +08:00
MisakaAldrich
6e406649f3 update repo.json 2025-08-07 05:21:40 +00:00
mno
809039b2af js:锄地一条龙1.3.5和新js"性能测试" (#1497) 2025-08-07 13:21:18 +08:00
MisakaAldrich
5b240ba7c5 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-07 03:02:05 +00:00
Jamis
cbbf4dca19 Add support for Bounama's grocery in Natlan (#1496) 2025-08-07 11:01:25 +08:00
zaodonganqi
0a999bc007 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-07 01:41:48 +00:00
mno
a98d4d67dc js:锄地一条龙1.3.4 (#1495)
* js:锄地一条龙1.3.4

### 1.3.3(2025.08.07)
1.修复拾取失效(再出问题就踹秋秋云屁股)
2.修复泥头车模式卡复活界面

* Update README.md
2025-08-07 09:41:32 +08:00
zaodonganqi
4850932db2 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-07 00:45:52 +00:00
this-Fish
eac3b770ea 釣魚JS修正魚類名稱、购买NPC商品JS調整 (#1493)
* 修正青果角鲀 名字為 真果角鲀

* 阿扎莱NPC 白天時有機會點到別的NPC
2025-08-07 08:45:35 +08:00
kaedelcb
9cc7c3ff7a 全自动枫丹地脉花 v.3.4版本:20250807 (#1491)
* Delete repo/js/AutoFontaineLeyLine directory

* 全自动枫丹地脉花  v.3.4 版本:20250807

### v.3.4版本:20250807

- **新功能**:

- **优化**:
1. 优化打开冒险之证的时序,减少冒险之证打开失败的几率。
2. 切换队伍失败后添加返回函数,防止卡在切换界面。
3. 领奖时切换队伍失败或找不到时,通过地图追踪重新寻找一次。
4. 优化JS设置的默认显示和顺序。
5. 优化第六线路第二朵花战斗地点,避免游泳。
2025-08-07 08:45:14 +08:00
zaodonganqi
57104f4c87 update repo.json 2025-08-07 00:44:48 +00:00
kaedelcb
64e50be6e4 自动幽境危战 v.1.7版本:20250807 (#1492)
### v.1.7版本:20250807

- **新功能**:

- **优化**:
1. 进入选择页面时,判断是否在爆发期。
2. 更改进入秘境的判断,避免因为聊天按键被改导致判断错误。
2025-08-07 08:44:31 +08:00
Jamis
42520b3146 修复螃蟹路线中概率性摔死的问题 (#1490)
* 修复概率性摔死的问题

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-06 16:47:26 +08:00
MisakaAldrich
4a9987e6c0 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 17:00:23 +00:00
a3750759ad 狗粮pro 8.5 (#1489)
1.优化些许点位
2025-08-06 01:00:08 +08:00
提瓦特钓鱼玳师
da9e685986 JS脚本:一只爱可菲(厨娘版)适应性更新+修复BUG (#1488) 2025-08-06 00:59:55 +08:00
MisakaAldrich
647949ceb6 update repo.json 2025-08-05 15:10:14 +00:00
Tool_tingsu
cdb67ee605 地图追踪 苍晶螺 13 路线修复 (#1487) 2025-08-05 23:09:34 +08:00
zaodonganqi
88006f3e9a update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 09:26:58 +00:00
mno
0fdf96e6a1 js:锄地一条龙1.3.3 (#1486)
### 更新日志
### 1.3.3(2025.08.05)
1.修复拾取失效
2025-08-05 17:26:36 +08:00
this-Fish
e9d9cf63fc 地图追踪: 胡萝卜 update (#1485)
* 地图追踪: 胡萝卜 update

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-05 16:18:57 +08:00
zaodonganqi
d1ab0ef1be update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 05:46:08 +00:00
mno
14c1240b84 js:锄地一条龙1.3.2 (#1484)
### 1.3.2(2025.08.05)
1.修复拾取失效
2025-08-05 13:45:51 +08:00
MisakaAldrich
65fcc41e5b update repo.json 2025-08-05 04:09:13 +00:00
起个名字好难的喵
6261fd4401 地图追踪: 蘑菇@白白喵 (#1483) 2025-08-05 12:08:32 +08:00
MisakaAldrich
66b1828ce2 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 03:47:33 +00:00
起个名字好难的喵
ef496734ba 地图追踪: 金鱼草@白白喵 (#1482) 2025-08-05 11:46:49 +08:00
MisakaAldrich
35b89ef969 update repo.json 2025-08-05 03:40:46 +00:00
起个名字好难的喵
1079c19a4d 地图追踪: move 金鱼草@曦 2025-08-05 11:39:55 +08:00
MisakaAldrich
e32db94f48 update repo.json 2025-08-05 03:38:35 +00:00
起个名字好难的喵
78c106c824 地图追踪: 甜甜花@白白喵
文件夹打错字了
2025-08-05 11:37:52 +08:00
MisakaAldrich
c458a2e5c8 update repo.json 2025-08-05 03:35:14 +00:00
起个名字好难的喵
4c1e73d07c 地图追踪: 甜甜花@白白喵 2025-08-05 11:34:33 +08:00
MisakaAldrich
4633130db1 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 03:22:36 +00:00
起个名字好难的喵
e940b3c4cb 地图追踪: 日落果万叶版@白白喵 (#1481) 2025-08-05 11:21:57 +08:00
MisakaAldrich
c44cccff4b update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 02:59:24 +00:00
起个名字好难的喵
467df2c001 地图追踪: 海草@白白喵 (#1480) 2025-08-05 10:58:47 +08:00
MisakaAldrich
7e29302faf update repo.json 2025-08-05 02:53:38 +00:00
起个名字好难的喵
5136b3e017 地图追踪: move 海草@不瘦五十斤不改名 2025-08-05 10:52:55 +08:00
MisakaAldrich
001a2f4b59 update repo.json 2025-08-05 02:48:46 +00:00
起个名字好难的喵
925f354bcd 地图追踪: 树王圣体菇@白白喵 (#1479) 2025-08-05 10:48:10 +08:00
physligl
84c066b273 update repo.json 2025-08-05 02:04:02 +00:00
mno
a462d23010 js:锄地一条龙1.3.1 (#1478)
### 1.3.1(2025.08.05)
1.修复异步使用滚动造成的拾取失效
2025-08-05 10:03:43 +08:00
zaodonganqi
ee6090ac12 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-05 00:47:32 +00:00
794dfd4482 狗粮pro 8.4 (#1477)
* 狗粮pro 8.4

1.优化些许点位
2025-08-05 08:47:13 +08:00
MisakaAldrich
c483c09030 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-04 12:52:21 +00:00
Jamis
ee3db27d52 修正js脚本海祈岛良心商人进货中NPC的精度 (#1470) 2025-08-04 20:51:45 +08:00
zaodonganqi
0c7ee70550 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-04 04:51:25 +00:00
mno
5913ed7a87 js:锄地一条龙1.3.0 (#1467)
* js:锄地一条龙1.3.0

### 1.3.0(2025.08.04)
1.增加了识图频率限制,可以通过自定义配置中触发器间隔调节
1.优化了拾取时的滚动效果

* 保留records文件夹

---------

Co-authored-by: 躁动的氨气 <131591012+zaodonganqi@users.noreply.github.com>
2025-08-04 12:51:06 +08:00
zaodonganqi
f3db91d934 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-04 00:59:34 +00:00
this-Fish
22f1f2d096 地图追踪 : 胡萝卜 刪去多除路徑、增加編號、補充點位 (#1466)
* Delete repo/pathing/食材与炼金/胡萝卜 directory

* 地图追踪 : 胡萝卜 刪去多除路徑、增加編號、補充點位

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-04 08:58:19 +08:00
MisakaAldrich
c68d2ef1b2 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-03 15:06:47 +00:00
起个名字好难的喵
6a194f73d1 地图追踪: 绝云椒椒@白白喵 (#1465) 2025-08-03 23:06:12 +08:00
MisakaAldrich
3cf91c1f2f update repo.json 2025-08-03 14:42:52 +00:00
起个名字好难的喵
47d5251d50 地图追踪: 螃蟹@白白喵 (#1464) 2025-08-03 22:42:14 +08:00
physligl
0af0bd6c96 update repo.json 2025-08-03 12:08:09 +00:00
this-Fish
4885f8ddf9 JS : Auto Theft NPC & 原食 : 增加 購買咖啡豆NPC (#1462)
* Update main.js

* Add files via upload
2025-08-03 20:07:32 +08:00
Jamis
75ed4e4073 lower required version to be compatibile with latest alpha releases (#1463) 2025-08-03 20:07:12 +08:00
zaodonganqi
2376205c05 update repo.json 2025-08-03 10:42:57 +00:00
Jamis
80244988a9 增加提提岛螃蟹路线,补充悠悠度假村螃蟹路线 (#1461)
* 增加提提岛螃蟹路线,补充悠悠度假村螃蟹路线

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-03 10:11:49 +00:00
MisakaAldrich
d4c169aa1e update repo.json 2025-08-03 06:49:05 +00:00
Jamis
b7b5bff5de 重命名纳塔螃蟹 (#1460) 2025-08-03 14:48:30 +08:00
MisakaAldrich
2dad50eae1 update repo.json 2025-08-03 06:47:59 +00:00
Tool_tingsu
f3d2358282 地图追踪/js 薄荷更新 5.8新地图及地下地图 (#1459) 2025-08-03 14:47:41 +08:00
zaodonganqi
95b4f78699 update repo.json 2025-08-03 04:54:58 +00:00
Tool_tingsu
5ec6ec019d js 配对界面切换角色 更新5.8角色 (#1457)
* Delete repo/js/AutoSwitchRoles/combat_avatar.json

* Add files via upload

* Add files via upload

* Update manifest.json

* Update manifest.json
2025-08-03 12:54:41 +08:00
zaodonganqi
5288b82eab update repo.json 2025-08-03 04:49:01 +00:00
躁动的氨气
4097308b1f 增加悠悠度假村螃蟹路线 2025-08-03 12:48:26 +08:00
Jamis
0034c2d2a4 update 2025-08-03 12:02:29 +08:00
GitHub Actions Bot
86ebf44c08 自动修复 JSON 格式和版本号 [ci skip] 2025-08-03 04:01:34 +00:00
Jamis
9c1807cf13 add pathing for crabs 2025-08-03 11:59:53 +08:00
MisakaAldrich
d7e1c1bb48 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-03 01:26:11 +00:00
bfaf0ef86b 狗粮 pro 8.2 (#1456)
* Update 204璃月-天遒谷3.json

* Add files via upload
2025-08-03 09:25:36 +08:00
physligl
2bb51c8b19 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-02 18:47:13 +00:00
呱呱z
37a6de176e 铁匠铺js——2.2.1优化 (#1454)
* 2.2.1更新


### 2.2.1(2025.08.03)

-   加快锻造速度
-   优化通知逻辑,减少通知被吞概率

* Update main.js
2025-08-03 02:46:36 +08:00
physligl
6904fa2098 update repo.json 2025-08-02 18:45:40 +00:00
70278f38ee 狗粮pro 8.2 (#1455)
1.优化些许点位
2025-08-03 02:45:21 +08:00
MisakaAldrich
5ebc1bc448 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-02 15:32:32 +00:00
Tool_tingsu
4ea13a8677 js 提瓦特扫描仪 璃月路线 91-113 完结 (#1453) 2025-08-02 23:31:58 +08:00
huiyadanli
1aa42a7bce update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-08-02 06:37:01 +00:00
ddaodan
526b39cb0d js: Language (#1452) 2025-08-02 14:36:43 +08:00
MisakaAldrich
681e00e130 update repo.json 2025-08-01 18:16:30 +00:00
5117600049
45c99a29ef JS脚本:角色养成一条龙添加遗漏的素材图片 (#1451) 2025-08-02 02:15:55 +08:00
zaodonganqi
f2bbc3d084 update repo.json 2025-08-01 14:08:32 +00:00
躁动的氨气
19c1732058 修改作者名 2025-08-01 22:07:51 +08:00
MisakaAldrich
ac0edb84e9 update repo.json 2025-08-01 13:41:01 +00:00
起个名字好难的喵
49ab7e9734 removed author 2025-08-01 21:39:11 +08:00
起个名字好难的喵
6dbcb5e3ce 提交规范添加示例 2025-08-01 21:18:58 +08:00
MisakaAldrich
03cdf124ac update repo.json 2025-08-01 10:25:25 +00:00
Jamis
31a09e87ab 增加JS脚本:幻想真境剧诗定时抢好友列表里大佬的满命角色 (#1446) 2025-08-01 18:24:33 +08:00
zaodonganqi
3a1643607c update repo.json 2025-08-01 07:44:05 +00:00
躁动的氨气
40f0ad5cdb 添加部分作者链接 (#1450)
* 添加部分作者链接

* Update 02-魔像禁卫-佩特莉可镇02-1个.json

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-01 14:09:13 +08:00
zaodonganqi
ed0ecc630f update repo.json 2025-08-01 06:07:04 +00:00
躁动的氨气
d25caaf0cb js:锄地一条龙1.2.5 2025-08-01 14:06:45 +08:00
zaodonganqi
313db90980 update repo.json 2025-08-01 02:40:38 +00:00
躁动的氨气
6f4b3f7c3f 修改水晶块与蕈兽部分目录结构
修改水晶块与蕈兽部分目录结构
2025-08-01 10:39:49 +08:00
MisakaAldrich
6cf7a5cd80 update repo.json 2025-07-31 23:42:20 +00:00
禹仔二号
c753afa95d 活动 (#1447)
* feat(archive): 添加海岛活动-遥遥同旅-第一关脚本

- 新增自动按键操作脚本,实现一系列预设的按键组合操作
- 主要涉及的键位有:VK_D、VK_A、VK_SPACE、VK_Q
- 添加 manifest.json 文件,包含脚本的基本信息和配置

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-08-01 07:41:28 +08:00
起个名字好难的喵
38c4752764 Revert "战斗脚本:钟火芙万(不免疫锄大地) (#1443)" (#1448)
This reverts commit c1c7dd164e.
2025-08-01 07:40:35 +08:00
huiyadanli
0a074a7bcc update repo.json 2025-07-31 13:36:52 +00:00
辉鸭蛋
5b631cb332 Update README.md 2025-07-31 21:36:33 +08:00
zaodonganqi
cbc4e149e6 修复目录结构 2025-07-31 21:06:32 +08:00
zaodonganqi
a39c66caa2 拷打秋云链接写错 2025-07-31 21:06:14 +08:00
11
c1c7dd164e 战斗脚本:钟火芙万(不免疫锄大地) (#1443) 2025-07-31 20:54:23 +08:00
MisakaAldrich
657684e8ba update repo.json 2025-07-31 12:43:31 +00:00
Tool_tingsu
1dda088628 js 提瓦特扫描仪 璃月路线 82-90 (#1444) 2025-07-31 20:42:40 +08:00
禹仔二号
3e03806036 feat(repo): 添加枫丹-锚点-苍晶区-地面路径 (#1442)
* feat(repo): 添加枫丹-锚点-苍晶区-地面路径

- 新增枫丹-锚点-苍晶区-地面路径文件
- 路径覆盖苍晶区地面区域,包括多个拾取点和行走路径
- 文件格式为JSON,包含路径点的坐标和动作参数

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-07-31 18:37:19 +08:00
mno
feaee63012 js:锄地一条龙1.2.5
### 1.2.5(2025.07.31)
1.运行线路前删除部分中间信息,略微减少内存占用
2.当权重(涉及指数运算)过大时,修正到五,过小时修正到0
3.修复了按效率降序排序与优先关键词的冲突,现在含优先关键词的路线也会按照各自的效率排序了
2025-07-31 11:50:59 +08:00
MisakaAldrich
763c18233b update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-30 14:23:07 +00:00
Tool_tingsu
aca3ded5ec js:提瓦特扫描仪 璃月路线 66-81 (#1440) 2025-07-30 22:22:16 +08:00
MisakaAldrich
b400ab44f6 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-29 22:43:21 +00:00
bf711de78f 狗粮pro 7.29 (#1439) 2025-07-30 06:43:05 +08:00
MisakaAldrich
bd001fde7f update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-29 14:14:01 +00:00
起个名字好难的喵
a0bfe339ea JS脚本: 自动伐木路径追踪版新增伪造日志,预计用时 (#1438) 2025-07-29 22:13:42 +08:00
MisakaAldrich
2c65bf97de update repo.json 2025-07-29 04:12:51 +00:00
Jamis
91b1202abd 螃蟹 04-纳塔-安绕之野-2只.json (#1437) 2025-07-29 12:12:00 +08:00
MisakaAldrich
301f490a36 update repo.json 2025-07-29 04:11:23 +00:00
mno
39baae8149 js:锄地一条龙和自动狗粮 (#1436)
### 1.7.1(2025.07.29)
1.修复了不卡时间,并尽可能跑A模式不可用的问题
### 1.2.4(2025.07.29)
1.修复了关键词无法对怪物名称生效的问题
2025-07-29 12:11:08 +08:00
LCMs
b504c16aa4 修复邀请函购买逻辑 (#1435) 2025-07-29 12:10:54 +08:00
MisakaAldrich
9c5f435ed5 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-28 15:59:19 +00:00
起个名字好难的喵
95ce32c850 JS脚本: 自动伐木-地图追踪版 (#1434)
支持分层木材:桃椰子木、炬木

新增王树瑞佑检查
2025-07-28 23:58:59 +08:00
MisakaAldrich
82535c0e1f update repo.json 2025-07-28 15:52:20 +00:00
5117600049
8a96fe6dff JS角色养成一条龙,修改了少量的文本描述,添加了遗漏的return避免死循环,订阅了的赶紧换 (#1433) 2025-07-28 23:51:35 +08:00
Jamis
c0019cffa7 食品加工脚本:图像识别失败时fallback到OCR识别,以支持追加正在被加工的食材 (#1432) 2025-07-28 23:51:16 +08:00
physligl
f9f94a938c update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-28 09:30:03 +00:00
mno
41054f2be7 js:锄地一条龙1.2.3 (#1430)
* js:锄地一条龙

### 1.2.3(2025.07.28)
1.优化了定时终止的逻辑,会按下一条路线的预计时间来计算,避免某条线路过长
2.添加了按效率降序运行的选项,用于在时间有限且不确定时优先运行效率较高的路线
3.修正了部分路线无法识别的问题

* js:自动狗粮1.7.0

### 1.7.0(2025.07.28)
1.增加模式,不卡时间,并尽可能跑A(比前一天晚间隔时间以上就跑A),并设为默认选项
2.增加通知收益的选项
3.将记录的数量上调至至多14条

* 移除js路径摩拉记录

功能已被锄地路线标记的js完全覆盖
2025-07-28 17:29:42 +08:00
Jamis
d12e581099 改进纳塔螃蟹路线,安绕之野脚本 (#1431)
* improve

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-07-28 17:29:23 +08:00
MisakaAldrich
f7db4635d7 update repo.json 2025-07-28 04:15:41 +00:00
起个名字好难的喵
ce4dc2835b add tags 2025-07-28 12:15:15 +08:00
起个名字好难的喵
e769482a79 archive js 2025-07-28 12:14:10 +08:00
MisakaAldrich
72086ca2cd update repo.json 2025-07-28 03:30:57 +00:00
起个名字好难的喵
0f3da7a6d0 archive js 2025-07-28 11:30:03 +08:00
MisakaAldrich
6002f6b54c update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-28 03:17:13 +00:00
5117600049
3043bac043 JS脚本:角色养成一条龙 (#1428) 2025-07-28 11:16:24 +08:00
physligl
a0a89f276e update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-28 01:28:14 +00:00
69a025f73b 狗粮pro 7.27 (#1429)
1.优化一些点位卡屋檐
2025-07-28 09:27:58 +08:00
MisakaAldrich
70d9de119a update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-27 14:13:31 +00:00
Tool_tingsu
e391e8deaa js 提瓦特扫描仪 璃月路线更新 51-65 (#1427) 2025-07-27 22:12:44 +08:00
MisakaAldrich
448150efa5 update repo.json 2025-07-27 14:05:22 +00:00
Tool_tingsu
c36c5e71bb 地图追踪 分层地图脚本修改bgi版本号 (#1426) 2025-07-27 22:04:34 +08:00
MisakaAldrich
4bbe29efa6 update repo.json 2025-07-27 13:44:00 +00:00
Jamis
7f00c7329b 修复阿扎莱不能进入购买页面,增加支持须弥杂货铺哈马维 (#1425) 2025-07-27 21:43:12 +08:00
MisakaAldrich
22e1a760a6 update repo.json 2025-07-27 10:22:17 +00:00
Jamis
516cbe95e2 修复OCR购买食材脚本中,寻找NPC重试不能成功的问题 (#1424) 2025-07-27 18:21:30 +08:00
MisakaAldrich
e5b1016d97 update repo.json 2025-07-27 09:41:35 +00:00
Tool_tingsu
5a1912c639 地图追踪 苍晶螺 补全 (#1423) 2025-07-27 17:40:48 +08:00
MisakaAldrich
b6f91008be update repo.json 2025-07-27 08:39:41 +00:00
JJMdzh
9323fda85b JS,新增仅背包统计选项 (#1420)
* JS,新增仅背包统计选项

+ v2.41 修复勾选分类的本地记录bug,新增仅背包统计选项;

* JS,新增仅背包统计选项;修复bug

+ v2.41 修复勾选分类的本地记录bug,新增仅背包统计选项;如果本地记录已经遭到破坏。比如每条路径都产生大量材料名-0.txt,就只能手动清理或者删除本地记录pathing_record,重新跑。个人推荐需要路径功能的选择仅路径。

* Update settings.json

---------

Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com>
2025-07-27 16:38:53 +08:00
Jamis
7a219dffa9 修正纳塔螃蟹路线拾取物数量 (#1419)
* update

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-07-27 14:18:09 +08:00
MisakaAldrich
0bb37a28de update repo.json 2025-07-27 03:42:33 +00:00
起个名字好难的喵
db09b8eafd Update and rename READEME.md to README.md 2025-07-27 11:42:15 +08:00
MisakaAldrich
93e24606d8 update repo.json 2025-07-27 03:41:57 +00:00
5117600049
48d3794483 js脚本周本一条龙,说明文件补充 (#1418) 2025-07-27 11:41:39 +08:00
MisakaAldrich
92875ef901 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-27 01:23:31 +00:00
kaedelcb
3463f42ea1 v.1.4 参量质变仪 20250727 (#1417)
### v.1.4 20250727

- 优化当输入队伍名为空时的错误处理(设置过一次队伍再删除会判断为空而非未定义,之前没有触发错误提示)。
- 当质变仪在已经放入材料后,重新运行仍然尝试进行芭芭拉攻击流程。
2025-07-27 09:23:16 +08:00
this-Fish
8542f737ff JS : 使用历练点完成每日委托 (#1416) 2025-07-27 09:22:42 +08:00
MisakaAldrich
d3f26de319 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-26 15:04:31 +00:00
Jamis
5f0ec3ad8d Add js script to bulk buy from Kiyoko in Bourou Village, Inazuma (#1413) 2025-07-26 23:03:48 +08:00
MisakaAldrich
83700ee65d update repo.json 2025-07-26 15:02:48 +00:00
Tool_tingsu
1b8eba7ed0 地图追踪 苍晶螺(部分) (#1414) 2025-07-26 23:02:01 +08:00
起个名字好难的喵
c3117c9e36 fix validate 2025-07-26 22:47:32 +08:00
MisakaAldrich
da936c762a update repo.json 2025-07-26 11:45:34 +00:00
Jamis
cd51e99ad2 新增纳塔地区螃蟹路线 (#1412) 2025-07-26 19:44:47 +08:00
MisakaAldrich
7bb23ac1ed update repo.json 2025-07-26 11:42:09 +00:00
起个名字好难的喵
f0201f39e5 feat: 校验根据映射表添加作者链接 2025-07-26 19:41:11 +08:00
MisakaAldrich
1351e9dc09 update repo.json 2025-07-26 09:35:32 +00:00
起个名字好难的喵
40c0fb33fb fix: 保留的坐标精度 2025-07-26 17:34:38 +08:00
起个名字好难的喵
e63f593b94 地图追踪: 清心@白白喵 2025-07-26 17:32:53 +08:00
MisakaAldrich
bb30d03d75 update repo.json 2025-07-26 09:16:08 +00:00
起个名字好难的喵
0686498c66 地图追踪: 枣椰@白白喵 (#1411) 2025-07-26 17:15:24 +08:00
起个名字好难的喵
14a07ca525 Update jsonDataValidation.yml 2025-07-26 17:10:54 +08:00
MisakaAldrich
a2470410d1 update repo.json 2025-07-26 08:40:24 +00:00
起个名字好难的喵
70a56e5eea 规范命名: 劫波莲补充数量 2025-07-26 16:39:30 +08:00
MisakaAldrich
d8234a0292 update repo.json 2025-07-26 07:52:39 +00:00
起个名字好难的喵
ae383818c8 规范命名: 绝云椒椒补充数量 2025-07-26 15:51:37 +08:00
MisakaAldrich
4c8f275941 update repo.json 2025-07-26 07:20:23 +00:00
起个名字好难的喵
183a81e77a 规范命名: 风车菊补充数量 2025-07-26 15:19:14 +08:00
起个名字好难的喵
afb3a1dc10 规范命名: 落落莓补充数量 2025-07-26 15:18:59 +08:00
MisakaAldrich
5e176b3a2b update repo.json 2025-07-26 06:50:08 +00:00
起个名字好难的喵
526f74a3a2 规范命名: 树莓 2025-07-26 14:47:47 +08:00
MisakaAldrich
e7a818654b update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-26 02:31:41 +00:00
起个名字好难的喵
a24eb4d2ee feat: 校验编码 2025-07-26 10:30:48 +08:00
MisakaAldrich
37b859e26a update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-26 01:12:36 +00:00
4b14d2a7dd 狗粮pro 7.25 (#1409)
1.优化B路线些许小bug
2025-07-26 09:12:18 +08:00
Tool_tingsu
8dfae64252 地图追踪: 树王圣体菇 (#1408) 2025-07-26 09:11:46 +08:00
起个名字好难的喵
0b0a12d45d PR校验适配新版authors对象
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-25 21:17:52 +08:00
MisakaAldrich
846f609bb4 update repo.json 2025-07-25 12:03:43 +00:00
mno
7facb28fee js:锄地一条龙 (#1405)
### 1.2.2(2025.07.25)
1.调整部分小怪路线的战斗点位
### 1.2.1(2025.07.24)
1. 调整了路线筛选的逻辑
2025-07-25 20:03:27 +08:00
MisakaAldrich
d9b92d1f0d update repo.json 2025-07-25 12:03:18 +00:00
Iluvenis
fe2e37c9e4 JS脚本: 鸡腿好感添加Ocr功能,提高成功率 (#1406) 2025-07-25 20:02:26 +08:00
this-Fish
5f38a7b81e 地圖追蹤 : 海露花 代傳 (#1407) 2025-07-25 20:01:58 +08:00
MisakaAldrich
c072a898ae update repo.json 2025-07-25 11:46:46 +00:00
起个名字好难的喵
523fb15b52 fix validate 2025-07-25 19:45:45 +08:00
MisakaAldrich
9d35cebad5 update repo.json 2025-07-25 11:33:17 +00:00
起个名字好难的喵
8107688714 规范命名: 松果 2025-07-25 19:31:24 +08:00
physligl
4866d9f2d5 update repo.json 2025-07-25 06:11:25 +00:00
this-Fish
6f562a0179 Update 04-冷鲜肉 (#1402) 2025-07-25 14:10:38 +08:00
44002ebaa9 狗粮pro 7.24 (#1404)
1.优化些许点位角度
2.新增日志提醒狗粮路径耗时/经验
2025-07-25 14:10:22 +08:00
physligl
0c5c58b6ae update repo.json 2025-07-25 06:08:45 +00:00
Tool_tingsu
25027af868 地图追踪 苍晶螺(部分) (#1403)
* Delete repo/pathing/地方特产/枫丹/苍晶螺/README.md

* Delete repo/pathing/地方特产/枫丹/苍晶螺/详见-JS脚本-苍晶螺采集水下(77个).json

* Add files via upload
2025-07-25 14:07:55 +08:00
MisakaAldrich
77c23c1caa update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-24 13:20:55 +00:00
起个名字好难的喵
2ad4565d23 fix: info authors 2025-07-24 21:19:50 +08:00
起个名字好难的喵
ed5b616f58 fix: 转码为UTF-8 2025-07-24 20:40:04 +08:00
MisakaAldrich
f691e7f815 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-24 08:59:05 +00:00
起个名字好难的喵
b40f415ecb fix: 03-小灯草 2025-07-24 16:57:56 +08:00
physligl
41a31ad37e update repo.json 2025-07-24 08:39:33 +00:00
5117600049
26b6885879 JS脚本更新:彻底优化了全队大招回能,周本一条龙精简了代码,从9600行到1400行 (#1401)
* Update manifest.json

* Update utils.js

* Update manifest.json

* Update main.js
2025-07-24 16:39:15 +08:00
MisakaAldrich
9855c73793 update repo.json 2025-07-24 06:32:19 +00:00
zdAnQi
7fdb01ef2c 修复了所有README文件的错误命名 (#1399) 2025-07-24 14:31:58 +08:00
MisakaAldrich
1b064ae1db update repo.json 2025-07-24 03:55:26 +00:00
this-Fish
b6823e0062 JS : 自动合成浓缩树脂 (#1395) 2025-07-24 11:55:05 +08:00
MisakaAldrich
dbce1989bc update repo.json 2025-07-24 03:54:26 +00:00
ddaodan
c4d2858ad2 悼灵花补充 01-05 (#1394) 2025-07-24 11:53:43 +08:00
MisakaAldrich
2330b276c7 update repo.json 2025-07-24 03:51:58 +00:00
ddaodan
9286016b37 甜甜花全收集:B03-B05 (#1393) 2025-07-24 11:51:12 +08:00
this-Fish
7e4c0a1569 地圖追蹤 : 冷鲜肉 改二级子目录 & 路徑優化 (#1392)
* Delete repo/pathing/食材与炼金/冷鲜肉[迪希雅]@密柑魚 directory

* 地圖追蹤 : 冷鲜肉 改二级子目录 & 路徑優化

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-07-24 11:50:46 +08:00
MisakaAldrich
f26d7f1526 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-23 15:45:20 +00:00
b118297cde 狗粮pro 7.23 (#1391)
1.炮台偶尔出现"当前状态无法使用",多按一次"F"尝试优化
2.428花海偶尔被木箱卡死,改变角度
2025-07-23 23:44:55 +08:00
huiyadanli
e9db2bae73 update repo.json 2025-07-23 13:49:00 +00:00
Because
2293b5ab56 提交对5.7活动的自动化脚本。 (#1390)
Co-authored-by: 辉鸭蛋 <huiyadanli@gmail.com>
2025-07-23 21:48:31 +08:00
MisakaAldrich
ce220c5d83 update repo.json 2025-07-23 09:07:34 +00:00
起个名字好难的喵
c959f34248 JS: 双倍好感部分log藏入debug 2025-07-23 17:07:09 +08:00
MisakaAldrich
409083bf74 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-23 03:13:06 +00:00
this-Fish
77d3bfdc16 JS : 历练点双倍好感 新增功能 (#1387)
* JS : 历练点双倍好感 新增功能

支持进入好友尘歌壶后,让指定位置角色离队

* format

---------

Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com>
2025-07-23 11:12:46 +08:00
this-Fish
d8ee8ba9c4 地圖追蹤 : 冷鲜肉[迪希雅] (#1389)
* 地圖追蹤 : 冷鲜肉[迪希雅]

* 自动修复 JSON 格式和版本号 [ci skip]

---------

Co-authored-by: GitHub Actions Bot <actions@github.com>
2025-07-23 11:02:08 +08:00
huiyadanli
a4268cd9c6 update repo.json
Some checks failed
Build repo.json / build (18.x) (push) Has been cancelled
Build repo.json / upload (push) Has been cancelled
2025-07-22 18:45:12 +00:00
ddaodan
c576875657 甜甜花全收集:B01-B02 (#1388) 2025-07-23 02:44:30 +08:00
4834 changed files with 144514 additions and 62438 deletions

View File

@@ -74,6 +74,7 @@ jobs:
- name: Install dependencies
run: |
pip install packaging semver
pip install chardet
- name: Debug file structure
run: |
@@ -466,4 +467,4 @@ jobs:
repo: context.repo.repo,
body: commitMessage
});
}
}

173
README.md
View File

@@ -6,7 +6,7 @@
作者Q群764972801 (非作者请勿加入)
[如何提交到本仓库?(谁都能看懂的 GitHub Pull Request 使用指南)](https://bgi.huiyadan.com/dev/pr.html)
[如何提交到本仓库?(谁都能看懂的 GitHub Pull Request 使用指南)](https://bettergi.com/dev/pr.html)
## 脚本提交说明
@@ -15,87 +15,186 @@
- 地图追踪脚本提交到 [repo/pathing](https://github.com/babalae/bettergi-scripts-list/tree/main/repo/pathing) 目录;
- 七圣召唤脚本提交到 [repo/tcg](https://github.com/babalae/bettergi-scripts-list/tree/main/repo/tcg) 目录。
## 脚本提交规范
为了保证脚本的规范性和可读性,方便用户清晰了解脚本的用途,制定以下脚本命名规则和脚本文件夹命名规则。
### 地图追踪脚本
#### 文件命名规范
确保脚本文件在同一目录下按预期顺序排列,并一目了然地传达关键信息。地图追踪脚本命名需包含以下核心信息:
```
编号-材料名称-区域(跨区域材料填写)-二级区域(可选)-二级子区域-数量
```
- 编号
- 两位数,如果单个资源脚本数量超过 `100` 可以考虑使用三位数编号或者使用字母加数字编号,如 A01
- 编号的排序应遵循以下两种方式之一:
- 按传送点位顺序排序。相邻脚本之间优先保证传送的便捷性,这种编号方式考虑整体采集效率。
- 按材料获取效率排序。优先选择资源分布密集或容易采集的点,效率高的路径放在靠前编号,这种编号方式考虑编号靠前脚本的采集效率。
- 材料名称
- 采集物(使用游戏内官方名称命名,如 `慕风蘑菇``劫波莲`,不应当使用 `绫华突破材料`等不清晰的名称命名)
- 掉落物(因掉落物名称与掉落物等级有关,因此不使用掉落物本身命名,而是使用怪物名称命名)
- 区域(指 `蒙德` `璃月` `稻妻` `须弥` `枫丹` `纳塔` `至冬`,仅当材料跨区域需标注)
- 区域(指 `蒙德` `璃月` `稻妻` `须弥` `枫丹` `纳塔` `至冬`**仅当材料跨区域需标注**
- 二级区域(如 `珉林`,根据实际需求标注)
- 二级子区域(细分地点,如 `绝云间`
- 预期采集的数量
示例:
脚本名称**仅限上述**规定的编号、材料名称、区域、二级子区域,原则上不应包含额外的描述或标点符号。
```
✔ 参考示范:
01-水晶块-璃月-绝云间-6个
02-水晶块-璃月-荻花洲-8个
❌ 错误示范:
01-水晶块-璃月-快速路径-绝云间-6个
```
脚本名称仅限上述规定的编号、材料名称、区域、二级子区域,不应包含额外的描述或标点符号。如:
```
❌01-水晶块-璃月-快速路径-绝云间-6个
```
其他注意事项
**其他注意事项**
- 部分采集物没有对应的二级子区域,允许名称的区域部分使用**起始传送锚点**右侧展示的二级区域,或**这条路径的大部分采集物点位**所位于的二级区域
- 相同**二级子区域**有多条路径时,推荐采用 `编号-材料名称-二级区域-二级子区域及方位-数量` 进行命名。
- 脚本文件名应当和 `json` 文件中的 `name` 字段相同。
- 说明文件应当命名为README.md以保证仓库能够正确读取。
#### 文件夹命名规范
目的:对脚本按材料分类管理,便于版本控制与团队协作。目录结构应当遵循以下原则:
- 根据脚本种类选择恰当的一级分类,目前共有六个分类 `锄地专区``地方特产``敌人与魔物``矿物``其他`
- 一级目录:以材料名称命名,须与文件命名中的材料名称一致。
- 二级子目录(可选):可根据项目或作者划分,如有必要。
示例目录结构如下:
```
repo/pathing/矿物
├─ 水晶块/
│ ├─ 01-水晶块-璃月-绝云间-6个
│ └─ 02-水晶块-璃月-荻花洲-8个
└─ 星银矿石/
└─ 01-星银矿石-覆雪之路-7
```
如果脚本和原来的地图追踪脚本存在冲突 按照以下原则处理:
- 示例目录结构如下:
```
repo/pathing/矿物
├─ 水晶块
│ ├─ 01-水晶块-璃月-绝云间-6个
└─ 02-水晶块-璃月-荻花洲-8
└─ 星银矿石
└─ 01-星银矿石-覆雪之路-7个
```
如果脚本和原来的地图追踪脚本存在冲突 按照以下原则处理:
- 修复或补充:直接提交到原材料目录。
- 路线冲突:新建同名目录并添加作者标识:
1. 将旧脚本目录重命名为 `AA@旧作者名`
2. 新脚本放入 `AA@你的名字`
3. 例:原 `repo/pathing/AA` 重命名为 `AA@oldauthor` 新目录 `AA@yourname`
4. 示例目录结构如下:
```
repo/pathing/.../
└── AA/
── AA@旧作者名
── AA@你的名字
```
- 示例目录结构如下:
```
repo/pathing/.../
── AA
── AA@旧作者名
└── AA@你的名字
```
- 不同采集方式|效率:新建目录添加标识及作者标识:
- 不同采集方式|角色|效率:新建目录添加标识及作者标识:
1. 判断旧脚本目录的采集方式,将旧脚本目录重命名为 `采集方式@旧作者名`
2. 新脚本放入 `采集方式@你的名字`
3. 示例目录结构如下:
```
repo/pathing/.../
└── AA/
├── 无草神@广告位招租
├── 有草神@广告位招租
└── 效率路线@广告位招租
```
其他注意事项
- 示例目录结构如下:
```
repo/pathing
├── 地方特产/区域
│ ├── A材料
│ │ ├── 无草神@作者广告位招租
│ │ ├── 有草神效率路线@作者广告位招租
│ │ ├── 有草神全收集@作者广告位招租
│ │ └── ...
│ └── B材料
│ ├── 效率路线@作者广告位招租
│ ├── 全收集@作者广告位招租
│ └── ...
├── 矿物
│ ├── 水晶矿
│ │ ├── 大剑@作者广告位招租
│ │ ├── 钟离@作者广告位招租
│ │ ├── 诺艾尔@作者广告位招租
│ │ └── ...
│ └── 萃凝晶
│ ├── 大剑效率路线@作者广告位招租
│ ├── 大剑无战斗@作者广告位招租
│ └── ...
└── ...
```
**其他注意事项**
- 目录名仅限材料官方名称,不添加版本号或其他标识。
- 作者标识仅在冲突时追加,格式为“@作者名”,紧随原目录名。
- 相同二级子区域有多条路径时,推荐采用 `编号-材料名称-二级区域-二级子区域及方位-数量` 进行命名。
### JS脚本
创建JS脚本请参考文档[创建脚本](https://bettergi.com/dev/js/create.html)
#### 文件夹命名规则
- 脚本的文件夹名称**应体现脚本的用途**,简要用途可在描述文件[manifest.json](https://bettergi.com/dev/js/create.html#manifest-json)中说明,详细用途可在`README.md`中说明
- 脚本的主体文件夹名称可采用`英文`、`中文`、`英文缩写+中文`等命名方式,名称中不应包含空格,如:
```
repo/js
├── OCR购买材料
├── AutoLeyLineOutcrop
├── 使用历练点完成每日委托
└── ...
```
- 常见的脚本结构目录如下:
```
repo/js
└── 你的脚本名称
├── Assets
│ ├── Pathing
│ │ └── xxx.json
│ └── RecognitionObject
│ └── xxx.png
├── main.js
├── manifest.json
├── settings.json
└── README.md
```
- `Assets`用于存放脚本使用到的资源文件,其中
- `Pathing`用于存放[地图追踪](https://bettergi.com/feats/autos/pathing-dev.html)文件
- `RecognitionObject`用于存放[模板匹配](https://bettergi.com/dev/js/rec.html#%E6%A8%A1%E6%9D%BF%E5%8C%B9%E9%85%8D)对象
**其他注意事项**
- 脚本使用的资源文件应在`README.md`中注明实际用途
### 其他
因早期对脚本管理较为宽松,因此仓库有部分脚本并不符合命名规范,欢迎通过 PR 规范这些名称。
## Contributors
<a href="https://next.ossinsight.io/widgets/official/compose-recent-active-contributors?repo_id=866958830&limit=30" target="_blank" style="display: block" align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-recent-active-contributors/thumbnail.png?repo_id=866958830&limit=30&image_size=auto&color_scheme=dark" width="655" height="auto">

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

View File

@@ -0,0 +1,103 @@
//eval(file.readTextSync("lib.js"));
const width = genshin.width;
const height = genshin.height;
function clickf(x, y) {
click(Math.round(width * x), Math.round(height * y));
}
function movetof(x, y) {
moveMouseTo(Math.round(width * x), Math.round(height * y));
}
function get_config(name, defval) {
let t = settings[name];
return typeof (t) === 'undefined' ? defval : t;
}
function get_config_int(name, defval) {
return parseInt(get_config(name, defval), 10);
}
class OCRError extends Error {
constructor(message, options) { super(message, options); }
}
setGameMetrics(genshin.width, genshin.height, 1); // 设置游戏窗口大小和DPI
function test1() {
log.info(`窗口大小: ${genshin.width} * ${genshin.height}`);
let a = captureGameRegion();
log.info(`截图x=${a.x} y=${a.y} w=${a.width} h=${a.height} l=${a.left} t=${a.top} r=${a.right} b=${a.bottom}`);
}
const global_region = captureGameRegion();
//test1();
function template(filename, x, y, w, h, center = true) {
if (center) { x = x - w / 2; y = y - h / 2; }
return RecognitionObject.TemplateMatch(file.ReadImageMatSync(filename), 1920 * x, 1080 * y, 1920 * w, 1080 * h);
//return RecognitionObject.TemplateMatch(file.ReadImageMatSync(filename), genshin.width * x, genshin.height * y, genshin.width * w, genshin.height * h);
}
function template_ocr(x, y, w, h, center = true) {
if (center) { x = x - w / 2; y = y - h / 2; }
return RecognitionObject.Ocr(1920 * x, 1080 * y, 1920 * w, 1080 * h);
}
function draw_obj(obj, name = "test") {
const r = obj.RegionOfInterest;
let s = global_region.deriveCrop(r.x, r.y, r.width, r.height);
s.DrawSelf(name);
}
async function match_click(obj, desc, click = true, timeout = 15000) {
draw_obj(obj, "match");
await sleep(1000);
const start = Date.now();
let x = 1;
while (Date.now() - start < timeout) {
let result = captureGameRegion().Find(obj);
await sleep(800);
if (result.isExist()) {
result.drawSelf("match_found");
if (click) {
result.click();
log.info(`成功识别并点击 ${desc},耗时${Date.now() - start}ms`);
} else {
log.info(`成功识别到 ${desc},耗时${Date.now() - start}ms`);
}
return result;
}
log.info(`${x}次识别并点击 ${desc} 失败,耗时${Date.now() - start}ms`);
x++;
await sleep(1000);
}
throw new OCRError(`等待超时,未找到目标 ${desc}`);
}
async function ocr_click(obj, desc, click = true, timeout = 15000) {
draw_obj(obj, "ocr");
await sleep(1000);
const start = Date.now();
let x = 1;
while (Date.now() - start < timeout) {
let results = captureGameRegion().findMulti(obj);
if (results.Count != 1) {
log.warn(`搜索到${results.Count}个结果预期为1个`);
}
await sleep(800);
if (results.Count == 1) {
results[0].drawSelf("ocr_found");
if (click) {
results[0].click();
log.info(`成功Ocr识别并点击 ${desc} 耗时${Date.now() - start}ms`);
} else {
log.info(`成功Ocr识别到 ${desc} 耗时${Date.now() - start}ms`)
}
return results[0];
}
log.info(`${x}次Ocr识别并点击 ${desc} 失败,耗时${Date.now() - start}ms`);
x++;
await sleep(1000);
}
throw new OCRError(`等待超时未找到Ocr目标 ${desc}`);
}

View File

@@ -0,0 +1,257 @@
eval(file.readTextSync("lib.js"));
const CHAR_X = get_config_int("char_x", 0);
const CHAR_Y = get_config_int("char_y", 0);
const global_region = captureGameRegion();
const btn_details = template("assets/button1.png", 0.77, 0.75, 0.04, 0.08, true);
const btn_startmatch = template("assets/button2.png", 0.832, 0.95, 0.04, 0.08, true);
const btn_acceptmatch = template("assets/button1.png", 0.528, 0.68, 0.04, 0.08, true);
const btn_closetip = template("assets/button3.png", 0.978, 0.35, 0.043, 0.075, true);
const buff_icon = template("assets/buff.png", 0.068, 0.204, 0.03, 0.05, true);
const btn_confirm = template("assets/button1.png", 0.832, 0.95, 0.04, 0.08, true);
const goal_icon = template("assets/goal.png", 0.031, 0.3125 + 0.035 * 1, 0.012, 0.018 + 0.035 * 2);
const btn_finish1 = template("assets/finish1.png", 0.5, 0.805, 0.042, 0.026, true);
const btn_finish2 = template("assets/finish2.png", 0.5, 0.805, 0.029, 0.026, true);
const score = template_ocr(0.162, 0.415, 0.1, 0.06, false);
const matching_tip = template_ocr(0.35, 0.77, 0.12, 0.08, false);
const ACT_KEYS = ["W", "S", "A", "D"];
/// Press F5 and click on Details button
async function F5_and_click() {
await keyPress("F5");
await sleep(1000);
for (let i = 0; i < 3; i++) {
clickf(0.182, 0.255);
await sleep(500);
}
await match_click(btn_details, "活动详情按钮");
await sleep(2000);
}
async function start_minigame() {
let should_retry = false;
while (true) {
// 点击开始匹配按钮
try {
await match_click(btn_startmatch, "开始匹配", true, 10000);
await sleep(2000);
} catch (e) {
log.warn("点击匹配按钮失败,暂时跳过");
}
// 匹配中,准备点击接受按钮
should_retry = false;
while (true) {
let screen = captureGameRegion();
await sleep(800);
// 确保还在匹配状态
let tip = screen.Find(matching_tip);
if (tip.isExist() && tip.text.startsWith("匹配中")) {
} else {
log.warn("匹配状态异常,即将重试");
should_retry = true;
break;
}
let btn = screen.Find(btn_acceptmatch);
if (btn.isExist()) {
log.info("匹配成功,接受");
await sleep(500);
btn.click();
break;
}
await sleep(1000);
}
if (should_retry) {
await sleep(5000);
continue;
}
await sleep(8000);
// 可能进入战斗准备界面,或匹配失败退回
should_retry = false;
log.info("等待进入选择角色界面")
while (true) {
await sleep(1000);
let screen = captureGameRegion();
draw_obj(btn_startmatch, "start");
draw_obj(btn_closetip, "close");
await sleep(800);
if (screen.Find(btn_startmatch).isExist()) {
log.warn("匹配失败,即将重试");
await sleep(3000);
should_retry = true;
break;
}
let close = screen.Find(btn_closetip);
if (close.isExist()) {
close.drawSelf("close_found");
log.info("已经进入选择角色界面");
await sleep(500);
close.click();
return;
}
}
if (should_retry) {
await sleep(5000);
continue;
}
}
throw new Error("Unreachable");
}
function click_char(x, y) {
movetof(0.057 + x * 0.073, 0.169 + y * 0.157);
clickf(0.057 + x * 0.073, 0.169 + y * 0.157);
}
async function play(times) {
for (let ii = 0; ii < times; ii++) {
keyPress("Q");
await sleep(500);
keyPress("E");
await sleep(500);
let act = Math.floor(Math.random() * 8);
let act_key = ACT_KEYS[act % 4];
switch (act) {
case 0: case 1: case 2: case 3:
keyDown("SHIFT");
keyDown(act_key);
await sleep(1000);
keyUp(act_key);
keyUp("SHIFT");
break;
case 4:
// 空格跳跃1秒
keyDown("SPACE");
await sleep(1000);
keyUp("SPACE");
break;
case 5: case 6: case 7:
// 左键连续普攻
for (let i = 0; i < 5; i++) {
leftButtonDown();
await sleep(100);
leftButtonUp();
await sleep(100);
}
middleButtonClick();
break;
default:
break;
}
await sleep(500);
}
}
async function one_shot() {
await sleep(1000);
log.info("任务开始");
await genshin.returnMainUi();
await sleep(1000);
log.info("进入活动界面");
await F5_and_click();
log.info("读取当前分数");
let score_obj = await ocr_click(score, "活动分数", false);
let score_re = score_obj.text.match(/(\d+)\s*\/\s*(\d+)/);
let cur_score = -1, max_score = -1;
if (score_re && score_re.length >= 3) {
cur_score = Number(score_re[1]);
max_score = Number(score_re[2]);
log.info(`当前分数:${cur_score}/${max_score}`);
} else {
throw new Error(`分数解析失败:${score_obj.text}`);
}
if (cur_score >= max_score) {
log.info("活动完成");
return false;
}
log.info("尝试匹配并进入小游戏");
await start_minigame();
await sleep(3000);
log.info("选择角色");
await sleep(500);
click_char(CHAR_X, CHAR_Y);
await sleep(500);
await match_click(btn_confirm, "确认角色选择");
await sleep(500);
log.info("等待buff选择界面");
while (true) {
if (captureGameRegion().Find(buff_icon).isExist()) {
break;
}
await sleep(5000);
}
await sleep(1000);
log.info("选择buff");
clickf(0.25, 0.26);
await sleep(500);
await match_click(btn_confirm, "确认buff选择");
await sleep(500);
log.info("等待游戏开始");
await sleep(5000);
log.info("等待游戏提示出现");
while (true) {
draw_obj(goal_icon);
let result = captureGameRegion().FindMulti(goal_icon);
await sleep(500);
if (result.count != 3) { await sleep(5000); continue; }
await sleep(1000);
break;
}
log.info("随机行动");
while (true) {
await play(15);
let result = captureGameRegion().Find(btn_finish1);
if (result.isExist()) {
log.info("完成点击结算按钮1");
result.click();
break;
}
await sleep(1000);
}
await sleep(1000);
await match_click(btn_finish2, "退出活动");
await sleep(10000);
return true;
}
(async function () {
let count = 0;
while (true) {
count++;
if (!await one_shot()) break;
await genshin.returnMainUi();
await sleep(2000);
await genshin.returnMainUi();
await sleep(2000);
log.info("第${count}次游戏结束,重新开始");
}
log.info("结束运行,可能是分数已满");
return;
})();

View File

@@ -0,0 +1,14 @@
{
"manifest_version": 1,
"name": "PVP活动自动化5.7",
"version": "5.7.0",
"bgi_version": "0.45.0",
"description": "自动完成5.7版本联机PVP活动。可在脚本设置中自行选择上场角色。如果之前没有玩过这个活动第一次运行建议人工监视到进入战斗界面中间弹出的教学界面需要手动关掉否则会执行失败作者为pans82@proton.me",
"authors": [
{
"name": "pans82"
}
],
"settings_ui": "settings.json",
"main": "main.js"
}

View File

@@ -0,0 +1,12 @@
[
{
"name": "char_x",
"type": "input-text",
"label": "角色列号0~3默认0"
},
{
"name": "char_y",
"type": "input-text",
"label": "角色行号0~4默认0"
}
]

View File

@@ -1 +1 @@
{"info":{"name":"","description":"","type":""},"positions":[{"x":3563.2421875,"y":3018.57470703125,"type":"teleport","move_mode":"walk"},{"x":3583.29931640625,"y":3057.534423828125,"type":"path","move_mode":"walk"},{"x":3585.44873046875,"y":3072.050048828125,"type":"path","move_mode":"walk"},{"x":3586.3720703125,"y":3071.326904296875,"type":"path","move_mode":"walk"},{"x":3584.07958984375,"y":3071.462646484375,"type":"path","move_mode":"walk"}]}
{"info":{"name":"","description":"","type":""},"positions":[{"x":3563.2421875,"y":3018.57470703125,"type":"teleport","move_mode":"walk"},{"x":3583.29931640625,"y":3057.534423828125,"type":"path","move_mode":"walk"},{"x":3585.44873046875,"y":3072.050048828125,"type":"path","move_mode":"walk"},{"x":3586.3720703125,"y":3071.326904296875,"type":"path","move_mode":"walk"},{"x":3584.07958984375,"y":3071.462646484375,"type":"path","move_mode":"walk"}]}

View File

@@ -1,3 +1,3 @@
兑换码+截止时间存储地址codes.txt
格式 兑换码,xxxx.xx.xx xx:xx:xx
兑换码+截止时间存储地址codes.txt
格式 兑换码,xxxx.xx.xx xx:xx:xx
仅支持国服

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -1,3 +1,3 @@
KG3SZF8EZGQN,2025.7.21 12:00:00
DZ2TZX9WHXSS,2025.7.21 12:00:00
ZGKBHW9FGXSW,2025.7.21 12:00:00
KG3SZF8EZGQN,2025.7.21 12:00:00
DZ2TZX9WHXSS,2025.7.21 12:00:00
ZGKBHW9FGXSW,2025.7.21 12:00:00

View File

@@ -1,117 +1,117 @@
(async function () {
setGameMetrics(1920, 1080, 1);
// 1. 返回主界面等待1秒
await genshin.returnMainUi();
await sleep(1000);
// 2. 通过keyPress点按esc键(VK_ESCAPE)等待2秒。ocr识别设置图片并点击等待2秒。识别账户图片并点击等待0.5秒识别前往兑换图片并点击等待0.5秒
keyPress("ESCAPE");
await sleep(2000);
const settingsRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/settings.png"));
const settingsRes = captureGameRegion().find(settingsRo);
if (settingsRes.isExist()) {
settingsRes.click();
}
await sleep(2000);
const accountRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/account.png"));
const accountRes = captureGameRegion().find(accountRo);
if (accountRes.isExist()) {
accountRes.click();
}
await sleep(500);
const goToRedeemRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/go_to_redeem.png"));
const goToRedeemRes = captureGameRegion().find(goToRedeemRo);
if (goToRedeemRes.isExist()) {
goToRedeemRes.click();
}
await sleep(500);
// 3. 新建一个txt用于存储兑换码及截止时间之间换行区分格式为【兑换码截止时间】
try {
const content = file.readTextSync("codes.txt");
const codes = content.split('\n');
for (let i = 0; i < codes.length; i++) {
const codeInfo = codes[i].split(',');
const code = codeInfo[0];
const deadline = codeInfo[1];
// a. 获取当前时间【xxxx.xx.xx xx:xx:xx】(年月日时分秒),与截止时间进行对比
const now = new Date();
const currentTime = now.getFullYear() + '.' + String(now.getMonth() + 1).padStart(2, '0') + '.' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
if (currentTime > deadline) {
log.info(`兑换码【${code}】已超过截止时间,跳过`);
continue;
}
// b. 识别输入兑换码图片并点击
const inputCodeRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/input_code.png"));
const inputCodeRes = captureGameRegion().find(inputCodeRo);
if (inputCodeRes.isExist()) {
inputCodeRes.click();
}
await sleep(300);
// c. 通过虚拟键代码依次keyPress键入兑换码的每一个字符
await inputText(code);
await sleep(500);
// d. 输入完毕后识别兑换图片并点击等待1.5秒
const redeemRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/redeem.png"));
const redeemRes = captureGameRegion().find(redeemRo);
if (redeemRes.isExist()) {
redeemRes.click();
}
await sleep(1500);
// e. 识别无效图片、已使用图片、过期图片、确认图片、未开启图片
const invalidRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/invalid.png"));
const invalidRes = captureGameRegion().find(invalidRo);
if (invalidRes.isExist()) {
log.info(`兑换码【${code}】无效`);
}
const usedRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/used.png"));
const usedRes = captureGameRegion().find(usedRo);
if (usedRes.isExist()) {
log.info(`兑换码【${code}】已使用`);
}
const expiredRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/expired.png"));
const expiredRes = captureGameRegion().find(expiredRo);
if (expiredRes.isExist()) {
log.info(`兑换码【${code}】已过期`);
}
const notopenRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/not_open.png"));
const notopenRes = captureGameRegion().find(notopenRo);
if (notopenRes.isExist()) {
log.info(`兑换码【${code}】未开启`);
}
const confirmRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/confirm.png"));
const confirmRes = captureGameRegion().find(confirmRo);
if (confirmRes.isExist()) {
log.info(`兑换码【${code}】成功兑换`);
confirmRes.click();
}
// f. 识别清除图片并点击,若未识别到则不做处理
const clearRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/clear.png"));
const clearRes = captureGameRegion().find(clearRo);
if (clearRes.isExist()) {
clearRes.click();
}
await sleep(4000);
}
} catch (error) {
log.error(`读取兑换码文件失败: ${error}`);
}
// 4. 所有兑换码兑换完成后返回主界面
await genshin.returnMainUi();
(async function () {
setGameMetrics(1920, 1080, 1);
// 1. 返回主界面等待1秒
await genshin.returnMainUi();
await sleep(1000);
// 2. 通过keyPress点按esc键(VK_ESCAPE)等待2秒。ocr识别设置图片并点击等待2秒。识别账户图片并点击等待0.5秒识别前往兑换图片并点击等待0.5秒
keyPress("ESCAPE");
await sleep(2000);
const settingsRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/settings.png"));
const settingsRes = captureGameRegion().find(settingsRo);
if (settingsRes.isExist()) {
settingsRes.click();
}
await sleep(2000);
const accountRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/account.png"));
const accountRes = captureGameRegion().find(accountRo);
if (accountRes.isExist()) {
accountRes.click();
}
await sleep(500);
const goToRedeemRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/go_to_redeem.png"));
const goToRedeemRes = captureGameRegion().find(goToRedeemRo);
if (goToRedeemRes.isExist()) {
goToRedeemRes.click();
}
await sleep(500);
// 3. 新建一个txt用于存储兑换码及截止时间之间换行区分格式为【兑换码截止时间】
try {
const content = file.readTextSync("codes.txt");
const codes = content.split('\n');
for (let i = 0; i < codes.length; i++) {
const codeInfo = codes[i].split(',');
const code = codeInfo[0];
const deadline = codeInfo[1];
// a. 获取当前时间【xxxx.xx.xx xx:xx:xx】(年月日时分秒),与截止时间进行对比
const now = new Date();
const currentTime = now.getFullYear() + '.' + String(now.getMonth() + 1).padStart(2, '0') + '.' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
if (currentTime > deadline) {
log.info(`兑换码【${code}】已超过截止时间,跳过`);
continue;
}
// b. 识别输入兑换码图片并点击
const inputCodeRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/input_code.png"));
const inputCodeRes = captureGameRegion().find(inputCodeRo);
if (inputCodeRes.isExist()) {
inputCodeRes.click();
}
await sleep(300);
// c. 通过虚拟键代码依次keyPress键入兑换码的每一个字符
await inputText(code);
await sleep(500);
// d. 输入完毕后识别兑换图片并点击等待1.5秒
const redeemRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/redeem.png"));
const redeemRes = captureGameRegion().find(redeemRo);
if (redeemRes.isExist()) {
redeemRes.click();
}
await sleep(1500);
// e. 识别无效图片、已使用图片、过期图片、确认图片、未开启图片
const invalidRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/invalid.png"));
const invalidRes = captureGameRegion().find(invalidRo);
if (invalidRes.isExist()) {
log.info(`兑换码【${code}】无效`);
}
const usedRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/used.png"));
const usedRes = captureGameRegion().find(usedRo);
if (usedRes.isExist()) {
log.info(`兑换码【${code}】已使用`);
}
const expiredRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/expired.png"));
const expiredRes = captureGameRegion().find(expiredRo);
if (expiredRes.isExist()) {
log.info(`兑换码【${code}】已过期`);
}
const notopenRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/not_open.png"));
const notopenRes = captureGameRegion().find(notopenRo);
if (notopenRes.isExist()) {
log.info(`兑换码【${code}】未开启`);
}
const confirmRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/confirm.png"));
const confirmRes = captureGameRegion().find(confirmRo);
if (confirmRes.isExist()) {
log.info(`兑换码【${code}】成功兑换`);
confirmRes.click();
}
// f. 识别清除图片并点击,若未识别到则不做处理
const clearRo = RecognitionObject.TemplateMatch(file.readImageMatSync("assets/clear.png"));
const clearRes = captureGameRegion().find(clearRo);
if (clearRes.isExist()) {
clearRes.click();
}
await sleep(4000);
}
} catch (error) {
log.error(`读取兑换码文件失败: ${error}`);
}
// 4. 所有兑换码兑换完成后返回主界面
await genshin.returnMainUi();
})();

View File

@@ -9,6 +9,10 @@
"links": "https://github.com/bling-yshs"
}
],
"tags": [
"尘歌壶",
"购买物品"
],
"settings_ui": "settings.json",
"main": "main.js"
}

View File

@@ -0,0 +1,105 @@
# 自动幽境危战注意事项
## 零、前言
- 当前文档处于测试阶段,注意事项可能尚不完善,敬请谅解。
- 如发现BUG请通过QQ119996800联系我们您的反馈将非常受欢迎。
- 本脚本基于地脉花和首领一条龙脚本进行改造。
- 脚本仅供娱乐使用请在下载后24小时内删除。
## 一、省流注意事项
1. **使用前准备**
- 请在`<<幽境危战>>`中配置好战斗队伍。
2. **黑名单建议**
- 根目录下有文件内含建议加入`自动拾取黑名单`的名称,请检查并添加。
3. **战斗实力**
- 请确保队伍具备足够的战斗实力,当前版本在战斗失败或执行错误,只会重试`一次`
4. **自动拾取功能**
- 为避免不必要的干扰,建议关闭自动拾取功能。
## 二、配置简介
1. **圣遗物奖励**
- 默认设置下,脚本不会修改圣遗物奖励。
2. **Boss挑战关卡选择**
- 必填项请从上往下选择第几个Boss挑战关卡`1至3`,否则脚本将无法执行。
3. **挑战次数**
- 默认设置为`15`次,期间若树脂耗尽,脚本将自动结束。
4. **树脂顺序设定**
- 使用`/`隔开数字来设定树脂使用顺序,如`1/2`表示先使用浓缩树脂,再使用原粹树脂。
- 树脂类型对应关系:
- 1 = 浓缩树脂
- 2 = 原粹树脂
- 3 = 脆弱树脂
- 4 = 须臾树脂
- 默认设置:`1/2`,表示先使用浓缩树脂,再使用原粹树脂,不填的不使用"。
5. **最长战斗超时时间**
- 默认设置为`240`秒,一般情况下无需修改。
6. **开始战斗后的移动时间**
- 默认设置为`1`秒(注意单位为`秒`由于战斗开始位置离Boss较远请根据实际情况设定一般情况下默认设置即可。
## 三、更新说明
### v.1.0版本20250627
- **功能**:脚本发布。
### v.1.1版本
- **备注**:此版本信息被省略。
### v.1.2版本20250627
- **新增功能**
1. 添加圣遗物`奖励选择`功能。
2. 添加自动选择`难度`功能。
- **优化**
1. 优化逻辑处理。
2. 加大战斗完成识别区域。
### v.1.3版本20250628
- **新增功能**
1. 添加`自动重试`,战斗失败或执行错误会`重试一次`
- **优化**
2. 优化退出点击时序和逻辑。
3. 优化进入秘境后向前走的逻辑。
4. 优化LOG输出显示内容。
- **修复**
1. 修复默认状态下选择长夜套的BUG。
### v.1.4版本20250629
- **新增功能**
1. 添加领奖后的树脂识别,不足时退出秘境,防止多打一次。
- **优化**
1. 优化`再次挑战`挑战的点击逻辑,添加重试。
2. 优化相关自动拾取代码。
3. 优化`难度选择``圣遗物选择`的识别范围。
### v.1.5版本20250630
- **新增功能**
1. 自动战斗失败原地`重试2次`,失败后再退出秘境重试。
- **优化**
1. 优化`LOG`显示。
2. 优化`完全没有树脂`情况弹窗提示处理。
3. 优化删除拾取`黑名单`文件0.47.0后不会乱触发了)。
4. 优化各种`异常状态`的退出处理方法。
5. 优化当有须臾树脂时,脆弱树脂不显示时的处理。
### v.1.6版本20250702
- **优化**
1. 优化没找到地脉花领奖的超时退出处理。
2. 优化树脂识别OCR区域。
3. 优化LOG和代码写法和整理。

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,26 @@
{
"info": {
"name": "全自动幽境危战",
"type": "collect",
"author": "LCB-茶包",
"version": "1.0",
"description": "",
"bgi_version": "0.44.8"
},
"positions": [
{
"id": 1,
"x": -194.198,
"y": 984.095,
"move_mode": "walk",
"type": "teleport"
},
{
"id": 2,
"x": -194.25293,
"y": 980.6616,
"move_mode": "walk",
"type": "target"
}
]
}

View File

@@ -0,0 +1,815 @@
(async function () {
let challengeNum = settings.challengeNum;//挑战次数
if (challengeNum === undefined || challengeNum === ""){challengeNum = 15; }//挑战次数
let challengeName = settings.challengeName;//挑战BOSS
if (challengeName === undefined || challengeName === ""){throw new Error("挑战Boss未配置请在JS配置中选择...")}//初始化处理
let Startforward = settings.Startforward*1000 ? settings.Startforward*1000 : 1000;//开始战斗的前进时间
var Fighttimeout = settings.timeout * 1000 ? settings.timeout * 1000 : 240000;//战斗超时时间默认为240秒
const ocrRegion1 = { x: 643, y: 58, width: 800, height: 800 }; // 上方挑战成功区域
const ocrRegion2 = { x: 780, y: 406, width: 370, height: 135 }; // 中间挑战失败区域
const ocrRo1 = RecognitionObject.ocr(ocrRegion1.x, ocrRegion1.y, ocrRegion1.width, ocrRegion1.height);//上方挑战成功区域OCR对象
const ocrRo2 = RecognitionObject.ocr(ocrRegion2.x, ocrRegion2.y, ocrRegion2.width, ocrRegion2.height);//中间挑战失败区域OCR对象
var Rewardsuse = settings.Rewardsuse ? settings.Rewardsuse : "1/2";//树脂使用类型默认为1/2即浓缩树脂和原粹树脂
var resinTypes = Rewardsuse.split("/");
var rewards = [];
var onerewards, secendrewards, threendrewards, fourdrewards;
for (var i = 0; i < resinTypes.length; i++) {
var resinType = parseInt(resinTypes[i]);
if (isNaN(resinType) || resinType < 1 || resinType > 4) {
throw new Error("设定的树脂类型无效或缺失,请重新配置");
}
rewards.push(resinType);
}
const resinTypeMap = ["","使用1个浓缩树脂获取2倍产出", "使用20个原粹树脂", "使用1个脆弱树脂获取3倍产出", "使用1个须臾树脂获取3倍产出"];//识别树脂领奖文字
const golbalRewards = ["","浓缩树脂","原粹树脂","脆弱树脂","须臾树脂"]; // 对应四种树脂
// 根据 rewards 数组长度,依次赋值给对应的变量
if (rewards.length > 0) onerewards = golbalRewards[rewards[0]];
if (rewards.length > 1) secendrewards = golbalRewards[rewards[1]];
if (rewards.length > 2) threendrewards = golbalRewards[rewards[2]];
if (rewards.length > 3) fourdrewards = golbalRewards[rewards[3]];
const golbalRewardText = [onerewards, secendrewards, threendrewards, fourdrewards].filter(Boolean);//过滤树脂使用类型
var advanceNum = 0;//前进寻找地脉之花次数
var verticalNum = 0;//重试寻找地脉之花次数
var resinAgain = false;//是否重试标志
var Artifacts = settings.Artifacts ? settings.Artifacts : "保持圣遗物奖励不变";
//映射所有圣遗物对应需要识别的图片
var artifactImageMap = {
"长夜之誓 / 深廊终曲": "assets/Artifacts/artifact_1.bmp",
"黑曜秘典 / 烬城勇者绘卷": "assets/Artifacts/artifact_2.bmp",
"谐律异想断章 / 未竟的遐思": "assets/Artifacts/artifact_3.bmp",
"回声之林夜话 / 昔时之歌": "assets/Artifacts/artifact_4.bmp",
"逐影猎人 / 黄金剧团": "assets/Artifacts/artifact_5.bmp",
"水仙之梦 / 花海甘露之光": "assets/Artifacts/artifact_6.bmp",
"乐园遗落之花 / 沙上楼阁史话": "assets/Artifacts/artifact_7.bmp",
"深林的记忆 / 饰金之梦": "assets/Artifacts/artifact_8.bmp",
"来歆余响 / 辰砂往生录": "assets/Artifacts/artifact_9.bmp",
"华馆梦醒形骸记 / 海染砗磲": "assets/Artifacts/artifact_10.bmp",
"绝缘之旗印 / 追忆之注连": "assets/Artifacts/artifact_11.bmp",
"昔日宗室之仪 / 染血的骑士道": "assets/Artifacts/artifact_12.bmp",
"渡过烈火的贤人 / 炽烈的炎之魔女": "assets/Artifacts/artifact_13.bmp",
"悠古的磐岩 / 逆飞的流星": "assets/Artifacts/artifact_14.bmp",
"千岩牢固 / 苍白之火": "assets/Artifacts/artifact_15.bmp",
"冰风迷途的勇士 / 沉沦之心": "assets/Artifacts/artifact_16.bmp",
"翠绿之影 / 被怜爱的少女": "assets/Artifacts/artifact_17.bmp",
"如雷的盛怒 / 平息鸣雷的尊者": "assets/Artifacts/artifact_18.bmp"
};
//树脂识别图片
var condensedResin = "assets/condensed_resin_count.png";
var originalResin = "assets/original_resin_count.png";
var fragileResin = "assets/fragile_resin_count.png";
var momentResin = "assets/moment_resin_count.png";
var oneResin = "assets/one.png";
//文字识别封装函数
async function Textocr(wenzi="空参数",chaotime=10,clickocr=0,debugcode=0,x=0,y=0,w=1920,h=1080) {
const startTime = new Date();
for (let ii = 0; ii < 10; ii++)
{
// 获取一张截图
let captureRegion = captureGameRegion();
let res1
// 对整个区域进行 OCR
let resList = captureRegion.findMulti(RecognitionObject.ocr(x,y,w,h));
//log.info("OCR 全区域识别结果数量 {len}", resList.count);
for (let i = 0; i < resList.count; i++)
{ // 遍历的是 C# 的 List 对象,所以要用 count而不是 length
let res = resList[i];
res1=res.text
if (res.text===wenzi) {
log.info(`识别到 ·${res1}·`);
if (debugcode===1){if (x===0 & y===0){log.info("全图代码位置:({x},{y},{h},{w})", res.x-10, res.y-10, res.width+10, res.Height+10);return result = { text: res.text, x: res.x, y: res.y, found: true }}}else{if (x===0 & y===0){log.info("文本OCR完成'{text}'", res.text);}}
if (clickocr===1){await sleep(1000);await click(res.x, res.y);}else{}
if (clickocr===2){await sleep(100);await keyPress("F");}else{}
return result = { text: res.text, x: res.x, y: res.y, found: true }
}
if (debugcode===2 && !res.isEmpty()){
// log.info("({x},{y},{h},{w})", res.x-10, res.y-10, res.width+10, res.Height+10);
return result = { text: res.text, x: res.x, y: res.y, found: true }
}
}
const NowTime = new Date();
if (Math.abs(NowTime - startTime)>chaotime*1000){if (x===0 & y===0){log.info(`${chaotime}秒超时退出,"${wenzi}"未找到`);}return result = {found: false };}else{ii=8;if (x !== 861){if(debugcode!==3){await keyPress("VK_W");}};}
await sleep(100);
}
}
// 图片识别封装函数
async function imageRecognition(imagefilePath="空参数",timeout=10,afterBehavior=0,debugmodel=0,xa=0,ya=0,wa=1920,ha=1080) {
const startTime = new Date();
const Imagidentify = RecognitionObject.TemplateMatch(file.ReadImageMatSync(imagefilePath));
for (let ii = 0; ii < 10; ii++) {
captureRegion = captureGameRegion(); // 获取一张截图
res = captureRegion.DeriveCrop(xa, ya, wa, ha).Find(Imagidentify);
if (res.isEmpty()) {
if (debugmodel===1 & xa===0 & ya===0){log.info("未识别页面元素")};
} else {
if (afterBehavior===1){if (xa===0 & ya===0){log.info("点击模式:开");}await sleep(1000);click(res.x+xa, res.y+ya);}else{if (debugmodel===1 & xa===0 & ya===0){log.info("点击模式:关")}}
if (afterBehavior===2){if (xa===0 & ya===0){log.info("F模式:开");}await sleep(1000);keyPress("F");}else{if (debugmodel===1 & xa===0 & ya===0){log.info("F模式:关")}}
if (debugmodel===1 & xa===0 & ya===0){log.info("全图代码位置:({x},{y},{h},{w})", res.x+xa, res.y+ya, res.width, res.Height);}else{ log.info("识别到页面元素");}
return result = { x: res.x+xa, y: res.y+ya, w:res.width,h:res.Height,found: true }
}
const NowTime = new Date();
if ((NowTime - startTime)>timeout*1000){if (debugmodel===1 & xa===0 & ya===0){log.info(`${timeout}秒超时退出,未找到图片`);}return result = {found: false };}else{ii=8}
await sleep(200);
}
await sleep(1200);
}
//树脂数量获取函数
async function getRemainResinStatus() {
var condensedResinCount = 0; // 浓缩树脂
var originalResinCount = 0; // 原粹树脂
var fragileResinCount = 0; // 脆弱树脂
var momentResinCount = 0; // 须臾树脂
var originalResinCountRa = await imageRecognition(originalResin,0.3, 0, 0,1500,0,200,90);
if (originalResinCountRa.found) {
// await moveMouseTo(originalResinCountRa.x,originalResinCountRa.y);
let countArea = await Textocr("",1, 0, 2,originalResinCountRa.x+originalResinCountRa.w,originalResinCountRa.y,originalResinCountRa.w*3,originalResinCountRa.h);//
if (countArea.found){
log.info("原粹树脂识别数量结果:"+ countArea.text);
let match = countArea.text.match(/(\d+)\s*[/1]\s*(2|20|200)/);
if (match) {
originalResinCount = match[1];
// log.info("脆弱树脂识别数量提取:"+ originalResinCount);
}
else{
log.info("原粹树脂识别数量提取失败");
}
}
else{
log.info("原粹树脂识别数量结果::无");
}
} else {
log.info("未检测到原粹树脂图标");
}
// 浓缩树脂
var condensedResinCountRa = await imageRecognition(condensedResin,0.1, 0, 0,960,0,800,100);
if (condensedResinCountRa.found) {
// await moveMouseTo(condensedResinCountRa.x,condensedResinCountRa.y);
let countArea = await Textocr("",0.5, 0, 2,condensedResinCountRa.x+condensedResinCountRa.w,condensedResinCountRa.y,condensedResinCountRa.w,condensedResinCountRa.h);//
if (countArea.found){
// log.info("浓缩树脂识别数量结果: "+ countArea.text);
condensedResinCount = countArea.text
}
else{
condensedResinCount = "1";
log.info("浓缩树脂识别数量结果1");//不知道为什么1无法识别0是不显示图标的所以就当时1了反正也没啥影响
}
} else {
log.info("未检测到浓缩树脂图标");
}
var momentResinCountRa = await imageRecognition(momentResin,0.1, 0, 1,1170,0,300,100);
if (momentResinCountRa.found) {
// await moveMouseTo(momentResinCountRa.x,momentResinCountRa.y);
let countArea = await Textocr("",0.5, 0, 2,momentResinCountRa.x+momentResinCountRa.w+20,momentResinCountRa.y-15,60,40);//
if (countArea.found){
//log.info("须臾树脂识别数量结果:"+ countArea.text);
momentResinCount = countArea.text
}
else{
var oneRa = await imageRecognition(oneResin,0.1, 0, 1,momentResinCountRa.x+momentResinCountRa.w+20,momentResinCountRa.y-15,60,40);
if (oneRa.found){
momentResinCount = "1";
}else{
log.info("须臾树脂强制为 1 ");
momentResinCount = "1";
}
}
log.info("脆弱树脂强制为 1 ");//须臾树脂出现脆弱树脂不显示强制设置为1情况非常少大不了打多一次
fragileResinCount = "1";
}else
{
var fragileResinCountRa = await imageRecognition(fragileResin,0.1, 0, 1,1170,0,300,100);
if (fragileResinCountRa.found) {
// await moveMouseTo(fragileResinCountRa.x+fragileResinCountRa.w+20,fragileResinCountRa.y-15);
let countArea = await Textocr("",0.5, 0, 2,fragileResinCountRa.x+fragileResinCountRa.w+20,fragileResinCountRa.y-15,60,40);//
if (countArea.found){
// log.info("脆弱树脂识别数量结果:"+ countArea.text);
fragileResinCount = countArea.text
}
else{
var oneRa = await imageRecognition(oneResin,0.1, 0, 1,fragileResinCountRa.x+fragileResinCountRa.w+20,fragileResinCountRa.y-15,60,40);
if (oneRa.found){
fragileResinCount = "1";
}else{
fragileResinCount = "1";
log.info("脆弱树脂识别强制为 1 ");//有图标说明至少为1
}
}
}
else {
log.info("未检测到脆弱树脂图标");
}
}
log.info("树脂状态:浓缩{0} 原粹{1} 脆弱{2} 须臾{3}", condensedResinCount, originalResinCount, fragileResinCount,momentResinCount)
return {condensedResinCount,originalResinCount,fragileResinCount,momentResinCount}
}
//征讨之花领奖寻找函数
const autoNavigateToReward = async () => {
// 定义识别对象
const boxIconRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/box.png"));
advanceNum = 0;//前进次数
//调整为俯视视野
middleButtonClick();
await sleep(800);
moveMouseBy(0, 1030);
await sleep(400);
moveMouseBy(0, 920);
await sleep(400);
moveMouseBy(0, 710);
log.info("开始领奖");
while (true) {
// 1. 优先检查是否已到达领奖点
let captureRegion = captureGameRegion();
let rewardTextArea = captureRegion.DeriveCrop(1210, 515, 200, 50);
let rewardResult = rewardTextArea.find(RecognitionObject.ocrThis);
// 检测到特点文字则结束!!!
if (rewardResult.text == "激活地脉之花") {
log.info("已到达领奖点,检测到文字: " + rewardResult.text);
return true;
}
else if(advanceNum > 40){
await getOut();
await await genshin.returnMainUi();
throw new Error('前进时间超时');
}
// 2. 未到达领奖点,则调整视野
for(let i = 0; i < 100; i++){
captureRegion = captureGameRegion();
let iconRes = captureRegion.Find(boxIconRo);
let climbTextArea = captureRegion.DeriveCrop(1808, 1030, 25, 25);
let climbResult = climbTextArea.find(RecognitionObject.ocrThis);
// 检查是否处于攀爬状态
if (climbResult.isEmpty()){
let SHU = Textocr("地脉之花", 0.3, 1, 0, 840,225, 230, 125);
if (SHU.found){
return true;
}
log.info("检侧到页面错误,尝试脱离");
await keyDown("w");
await keyPress("VK_ESCAPE");
await sleep(500);
await keyDown("w");
await sleep(5000);
await keyUp("w");
}
if (iconRes.x >= 920 && iconRes.x <= 980 && iconRes.y <= 540) {
advanceNum++;
log.info(`视野已调正,前进第${advanceNum}`);
break;
} else {
// 小幅度调整
if(iconRes.y >= 520) moveMouseBy(0, 920);
let adjustAmount = iconRes.x < 920 ? -20 : 20;
let distanceToCenter = Math.abs(iconRes.x - 920); // 计算与920的距离
let scaleFactor = Math.max(1, Math.floor(distanceToCenter / 50)); // 根据距离缩放最小为1
let adjustAmount2 = iconRes.y < 540 ? scaleFactor : 10;
moveMouseBy(adjustAmount * adjustAmount2, 0);
await sleep(100);
}
if(i > 97) {
if (verticalNum >= 2) {
verticalNum = 0;
await getOut();
await await genshin.returnMainUi();
throw new Error('领取超时');
}
log.info("领取超时重新尝试1次");
await sleep(1000);
return false;
}
}
// 3. 前进一小步
keyDown("w");
await sleep(600);
keyUp("w");
await sleep(100); // 等待角色移动稳定
let earthlyVeins = await Textocr("地脉之花", 0.1, 0, 0, 840,225, 230, 125)
if (earthlyVeins.found) {
return true;
}
}
}
//向前寻找钥匙函数
async function readyFightIn(){
var startTime = new Date();
await sleep(500);
var NowTime = new Date();
keyDown("w");
while ((NowTime - startTime)<15*1000){
const result = await Textocr("战斗准备",0,0,3,1198,492,150,80);
const result2 = await Textocr("开始挑战",0,0,3,1554,970,360, 105);
if (result.found || result2.found) {
keyPress("F");keyPress("F");keyPress("F");keyPress("F");
keyUp("w");
return true;
}
keyDown("w");
keyPress("F");
NowTime = new Date();
}
await keyUp("w");
return false
}
//异步检测战斗执行函数来自D捣蛋&秋云佬的全自动地脉花的代码
async function autoFight(timeout) {
const cts = new CancellationTokenSource();
log.info("开始战斗");
dispatcher.RunTask(new SoloTask("AutoFight"), cts);
let fightResult = await recognizeTextInRegion(timeout);
logFightResult = fightResult ? "成功" : "失败";
log.info(`战斗结束,战斗结果:${logFightResult}`);
cts.cancel();
return fightResult;
}
//异步检测战斗结果函数
async function recognizeTextInRegion(timeout) {
return new Promise((resolve, reject) => {
(async () => {
try {
let startTime = Date.now();
const successKeywords = ["挑战完成","战斗完成"];
const failureKeywords = ["战斗失败","挑战失败"];
// 循环检测直到超时
while (Date.now() - startTime < timeout) {
try {
let captureRegion = captureGameRegion();
let result = captureRegion.find(ocrRo1);
let result2 = captureRegion.find(ocrRo2);
let text = result.text;
let text2 = result2.text;
// 检查成功关键词
for (let keyword of successKeywords) {
if (text.includes(keyword)) {
log.info("检测到战斗成功关键词: {0}", keyword);
resolve(true);
return;
}
}
// 检查失败关键词--
for (let keyword of failureKeywords) {
if (text2.includes(keyword)) {
log.warn("检测到战斗失败关键词: {0}", keyword);
resolve(false);
return;
}
}
}
catch (error) {
log.error("OCR过程中出错: {0}", error);
}
await sleep(1000); // 检查间隔
}
log.warn("在超时时间内未检测到战斗结果");
resolve(false);
} catch (error) {
reject(error);
}
})();
});
}
//圣遗物奖励更换函数
async function selectionHolyRelics() {
let artifactImagePath = artifactImageMap[Artifacts];
// 检查artifactImagePath是否存在
if (!artifactImagePath) {
throw new Error(`未找到与Artifacts值'${Artifacts}'对应的图片路径`);
}
let modifiedPath = artifactImagePath.slice(0, -4);
let newImagePath = modifiedPath + "in.bmp";
await sleep(500);
await click(116,980) // 领取奖励切换按钮
await sleep(100);
await click(116,980) // 领取奖励切换按钮
await sleep(100);
let rewardSettings = await Textocr("奖励设置",15,0,0,882,34,161,52);//这个时候有人申请进入世界会遮住,真是尴尬啊,不过不影响大局。
if (!rewardSettings.found) {await genshin.returnMainUi();return false;}
await click(1642,159);
await sleep(100);
await click(1642,159);
await sleep(100);
let YOffset = 0; // Y轴偏移量根据需要调整
//滚轮预操作
await moveMouseTo(1642,159);
await sleep(100);
await leftButtonDown();
await sleep(100);
await moveMouseTo(1642,155);
const maxRetries = 9; // 最大重试次数
let retries = 0; // 当前重试次数
while (retries < maxRetries) {
let result1 = await imageRecognition(newImagePath,1, 0, 0,1166,141,210,857);//
if (result1.found) {
await leftButtonUp();
await sleep(500);
await click(result.x-500,result.y);
await sleep(1000);
await keyPress("VK_ESCAPE");
return true
}
retries++; // 重试次数加1
//滚轮操作
YOffset += 100;
if (retries === maxRetries || retries+YOffset > 1080) {
await leftButtonUp();
await sleep(100);
await keyPress("VK_ESCAPE");
await genshin.returnMainUi();
return false;
}
await moveMouseTo(1642,155+YOffset);
await sleep(500);
}
return true;
}
// 领取奖励函数
async function claimRewards() {
// log.info(`尝试领取奖励,优先${onerewards}'`);
let SHUN01 = await Textocr("激活地脉之花",0.6,2,0,1188,358,200,400);
let SHUN02 = await Textocr("地脉之花", 0.2, 1, 0, 840,225, 230, 125);
if (SHUN01.found || SHUN02.found) {
log.info("找到地脉之花,开始领取奖励...");
}
else
{
log.warn("未找到地脉之花,尝试向前寻找...")
await keyDown("W");await sleep(300);await keyUp("W");
await keyPress("F");
await sleep(1000);
}
await sleep(300);
for (let j = 0;j < 2;j++) {
for (let i = 0;i < rewards.length;i++) {
let SHU = await Textocr(resinTypeMap[rewards[i]],0.3,0,0,510,380,640,600);
if (SHU.found){
if (resinTypeMap[rewards[i]] == "使用20个原粹树脂")
{
let BUC = await Textocr("补充",0.2,0,0,1150,440,210,130);
if (BUC.found) {continue;}
}
await sleep(100);
await click(SHU.x+550,SHU.y)
await sleep(100);
await click(SHU.x+550,SHU.y)
await sleep(300);
log.info(`${resinTypeMap[rewards[i]]} 获取奖励...`);
await Textocr("锁定辅助",10,0,0,1768,0,115,90);
let { condensedResinCount, originalResinCount, fragileResinCount , momentResinCount} = await getRemainResinStatus();
let shouldExit = true;
if (resinTypes.includes("1"))
{
shouldExit &= (parseInt(condensedResinCount, 10) == 0);
}
if (resinTypes.includes("2"))
{
shouldExit &= (parseInt(originalResinCount, 10) < 20);
}
if (resinTypes.includes("3"))
{
shouldExit &= (parseInt(fragileResinCount, 10) == 0);
}
if (resinTypes.includes("4"))
{
shouldExit &= (parseInt(momentResinCount, 10) == 0);
}
if (shouldExit)
{
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
return false;
}
log.warn("还有树脂...");
return true;
}
}
await sleep(500);
}
log.warn("未找到树脂,结束领取奖励...");
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
return false;
}
// 进入秘境入口函数
async function VeinEntrance() {
for (let i = 0;i < 2;i++) {
let JIECHU = await Textocr("F",2,2,0,1098,519,35,32);
if (JIECHU.found)
{
await keyPress("F");
await keyPress("F");
break;
}
else
{
if(i == 1){
log.warn("没找入口,尝试强制转圈寻找...");
await keyDown("W");keyPress("F");await sleep(500);keyPress("F");await keyUp("W");
await keyDown("D");keyPress("F");await sleep(500);keyPress("F");await keyUp("D");
await keyDown("S");keyPress("F");await sleep(500);keyPress("F");await keyUp("S");
await keyDown("A");keyPress("F");await sleep(500);keyPress("F");await keyUp("A");
await keyDown("W");keyPress("F");await sleep(500);keyPress("F");await keyUp("W");
break;
}
}
}
}
//秘境内退出函数
async function getOut() {
for (let i = 0;i < 2;i++){
log.info("尝试退出挑战...");
await keyPress("VK_ESCAPE");
await sleep(1000);
let exitChallenge0 = await Textocr("退出挑战",0.5,1,0,866,719,274,86);
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
let exitChallenge1 = await Textocr("退出挑战",0.5,1,0,866,719,274,86);
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
let exitChallenge2 = await Textocr("退出挑战",0.5,1,0,866,719,274,86);
if (!exitChallenge2.found){break}
}
}
log.warn("自动幽境危战版本v1.6");
log.warn("请保证队伍战斗实力,战斗失败或执行错误,会重试两次...");
log.warn("使用前请在 <<幽境危战>> 中配置好战斗队伍...");
log.info("使用树脂类型数量:{0} ", rewards.length)
log.info(`使用树脂顺序:${golbalRewardText.join(" ->")}`);
log.info("圣遗物奖励选择:{0} ", Artifacts)
//重试两次
for (let j = 0;j < 2;j++) {
resinAgain = false; //重试标志
try{
//1.导航进入页面
await genshin.returnMainUi();
await pathingScript.runFile(`assets/全自动幽境危战.json`);
await VeinEntrance();
//2.难度确认和选择
let intoAction = await Textocr("单人挑战",10,0,0,1554,970,360, 105);
if (!intoAction.found){
await genshin.returnMainUi();
throw new Error("未进入挑战页面,停止执行...")
}
let adjustmentType = await Textocr("至危挑战", 1, 0, 0,797,144,223,84);
if (adjustmentType.found) {
log.warn("找到至危挑战,尝试切换...")
await sleep(500);
await click(adjustmentType.x,adjustmentType.y)
await sleep(500);
}
let hardMode = await Textocr("困难", 0.3, 0, 0,1049,157,72,47);
let hardMode2 = await Textocr("困难", 0.2, 0, 0,805,156,83,47);
if (hardMode.found || hardMode2.found) {
log.warn("确认困难模式...")
}
else{
log.warn("未找到困难模式,尝试切换...")
await sleep(500);
await click(1096,186);
await sleep(500);
await click(1093,399);
}
//3.圣遗物奖励选择
if (Artifacts != "保持圣遗物奖励不变"){
let artifact = await imageRecognition(artifactImageMap[Artifacts],0.2,0,0,186,972,71,71);
if (!artifact.found) {
log.warn("圣遗物奖励和设定不一致,尝试切换...")
if (!await selectionHolyRelics()){await genshin.returnMainUi();throw new Error("圣遗物奖励设置错误,停止执行...")}
}
else{
log.warn("圣遗物奖励一致,无需切换 {0} ", Artifacts)
}
}
//4.进入秘境
await sleep(500);
await click(intoAction.x,intoAction.y)
await sleep(1000);
await click(intoAction.x,intoAction.y)
let enter = await Textocr("Enter",15,0,0,18,990,156,71,71);
if (!enter.found){
await genshin.returnMainUi();
throw new Error("未进入秘境,停止执行...")
}
//5.向前走进入挑战
if (!(await readyFightIn())){
await getOut();
await genshin.returnMainUi();
throw new Error("未进入准备战斗,停止执行...")
}
await sleep(1000);
//6.选择挑战boss
log.info("选择挑战Boss'{0}' 挑战次数:'{1}'", challengeName,challengeNum)
log.info(`期间树脂耗尽会自动退出秘境...`);
const clickCoordinates = [ { x: 207, y: 349 }, { x: 239, y: 531 }, { x: 227, y: 713 } ]; // Boss坐标1~3
await click(clickCoordinates[challengeName - 1].x, clickCoordinates[challengeName - 1].y);
//6.5选择队员-苏婷老师-待写
//log.warn("队伍选择功能等伟大的苏苏老师考完试做...")
//7.开始挑战
await Textocr("开始挑战",1,1,0,1554,970,360, 105);
var resinexhaustion = false; // 条件1树脂耗尽
//8.战斗循环
for (let i = 0;i < challengeNum; i++) {
log.info("进入战斗环境,开始第 {0} 次战斗", i+1)
//8.1自动战斗
for (let fightCount = 0; fightCount < 3; fightCount++) {
let battleBegins = await Textocr("战斗开始",20,0,0,877,235,164,50);
if (!battleBegins.found){
await getOut();
throw new Error("未进入战斗环境,停止执行...")
}
try {
await keyDown("w");
await sleep(Startforward);
await keyUp("w");
if(!await autoFight(Fighttimeout)){
resinAgain = true;
if (fightCount >= 2){
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
break;
}
else
{
let Again = await Textocr("再次挑战",10,1,0,1059,920,177,65);
if (!Again.found)break;
await sleep(1000);
log.warn("战斗失败,第 {0} 次重试...", fightCount+1)
throw new Error(`战斗失败,第 ${fightCount+1} 次重试...`)
}
}else
{
resinAgain= false;
break;
}
} catch (error) {
if (fightCount < 2)continue;
else break;
}
}
//8.2领取奖励
if (resinAgain != true) {
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
while((await Textocr("Enter",5,0,0,18,990,156,80).found) == false)
{
await keyPress("VK_ESCAPE");
await sleep(1000);
}
log.info("幽境危战:第 {0} 次领奖...", i+1)
if(!(await autoNavigateToReward())){verticalNum++;continue;}
await sleep(1000);
if (!(await claimRewards())) {
resinexhaustion = true;
}
else
{
if (challengeNum != i+1)
{
let challengeAgian = await Textocr("再次挑战",10,0,0,1094,958,200,70);
if (!challengeAgian.found){
await getOut();
throw new Error("未找到·再次挑战·按键,停止执行...")
}
for (let retry = 0; retry < 5 && challengeAgian.found; retry++) {
challengeAgian = await Textocr("再次挑战",0.2,0,0,1094,958,200,70);
if (challengeAgian.found){
await sleep(500);
await click(challengeAgian.x, challengeAgian.y);
await sleep(1000);
}
await sleep(200);
}
let resinTips = await Textocr("提示",2,0,0,840,225, 230, 125);
if (resinTips.found){
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(200);
log.info(`树脂提示已耗尽,...`);
resinexhaustion = true;
}
}
}
}
//8.3判断继续或退出
if (challengeNum == i+1 || resinexhaustion == true || resinAgain == true ){
log.info(resinAgain ? "累计战斗失败 3 次,退出秘境..."
: (challengeNum == i+1) ? `完成 ${i+1}/${challengeNum} 次战斗,退出挑战...`: `树脂耗尽,退出挑战...`);
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
var exitTimeout = 0;
while(exitTimeout < 20) {
let exitChallenge = await Textocr("退出挑战",0.3,0,0,866,719,274,86);
if (exitChallenge.found) {
await sleep(1000);
await click(exitChallenge.x, exitChallenge.y);
await sleep(1000);
break;
}
let exitChallenge2 = await Textocr("退出挑战",0.3,1,0,866,719,274,86);
log.info("尝试退出挑战...");
await sleep(1000);
await keyPress("VK_ESCAPE");
await sleep(1000);
exitTimeout++;
}
await genshin.returnMainUi();
if (resinAgain == true){throw new Error("执行重试错误...")}
return true;
}
await sleep(500);
}
}
catch (error) {
//9.执行错误,重试处理
log.error(`执行过程中发生错误:${error.message}`);
resinAgain = true;
await genshin.returnMainUi();
continue;
}finally{
//10.结束脚本
await genshin.returnMainUi();
if (resinAgain == false) log.info(`Auto自动幽境危战结束...`);
}
}
})();

View File

@@ -0,0 +1,18 @@
{
"manifest_version": 1,
"name": "自动幽境危战",
"version": "1.6",
"tags": [
"幽境危战"
],
"bgi_version": "0.44.8",
"description": "请先配置好秘境内的队伍,幽境危战战斗失败或执行错误会重试一次,请保证队伍实力",
"authors": [
{
"name": "LCB-茶包",
"links": "https://github.com/kaedelcb"
}
],
"settings_ui": "settings.json",
"main": "main.js"
}

View File

@@ -0,0 +1,58 @@
[
{
"name": "Artifacts",
"type": "select",
"label": "圣遗物奖励,默认不修改圣遗物奖励",
"options": [
"保持圣遗物奖励不变",
"长夜之誓 / 深廊终曲",
"黑曜秘典 / 烬城勇者绘卷",
"谐律异想断章 / 未竟的遐思" ,
"回声之林夜话 / 昔时之歌" ,
"逐影猎人 / 黄金剧团" ,
"水仙之梦 / 花海甘露之光" ,
"乐园遗落之花 / 沙上楼阁史话" ,
"深林的记忆 / 饰金之梦" ,
"来歆余响 / 辰砂往生录" ,
"华馆梦醒形骸记 / 海染砗磲" ,
"绝缘之旗印 / 追忆之注连" ,
"昔日宗室之仪 / 染血的骑士道" ,
"渡过烈火的贤人 / 炽烈的炎之魔女" ,
"悠古的磐岩 / 逆飞的流星",
"千岩牢固 / 苍白之火" ,
"冰风迷途的勇士 / 沉沦之心" ,
"翠绿之影 / 被怜爱的少女" ,
"如雷的盛怒 / 平息鸣雷的尊者"
]
},
{
"name": "challengeName",
"type": "select",
"label": "必填从上往下1~3选择第几个Boss挑战关卡",
"options": [
"1",
"2",
"3"
]
},
{
"name": "challengeNum",
"type": "input-text",
"label": "挑战次数默认15次期间树脂耗尽会自动结束"
},
{
"name": "Rewardsuse",
"type": "input-text",
"label": "树脂顺序1=浓缩树脂/2=原粹树脂/3=脆弱树脂/4=须臾树脂\n用`/`隔开填写对应的树脂数字即可默认1/2\n表示先使用浓缩树脂再使用原粹树脂不填的不使用"
},
{
"name": "Fighttimeout",
"type": "input-text",
"label": "最长战斗超时时间单位秒默认240秒"
},
{
"name": "Startforward",
"type": "input-text",
"label": "开始战斗后向前移动的时间默认1秒注意单位"
}
]

Some files were not shown because too many files have changed in this diff Show More