JS : 自动购买每天&3天&每周刷新食材 改名 商品& 3.1.0 (#2754)
* Delete repo/js/自动购买每天&3天&每周刷新食材 directory * JS : 自动购买每天&3天&每周刷新食材 改名 商品& 3.1.0 改名 增加禁用tag功能 修正部份商品名稱 修改說明 璃月-璃月港-老高,支援買完兩種魚
@@ -1,10 +1,40 @@
|
|||||||
# 自动购买商品 - 使用说明
|
# 自动购买每天&3天&每周刷新食材 - 使用说明
|
||||||
|
|
||||||
## 🚀 快速开始
|
## 📝 功能说明
|
||||||
|
|
||||||
### 1. 基本设置
|
这个脚本可以自动购买原神游戏中各个商人的食材,支持三种刷新周期:
|
||||||
|
- **每天刷新食材**:每天凌晨4点刷新
|
||||||
|
- **3天刷新食材**:每3天刷新一次
|
||||||
|
- **每周刷新食材**:每周刷新,可指定购买日
|
||||||
|
- **记录系统**:避免重复购买,只购买刷新后的商品
|
||||||
|
- **标签系统**:支持按标签批量禁用商人
|
||||||
|
|
||||||
|
## ⚡ 快速开始
|
||||||
|
|
||||||
|
### 1. 准备工作 & 注意事项
|
||||||
|
1. **游戏分辨率**:1920×1080 解析度**
|
||||||
|
2. **游戏时间**:脚本会自动调整白天/晚上时间
|
||||||
|
3. **背包空间**:确保有足够空间购买商品
|
||||||
|
4. **摩拉**:确保有足够的摩拉
|
||||||
|
5. **记录系统**:购买记录保存在 `record/账号名/` 目录下
|
||||||
|
6. **多人模式**:脚本只能在单人模式下运行
|
||||||
|
7. **刷新时间**:基于游戏服务器时间(GMT+8),每天4点刷新
|
||||||
|
|
||||||
|
|
||||||
|
### 2. 首次使用
|
||||||
|
1. 打开脚本设置界面
|
||||||
|
2. 输入要购买的食材
|
||||||
|
3. 设置每周食材购买模式
|
||||||
|
4. 设置要禁用的NPC或标签
|
||||||
|
5. 保存设置
|
||||||
|
6. 在主界面运行脚本
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ⚙️ 设置说明
|
||||||
1. **账号名**:填写账号名,用于区分不同账号的购买记录
|
1. **账号名**:填写账号名,用于区分不同账号的购买记录
|
||||||
2. **要购买的商品**:输入商品名称,用空格分隔(支援的商人与商品请查看下方表格)
|
2. **要购买的商品**:输入商品名称,用空格分隔(支援的商人与商品请查看下方表格)
|
||||||
|
- 建议直接复制商品名称贴上输入栏
|
||||||
```
|
```
|
||||||
示例:盐 胡椒 螃蟹 圣水 松茸 沉玉仙茗 蟹黄
|
示例:盐 胡椒 螃蟹 圣水 松茸 沉玉仙茗 蟹黄
|
||||||
```
|
```
|
||||||
@@ -15,24 +45,27 @@
|
|||||||
```
|
```
|
||||||
示例:阿扎莱 皮托
|
示例:阿扎莱 皮托
|
||||||
```
|
```
|
||||||
5. **无视购买记录强制购买**:开启后会忽略购买记录,重新购买所有商品
|
5. **禁用标签功能**:可以输入要禁用的标签(空格分隔),如:
|
||||||
6. **调试模式**:开启后显示详细执行日志
|
```
|
||||||
|
示例:黑心商人 挪德卡莱
|
||||||
|
```
|
||||||
|
禁用后,脚本会跳过这些NPC或带有指定标签的NPC,不会前往购买。
|
||||||
|
|
||||||
|
可以使用国家/地区(如"蒙德"、"璃月")或其他标签(如商人信息总览中的标签)
|
||||||
|
|
||||||
|
6. **无视购买记录强制购买**:开启后会忽略购买记录,重新购买所有商品
|
||||||
|
7. **调试模式**:开启后显示详细执行日志
|
||||||
|
|
||||||
### 2. 智能购买记录系统
|
### 购买记录系统说明
|
||||||
脚本会自动记录购买时间,避免重复购买:
|
脚本会自动记录购买时间,避免重复购买:
|
||||||
- **每天商品**:购买后24小时(凌晨4点)刷新
|
1. **每天刷新食材** - 每天凌晨4点刷新
|
||||||
- **3天商品**:购买后3天刷新
|
2. **3天刷新食材** - 每3天刷新一次
|
||||||
- **每周商品**:购买后7天刷新(可设置购买日)
|
3. **每周刷新食材** - 每周固定週一购买
|
||||||
|
|
||||||
购买记录保存在:`record/你填的账号名/records.json`
|
购买记录保存在:`record/你填的账号名/records.json`
|
||||||
- 下次执行时只购买已刷新商品
|
- 下次执行时只购买已刷新商品
|
||||||
- 可通过"无视购买记录强制购买"选项重置
|
- 可通过"无视购买记录强制购买"选项重置
|
||||||
|
|
||||||
### 3. 运行脚本
|
|
||||||
1. 确保游戏分辨率设置为 **1920×1080**
|
|
||||||
2. 游戏角色需在单人模式
|
|
||||||
3. 确保有足够的摩拉和背包空间
|
|
||||||
4. 运行脚本即可自动购买
|
|
||||||
|
|
||||||
## 📋 商人与商品支持表
|
## 📋 商人与商品支持表
|
||||||
|
|
||||||
@@ -41,16 +74,16 @@
|
|||||||
- **查看`assets/data/foods.json`**:所有商品的中文名称
|
- **查看`assets/data/foods.json`**:所有商品的中文名称
|
||||||
|
|
||||||
### 商人信息总览
|
### 商人信息总览
|
||||||
| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 备注 |
|
| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 标签 |
|
||||||
|--------|--------|-------------|------------|-------------|------|
|
|--------|--------|-------------|------------|-------------|------|
|
||||||
| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | 白天出现 |
|
| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | |
|
||||||
| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | 晚上出现 |
|
| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
||||||
| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - |
|
| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - |
|
||||||
| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | |
|
| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | |
|
||||||
| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | |
|
| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | |
|
||||||
| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | 白天出现 |
|
| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | |
|
||||||
| 璃月-璃月港 | 老高 | 鱼肉 | - | - | |
|
| 璃月-璃月港 | 老高 | 鱼肉、鱼肉2 | - | - | |
|
||||||
| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | 晚上出现 |
|
| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | |
|
||||||
| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | |
|
| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | |
|
||||||
| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | |
|
| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | |
|
||||||
| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | |
|
| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | |
|
||||||
@@ -64,17 +97,22 @@
|
|||||||
| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | |
|
| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | |
|
||||||
| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 |
|
| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 |
|
||||||
| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 |
|
| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 |
|
||||||
| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 晚上出现 |
|
| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 黑心商人 |
|
||||||
| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | |
|
| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | |
|
||||||
| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | |
|
| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | |
|
||||||
| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | |
|
| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | |
|
||||||
| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | |
|
| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | |
|
||||||
| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | |
|
| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | 黑心商人 |
|
||||||
| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | |
|
| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | |
|
||||||
| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | |
|
| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | |
|
||||||
| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | |
|
| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | |
|
||||||
| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
||||||
| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | |
|
| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | 黑心商人 |
|
||||||
|
|
||||||
|
- 独立地图:指需要进入独立空间的特殊地图,这些地图部份路径无法使用地图追踪功能
|
||||||
|
- 黑心商人:指没有折扣的商人,价格较贵的商人
|
||||||
|
|
||||||
|
### **标签系统尚未完全添加,欢迎补充标签**
|
||||||
|
|
||||||
## 🔧 添加新商品
|
## 🔧 添加新商品
|
||||||
|
|
||||||
@@ -125,7 +163,8 @@
|
|||||||
"path": "assets/path/地区-位置-新商人名.json",
|
"path": "assets/path/地区-位置-新商人名.json",
|
||||||
"_1d_foods": ["商品1", "商品2"], // 每天刷新
|
"_1d_foods": ["商品1", "商品2"], // 每天刷新
|
||||||
"_3d_foods": ["商品3"], // 3天刷新
|
"_3d_foods": ["商品3"], // 3天刷新
|
||||||
"_7d_foods": ["商品4"] // 每周刷新
|
"_7d_foods": ["商品4"], // 每周刷新
|
||||||
|
"tags": ["地区", "黑心商人"] // 商人标签
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -133,8 +172,8 @@
|
|||||||
- `page`: 商店的总页数
|
- `page`: 商店的总页数
|
||||||
- `time`: 商人出现时间
|
- `time`: 商人出现时间
|
||||||
- `any`: 全天出现
|
- `any`: 全天出现
|
||||||
- `day`: 白天出现
|
- `day`:
|
||||||
- `night`: 晚上出现
|
- `night`:
|
||||||
- `path`: 路径文件位置
|
- `path`: 路径文件位置
|
||||||
|
|
||||||
### 4. 更新商人与商品支持表
|
### 4. 更新商人与商品支持表
|
||||||
@@ -173,15 +212,6 @@ A: 游戏内的刷新时间是**每天凌晨4点**。脚本会考虑这个时间
|
|||||||
- 如果当前时间在4点前,视为前一天
|
- 如果当前时间在4点前,视为前一天
|
||||||
- 购买记录基于4点刷新时间计算
|
- 购买记录基于4点刷新时间计算
|
||||||
|
|
||||||
## 📝 注意事项
|
|
||||||
|
|
||||||
1. **游戏时间**:脚本会自动调整白天/晚上时间
|
|
||||||
2. **背包空间**:确保有足够空间购买商品
|
|
||||||
3. **摩拉**:确保有足够的摩拉
|
|
||||||
4. **记录系统**:购买记录保存在 `record/账号名/` 目录下
|
|
||||||
5. **多人模式**:脚本只能在单人模式下运行
|
|
||||||
6. **刷新时间**:基于游戏服务器时间(GMT+8),每天4点刷新
|
|
||||||
|
|
||||||
## 🤝 贡献指南
|
## 🤝 贡献指南
|
||||||
|
|
||||||
欢迎提交新的商人和商品配置!
|
欢迎提交新的商人和商品配置!
|
||||||
@@ -189,9 +219,10 @@ A: 游戏内的刷新时间是**每天凌晨4点**。脚本会考虑这个时间
|
|||||||
1. **提交新的商人**:包含路径文件和商人数据
|
1. **提交新的商人**:包含路径文件和商人数据
|
||||||
2. **提交新的商品**:包含图片和商品数据
|
2. **提交新的商品**:包含图片和商品数据
|
||||||
3. **更新文档**:记得更新本README中的商人信息表
|
3. **更新文档**:记得更新本README中的商人信息表
|
||||||
4. **问题反馈**:提供详细的重现步骤和日志
|
4. **标签补充**:欢迎为现有NPC添加合适的标签
|
||||||
|
5. **问题反馈**:提供详细的重现步骤和日志
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> 注意:本脚本仅供学习与研究使用,请遵守游戏使用条款。
|
> 注意:本脚本仅供学习与研究使用,请遵守游戏使用条款。
|
||||||
```
|
``
|
||||||
@@ -89,6 +89,11 @@
|
|||||||
"name": "鱼肉",
|
"name": "鱼肉",
|
||||||
"file": "assets/images/fish.png"
|
"file": "assets/images/fish.png"
|
||||||
},
|
},
|
||||||
|
"fish2": {
|
||||||
|
"id": "fish",
|
||||||
|
"name": "鱼肉2",
|
||||||
|
"file": "assets/images/fish.png"
|
||||||
|
},
|
||||||
"huMengbu": {
|
"huMengbu": {
|
||||||
"id": "huMengbu",
|
"id": "huMengbu",
|
||||||
"name": "胡萝卜",
|
"name": "胡萝卜",
|
||||||
@@ -139,10 +144,10 @@
|
|||||||
"name": "琉璃袋",
|
"name": "琉璃袋",
|
||||||
"file": "assets/images/琉璃袋.png"
|
"file": "assets/images/琉璃袋.png"
|
||||||
},
|
},
|
||||||
"蟹黃": {
|
"蟹黄": {
|
||||||
"id": "蟹黃",
|
"id": "蟹黄",
|
||||||
"name": "蟹黃",
|
"name": "蟹黄",
|
||||||
"file": "assets/images/蟹黃.png"
|
"file": "assets/images/蟹黄.png"
|
||||||
},
|
},
|
||||||
"crab": {
|
"crab": {
|
||||||
"id": "crab",
|
"id": "crab",
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "day",
|
"time": "day",
|
||||||
"path": "assets/path/蒙德-清泉镇-神奇的霍普金斯.json",
|
"path": "assets/path/蒙德-清泉镇-神奇的霍普金斯.json",
|
||||||
"_1d_foods": ["圣水"]
|
"_1d_foods": ["圣水"],
|
||||||
|
"tags": ["蒙德"]
|
||||||
},
|
},
|
||||||
"Blanche": {
|
"Blanche": {
|
||||||
"name": "布兰琪",
|
"name": "布兰琪",
|
||||||
@@ -13,7 +14,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "night",
|
"time": "night",
|
||||||
"path": "assets/path/蒙德-蒙德城-布兰琪.json",
|
"path": "assets/path/蒙德-蒙德城-布兰琪.json",
|
||||||
"_1d_foods": ["盐", "胡椒", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "小麦"]
|
"_1d_foods": ["盐", "胡椒", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "小麦"],
|
||||||
|
"tags": ["蒙德"]
|
||||||
},
|
},
|
||||||
"莎拉": {
|
"莎拉": {
|
||||||
"name": "莎拉",
|
"name": "莎拉",
|
||||||
@@ -21,7 +23,8 @@
|
|||||||
"page": 4,
|
"page": 4,
|
||||||
"time": "night",
|
"time": "night",
|
||||||
"path": "assets/path/蒙德-蒙德城-莎拉.json",
|
"path": "assets/path/蒙德-蒙德城-莎拉.json",
|
||||||
"_7d_foods": ["蟹黃"]
|
"_7d_foods": ["蟹黄"],
|
||||||
|
"tags": ["蒙德"]
|
||||||
},
|
},
|
||||||
"DongSheng": {
|
"DongSheng": {
|
||||||
"name": "东升",
|
"name": "东升",
|
||||||
@@ -29,7 +32,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/璃月-璃月港-东升.json",
|
"path": "assets/path/璃月-璃月港-东升.json",
|
||||||
"_1d_foods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "杏仁", "盐", "胡椒", "番茄"]
|
"_1d_foods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "杏仁", "盐", "胡椒", "番茄"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"ChefMao": {
|
"ChefMao": {
|
||||||
"name": "卯师父",
|
"name": "卯师父",
|
||||||
@@ -38,7 +42,8 @@
|
|||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/璃月-璃月港-卯师父.json",
|
"path": "assets/path/璃月-璃月港-卯师父.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹"],
|
"_1d_foods": ["鱼肉", "螃蟹"],
|
||||||
"_3d_foods": ["胡萝卜", "松茸", "绝云椒椒"]
|
"_3d_foods": ["胡萝卜", "松茸", "绝云椒椒"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"UncleSun": {
|
"UncleSun": {
|
||||||
"name": "老孙",
|
"name": "老孙",
|
||||||
@@ -46,7 +51,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "day",
|
"time": "day",
|
||||||
"path": "assets/path/璃月-璃月港-老孙.json",
|
"path": "assets/path/璃月-璃月港-老孙.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹", "虾仁"]
|
"_1d_foods": ["鱼肉", "螃蟹", "虾仁"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"UncleGao": {
|
"UncleGao": {
|
||||||
"name": "老高",
|
"name": "老高",
|
||||||
@@ -54,7 +60,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/璃月-璃月港-老高.json",
|
"path": "assets/path/璃月-璃月港-老高.json",
|
||||||
"_1d_foods": ["鱼肉"]
|
"_1d_foods": ["鱼肉","鱼肉2"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"阿桂": {
|
"阿桂": {
|
||||||
"name": "阿桂",
|
"name": "阿桂",
|
||||||
@@ -62,7 +69,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "night",
|
"time": "night",
|
||||||
"path": "assets/path/璃月-璃月港-阿桂.json",
|
"path": "assets/path/璃月-璃月港-阿桂.json",
|
||||||
"_3d_foods": ["清心", "琉璃袋"]
|
"_3d_foods": ["清心", "琉璃袋"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"菲尔戈黛特": {
|
"菲尔戈黛特": {
|
||||||
"name": "菲尔戈黛特",
|
"name": "菲尔戈黛特",
|
||||||
@@ -70,7 +78,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/璃月-望舒客栈-菲尔戈黛特.json",
|
"path": "assets/path/璃月-望舒客栈-菲尔戈黛特.json",
|
||||||
"_3d_foods": ["松茸", "琉璃袋"]
|
"_3d_foods": ["松茸", "琉璃袋"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"丰泰": {
|
"丰泰": {
|
||||||
"name": "丰泰",
|
"name": "丰泰",
|
||||||
@@ -79,7 +88,8 @@
|
|||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/璃月-遗珑埠-丰泰.json",
|
"path": "assets/path/璃月-遗珑埠-丰泰.json",
|
||||||
"_3d_foods": ["沉玉仙茗", "琉璃袋", "绝云椒椒"],
|
"_3d_foods": ["沉玉仙茗", "琉璃袋", "绝云椒椒"],
|
||||||
"_7d_foods": ["蟹黃"]
|
"_7d_foods": ["蟹黄"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"连芳": {
|
"连芳": {
|
||||||
"name": "连芳",
|
"name": "连芳",
|
||||||
@@ -87,7 +97,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/璃月-遗珑埠-连芳.json",
|
"path": "assets/path/璃月-遗珑埠-连芳.json",
|
||||||
"_3d_foods": ["沉玉仙茗"]
|
"_3d_foods": ["沉玉仙茗"],
|
||||||
|
"tags": ["璃月"]
|
||||||
},
|
},
|
||||||
"Obata": {
|
"Obata": {
|
||||||
"name": "小畑",
|
"name": "小畑",
|
||||||
@@ -95,7 +106,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/稻妻-离岛-小畑.json",
|
"path": "assets/path/稻妻-离岛-小畑.json",
|
||||||
"_1d_foods": ["螃蟹","鱼肉", "虾仁"]
|
"_1d_foods": ["螃蟹","鱼肉", "虾仁"],
|
||||||
|
"tags": ["稻妻"]
|
||||||
},
|
},
|
||||||
"Aoi": {
|
"Aoi": {
|
||||||
"name": "葵",
|
"name": "葵",
|
||||||
@@ -103,7 +115,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/稻妻-稻妻城-葵.json",
|
"path": "assets/path/稻妻-稻妻城-葵.json",
|
||||||
"_1d_foods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "盐", "胡椒", "番茄"]
|
"_1d_foods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "盐", "胡椒", "番茄"],
|
||||||
|
"tags": ["稻妻"]
|
||||||
},
|
},
|
||||||
"ShimuraKanbei": {
|
"ShimuraKanbei": {
|
||||||
"name": "志村勘兵卫",
|
"name": "志村勘兵卫",
|
||||||
@@ -112,7 +125,8 @@
|
|||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/稻妻-稻妻城-志村勘兵卫.json",
|
"path": "assets/path/稻妻-稻妻城-志村勘兵卫.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹"],
|
"_1d_foods": ["鱼肉", "螃蟹"],
|
||||||
"_3d_foods": ["堇瓜"]
|
"_3d_foods": ["堇瓜"],
|
||||||
|
"tags": ["稻妻"]
|
||||||
},
|
},
|
||||||
"清子": {
|
"清子": {
|
||||||
"name": "清子",
|
"name": "清子",
|
||||||
@@ -120,7 +134,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/稻妻-海祇岛-清子.json",
|
"path": "assets/path/稻妻-海祇岛-清子.json",
|
||||||
"_7d_foods": ["牛奶", "番茄", "土豆", "小麦", "豆腐"]
|
"_7d_foods": ["牛奶", "番茄", "土豆", "小麦", "豆腐"],
|
||||||
|
"tags": ["稻妻"]
|
||||||
},
|
},
|
||||||
"Zhute": {
|
"Zhute": {
|
||||||
"name": "朱特",
|
"name": "朱特",
|
||||||
@@ -128,7 +143,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-须弥城-朱特.json",
|
"path": "assets/path/须弥-须弥城-朱特.json",
|
||||||
"_3d_foods": ["帕蒂沙兰"]
|
"_3d_foods": ["帕蒂沙兰"],
|
||||||
|
"tags": ["须弥"]
|
||||||
},
|
},
|
||||||
"Butrus": {
|
"Butrus": {
|
||||||
"name": "布特罗斯",
|
"name": "布特罗斯",
|
||||||
@@ -136,8 +152,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-奥摩斯港-布特罗斯.json",
|
"path": "assets/path/须弥-奥摩斯港-布特罗斯.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹", "虾仁"]
|
"_1d_foods": ["鱼肉", "螃蟹", "虾仁"],
|
||||||
|
"tags": ["须弥"]
|
||||||
},
|
},
|
||||||
"Pam": {
|
"Pam": {
|
||||||
"name": "珀姆",
|
"name": "珀姆",
|
||||||
@@ -145,8 +161,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-须弥城-珀姆.json",
|
"path": "assets/path/须弥-须弥城-珀姆.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹", "虾仁"]
|
"_1d_foods": ["鱼肉", "螃蟹", "虾仁"],
|
||||||
|
"tags": ["须弥"]
|
||||||
},
|
},
|
||||||
"Hamawi": {
|
"Hamawi": {
|
||||||
"name": "哈马维",
|
"name": "哈马维",
|
||||||
@@ -154,7 +170,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-须弥城-哈马维.json",
|
"path": "assets/path/须弥-须弥城-哈马维.json",
|
||||||
"_1d_foods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "盐", "胡椒", "番茄"]
|
"_1d_foods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "盐", "胡椒", "番茄"],
|
||||||
|
"tags": ["须弥"]
|
||||||
},
|
},
|
||||||
"Lambad": {
|
"Lambad": {
|
||||||
"name": "兰巴德",
|
"name": "兰巴德",
|
||||||
@@ -162,7 +179,8 @@
|
|||||||
"page": 3,
|
"page": 3,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-须弥城-兰巴德酒馆-兰巴德.json",
|
"path": "assets/path/须弥-须弥城-兰巴德酒馆-兰巴德.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹"]
|
"_1d_foods": ["鱼肉", "螃蟹"],
|
||||||
|
"tags": ["须弥","独立地图"]
|
||||||
},
|
},
|
||||||
"Enteka": {
|
"Enteka": {
|
||||||
"name": "恩忒卡",
|
"name": "恩忒卡",
|
||||||
@@ -170,16 +188,17 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-须弥城-普斯帕咖啡馆-恩忒卡.json",
|
"path": "assets/path/须弥-须弥城-普斯帕咖啡馆-恩忒卡.json",
|
||||||
"_1d_foods": ["咖啡豆"]
|
"_1d_foods": ["咖啡豆"],
|
||||||
}
|
"tags": ["须弥","独立地图"]
|
||||||
,
|
},
|
||||||
"Azalai": {
|
"Azalai": {
|
||||||
"name": "阿扎莱",
|
"name": "阿扎莱",
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "night",
|
"time": "night",
|
||||||
"path": "assets/path/须弥-阿如村-阿扎莱.json",
|
"path": "assets/path/须弥-阿如村-阿扎莱.json",
|
||||||
"_1d_foods": ["鱼肉", "兽肉", "秃秃豆"]
|
"_1d_foods": ["鱼肉", "兽肉", "秃秃豆"],
|
||||||
|
"tags": ["须弥", "黑心商人"]
|
||||||
},
|
},
|
||||||
"巴巴克": {
|
"巴巴克": {
|
||||||
"name": "巴巴克",
|
"name": "巴巴克",
|
||||||
@@ -187,7 +206,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/须弥-奥摩斯港-巴巴克.json",
|
"path": "assets/path/须弥-奥摩斯港-巴巴克.json",
|
||||||
"_3d_foods": ["清心", "琉璃袋"]
|
"_3d_foods": ["清心", "琉璃袋"],
|
||||||
|
"tags": ["须弥"]
|
||||||
},
|
},
|
||||||
"Boucicaut": {
|
"Boucicaut": {
|
||||||
"name": "布希柯",
|
"name": "布希柯",
|
||||||
@@ -195,7 +215,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/枫丹-枫丹廷-布希柯.json",
|
"path": "assets/path/枫丹-枫丹廷-布希柯.json",
|
||||||
"_1d_foods": ["枫达", "洋葱", "牛奶", "卷心菜", "土豆", "小麦", "秃秃豆", "杏仁", "发酵果实汁", "盐", "胡椒", "番茄"]
|
"_1d_foods": ["枫达", "洋葱", "牛奶", "卷心菜", "土豆", "小麦", "秃秃豆", "杏仁", "发酵果实汁", "盐", "胡椒", "番茄"],
|
||||||
|
"tags": ["枫丹"]
|
||||||
},
|
},
|
||||||
"Arouet": {
|
"Arouet": {
|
||||||
"name": "阿鲁埃",
|
"name": "阿鲁埃",
|
||||||
@@ -203,7 +224,8 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/枫丹-枫丹廷-阿鲁埃.json",
|
"path": "assets/path/枫丹-枫丹廷-阿鲁埃.json",
|
||||||
"_1d_foods": ["咖啡豆", "枫达"]
|
"_1d_foods": ["咖啡豆", "枫达"],
|
||||||
|
"tags": ["枫丹"]
|
||||||
},
|
},
|
||||||
"Antman": {
|
"Antman": {
|
||||||
"name": "安特曼",
|
"name": "安特曼",
|
||||||
@@ -212,7 +234,8 @@
|
|||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/枫丹-白淞镇-安特曼.json",
|
"path": "assets/path/枫丹-白淞镇-安特曼.json",
|
||||||
"_1d_foods": ["鱼肉", "螃蟹"],
|
"_1d_foods": ["鱼肉", "螃蟹"],
|
||||||
"_3d_foods": ["海露花", "汐藻"]
|
"_3d_foods": ["海露花", "汐藻"],
|
||||||
|
"tags": ["枫丹"]
|
||||||
},
|
},
|
||||||
"皮托": {
|
"皮托": {
|
||||||
"name": "皮托",
|
"name": "皮托",
|
||||||
@@ -221,7 +244,8 @@
|
|||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/枫丹-锈舵酒馆-皮托.json",
|
"path": "assets/path/枫丹-锈舵酒馆-皮托.json",
|
||||||
"_1d_foods": ["牛奶"],
|
"_1d_foods": ["牛奶"],
|
||||||
"_7d_foods": ["培根", "火腿", "香肠", "奶酪"]
|
"_7d_foods": ["培根", "火腿", "香肠", "奶酪"],
|
||||||
|
"tags": ["枫丹", "黑心商人"]
|
||||||
},
|
},
|
||||||
"钦特利": {
|
"钦特利": {
|
||||||
"name": "钦特利",
|
"name": "钦特利",
|
||||||
@@ -229,7 +253,8 @@
|
|||||||
"page": 1,
|
"page": 1,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/纳塔-圣火竞技场-钦特利.json",
|
"path": "assets/path/纳塔-圣火竞技场-钦特利.json",
|
||||||
"_3d_foods": ["青蜜莓", "苦种"]
|
"_3d_foods": ["青蜜莓", "苦种"],
|
||||||
|
"tags": ["纳塔"]
|
||||||
},
|
},
|
||||||
"夏安卡": {
|
"夏安卡": {
|
||||||
"name": "夏安卡",
|
"name": "夏安卡",
|
||||||
@@ -237,7 +262,8 @@
|
|||||||
"page": 3,
|
"page": 3,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/纳塔-圣火竞技场-夏安卡.json",
|
"path": "assets/path/纳塔-圣火竞技场-夏安卡.json",
|
||||||
"_7d_foods": ["蟹黃"]
|
"_7d_foods": ["蟹黄"],
|
||||||
|
"tags": ["纳塔"]
|
||||||
},
|
},
|
||||||
"Bunama": {
|
"Bunama": {
|
||||||
"name": "布纳马",
|
"name": "布纳马",
|
||||||
@@ -245,18 +271,18 @@
|
|||||||
"page": 2,
|
"page": 2,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/纳塔-圣火竞技场-布纳马.json",
|
"path": "assets/path/纳塔-圣火竞技场-布纳马.json",
|
||||||
"_1d_foods": ["盐", "胡椒", "小麦", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "秃秃豆"]
|
"_1d_foods": ["盐", "胡椒", "小麦", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "秃秃豆"],
|
||||||
}
|
"tags": ["纳塔"]
|
||||||
,
|
},
|
||||||
"采若": {
|
"采若": {
|
||||||
"name": "采若",
|
"name": "采若",
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"page": 3,
|
"page": 3,
|
||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/挪德卡莱-那夏镇-采若.json",
|
"path": "assets/path/挪德卡莱-那夏镇-采若.json",
|
||||||
"_1d_foods": ["黑麦", "盐", "胡椒", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "小麦"]
|
"_1d_foods": ["黑麦", "盐", "胡椒", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "小麦"],
|
||||||
}
|
"tags": ["挪德卡莱"]
|
||||||
,
|
},
|
||||||
"科菲策": {
|
"科菲策": {
|
||||||
"name": "科菲策",
|
"name": "科菲策",
|
||||||
"enable": true,
|
"enable": true,
|
||||||
@@ -264,8 +290,7 @@
|
|||||||
"time": "any",
|
"time": "any",
|
||||||
"path": "assets/path/挪德卡莱-皮拉米达城-科菲策.json",
|
"path": "assets/path/挪德卡莱-皮拉米达城-科菲策.json",
|
||||||
"_1d_foods": ["牛奶", "咖啡豆"],
|
"_1d_foods": ["牛奶", "咖啡豆"],
|
||||||
"_3d_foods": ["微光角菌", "琉鳞石"]
|
"_3d_foods": ["微光角菌", "琉鳞石"],
|
||||||
|
"tags": ["挪德卡莱"]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
@@ -126,10 +126,10 @@ async function loadExternalData() {
|
|||||||
foodsData = JSON.parse(foodsContent);
|
foodsData = JSON.parse(foodsContent);
|
||||||
logConditional(`已加载商品数据: ${Object.keys(foodsData).length} 种商品`);
|
logConditional(`已加载商品数据: ${Object.keys(foodsData).length} 种商品`);
|
||||||
|
|
||||||
// 加载NPC数据
|
// 加载商人数据
|
||||||
const npcsContent = await file.readText("assets/data/npcs.json");
|
const npcsContent = await file.readText("assets/data/npcs.json");
|
||||||
npcData = JSON.parse(npcsContent);
|
npcData = JSON.parse(npcsContent);
|
||||||
logConditional(`已加载NPC数据: ${Object.keys(npcData).length} 个NPC`);
|
logConditional(`已加载商人数据: ${Object.keys(npcData).length} 个商人`);
|
||||||
|
|
||||||
// 解析用户要购买的商品列表
|
// 解析用户要购买的商品列表
|
||||||
const foodsInput = (settings.foodsToBuy || "").trim();
|
const foodsInput = (settings.foodsToBuy || "").trim();
|
||||||
@@ -234,10 +234,16 @@ let userName = settings.userName || "默认账户";
|
|||||||
const ignoreRecords = settings.ignoreRecords || false;
|
const ignoreRecords = settings.ignoreRecords || false;
|
||||||
const recordDebug = settings.recordDebug || false;
|
const recordDebug = settings.recordDebug || false;
|
||||||
|
|
||||||
// 解析禁用的NPC列表
|
// 解析禁用的商人列表
|
||||||
const disabledNpcs = (settings.disabledNpcs || "").split(/\s+/).filter(npc => npc.trim() !== "");
|
const disabledNpcs = (settings.disabledNpcs || "").split(/\s+/).filter(npc => npc.trim() !== "");
|
||||||
if (disabledNpcs.length > 0) {
|
if (disabledNpcs.length > 0) {
|
||||||
log.info(`已禁用NPC: ${disabledNpcs.join(", ")}`);
|
log.info(`已禁用商人: ${disabledNpcs.join(", ")}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析禁用的标签列表
|
||||||
|
const disabledTags = (settings.disabledTags || "").split(/\s+/).filter(tag => tag.trim() !== "");
|
||||||
|
if (disabledTags.length > 0) {
|
||||||
|
log.info(`已禁用标签: ${disabledTags.join(", ")}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改AKF设置处理
|
// 修改AKF设置处理
|
||||||
@@ -283,7 +289,7 @@ async function ensureAccountDirectory(accountName) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 新增函数:读取NPC记录文件 ====================
|
// ==================== 新增函数:读取商人记录文件 ====================
|
||||||
async function loadNpcRecords() {
|
async function loadNpcRecords() {
|
||||||
const recordPath = getRecordPath(userName);
|
const recordPath = getRecordPath(userName);
|
||||||
try {
|
try {
|
||||||
@@ -297,7 +303,20 @@ async function loadNpcRecords() {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 保存NPC记录 ====================
|
// ==================== 辅助函数:从路径中提取显示名称 ====================
|
||||||
|
function getDisplayNameFromPath(path) {
|
||||||
|
try {
|
||||||
|
// 从路径中提取文件名(不带.json扩展名)
|
||||||
|
// 例如:assets/path/璃月-璃月港-阿桂.json → 璃月-璃月港-阿桂
|
||||||
|
const fileName = path.split('/').pop(); // 获取最后一部分
|
||||||
|
return fileName.replace('.json', ''); // 移除.json扩展名
|
||||||
|
} catch (error) {
|
||||||
|
// 如果解析失败,返回原始路径或默认值
|
||||||
|
return path || "未知位置";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==================== 保存商人记录 ====================
|
||||||
async function saveNpcRecords(records) {
|
async function saveNpcRecords(records) {
|
||||||
const recordPath = getRecordPath(userName);
|
const recordPath = getRecordPath(userName);
|
||||||
try {
|
try {
|
||||||
@@ -309,12 +328,12 @@ async function saveNpcRecords(records) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 获取NPC记录 ====================
|
// ==================== 获取商人记录 ====================
|
||||||
function getNpcRecord(records, npcName) {
|
function getNpcRecord(records, npcName) {
|
||||||
return records.find(record => record.npcname === npcName);
|
return records.find(record => record.npcname === npcName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 更新NPC记录 ====================
|
// ==================== 更新商人记录 ====================
|
||||||
function updateNpcRecord(records, npcName, refreshType, purchasedItems) {
|
function updateNpcRecord(records, npcName, refreshType, purchasedItems) {
|
||||||
// 如果没有购买任何商品,不更新记录
|
// 如果没有购买任何商品,不更新记录
|
||||||
if (!purchasedItems || purchasedItems.length === 0) {
|
if (!purchasedItems || purchasedItems.length === 0) {
|
||||||
@@ -393,7 +412,7 @@ function updateNpcRecord(records, npcName, refreshType, purchasedItems) {
|
|||||||
return records;
|
return records;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 新增函数:计算基准日周期 ====================
|
// ==================== 计算3天刷新商品基准日周期 ====================
|
||||||
function getBasePeriod(currentDate) {
|
function getBasePeriod(currentDate) {
|
||||||
// 基准时间:2025-08-08 20:00 UTC (对应2025-08-09 04:00 GMT+8)
|
// 基准时间:2025-08-08 20:00 UTC (对应2025-08-09 04:00 GMT+8)
|
||||||
const baseTime = Date.UTC(2025, 7, 8, 20, 0, 0);
|
const baseTime = Date.UTC(2025, 7, 8, 20, 0, 0);
|
||||||
@@ -797,19 +816,22 @@ async function spikChat(npcName) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改后的购买逻辑
|
// 主要购买逻辑
|
||||||
async function buyFoods(npcName, npcRecords, currentPeriod) {
|
async function buyFoods(npcName, npcRecords, currentPeriod) {
|
||||||
// 设置脚本环境的游戏分辨率和DPI缩放
|
// 设置脚本环境的游戏分辨率和DPI缩放
|
||||||
setGameMetrics(3840, 2160, 1.5);
|
setGameMetrics(3840, 2160, 1.5);
|
||||||
|
|
||||||
// 获取NPC数据
|
// 获取商人数据
|
||||||
const npc = npcData[npcName];
|
const npc = npcData[npcName];
|
||||||
const npcRecord = getNpcRecord(npcRecords, npc.name);
|
const npcRecord = getNpcRecord(npcRecords, npc.name);
|
||||||
|
|
||||||
|
// 获取显示名称
|
||||||
|
const displayName = getDisplayNameFromPath(npc.path);
|
||||||
|
|
||||||
if (recordDebug) {
|
if (recordDebug) {
|
||||||
log.info(`[调试] 开始处理NPC: ${npc.name}`);
|
log.info(`[调试] 开始处理: ${displayName}`);
|
||||||
if (npcRecord) {
|
if (npcRecord) {
|
||||||
log.info(`[调试] NPC当前记录: 1d=${npcRecord["1d_time"] || "无"}, 3d=${npcRecord["3d_time"] || "无"}, 7d=${npcRecord["7d_time"] || "无"}`);
|
log.info(`[调试] 当前记录: 1d=${npcRecord["1d_time"] || "无"}, 3d=${npcRecord["3d_time"] || "无"}, 7d=${npcRecord["7d_time"] || "无"}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -817,7 +839,7 @@ async function buyFoods(npcName, npcRecords, currentPeriod) {
|
|||||||
const foodsToBuy = shouldBuyFoods(npc, npcRecord, currentPeriod, ignoreRecords);
|
const foodsToBuy = shouldBuyFoods(npc, npcRecord, currentPeriod, ignoreRecords);
|
||||||
|
|
||||||
if (recordDebug) {
|
if (recordDebug) {
|
||||||
log.info(`[调试] ${npc.name} 购买判断结果:`);
|
log.info(`[调试] ${displayName} 购买判断结果:`);
|
||||||
log.info(`[调试] 1天商品: ${foodsToBuy["1d"].join(", ")}`);
|
log.info(`[调试] 1天商品: ${foodsToBuy["1d"].join(", ")}`);
|
||||||
log.info(`[调试] 3天商品: ${foodsToBuy["3d"].join(", ")}`);
|
log.info(`[调试] 3天商品: ${foodsToBuy["3d"].join(", ")}`);
|
||||||
log.info(`[调试] 7天商品: ${foodsToBuy["7d"].join(", ")}`);
|
log.info(`[调试] 7天商品: ${foodsToBuy["7d"].join(", ")}`);
|
||||||
@@ -830,7 +852,7 @@ async function buyFoods(npcName, npcRecords, currentPeriod) {
|
|||||||
if (foodsToBuy["7d"]) allFoodsToBuy.push(...foodsToBuy["7d"]);
|
if (foodsToBuy["7d"]) allFoodsToBuy.push(...foodsToBuy["7d"]);
|
||||||
|
|
||||||
if (allFoodsToBuy.length === 0) {
|
if (allFoodsToBuy.length === 0) {
|
||||||
logConditional(`${npc.name} 没有需要购买的商品`);
|
logConditional(`${displayName} 没有需要购买的商品`);
|
||||||
return {
|
return {
|
||||||
purchased: [],
|
purchased: [],
|
||||||
"1d": [],
|
"1d": [],
|
||||||
@@ -839,7 +861,7 @@ async function buyFoods(npcName, npcRecords, currentPeriod) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
logConditional(`${npc.name} 购买列表: ${allFoodsToBuy.join(", ")}`);
|
logConditional(`${displayName} 购买列表: ${allFoodsToBuy.join(", ")}`);
|
||||||
|
|
||||||
let tempFoods = [...allFoodsToBuy];
|
let tempFoods = [...allFoodsToBuy];
|
||||||
const purchasedFoods = [];
|
const purchasedFoods = [];
|
||||||
@@ -951,9 +973,9 @@ async function buyFoods(npcName, npcRecords, currentPeriod) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (purchasedFoods.length > 0) {
|
if (purchasedFoods.length > 0) {
|
||||||
log.info(`${npc.name} 购买完成,成功购买: ${purchasedFoods.join(", ")}`);
|
log.info(`${displayName} 购买完成,成功购买: ${purchasedFoods.join(", ")}`);
|
||||||
} else {
|
} else {
|
||||||
logConditional(`${npc.name} 没有成功购买任何商品`);
|
logConditional(`${displayName} 没有成功购买任何商品`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回购买结果
|
// 返回购买结果
|
||||||
@@ -965,16 +987,27 @@ async function buyFoods(npcName, npcRecords, currentPeriod) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改后的初始化NPC商品
|
// 初始化商人商品
|
||||||
async function initNpcData(records) {
|
async function initNpcData(records) {
|
||||||
for (let [key, npc] of Object.entries(npcData)) {
|
for (let [key, npc] of Object.entries(npcData)) {
|
||||||
// 检查是否在禁用列表中
|
// 检查是否在禁用列表中
|
||||||
if (disabledNpcs.includes(npc.name)) {
|
if (disabledNpcs.includes(npc.name)) {
|
||||||
npc.enable = false;
|
npc.enable = false;
|
||||||
logConditional(`已禁用NPC: ${npc.name}`);
|
const displayName = getDisplayNameFromPath(npc.path);
|
||||||
|
logConditional(`已禁用: ${displayName}`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查是否通过标签禁用
|
||||||
|
if (npc.tags && Array.isArray(npc.tags)) {
|
||||||
|
const hasDisabledTag = npc.tags.some(tag => disabledTags.includes(tag));
|
||||||
|
if (hasDisabledTag) {
|
||||||
|
npc.enable = false;
|
||||||
|
logConditional(`按标签禁用NPC: ${npc.name} (标签: ${npc.tags.join(", ")})`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const npcRecord = getNpcRecord(records, npc.name);
|
const npcRecord = getNpcRecord(records, npc.name);
|
||||||
|
|
||||||
// 判断是否需要强制刷新
|
// 判断是否需要强制刷新
|
||||||
@@ -993,7 +1026,8 @@ async function initNpcData(records) {
|
|||||||
npc.enable = npc.enable && hasFoodsToBuy;
|
npc.enable = npc.enable && hasFoodsToBuy;
|
||||||
|
|
||||||
if (recordDebug && !npc.enable && hasFoodsToBuy) {
|
if (recordDebug && !npc.enable && hasFoodsToBuy) {
|
||||||
log.info(`${npc.name} 有商品需要购买但NPC被禁用`);
|
const displayName = getDisplayNameFromPath(npc.path);
|
||||||
|
log.info(`${displayName} 有商品需要购买但商人被禁用`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1033,7 +1067,7 @@ async function initRo() {
|
|||||||
|
|
||||||
// ==================== 加载外部数据 ====================
|
// ==================== 加载外部数据 ====================
|
||||||
if (!await loadExternalData()) {
|
if (!await loadExternalData()) {
|
||||||
log.error("商品或NPC数据加载失败,脚本终止");
|
log.error("商品或商人数据加载失败,脚本终止");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1042,13 +1076,13 @@ async function initRo() {
|
|||||||
|
|
||||||
logConditional("识别对象初始化完成");
|
logConditional("识别对象初始化完成");
|
||||||
|
|
||||||
// ==================== 加载NPC购买记录 ====================
|
// ==================== 加载商人购买记录 ====================
|
||||||
let npcRecords = await loadNpcRecords();
|
let npcRecords = await loadNpcRecords();
|
||||||
|
|
||||||
logConditional(`已加载 ${npcRecords.length} 个NPC的购买记录`);
|
logConditional(`已加载 ${npcRecords.length} 个商人的购买记录`);
|
||||||
|
|
||||||
if (recordDebug && npcRecords.length > 0) {
|
if (recordDebug && npcRecords.length > 0) {
|
||||||
log.info("[调试] 当前NPC记录:");
|
log.info("[调试] 当前商人记录:");
|
||||||
npcRecords.forEach(record => {
|
npcRecords.forEach(record => {
|
||||||
log.info(`[调试] ${record.npcname}:`);
|
log.info(`[调试] ${record.npcname}:`);
|
||||||
if (record["1d_time"]) log.info(`[调试] 1天刷新: ${record["1d_time"]}`);
|
if (record["1d_time"]) log.info(`[调试] 1天刷新: ${record["1d_time"]}`);
|
||||||
@@ -1057,14 +1091,14 @@ async function initRo() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 初始化NPC数据 ====================
|
// ==================== 初始化商人数据 ====================
|
||||||
await initNpcData(npcRecords);
|
await initNpcData(npcRecords);
|
||||||
|
|
||||||
logConditional("NPC数据初始化完成");
|
logConditional("商人数据初始化完成");
|
||||||
|
|
||||||
// 统计启用的NPC数量
|
// 统计启用的商人数量
|
||||||
const enabledNpcs = Object.values(npcData).filter(npc => npc.enable);
|
const enabledNpcs = Object.values(npcData).filter(npc => npc.enable);
|
||||||
log.info(`本次执行将处理 ${enabledNpcs.length} 个NPC`);
|
log.info(`本次执行将处理 ${enabledNpcs.length} 个商人`);
|
||||||
|
|
||||||
// ==================== 自动购买 ====================
|
// ==================== 自动购买 ====================
|
||||||
// 获取当前时间和周期
|
// 获取当前时间和周期
|
||||||
@@ -1080,13 +1114,15 @@ async function initRo() {
|
|||||||
for (let [key, npc] of Object.entries(npcData)) {
|
for (let [key, npc] of Object.entries(npcData)) {
|
||||||
if (npc.enable) {
|
if (npc.enable) {
|
||||||
npcIndex++;
|
npcIndex++;
|
||||||
|
// 获取显示名称(从路径中提取)
|
||||||
|
const displayName = getDisplayNameFromPath(npc.path);
|
||||||
log.info(`当前进度:${npcIndex}/${enabledNpcs.length}`);
|
log.info(`当前进度:${npcIndex}/${enabledNpcs.length}`);
|
||||||
log.info(`开始前往NPC ${npc.name} 购买`);
|
log.info(`开始前往: ${displayName}`); // 修改这里
|
||||||
|
|
||||||
await genshin.returnMainUi();
|
await genshin.returnMainUi();
|
||||||
|
|
||||||
// 地图追踪开始
|
// 地图追踪开始
|
||||||
await fakeLog(npc.name, false, true, 0);
|
await fakeLog(displayName, false, true, 0);
|
||||||
|
|
||||||
// 设置游戏时间
|
// 设置游戏时间
|
||||||
if (npc.time === "night") {
|
if (npc.time === "night") {
|
||||||
@@ -1104,20 +1140,20 @@ async function initRo() {
|
|||||||
|
|
||||||
// 返回主界面
|
// 返回主界面
|
||||||
await genshin.returnMainUi();
|
await genshin.returnMainUi();
|
||||||
log.info(`完成购买NPC: ${npc.name}`);
|
log.info(`完成: ${displayName}`);
|
||||||
|
|
||||||
// 伪造日志任务结束
|
// 伪造日志任务结束
|
||||||
await fakeLog(npc.name, false, false, 0);
|
await fakeLog(displayName, false, false, 0);
|
||||||
|
|
||||||
// NPC之间等待
|
// 商人之间等待
|
||||||
if (npcIndex < enabledNpcs.length) {
|
if (npcIndex < enabledNpcs.length) {
|
||||||
logConditional("等待2秒后处理下一个NPC");
|
logConditional("等待1.5秒后处理下一个商人");
|
||||||
await sleep(2000);
|
await sleep(1500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (recordDebug) {
|
if (recordDebug) {
|
||||||
log.info(`[调试] 跳过未启用的NPC: ${npc.name}`);
|
log.info(`[调试] 跳过未启用的商人: ${npc.name}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 1,
|
"manifest_version": 1,
|
||||||
"name": "自动购买每天&3天&每周刷新商品",
|
"name": "自动购买每天&3天&每周刷新商品",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"description": "自动购买每天&3天&每周刷新商品\n每天刷新商品:自动购买商品\n3天刷新商品:未到刷新日不购买该商品\n每周刷新商品:可指定每周购买商品",
|
"description": "自动购买每天&3天&每周刷新商品\n每天刷新商品:自动购买商品\n3天刷新商品:未到刷新日不购买该商品\n每周刷新商品:可指定每周购买商品",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
{
|
{
|
||||||
"name": "foodsToBuy",
|
"name": "foodsToBuy",
|
||||||
"type": "input-text",
|
"type": "input-text",
|
||||||
"label": "要购买的商品(多个商品用空格分隔)\n示例:\"小麦 黑麦\"\n支援的 商人与商品详细 请前往 README.md 查看",
|
"label": "要购买的商品(多个商品用空格分隔)\n示例:\"小麦 黑麦\"\n\n支援的 商人与商品详细 请前往 README.md 查看\n建议直接复制商品名称贴上输入栏",
|
||||||
"default": "小麦 黑麦"
|
"default": "小麦 黑麦"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -33,6 +33,12 @@
|
|||||||
"label": "要禁用的NPC\n(多个NPC用空格分隔)\n示例:阿扎莱 皮托",
|
"label": "要禁用的NPC\n(多个NPC用空格分隔)\n示例:阿扎莱 皮托",
|
||||||
"default": "阿扎莱 皮托"
|
"default": "阿扎莱 皮托"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "disabledTags",
|
||||||
|
"type": "input-text",
|
||||||
|
"label": "禁用标签\n(多个标签以空格分隔,如:黑心商人 挪德卡莱)",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "ignoreRecords",
|
"name": "ignoreRecords",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
@@ -5,16 +5,16 @@
|
|||||||
- **查看`assets/data/foods.json`**:所有商品的中文名称
|
- **查看`assets/data/foods.json`**:所有商品的中文名称
|
||||||
|
|
||||||
### 商人信息总览
|
### 商人信息总览
|
||||||
| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 备注 |
|
| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 标签 |
|
||||||
|--------|--------|-------------|------------|-------------|------|
|
|--------|--------|-------------|------------|-------------|------|
|
||||||
| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | 白天出现 |
|
| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | |
|
||||||
| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | 晚上出现 |
|
| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
||||||
| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - |
|
| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - |
|
||||||
| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | |
|
| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | |
|
||||||
| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | |
|
| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | |
|
||||||
| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | 白天出现 |
|
| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | |
|
||||||
| 璃月-璃月港 | 老高 | 鱼肉 | - | - | |
|
| 璃月-璃月港 | 老高 | 鱼肉、鱼肉2 | - | - | |
|
||||||
| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | 晚上出现 |
|
| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | |
|
||||||
| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | |
|
| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | |
|
||||||
| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | |
|
| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | |
|
||||||
| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | |
|
| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | |
|
||||||
@@ -28,14 +28,19 @@
|
|||||||
| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | |
|
| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | |
|
||||||
| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 |
|
| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 |
|
||||||
| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 |
|
| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 |
|
||||||
| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 晚上出现 |
|
| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 黑心商人 |
|
||||||
| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | |
|
| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | |
|
||||||
| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | |
|
| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | |
|
||||||
| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | |
|
| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | |
|
||||||
| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | |
|
| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | |
|
||||||
| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | |
|
| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | 黑心商人 |
|
||||||
| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | |
|
| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | |
|
||||||
| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | |
|
| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | |
|
||||||
| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | |
|
| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | |
|
||||||
| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
||||||
| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | |
|
| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | 黑心商人 |
|
||||||
|
|
||||||
|
- 独立地图:指需要进入独立空间的特殊地图,这些地图部份路径无法使用地图追踪功能
|
||||||
|
- 黑心商人:指没有折扣的商人,价格较贵的商人
|
||||||
|
|
||||||
|
### **标签系统尚未完全添加,欢迎补充标签**
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
商人信息表
|
|
||||||
|
|
||||||
| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 备注 |
|
|
||||||
|--------|--------|-------------|------------|-------------|------|
|
|
||||||
| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | 白天出现 |
|
|
||||||
| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | 晚上出现 |
|
|
||||||
| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - |
|
|
||||||
| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | |
|
|
||||||
| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | |
|
|
||||||
| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | 白天出现 |
|
|
||||||
| 璃月-璃月港 | 老高 | 鱼肉 | - | - | |
|
|
||||||
| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | 晚上出现 |
|
|
||||||
| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | |
|
|
||||||
| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | |
|
|
||||||
| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | |
|
|
||||||
| 稻妻-离岛 | 小畑 | 螃蟹、鱼肉、虾仁 | - | - | |
|
|
||||||
| 稻妻-稻妻城 | 葵 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | |
|
|
||||||
| 稻妻-稻妻城 | 志村勘兵卫 | 鱼肉、螃蟹 | 堇瓜 | - | |
|
|
||||||
| 稻妻-海祇岛 | 清子 | - | - | 牛奶、番茄、土豆、小麦、豆腐 | |
|
|
||||||
| 须弥-须弥城 | 朱特 | - | 帕蒂沙兰 | - | |
|
|
||||||
| 须弥-奥摩斯港 | 布特罗斯 | 鱼肉、螃蟹、虾仁 | - | - | |
|
|
||||||
| 须弥-须弥城 | 珀姆 | 鱼肉、螃蟹、虾仁 | - | - | |
|
|
||||||
| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | |
|
|
||||||
| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 |
|
|
||||||
| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 |
|
|
||||||
| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 晚上出现 |
|
|
||||||
| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | |
|
|
||||||
| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | |
|
|
||||||
| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | |
|
|
||||||
| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | |
|
|
||||||
| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | |
|
|
||||||
| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | |
|
|
||||||
| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | |
|
|
||||||
| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | |
|
|
||||||
| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | |
|
|
||||||
| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | |
|
|
||||||