Compare commits

...

8 Commits

Author SHA1 Message Date
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
160 changed files with 2006 additions and 3839 deletions

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 876 B

After

Width:  |  Height:  |  Size: 876 B

View File

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

View File

@@ -1,105 +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和代码写法和整理。
# 自动幽境危战注意事项
## 零、前言
- 当前文档处于测试阶段,注意事项可能尚不完善,敬请谅解。
- 如发现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和代码写法和整理。

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 1018 B

After

Width:  |  Height:  |  Size: 1018 B

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -1,279 +1,279 @@
{
"macroEvents": [
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 0.0000
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 11127.9408
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 13119.9760
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 17400.0108
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 18504.0088
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 27312.0632
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 28128.0973
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 29240.0663
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 29912.0759
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 31736.1294
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 31904.0885
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 32144.0983
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 32864.1012
},
{
"type": 0,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33288.1407
},
{
"type": 1,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33432.1196
},
{
"type": 0,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33616.1026
},
{
"type": 1,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33736.1158
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 40600.1535
},
{
"type": 0,
"keyCode": 84,
"mouseX": 0,
"mouseY": 0,
"time": 43000.0000
},
{
"type": 1,
"keyCode": 84,
"mouseX": 0,
"mouseY": 0,
"time": 43071.8735
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 46591.9060
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 47047.9336
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 47615.9255
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 50271.9249
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 51143.9303
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 51839.9301
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 52239.9472
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 53279.9313
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 64328.0135
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 67096.0170
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 67448.0209
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 75544.7151
},
{
"type": 0,
"keyCode": 81,
"mouseX": 0,
"mouseY": 0,
"time": 77153.2237
},
{
"type": 1,
"keyCode": 81,
"mouseX": 0,
"mouseY": 0,
"time": 78120.1226
},
{
"type": 0,
"keyCode": 68,
"mouseX": 0,
"mouseY": 0,
"time": 80768.1293
},
{
"type": 1,
"keyCode": 68,
"mouseX": 0,
"mouseY": 0,
"time": 81536.1748
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 82560.1130
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 85536.1748
}
],
"info": {
"name": "",
"description": "",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"recordDpi": 1
}
{
"macroEvents": [
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 0.0000
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 11127.9408
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 13119.9760
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 17400.0108
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 18504.0088
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 27312.0632
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 28128.0973
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 29240.0663
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 29912.0759
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 31736.1294
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 31904.0885
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 32144.0983
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 32864.1012
},
{
"type": 0,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33288.1407
},
{
"type": 1,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33432.1196
},
{
"type": 0,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33616.1026
},
{
"type": 1,
"keyCode": 32,
"mouseX": 0,
"mouseY": 0,
"time": 33736.1158
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 40600.1535
},
{
"type": 0,
"keyCode": 84,
"mouseX": 0,
"mouseY": 0,
"time": 43000.0000
},
{
"type": 1,
"keyCode": 84,
"mouseX": 0,
"mouseY": 0,
"time": 43071.8735
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 46591.9060
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 47047.9336
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 47615.9255
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 50271.9249
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 51143.9303
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 51839.9301
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 52239.9472
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 53279.9313
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 64328.0135
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 67096.0170
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 67448.0209
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 75544.7151
},
{
"type": 0,
"keyCode": 81,
"mouseX": 0,
"mouseY": 0,
"time": 77153.2237
},
{
"type": 1,
"keyCode": 81,
"mouseX": 0,
"mouseY": 0,
"time": 78120.1226
},
{
"type": 0,
"keyCode": 68,
"mouseX": 0,
"mouseY": 0,
"time": 80768.1293
},
{
"type": 1,
"keyCode": 68,
"mouseX": 0,
"mouseY": 0,
"time": 81536.1748
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 82560.1130
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 85536.1748
}
],
"info": {
"name": "",
"description": "",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"recordDpi": 1
}
}

View File

@@ -1,69 +1,69 @@
{
"macroEvents": [
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 1619.1371
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 4843.0322
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 5555.1643
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 8195.0398
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 8939.0689
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 10259.1104
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 11155.0806
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 11655.0806
}
],
"info": {
"name": "",
"description": "",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"recordDpi": 1
}
{
"macroEvents": [
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 1619.1371
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 4843.0322
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 5555.1643
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 8195.0398
},
{
"type": 0,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 8939.0689
},
{
"type": 1,
"keyCode": 65,
"mouseX": 0,
"mouseY": 0,
"time": 10259.1104
},
{
"type": 0,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 11155.0806
},
{
"type": 1,
"keyCode": 87,
"mouseX": 0,
"mouseY": 0,
"time": 11655.0806
}
],
"info": {
"name": "",
"description": "",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"recordDpi": 1
}
}

View File

@@ -1,172 +1,172 @@
(async function () {
const defaultExitDelay = 10000;
const defaultLoadingDelay = 13000;
const seen = new Set();
function validateAndSetDefaults(exitDelay, loadingDelay) {
if (isNaN(exitDelay) || exitDelay <= 0) {
log.warn("你没有设置退出延迟,将使用默认值");
exitDelay = defaultExitDelay;
}
if (isNaN(loadingDelay) || loadingDelay <= 0) {
log.warn("你没有设置加载延迟,将使用默认值");
loadingDelay = defaultLoadingDelay;
}
return { exitDelay, loadingDelay };
}
async function runGameActionsMultipleTimes(times, locationName) {
for (let i = 0; i < times; i++) {
await sleep(1000);
keyPress("ESCAPE");
await sleep(1000);
click(50, 1030);
await sleep(1000);
click(1000, 750);
await sleep(validatedExitDelay);
click(1000, 550);
await sleep(validatedLoadingDelay);
keyPress("z");
log.info(`${locationName} 循环次数:${i + 1}/${times}`);
}
}
async function resetMap() {
log.info("重置地图大小...");
await sleep(1000);
keyPress("M");
await sleep(1000);
click(1840, 1010);
await sleep(1000);
click(1450, 460);
await sleep(1000);
click(1840, 1010);
await sleep(1000);
click(1450, 140);
await sleep(1000);
keyPress("M");
log.info("重置地图大小完成");
}
async function KeyMouse(locationNameEx) {
log.info(`前往 ${locationNameEx}`);
let tpPath = `assets/AutoPath/tp/${locationNameEx}tp.json`;
let filePath = `assets/KeyMouse/${locationNameEx}.json`;
try {
await pathingScript.runFile(tpPath);
await sleep(1000);
await keyMouseScript.runFile(filePath);
} catch (error) {
log.error(`执行 ${locationNameEx} 脚本时发生错误: ${error}`);
}
await sleep(1000);
}
async function woodcutting(locationName) {
log.info(`砍伐 ${locationName}`);
if (!map[locationName]) {
log.info(`未找到 ${locationName} 对应的木材`);
return;
}
const { description, available, times } = map[locationName];
if (description === 'NULL' || !description) {
log.info(`${locationName} 暂不支持`);
return;
}
if (Array.from(seen).some(item => item.includes(locationName))) {
log.info(`${locationName} 已经砍伐过,将执行下一个`);
return;
}
log.info(`前往 ${description}`);
await sleep(1000);
try {
if (locationName === "炬木" || locationName === "桃椰子木") {
await KeyMouse(description);
} else {
const filePath = `assets/AutoPath/${description}.json`;
await pathingScript.runFile(filePath);
}
await sleep(1000);
if (!available) {
await runGameActionsMultipleTimes(times, description);
} else {
await dispatcher.runTask(new SoloTask("AutoWood"));
}
seen.add(map[locationName].description);
log.info(`${locationName} 伐木完成,将执行下一个`);
log.info(`已运行木材: ${[...seen].join(", ")}`);
} catch (error) {
log.error(`在砍伐 ${locationName} 时发生错误: ${error}`);
}
}
// Set game environment settings
setGameMetrics(1920, 1080, 1);
const map = {
'桦木': { description: '桦木15个', available: true, times: 134 },
'萃华木': { description: '萃华木6个(垂香木3个)', available: true, times: 334 },
'松木': { description: '松木24个', available: true, times: 84 },
'却砂木': { description: '却砂木12个', available: true, times: 167 },
'竹节': { description: '竹节30个', available: true, times: 67 },
'垂香木': { description: '垂香木15个', available: true, times: 134 },
'杉木': { description: '杉木12个', available: true, times: 167 },
'梦见木': { description: '梦见木12个', available: true, times: 167 },
'枫木': { description: '枫木9个', available: true, times: 223 },
'孔雀木': { description: '御伽木9个(孔雀木6个)', available: false, times: 334 },//利用手动重置仇恨
'御伽木': { description: '御伽木9个(孔雀木6个)', available: false, times: 334 },//利用手动重置仇恨
'辉木': { description: '业果木15个(辉木15个)', available: true, times: 134 },
'业果木': { description: '业果木15个(辉木15个)', available: true, times: 134 },
'证悟木': { description: '证悟木15个(业果木6个)', available: true, times: 334 },
'刺葵木': { description: '刺葵木6个', available: true, times: 334 },
'柽木': { description: '柽木15个', available: false, times: 134 },
'悬铃木': { description: '悬铃木18个', available: true, times: 112 },
'椴木': { description: '椴木9个', available: true, times: 223 },
'白梣木': { description: '白梣木15个', available: true, times: 134 },
'香柏木': { description: '香柏木27个', available: true, times: 75 },
'炬木': { description: '炬木15个', available: true, times: 134 },
'白栗栎木': { description: '燃爆木6个(白栗栎木6个)', available: false, times: 334 },
'灰灰楼林木': { description: '灰灰楼木6个', available: false, times: 334 },
'燃爆木': { description: '燃爆木15个', available: false, times: 134 },
'桃椰子木': { description: '桃椰子木12个', available: false, times: 167 }
};
let exitdelay = Number(settings.exitdelay);
let loadingdelay = Number(settings.loadingdelay);
const { exitDelay: validatedExitDelay, loadingDelay: validatedLoadingDelay } = validateAndSetDefaults(exitdelay, loadingdelay);
const messages = [
'确保装备有[王树瑞佑]',
'确保使用小道具快捷键为Z键',
'确保开启了BGI独立任务中自动伐木的“启用OCR伐木数量限制”',
'若要运行炬木或桃椰子木:',
'运行时是琳妮特前台且拥有双风共鸣',
'元素共鸣需要四个角色组队触发,仅两个风系角色无效',
'不要带其他有移速加成的角色'
];
for (let message of messages) {
log.info(message);
await sleep(1000);
}
log.info('自动伐木开始...');
log.info(`退出延迟: ${validatedExitDelay}毫秒, 加载延迟: ${validatedLoadingDelay}毫秒`);
let woodsArray = settings.woods.split(" ");
await resetMap();
for (const wood of woodsArray) {
if (wood.trim()) {
await woodcutting(wood);
} else {
log.info('请在自定义选项输入木材名,用空格隔开');
}
}
})();
(async function () {
const defaultExitDelay = 10000;
const defaultLoadingDelay = 13000;
const seen = new Set();
function validateAndSetDefaults(exitDelay, loadingDelay) {
if (isNaN(exitDelay) || exitDelay <= 0) {
log.warn("你没有设置退出延迟,将使用默认值");
exitDelay = defaultExitDelay;
}
if (isNaN(loadingDelay) || loadingDelay <= 0) {
log.warn("你没有设置加载延迟,将使用默认值");
loadingDelay = defaultLoadingDelay;
}
return { exitDelay, loadingDelay };
}
async function runGameActionsMultipleTimes(times, locationName) {
for (let i = 0; i < times; i++) {
await sleep(1000);
keyPress("ESCAPE");
await sleep(1000);
click(50, 1030);
await sleep(1000);
click(1000, 750);
await sleep(validatedExitDelay);
click(1000, 550);
await sleep(validatedLoadingDelay);
keyPress("z");
log.info(`${locationName} 循环次数:${i + 1}/${times}`);
}
}
async function resetMap() {
log.info("重置地图大小...");
await sleep(1000);
keyPress("M");
await sleep(1000);
click(1840, 1010);
await sleep(1000);
click(1450, 460);
await sleep(1000);
click(1840, 1010);
await sleep(1000);
click(1450, 140);
await sleep(1000);
keyPress("M");
log.info("重置地图大小完成");
}
async function KeyMouse(locationNameEx) {
log.info(`前往 ${locationNameEx}`);
let tpPath = `assets/AutoPath/tp/${locationNameEx}tp.json`;
let filePath = `assets/KeyMouse/${locationNameEx}.json`;
try {
await pathingScript.runFile(tpPath);
await sleep(1000);
await keyMouseScript.runFile(filePath);
} catch (error) {
log.error(`执行 ${locationNameEx} 脚本时发生错误: ${error}`);
}
await sleep(1000);
}
async function woodcutting(locationName) {
log.info(`砍伐 ${locationName}`);
if (!map[locationName]) {
log.info(`未找到 ${locationName} 对应的木材`);
return;
}
const { description, available, times } = map[locationName];
if (description === 'NULL' || !description) {
log.info(`${locationName} 暂不支持`);
return;
}
if (Array.from(seen).some(item => item.includes(locationName))) {
log.info(`${locationName} 已经砍伐过,将执行下一个`);
return;
}
log.info(`前往 ${description}`);
await sleep(1000);
try {
if (locationName === "炬木" || locationName === "桃椰子木") {
await KeyMouse(description);
} else {
const filePath = `assets/AutoPath/${description}.json`;
await pathingScript.runFile(filePath);
}
await sleep(1000);
if (!available) {
await runGameActionsMultipleTimes(times, description);
} else {
await dispatcher.runTask(new SoloTask("AutoWood"));
}
seen.add(map[locationName].description);
log.info(`${locationName} 伐木完成,将执行下一个`);
log.info(`已运行木材: ${[...seen].join(", ")}`);
} catch (error) {
log.error(`在砍伐 ${locationName} 时发生错误: ${error}`);
}
}
// Set game environment settings
setGameMetrics(1920, 1080, 1);
const map = {
'桦木': { description: '桦木15个', available: true, times: 134 },
'萃华木': { description: '萃华木6个(垂香木3个)', available: true, times: 334 },
'松木': { description: '松木24个', available: true, times: 84 },
'却砂木': { description: '却砂木12个', available: true, times: 167 },
'竹节': { description: '竹节30个', available: true, times: 67 },
'垂香木': { description: '垂香木15个', available: true, times: 134 },
'杉木': { description: '杉木12个', available: true, times: 167 },
'梦见木': { description: '梦见木12个', available: true, times: 167 },
'枫木': { description: '枫木9个', available: true, times: 223 },
'孔雀木': { description: '御伽木9个(孔雀木6个)', available: false, times: 334 },//利用手动重置仇恨
'御伽木': { description: '御伽木9个(孔雀木6个)', available: false, times: 334 },//利用手动重置仇恨
'辉木': { description: '业果木15个(辉木15个)', available: true, times: 134 },
'业果木': { description: '业果木15个(辉木15个)', available: true, times: 134 },
'证悟木': { description: '证悟木15个(业果木6个)', available: true, times: 334 },
'刺葵木': { description: '刺葵木6个', available: true, times: 334 },
'柽木': { description: '柽木15个', available: false, times: 134 },
'悬铃木': { description: '悬铃木18个', available: true, times: 112 },
'椴木': { description: '椴木9个', available: true, times: 223 },
'白梣木': { description: '白梣木15个', available: true, times: 134 },
'香柏木': { description: '香柏木27个', available: true, times: 75 },
'炬木': { description: '炬木15个', available: true, times: 134 },
'白栗栎木': { description: '燃爆木6个(白栗栎木6个)', available: false, times: 334 },
'灰灰楼林木': { description: '灰灰楼木6个', available: false, times: 334 },
'燃爆木': { description: '燃爆木15个', available: false, times: 134 },
'桃椰子木': { description: '桃椰子木12个', available: false, times: 167 }
};
let exitdelay = Number(settings.exitdelay);
let loadingdelay = Number(settings.loadingdelay);
const { exitDelay: validatedExitDelay, loadingDelay: validatedLoadingDelay } = validateAndSetDefaults(exitdelay, loadingdelay);
const messages = [
'确保装备有[王树瑞佑]',
'确保使用小道具快捷键为Z键',
'确保开启了BGI独立任务中自动伐木的“启用OCR伐木数量限制”',
'若要运行炬木或桃椰子木:',
'运行时是琳妮特前台且拥有双风共鸣',
'元素共鸣需要四个角色组队触发,仅两个风系角色无效',
'不要带其他有移速加成的角色'
];
for (let message of messages) {
log.info(message);
await sleep(1000);
}
log.info('自动伐木开始...');
log.info(`退出延迟: ${validatedExitDelay}毫秒, 加载延迟: ${validatedLoadingDelay}毫秒`);
let woodsArray = settings.woods.split(" ");
await resetMap();
for (const wood of woodsArray) {
if (wood.trim()) {
await woodcutting(wood);
} else {
log.info('请在自定义选项输入木材名,用空格隔开');
}
}
})();

View File

@@ -1,138 +1,138 @@
[
{
"name": "woods",
"type": "input-text",
"label": "木材种类:使用空格分隔"
},
{
"name": "exitdelay",
"type": "input-text",
"label": "退出延迟(毫秒)(选填)"
},
{
"name": "loadingdelay",
"type": "input-text",
"label": "加载延迟(毫秒)(选填)"
}
// {
// "name": "桦木",
// "type": "checkbox",
// "label": "桦木"
// },
// {
// "name": "萃华木",
// "type": "checkbox",
// "label": "萃华木"
// },
// {
// "name": "松木",
// "type": "checkbox",
// "label": "松木"
// },
// {
// "name": "却砂木",
// "type": "checkbox",
// "label": "却砂木"
// },
// {
// "name": "竹节",
// "type": "checkbox",
// "label": "竹节"
// },
// {
// "name": "垂香木",
// "type": "checkbox",
// "label": "垂香木"
// },
// {
// "name": "杉木",
// "type": "checkbox",
// "label": "杉木"
// },
// {
// "name": "梦见木",
// "type": "checkbox",
// "label": "梦见木"
// },
// {
// "name": "枫木",
// "type": "checkbox",
// "label": "枫木"
// },
// {
// "name": "孔雀木",
// "type": "checkbox",
// "label": "孔雀木"
// },
// {
// "name": "御伽木",
// "type": "checkbox",
// "label": "御伽木"
// },
// {
// "name": "辉木",
// "type": "checkbox",
// "label": "辉木"
// },
// {
// "name": "业果木",
// "type": "checkbox",
// "label": "业果木"
// },
// {
// "name": "证悟木",
// "type": "checkbox",
// "label": "证悟木"
// },
// {
// "name": "刺葵木",
// "type": "checkbox",
// "label": "刺葵木"
// },
// {
// "name": "柽木",
// "type": "checkbox",
// "label": "柽木"
// },
// {
// "name": "悬铃木",
// "type": "checkbox",
// "label": "悬铃木"
// },
// {
// "name": "椴木",
// "type": "checkbox",
// "label": "椴木"
// },
// {
// "name": "白梣木",
// "type": "checkbox",
// "label": "白梣木"
// },
// {
// "name": "香柏木",
// "type": "checkbox",
// "label": "香柏木"
// },
// {
// "name": "炬木",
// "type": "checkbox",
// "label": "炬木"
// },
// {
// "name": "白栗栎木",
// "type": "checkbox",
// "label": "白栗栎木"
// },
// {
// "name": "灰灰楼林木",
// "type": "checkbox",
// "label": "灰灰楼林木"
// },
// {
// "name": "燃爆木",
// "type": "checkbox",
// "label": "燃爆木"
// }
[
{
"name": "woods",
"type": "input-text",
"label": "木材种类:使用空格分隔"
},
{
"name": "exitdelay",
"type": "input-text",
"label": "退出延迟(毫秒)(选填)"
},
{
"name": "loadingdelay",
"type": "input-text",
"label": "加载延迟(毫秒)(选填)"
}
// {
// "name": "桦木",
// "type": "checkbox",
// "label": "桦木"
// },
// {
// "name": "萃华木",
// "type": "checkbox",
// "label": "萃华木"
// },
// {
// "name": "松木",
// "type": "checkbox",
// "label": "松木"
// },
// {
// "name": "却砂木",
// "type": "checkbox",
// "label": "却砂木"
// },
// {
// "name": "竹节",
// "type": "checkbox",
// "label": "竹节"
// },
// {
// "name": "垂香木",
// "type": "checkbox",
// "label": "垂香木"
// },
// {
// "name": "杉木",
// "type": "checkbox",
// "label": "杉木"
// },
// {
// "name": "梦见木",
// "type": "checkbox",
// "label": "梦见木"
// },
// {
// "name": "枫木",
// "type": "checkbox",
// "label": "枫木"
// },
// {
// "name": "孔雀木",
// "type": "checkbox",
// "label": "孔雀木"
// },
// {
// "name": "御伽木",
// "type": "checkbox",
// "label": "御伽木"
// },
// {
// "name": "辉木",
// "type": "checkbox",
// "label": "辉木"
// },
// {
// "name": "业果木",
// "type": "checkbox",
// "label": "业果木"
// },
// {
// "name": "证悟木",
// "type": "checkbox",
// "label": "证悟木"
// },
// {
// "name": "刺葵木",
// "type": "checkbox",
// "label": "刺葵木"
// },
// {
// "name": "柽木",
// "type": "checkbox",
// "label": "柽木"
// },
// {
// "name": "悬铃木",
// "type": "checkbox",
// "label": "悬铃木"
// },
// {
// "name": "椴木",
// "type": "checkbox",
// "label": "椴木"
// },
// {
// "name": "白梣木",
// "type": "checkbox",
// "label": "白梣木"
// },
// {
// "name": "香柏木",
// "type": "checkbox",
// "label": "香柏木"
// },
// {
// "name": "炬木",
// "type": "checkbox",
// "label": "炬木"
// },
// {
// "name": "白栗栎木",
// "type": "checkbox",
// "label": "白栗栎木"
// },
// {
// "name": "灰灰楼林木",
// "type": "checkbox",
// "label": "灰灰楼林木"
// },
// {
// "name": "燃爆木",
// "type": "checkbox",
// "label": "燃爆木"
// }
]

View File

@@ -1,4 +1,4 @@
全部木材:
桦木 萃华木 松木 却砂木 竹节 垂香木 杉木 梦见木 枫木 孔雀木 御伽木 辉木 业果木 证悟木 刺葵木 柽木 悬铃木 椴木 白梣木 香柏木 炬木 白栗栎木 灰灰楼林木 燃爆木 桃椰子木
全部木材:
桦木 萃华木 松木 却砂木 竹节 垂香木 杉木 梦见木 枫木 孔雀木 御伽木 辉木 业果木 证悟木 刺葵木 柽木 悬铃木 椴木 白梣木 香柏木 炬木 白栗栎木 灰灰楼林木 燃爆木 桃椰子木
涉及炬木、桃椰子木的队伍要求:双风共鸣且琳妮特前台

View File

@@ -1,21 +1,21 @@
(async function () {
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
await sleep(3000);
keyPress("F");
await sleep(5000);
click(1370, 655);
await sleep(3000);
click(1370, 655);
await sleep(3000);
click(680,300);
await sleep(3000);
click(1760, 1020);
await sleep(3000);
click(1160, 780);
await sleep(3000);
click(1160, 780);
await sleep(3000);
click(1865, 44);
await sleep(3000);
log.info("已领取洞天宝钱和好感");
(async function () {
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
await sleep(3000);
keyPress("F");
await sleep(5000);
click(1370, 655);
await sleep(3000);
click(1370, 655);
await sleep(3000);
click(680,300);
await sleep(3000);
click(1760, 1020);
await sleep(3000);
click(1160, 780);
await sleep(3000);
click(1160, 780);
await sleep(3000);
click(1865, 44);
await sleep(3000);
log.info("已领取洞天宝钱和好感");
})();

View File

@@ -1,13 +1,13 @@
{
"manifest_version": 1,
"name": "领取洞天百宝须臾树脂,只领取须臾树脂,前面是领取洞天宝钱和好感",
"version": "1.0",
"description": "领取洞天须臾树脂",
"authors": [
{
"name": "风埠",
"links": "https://github.com/jhkif"
}
],
"main": "main.js"
{
"manifest_version": 1,
"name": "领取洞天百宝须臾树脂,只领取须臾树脂,前面是领取洞天宝钱和好感",
"version": "1.0",
"description": "领取洞天须臾树脂",
"authors": [
{
"name": "风埠",
"links": "https://github.com/jhkif"
}
],
"main": "main.js"
}

View File

@@ -1,21 +1,21 @@
(async function () {
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
keyPress("F");
await sleep(1000);
keyPress("F");
await sleep(1500);
click(960, 540);
await sleep(1000);
click(1750, 1010);
await sleep(5000);
click(975, 900);
await sleep(1000);
click(1356, 804); //再见
log.info("点击再见1");
await sleep(2000);
click(1356, 804); //再见
log.info("点击再见2");
keyPress("Escape");
log.info("已完成合成浓缩树脂");
(async function () {
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
keyPress("F");
await sleep(1000);
keyPress("F");
await sleep(1500);
click(960, 540);
await sleep(1000);
click(1750, 1010);
await sleep(5000);
click(975, 900);
await sleep(1000);
click(1356, 804); //再见
log.info("点击再见1");
await sleep(2000);
click(1356, 804); //再见
log.info("点击再见2");
keyPress("Escape");
log.info("已完成合成浓缩树脂");
})();

View File

@@ -1,12 +1,12 @@
{
"manifest_version": 1,
"name": "合成浓缩树脂",
"version": "1.1",
"description": "用于合成浓缩树脂",
"authors": [
{
"name": "鹤望兰"
}
],
"main": "main.js"
{
"manifest_version": 1,
"name": "合成浓缩树脂",
"version": "1.1",
"description": "用于合成浓缩树脂",
"authors": [
{
"name": "鹤望兰"
}
],
"main": "main.js"
}

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