diff --git a/repo/js/自动购买每天&3天&每周刷新食材/README.md b/repo/js/自动购买每天&3天&每周刷新食材/README.md index 2f4585d2e..496ad5816 100644 --- a/repo/js/自动购买每天&3天&每周刷新食材/README.md +++ b/repo/js/自动购买每天&3天&每周刷新食材/README.md @@ -1,248 +1,197 @@ -# 自动购买每天&3天&每周刷新食材 - 使用说明 +# 自动购买商品 - 使用说明 -## 功能说明 +## 🚀 快速开始 -这个脚本可以自动购买原神游戏中各个商人的食材,支持三种刷新周期: -- **每天刷新食材**:每天凌晨4点刷新 -- **3天刷新食材**:每3天刷新一次 -- **每周刷新食材**:每周刷新,可指定购买日 -- **智能记录系统**:避免重复购买,只购买刷新后的商品 +### 1. 基本设置 +1. **账号名**:填写账号名,用于区分不同账号的购买记录 +2. **要购买的商品**:输入商品名称,用空格分隔(支援的商人与商品请查看下方表格) + ``` + 示例:盐 胡椒 螃蟹 圣水 松茸 沉玉仙茗 蟹黄 + ``` +3. **每周商品购买方式**: + - 0:跟随游戏系统周期自动判断 + - 1-7:指定周几购买(1=周一,7=周日) +4. **要禁用的NPC**:不想购买的NPC,用空格分隔 + ``` + 示例:阿扎莱 皮托 + ``` +5. **无视购买记录强制购买**:开启后会忽略购买记录,重新购买所有商品 +6. **调试模式**:开启后显示详细执行日志 -## 快速开始 +### 2. 智能购买记录系统 +脚本会自动记录购买时间,避免重复购买: +- **每天商品**:购买后24小时(凌晨4点)刷新 +- **3天商品**:购买后3天刷新 +- **每周商品**:购买后7天刷新(可设置购买日) -### 1. 准备工作 -- 游戏分辨率:**1920×1080 解析度** -- 游戏内时间需可调整(非多人模式) -- 准备足够的摩拉购买食材 +购买记录保存在:`record/你填的账号名/records.json` +- 下次执行时只购买已刷新商品 +- 可通过"无视购买记录强制购买"选项重置 -### 2. 首次使用 -1. 打开脚本设置界面 -2. 勾选要购买的食材 -3. 设置每周食材购买日 -4. 保存设置 -5. 在主界面运行脚本 +### 3. 运行脚本 +1. 确保游戏分辨率设置为 **1920×1080** +2. 游戏角色需在单人模式 +3. 确保有足够的摩拉和背包空间 +4. 运行脚本即可自动购买 -## 设置说明 -- **账号名**:区分不同账号的记录 -- **无视记录强制购买**:不推荐开启,会重复购买 -- **记录调试模式**:显示详细日志信息 -- **禁用NPC功能**:可以输入要禁用的NPC名称(空格分隔): - ``` - 布兰琪 东升 莎拉 - ``` +## 📋 商人与商品支持表 - 禁用后,脚本会跳过这些NPC,不会前往购买。 +### 如何查看支持的商品? +- **查看本文件下方表格**:包含所有支持的商人与商品 +- **查看`assets/data/foods.json`**:所有商品的中文名称 -### 食材设置 -食材分为三类,可以单独选择是否购买: -1. **每天刷新食材** - 每天凌晨4点刷新 -2. **3天刷新食材** - 每3天刷新一次 -3. **每周刷新食材** - 每周固定週一购买 +### 商人信息总览 +| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 备注 | +|--------|--------|-------------|------------|-------------|------| +| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | 白天出现 | +| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | 晚上出现 | +| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - | +| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | | +| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | | +| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | 白天出现 | +| 璃月-璃月港 | 老高 | 鱼肉 | - | - | | +| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | 晚上出现 | +| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | | +| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | | +| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | | +| 稻妻-离岛 | 小畑 | 螃蟹、鱼肉、虾仁 | - | - | | +| 稻妻-稻妻城 | 葵 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | | +| 稻妻-稻妻城 | 志村勘兵卫 | 鱼肉、螃蟹 | 堇瓜 | - | | +| 稻妻-海祇岛 | 清子 | - | - | 牛奶、番茄、土豆、小麦、豆腐 | | +| 须弥-须弥城 | 朱特 | - | 帕蒂沙兰 | - | | +| 须弥-奥摩斯港 | 布特罗斯 | 鱼肉、螃蟹、虾仁 | - | - | | +| 须弥-须弥城 | 珀姆 | 鱼肉、螃蟹、虾仁 | - | - | | +| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | | +| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 | +| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 | +| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 晚上出现 | +| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | | +| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | | +| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | | +| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | | +| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | | +| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | | +| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | | +| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | | +| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | | +| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | | -### 购买日设置 -- **0**:跟随游戏系统周期自动判断 -- **1-7**:指定週几购买(1=週一,7=週日) +## 🔧 添加新商品 -## 调试模式 +### 1. 添加商品图片 +1. 截图商品图标,尺寸建议 90×90 像素 +2. 保存为 PNG 格式,放在 `assets/images/` 目录下 +3. 文件名建议使用英文或拼音,如:`new_food.png` -开启`记录调试模式`后,会显示详细执行信息: - -``` -[调试] 开始处理NPC: 布兰琪 -[调试] NPC当前记录: {npcname: "布兰琪", 1d_time: "2024-12-10T04:00:00+08:00"} -[调试] 购买判断结果: -[调试] 1天商品: 盐, 胡椒, 洋葱 -[调试] 开始购买第 1 页 -[调试] 尝试购买: 盐 -[调试] 找到物品: 盐 位置(100,200,90,90) -购买成功: 盐 -交互或拾取:"盐" -``` - -```json -## 数据文件说明 - -脚本使用外部数据文件,方便维护: - -### 食材数据 (assets/data/foods.json) -```json -{ - "盐": { - "id": "盐", - "name": "盐", - "file": "assets/images/salt.png" - } -} -``` - -### NPC数据 (assets/data/npcs.json) -```json -{ - "布兰琪": { - "name": "布兰琪", - "enable": true, - "page": 2, - "time": "night", - "path": "assets/path/蒙德-蒙德城-布兰琪.json", - "_1d_foods": ["盐", "胡椒", "洋葱"] - } -} -``` - -### 图片要求 -- 尺寸:90×90像素 -- 格式:PNG -- 路径:assets/images/ - -### 路径文件 -- 格式:JSON -- 路径:assets/path/ - -## 添加新食材 - -### 1. 添加食材图片 -将食材截图保存为`assets/images/新食材.png` -- 食材图片:85×85像素PNG格式 - -### 2. 添加食材设置 -在`settings.json`中添加: -```json -{ - "name": "新食材", - "type": "checkbox", - "label": "新食材", - "default": false -} -``` - -### 3. 添加食材数据 -在`assets/data/foods.json`中添加: -```json -"新食材": { - "id": "新食材", - "name": "新食材", - "file": "assets/images/新食材.png" -} -``` - -### 4. 添加NPC数据 -在`assets/data/npcs.json`中为对应的NPC添加: -```json -"_1d_foods": ["新食材"] // 根据刷新周期选择 -``` - -## 如何添加新的NPC商人 -### 准备工作 -1. 路径文件:錄製前往NPC的路径JSON文件 -2. 命名规则:`国家-地区-NPC名称.json` -### 添加步骤 - -#### 1. 添加食材数据(如未添加) +### 2. 添加商品数据 在 `assets/data/foods.json` 中添加: + ```json -"新食材": { - "id": "新食材", - "name": "新食材", - "file": "assets/images/新食材.png" +"new_food": { + "id": "new_food", + "name": "新商品", + "file": "assets/images/new_food.png" } ``` -在 `settings.json` 对应区域添加食材选项。 +### 3. 添加到商人 +在 `assets/data/npcs.json` 中找到对应商人,添加到相应的商品列表中: -#### 2. 添加NPC数据 +```json +"_1d_foods": ["新商品"] // 每天刷新商品 +"_3d_foods": ["新商品"] // 3天刷新商品 +"_7d_foods": ["新商品"] // 每周刷新商品 +``` + +### 4. 更新商人与商品支持表 +将新商品添加到本文件的商人与商品支持表中,方便其他用户查看。 + +## 🆕 添加新商人 + +### 1. 录制路径 +1. 使用路径录制工具录制前往商人的路径 +2. 保存为 JSON 文件,命名格式:`地区-位置-商人名.json` +3. 放在 `assets/path/` 目录下 + +### 2. 添加商人数据 在 `assets/data/npcs.json` 中添加: + ```json -"新NPC名称": { - "name": "新NPC名称", - "enable": true, - "page": 2, - "time": "any", - "path": "assets/path/国家-地区-新NPC名称.json", - "_1d_foods": ["食材1", "食材2"], - "_3d_foods": ["食材3"], - "_7d_foods": ["食材4"] +"new_npc": { + "name": "新商人名", + "enable": true, + "page": 2, // 商店总页数 + "time": "any", // any/day/night + "path": "assets/path/地区-位置-新商人名.json", + "_1d_foods": ["商品1", "商品2"], // 每天刷新 + "_3d_foods": ["商品3"], // 3天刷新 + "_7d_foods": ["商品4"] // 每周刷新 } ``` -**参数说明**: -- `page`:商店总页数 -- `time`:`any`(任何时间)/`day`(白天)/`night`(晚上) -- `_1d_foods`:每天刷新食材列表 -- `_3d_foods`:3天刷新食材列表 -- `_7d_foods`:每周刷新食材列表 +### 3. 参数说明 +- `page`: 商店的总页数 +- `time`: 商人出现时间 + - `any`: 全天出现 + - `day`: 白天出现 + - `night`: 晚上出现 +- `path`: 路径文件位置 -#### 3. 放置相关文件 -- 食材图片:`assets/images/新食材.png` -- 路径文件:`assets/path/国家-地区-NPC名称.json` +### 4. 更新商人与商品支持表 +将新商人添加到本文件的商人与商品支持表中。 -#### 4. 测试验证 -1. 重新加载脚本设置 -2. 勾选新食材 -3. 运行脚本测试购买流程 -4. 检查日志确认执行成功 +## ❓ 常见问题 -### 注意事项 -- NPC名称需与路径文件名称对应 -- 食材名称需与foods.json中的name一致 -- 首次添加建议开启调试模式检查 +### Q: 脚本不购买任何商品? +A: 检查: +1. 是否在设置中填写了要购买的商品 +2. 商品名称是否正确(参考上方表格) +3. 游戏分辨率是否为 1920×1080 +4. 角色是否在单人模式 +5. 是否有购买记录导致商品未刷新 +### Q: 如何知道支持哪些商品名称? +A: 查看: +1. 本文件中的"商人与商品支持表" +2. `assets/data/foods.json` 文件中的 `name` 字段 +3. 运行脚本时的日志输出会显示"用户启用了以下食材" -## 常见问题 +### Q: 为什么跳过某些商人? +A: 可能原因: +1. 该商人没有你要购买的商品 +2. 商人在禁用列表中 +3. 购买记录显示商品还未到刷新时间 -### 1. 脚本不购买食材 -- 检查游戏是否在主界面 -- 确认解析度设定正确(1920×1080) -- 检查NPC是否在正确时间出现(白天/晚上) -- 查看是否有足够的摩拉 +### Q: 如何重置购买记录? +A: 有几种方法: +1. 启用"无视购买记录强制购买"选项 +2. 删除 `record/你的账号名/records.json` 文件 +3. 等待商品自然刷新 -### 2. 记录不更新 -- 检查`record/账号名/records.json`文件权限 -- 开启调试模式查看详细日志 +### Q: 每天什么时候刷新? +A: 游戏内的刷新时间是**每天凌晨4点**。脚本会考虑这个时间点: +- 如果当前时间在4点前,视为前一天 +- 购买记录基于4点刷新时间计算 -### 3. 图片识别失败 -- 确认图片尺寸为90×90 -- 检查图片路径是否正确 -- 尝试重新截图 +## 📝 注意事项 -### 4. 路径执行失败 -- 确认路径文件存在 -- 检查NPC是否被障碍物阻挡 -- 尝试重新录制路径 - -## 记录系统 - -脚本会自动记录购买时间,保存在`record/账号名/records.json`: - -```json -[ - { - "npcname": "布兰琪", - "1d": ["盐", "胡椒", "洋葱"], - "1d_time": "2024-12-10T04:00:00+08:00", - "3d": [], - "3d_time": null, - "7d": [], - "7d_time": null - } -] -``` - -## 注意事项 - -1. 脚本运行时不要操作游戏 -2. 确保背包有足够空间 -3. 每个NPC购买完成后会返回主界面 -4. 脚本会自动调整游戏时间(白天/晚上) -5. 每周食材购买日设置后,只在指定日期购买4. 逐一添加食材测试 +1. **游戏时间**:脚本会自动调整白天/晚上时间 +2. **背包空间**:确保有足够空间购买商品 +3. **摩拉**:确保有足够的摩拉 +4. **记录系统**:购买记录保存在 `record/账号名/` 目录下 +5. **多人模式**:脚本只能在单人模式下运行 +6. **刷新时间**:基于游戏服务器时间(GMT+8),每天4点刷新 ## 🤝 贡献指南 -欢迎提交新的食材配置!请遵循以下格式: +欢迎提交新的商人和商品配置! -1. **提交新的NPC**:包含路径文件和图片 -2. **提交新的食材**:包含图片和设定 -3. **问题回报**:提供详细的重现步骤和日志 +1. **提交新的商人**:包含路径文件和商人数据 +2. **提交新的商品**:包含图片和商品数据 +3. **更新文档**:记得更新本README中的商人信息表 +4. **问题反馈**:提供详细的重现步骤和日志 --- -> 注意:本脚本仅供学习与研究使用,请遵守游戏使用条款。 \ No newline at end of file +> 注意:本脚本仅供学习与研究使用,请遵守游戏使用条款。 +``` diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/data/foods.json b/repo/js/自动购买每天&3天&每周刷新食材/assets/data/foods.json index f9acbbe9c..790dbfbf3 100644 --- a/repo/js/自动购买每天&3天&每周刷新食材/assets/data/foods.json +++ b/repo/js/自动购买每天&3天&每周刷新食材/assets/data/foods.json @@ -119,10 +119,10 @@ "name": "沉玉仙茗", "file": "assets/images/沉玉仙茗.png" }, - "青蜜梅": { - "id": "青蜜梅", - "name": "青蜜梅", - "file": "assets/images/青蜜梅.png" + "青蜜莓": { + "id": "青蜜莓", + "name": "青蜜莓", + "file": "assets/images/青蜜莓.png" }, "苦种": { "id": "苦种", @@ -163,11 +163,20 @@ "id": "黑麦", "name": "黑麦", "file": "assets/images/黑麦.png" - } - , - "絶云椒椒": { - "id": "絶云椒椒", - "name": "絶云椒椒", - "file": "assets/images/絶云椒椒.png" + }, + "绝云椒椒": { + "id": "绝云椒椒", + "name": "绝云椒椒", + "file": "assets/images/绝云椒椒.png" + }, + "微光角菌": { + "id": "微光角菌", + "name": "微光角菌", + "file": "assets/images/微光角菌.png" + }, + "琉鳞石": { + "id": "琉鳞石", + "name": "琉鳞石", + "file": "assets/images/琉鳞石.png" } } \ No newline at end of file diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/data/npcs.json b/repo/js/自动购买每天&3天&每周刷新食材/assets/data/npcs.json index ea0f5f6d7..207d8a504 100644 --- a/repo/js/自动购买每天&3天&每周刷新食材/assets/data/npcs.json +++ b/repo/js/自动购买每天&3天&每周刷新食材/assets/data/npcs.json @@ -38,7 +38,7 @@ "time": "any", "path": "assets/path/璃月-璃月港-卯师父.json", "_1d_foods": ["鱼肉", "螃蟹"], - "_3d_foods": ["胡萝卜", "松茸", "絶云椒椒"] + "_3d_foods": ["胡萝卜", "松茸", "绝云椒椒"] }, "UncleSun": { "name": "老孙", @@ -78,7 +78,7 @@ "page": 2, "time": "any", "path": "assets/path/璃月-遗珑埠-丰泰.json", - "_3d_foods": ["沉玉仙茗", "琉璃袋", "絶云椒椒"], + "_3d_foods": ["沉玉仙茗", "琉璃袋", "绝云椒椒"], "_7d_foods": ["蟹黃"] }, "连芳": { @@ -95,7 +95,7 @@ "page": 1, "time": "any", "path": "assets/path/稻妻-离岛-小畑.json", - "_1d_foods": ["螃蟹"] + "_1d_foods": ["螃蟹","鱼肉", "虾仁"] }, "Aoi": { "name": "葵", @@ -229,7 +229,7 @@ "page": 1, "time": "any", "path": "assets/path/纳塔-圣火竞技场-钦特利.json", - "_3d_foods": ["青蜜梅", "苦种"] + "_3d_foods": ["青蜜莓", "苦种"] }, "夏安卡": { "name": "夏安卡", @@ -256,5 +256,16 @@ "path": "assets/path/挪德卡莱-那夏镇-采若.json", "_1d_foods": ["黑麦", "盐", "胡椒", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "小麦"] } + , + "科菲策": { + "name": "科菲策", + "enable": true, + "page": 1, + "time": "any", + "path": "assets/path/挪德卡莱-皮拉米达城-科菲策.json", + "_1d_foods": ["牛奶", "咖啡豆"], + "_3d_foods": ["微光角菌", "琉鳞石"] + + } } \ No newline at end of file diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/images/微光角菌.png b/repo/js/自动购买每天&3天&每周刷新食材/assets/images/微光角菌.png new file mode 100644 index 000000000..d319f180a Binary files /dev/null and b/repo/js/自动购买每天&3天&每周刷新食材/assets/images/微光角菌.png differ diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/images/琉鳞石.png b/repo/js/自动购买每天&3天&每周刷新食材/assets/images/琉鳞石.png new file mode 100644 index 000000000..ad1287297 Binary files /dev/null and b/repo/js/自动购买每天&3天&每周刷新食材/assets/images/琉鳞石.png differ diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/images/絶云椒椒.png b/repo/js/自动购买每天&3天&每周刷新食材/assets/images/绝云椒椒.png similarity index 100% rename from repo/js/自动购买每天&3天&每周刷新食材/assets/images/絶云椒椒.png rename to repo/js/自动购买每天&3天&每周刷新食材/assets/images/绝云椒椒.png diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/images/青蜜梅.png b/repo/js/自动购买每天&3天&每周刷新食材/assets/images/青蜜莓.png similarity index 100% rename from repo/js/自动购买每天&3天&每周刷新食材/assets/images/青蜜梅.png rename to repo/js/自动购买每天&3天&每周刷新食材/assets/images/青蜜莓.png diff --git a/repo/js/自动购买每天&3天&每周刷新食材/assets/path/挪德卡莱-皮拉米达城-科菲策.json b/repo/js/自动购买每天&3天&每周刷新食材/assets/path/挪德卡莱-皮拉米达城-科菲策.json new file mode 100644 index 000000000..042f10854 --- /dev/null +++ b/repo/js/自动购买每天&3天&每周刷新食材/assets/path/挪德卡莱-皮拉米达城-科菲策.json @@ -0,0 +1,58 @@ +{ + "info": { + "authors": [ + { + "links": "", + "name": "蜜柑魚" + } + ], + "bgi_version": "0.45.0", + "description": "", + "enable_monster_loot_split": false, + "last_modified_time": 1768924602203, + "map_match_method": "SIFT", + "map_name": "Teyvat", + "name": "挪德卡莱-皮拉米达城-科菲策", + "tags": [], + "type": "collect", + "version": "1.0" + }, + "positions": [ + { + "action": "", + "action_params": "", + "id": 1, + "move_mode": "walk", + "type": "teleport", + "x": 9452.2978515625, + "y": 5235.1337890625 + }, + { + "action": "", + "action_params": "", + "id": 2, + "move_mode": "walk", + "type": "path", + "x": 9435.392578125, + "y": 5236.27099609375 + }, + { + "action": "", + "action_params": "", + "id": 3, + "move_mode": "walk", + "type": "path", + "x": 9432.2568359375, + "y": 5225.869140625 + }, + { + "action": "", + "action_params": "", + "id": 4, + "move_mode": "walk", + "type": "target", + "x": 9434.470703125, + "y": 5222.7021484375 + } + ] +} \ No newline at end of file diff --git a/repo/js/自动购买每天&3天&每周刷新食材/main.js b/repo/js/自动购买每天&3天&每周刷新食材/main.js index dcfc79bcd..7c9a1fb57 100644 --- a/repo/js/自动购买每天&3天&每周刷新食材/main.js +++ b/repo/js/自动购买每天&3天&每周刷新食材/main.js @@ -116,18 +116,48 @@ function logConditional(message) { let foodsData = {}; let npcData = {}; +// 存储用户要购买的商品ID集合 +let userFoodsToBuy = new Set(); + async function loadExternalData() { try { - // 加载食材数据 + // 加载商品数据 const foodsContent = await file.readText("assets/data/foods.json"); foodsData = JSON.parse(foodsContent); - logConditional(`已加载食材数据: ${Object.keys(foodsData).length} 种食材`); - + logConditional(`已加载商品数据: ${Object.keys(foodsData).length} 种商品`); + // 加载NPC数据 const npcsContent = await file.readText("assets/data/npcs.json"); npcData = JSON.parse(npcsContent); logConditional(`已加载NPC数据: ${Object.keys(npcData).length} 个NPC`); - + + // 解析用户要购买的商品列表 + const foodsInput = (settings.foodsToBuy || "").trim(); + if (foodsInput) { + const foodNames = foodsInput.split(/\s+/); + const enabledFoodsList = []; + for (const foodName of foodNames) { + // 查找商品对应的ID + const foodEntry = Object.values(foodsData).find( + food => food.name === foodName || food.id === foodName + ); + if (foodEntry) { + userFoodsToBuy.add(foodEntry.id); + enabledFoodsList.push(foodEntry.name); // 保存商品名称用于显示 + } else { + log.warn(`未找到商品: ${foodName}`); + } + } + // 输出用户启用的商品列表 + if (enabledFoodsList.length > 0) { + log.info(`用户启用了下列商品:${enabledFoodsList.join(", ")}`); + } else { + log.warn("用户未启用任何商品"); + } + } else { + log.warn("用户未指定要购买的商品"); + } + return true; } catch (error) { log.error(`加载外部数据失败: ${error.message}`); @@ -135,6 +165,34 @@ async function loadExternalData() { } } +// ==================== 辅助函数:过滤用户要购买的商品 ==================== +function filterUserFoods(foodList) { + if (!foodList || !Array.isArray(foodList)) { + return []; + } + + return foodList.filter(food => { + // 查找商品对应的ID + const foodEntry = Object.values(foodsData).find( + f => f.name === food || f.id === food + ); + + if (!foodEntry) { + if (recordDebug) { + log.info(`[调试] 商品列表中未找到: ${food}`); + } + return false; + } + + // 检查是否在用户要购买的商品集合中 + const shouldBuy = userFoodsToBuy.has(foodEntry.id); + if (recordDebug && shouldBuy) { + log.info(`[调试] 用户选择购买: ${foodEntry.name} (ID: ${foodEntry.id})`); + } + return shouldBuy; + }); +} + // ==================== 辅助函数:获取调整后的星期几(1-7,周一为1) ==================== function getAdjustedDayOfWeek() { const now = new Date(); @@ -190,10 +248,10 @@ let followSystem = false; if (AKFValue === 0) { // 0 表示跟随系统判定 followSystem = true; - log.info("7天食材购买: 跟随系统判定"); + log.info("7天商品购买: 跟随系统判定"); } else { AFKDay = AKFValue === 7 ? 0 : AKFValue; - log.info(`7天食材购买: 每周${AFKDay === 0 ? "日" : AFKDay}购买`); + log.info(`7天商品购买: 每周${AFKDay === 0 ? "日" : AFKDay}购买`); } // 获取账号记录路径 @@ -294,26 +352,26 @@ function updateNpcRecord(records, npcName, refreshType, purchasedItems) { // 3天商品:基于基准日的3天周期计算 // 基准时间:2025-08-09 04:00 GMT+8 (转换为本地时间) const baseTime = new Date(2025, 7, 9, 4, 0, 0); // 2025-08-09 04:00 - + // 调整当前时间到4点基准 const adjustedNow = new Date(now); if (adjustedNow.getHours() < 4) { adjustedNow.setDate(adjustedNow.getDate() - 1); } adjustedNow.setHours(4, 0, 0, 0); - + // 计算距离基准日的天数 const timeDiff = adjustedNow.getTime() - baseTime.getTime(); const daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24)); - + // 计算当前3天周期 const currentPeriod = Math.floor(daysDiff / 3); - + // 下一个3天周期的开始时间 const nextPeriod = currentPeriod + 1; refreshTime = new Date(baseTime); refreshTime.setDate(baseTime.getDate() + (nextPeriod * 3)); - + // 确保刷新时间是04:00 refreshTime.setHours(4, 0, 0, 0); } else if (refreshType === "7d") { @@ -372,15 +430,15 @@ function shouldBuyFoods(npc, npcRecord, currentPeriod, forceRefresh = false) { if (forceRefresh) { // 强制刷新,但只购买已启用的商品 - if (npc._1d_foods) foodsToBuy["1d"] = filterEnabledFoods(npc._1d_foods); - if (npc._3d_foods) foodsToBuy["3d"] = filterEnabledFoods(npc._3d_foods); - if (npc._7d_foods) foodsToBuy["7d"] = filterEnabledFoods(npc._7d_foods); + if (npc._1d_foods) foodsToBuy["1d"] = filterUserFoods(npc._1d_foods); + if (npc._3d_foods) foodsToBuy["3d"] = filterUserFoods(npc._3d_foods); + if (npc._7d_foods) foodsToBuy["7d"] = filterUserFoods(npc._7d_foods); return foodsToBuy; } // 1天商品逻辑 if (npc._1d_foods) { - const enabledFoods = filterEnabledFoods(npc._1d_foods); + const enabledFoods = filterUserFoods(npc._1d_foods); if (enabledFoods.length > 0) { if (!npcRecord || !npcRecord["1d_time"]) { // 没有记录,需要购买已启用的商品 @@ -401,7 +459,7 @@ function shouldBuyFoods(npc, npcRecord, currentPeriod, forceRefresh = false) { // 3天商品逻辑 if (npc._3d_foods) { - const enabledFoods = filterEnabledFoods(npc._3d_foods); + const enabledFoods = filterUserFoods(npc._3d_foods); if (enabledFoods.length > 0) { if (!npcRecord || !npcRecord["3d_time"]) { // 没有记录,直接购买 @@ -428,7 +486,7 @@ function shouldBuyFoods(npc, npcRecord, currentPeriod, forceRefresh = false) { // 7天商品逻辑 if (npc._7d_foods) { - const enabledFoods = filterEnabledFoods(npc._7d_foods); + const enabledFoods = filterUserFoods(npc._7d_foods); if (enabledFoods.length > 0) { if (!npcRecord || !npcRecord["7d_time"]) { // 没有记录,直接购买 @@ -472,22 +530,6 @@ function shouldBuyFoods(npc, npcRecord, currentPeriod, forceRefresh = false) { return foodsToBuy; } -// ==================== 新增函数:过滤已启用的食材 ==================== -function filterEnabledFoods(foodList) { - if (!foodList || !Array.isArray(foodList)) { - return []; - } - - return foodList.filter(food => { - // 检查食材是否在 settings 中被启用 - const foodId = translationList[food] || food; - return settings[foodId] === true; - }); -} - -const translationList = {}; -const enableFoods = new Set([]); - const othrtRo = { "buy": { "name": "购买按钮", @@ -831,27 +873,27 @@ async function buyFoods(npcName, npcRecords, currentPeriod) { if (recordDebug) { log.info(`[调试] 尝试购买: ${item}`); } - - // 将中文食材名转换为对应的英文ID + + // 查找商品对应的ID(支持中文名和英文ID) let foodId = null; - - // 首先在translationList中查找(中文名->英文ID) - if (translationList[item]) { - foodId = translationList[item]; - } else { - // 如果没有找到,直接在foodsData中查找是否有中文键 - foodId = Object.keys(foodsData).find(key => - foodsData[key].name === item || foodsData[key].id === item - ); + let foodName = item; + + // 直接在foodsData中查找 + for (const [id, food] of Object.entries(foodsData)) { + if (food.name === item || food.id === item) { + foodId = id; + foodName = food.name; + break; + } } - + if (!foodId) { - log.warn(`未找到食材 "${item}" 的识别数据,跳过`); + log.warn(`未找到商品 "${item}" 的识别数据,跳过`); continue; } - + if (!foodsData[foodId] || !foodsData[foodId].ro) { - log.warn(`食材 "${item}" (ID: ${foodId}) 未启用或没有识别对象,跳过`); + log.warn(`商品 "${foodName}" (ID: ${foodId}) 未启用或没有识别对象,跳过`); continue; } @@ -907,7 +949,7 @@ async function buyFoods(npcName, npcRecords, currentPeriod) { } } } - + if (purchasedFoods.length > 0) { log.info(`${npc.name} 购买完成,成功购买: ${purchasedFoods.join(", ")}`); } else { @@ -959,17 +1001,14 @@ async function initNpcData(records) { // 加载识别对象 async function initRo() { try { - // 加载识别对象 + // 加载识别对象 - 只加载用户选择的商品 for (let [key, item] of Object.entries(foodsData)) { - // 填充中英文对照表 - translationList[item.name] = item.id; - // 判断启动商品、加载识别对象 - if (settings[item.id]) { - enableFoods.add(item.id); + // 判断是否在用户选择的商品中 + if (userFoodsToBuy.has(item.id)) { item.ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(item.file)); item.ro.Threshold = 0.75; item.ro.Use3Channels = true; - logConditional(`已启用食材: ${item.name} (${item.id})`); + logConditional(`已启用商品: ${item.name} (${item.id})`); } } // 加载其他识别对象 @@ -978,7 +1017,7 @@ async function initRo() { item.ro.Threshold = 0.85; } - logConditional(`总共启用了 ${enableFoods.size} 种食材`); + logConditional(`总共启用了 ${userFoodsToBuy.size} 种商品`); return true; } catch (error) { @@ -992,22 +1031,22 @@ async function initRo() { // ==================== 初始化账号 ==================== log.info(`当前账户: ${userName}`); - // ==================== 加载外部数据 ==================== + // ==================== 加载外部数据 ==================== if (!await loadExternalData()) { - log.error("食材或NPC数据加载失败,脚本终止"); + log.error("商品或NPC数据加载失败,脚本终止"); return; } // ==================== 初始化识别对象 ==================== await initRo(); - + logConditional("识别对象初始化完成"); // ==================== 加载NPC购买记录 ==================== let npcRecords = await loadNpcRecords(); - + logConditional(`已加载 ${npcRecords.length} 个NPC的购买记录`); - + if (recordDebug && npcRecords.length > 0) { log.info("[调试] 当前NPC记录:"); npcRecords.forEach(record => { @@ -1083,7 +1122,7 @@ async function initRo() { } } - log.info("=== 食材购买脚本执行完成 ==="); + log.info("=== 商品购买脚本执行完成 ==="); } catch (error) { log.error(`执行时发生错误: ${error.message}`); diff --git a/repo/js/自动购买每天&3天&每周刷新食材/manifest.json b/repo/js/自动购买每天&3天&每周刷新食材/manifest.json index 5189b8808..ad1f8c5df 100644 --- a/repo/js/自动购买每天&3天&每周刷新食材/manifest.json +++ b/repo/js/自动购买每天&3天&每周刷新食材/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 1, - "name": "自动购买每天&3天&每周刷新食材", - "version": "2.0.0", - "description": "自动购买每天&3天&每周刷新食材\n每天刷新食材:自动购买食材\n3天刷新食材:未到刷新日不购买该食材\n每周刷新食材:可指定每周购买食材", + "name": "自动购买每天&3天&每周刷新商品", + "version": "3.0.0", + "description": "自动购买每天&3天&每周刷新商品\n每天刷新商品:自动购买商品\n3天刷新商品:未到刷新日不购买该商品\n每周刷新商品:可指定每周购买商品", "authors": [ { "name": "蜜柑魚", @@ -10,7 +10,7 @@ } ], "tags": [ - "购买食材", + "购买商品", "模拟点击" ], "saved_files": [ diff --git a/repo/js/自动购买每天&3天&每周刷新食材/settings.json b/repo/js/自动购买每天&3天&每周刷新食材/settings.json index ff04c0f50..e7831620d 100644 --- a/repo/js/自动购买每天&3天&每周刷新食材/settings.json +++ b/repo/js/自动购买每天&3天&每周刷新食材/settings.json @@ -6,219 +6,15 @@ "default": "默认账户" }, { - "name": "ignoreRecords", - "type": "checkbox", - "label": "-----------------\n无视记录强制购买(不推荐)", - "default": false - }, - { - "name": "recordDebug", - "type": "checkbox", - "label": "记录调试模式(显示详细日志)", - "default": false - }, - { - "name": "disabledNpcs", + "name": "foodsToBuy", "type": "input-text", - "label": "禁用 NPC\n(多個NPC以空格隔)", - "default": "阿扎莱 皮托" - }, - { - "name": "圣水", - "type": "checkbox", - "label": "每天刷新食材\n\n圣水", - "default": false - }, - { - "name": "crab", - "type": "checkbox", - "label": "螃蟹", - "default": false - }, - { - "name": "salt", - "type": "checkbox", - "label": "盐", - "default": false - }, - { - "name": "pepper", - "type": "checkbox", - "label": "胡椒", - "default": false - }, - { - "name": "onion", - "type": "checkbox", - "label": "洋葱", - "default": false - }, - { - "name": "milk", - "type": "checkbox", - "label": "牛奶", - "default": false - }, - { - "name": "tomato", - "type": "checkbox", - "label": "番茄", - "default": false - }, - { - "name": "potato", - "type": "checkbox", - "label": "土豆", - "default": false - }, - { - "name": "wheat", - "type": "checkbox", - "label": "小麦", - "default": false - }, - { - "name": "rice", - "type": "checkbox", - "label": "稻米", - "default": false - }, - { - "name": "shrimp", - "type": "checkbox", - "label": "虾仁", - "default": false - }, - { - "name": "almond", - "type": "checkbox", - "label": "杏仁", - "default": false - }, - { - "name": "cabbage", - "type": "checkbox", - "label": "卷心菜", - "default": false - }, - { - "name": "tofu", - "type": "checkbox", - "label": "豆腐", - "default": false - }, - { - "name": "fish", - "type": "checkbox", - "label": "鱼肉", - "default": false - }, - { - "name": "coffeeBeans", - "type": "checkbox", - "label": "咖啡豆", - "default": false - }, - { - "name": "glabrousBeans", - "type": "checkbox", - "label": "秃秃豆", - "default": false - }, - { - "name": "rawMeat", - "type": "checkbox", - "label": "兽肉", - "default": false - }, - { - "name": "fermentedJuice", - "type": "checkbox", - "label": "发酵果实汁", - "default": false - }, - { - "name": "黑麦", - "type": "checkbox", - "label": "黑麦", - "default": false - }, - { - "name": "松茸", - "type": "checkbox", - "label": "-----------------\n3天刷新食材\n\n松茸", - "default": false - }, - { - "name": "huMengbu", - "type": "checkbox", - "label": "胡萝卜", - "default": false - }, - { - "name": "沉玉仙茗", - "type": "checkbox", - "label": "沉玉仙茗", - "default": false - }, - { - "name": "清心", - "type": "checkbox", - "label": "清心", - "default": false - }, - { - "name": "琉璃袋", - "type": "checkbox", - "label": "琉璃袋", - "default": false - }, - { - "name": "viola", - "type": "checkbox", - "label": "堇瓜", - "default": false - }, - { - "name": "Padisarah", - "type": "checkbox", - "label": "帕蒂沙兰", - "default": false - }, - { - "name": "romaritimeFlower", - "type": "checkbox", - "label": "海露花", - "default": false - }, - { - "name": "tidalga", - "type": "checkbox", - "label": "汐藻", - "default": false - }, - { - "name": "苦种", - "type": "checkbox", - "label": "苦种", - "default": false - }, - { - "name": "青蜜梅", - "type": "checkbox", - "label": "青蜜梅", - "default": false - }, - { - "name": "絶云椒椒", - "type": "checkbox", - "label": "絶云椒椒", - "default": false + "label": "要购买的商品(多个商品用空格分隔)\n示例:\"小麦 黑麦\"\n支援的 商人与商品详细 请前往 README.md 查看", + "default": "小麦 黑麦" }, { "name": "AKF", "type": "select", - "label": "-----------------\n每周刷新食材\n\n可选购买方式:\n0=跟随系统周期自动判定\n1-7=指定星期几购买(1=周一,7=周日)", + "label": "每周商品购买方式\n0=跟随系统周期自动判定\n1-7=指定星期几购买(1=周一,7=周日)", "options": [ "0", "1", @@ -232,9 +28,21 @@ "default": "0" }, { - "name": "蟹黃", + "name": "disabledNpcs", + "type": "input-text", + "label": "要禁用的NPC\n(多个NPC用空格分隔)\n示例:阿扎莱 皮托", + "default": "阿扎莱 皮托" + }, + { + "name": "ignoreRecords", "type": "checkbox", - "label": "蟹黃", + "label": "-----------------\n无视记录强制购买(不推荐)", + "default": false + }, + { + "name": "recordDebug", + "type": "checkbox", + "label": "记录调试模式(显示详细日志)", "default": false } ] \ No newline at end of file diff --git a/repo/js/自动购买每天&3天&每周刷新食材/商人与商品支持表.md b/repo/js/自动购买每天&3天&每周刷新食材/商人与商品支持表.md new file mode 100644 index 000000000..ca7b037c7 --- /dev/null +++ b/repo/js/自动购买每天&3天&每周刷新食材/商人与商品支持表.md @@ -0,0 +1,41 @@ +## 📋 商人与商品支持表 + +### 如何查看支持的商品? +- **查看本文件下方表格**:包含所有支持的商人与商品 +- **查看`assets/data/foods.json`**:所有商品的中文名称 + +### 商人信息总览 +| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 备注 | +|--------|--------|-------------|------------|-------------|------| +| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | 白天出现 | +| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | 晚上出现 | +| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - | +| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | | +| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | | +| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | 白天出现 | +| 璃月-璃月港 | 老高 | 鱼肉 | - | - | | +| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | 晚上出现 | +| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | | +| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | | +| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | | +| 稻妻-离岛 | 小畑 | 螃蟹、鱼肉、虾仁 | - | - | | +| 稻妻-稻妻城 | 葵 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | | +| 稻妻-稻妻城 | 志村勘兵卫 | 鱼肉、螃蟹 | 堇瓜 | - | | +| 稻妻-海祇岛 | 清子 | - | - | 牛奶、番茄、土豆、小麦、豆腐 | | +| 须弥-须弥城 | 朱特 | - | 帕蒂沙兰 | - | | +| 须弥-奥摩斯港 | 布特罗斯 | 鱼肉、螃蟹、虾仁 | - | - | | +| 须弥-须弥城 | 珀姆 | 鱼肉、螃蟹、虾仁 | - | - | | +| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | | +| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 | +| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 | +| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 晚上出现 | +| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | | +| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | | +| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | | +| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | | +| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | | +| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | | +| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | | +| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | | +| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | | +| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | | diff --git a/repo/js/自动购买每天&3天&每周刷新食材/商人信息表.md b/repo/js/自动购买每天&3天&每周刷新食材/商人信息表.md new file mode 100644 index 000000000..aab43d462 --- /dev/null +++ b/repo/js/自动购买每天&3天&每周刷新食材/商人信息表.md @@ -0,0 +1,36 @@ + 商人信息表 + +| 所在地 | 商人名 | 每天刷新商品 | 3天刷新商品 | 每周刷新商品 | 备注 | +|--------|--------|-------------|------------|-------------|------| +| 蒙德-清泉镇 | 神奇的霍普金斯 | 圣水 | - | - | 白天出现 | +| 蒙德-蒙德城 | 布兰琪 | 盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | 晚上出现 | +| 蒙德-蒙德城 | 莎拉 | - | - | 蟹黄 | - | +| 璃月-璃月港 | 东升 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、杏仁、盐、胡椒、番茄 | - | - | | +| 璃月-璃月港 | 卯师父 | 鱼肉、螃蟹 | 胡萝卜、松茸、绝云椒椒 | - | | +| 璃月-璃月港 | 老孙 | 鱼肉、螃蟹、虾仁 | - | - | 白天出现 | +| 璃月-璃月港 | 老高 | 鱼肉 | - | - | | +| 璃月-璃月港 | 阿桂 | - | 清心、琉璃袋 | - | 晚上出现 | +| 璃月-望舒客栈 | 菲尔戈黛特 | - | 松茸、琉璃袋 | - | | +| 璃月-遗珑埠 | 丰泰 | - | 沉玉仙茗、琉璃袋、绝云椒椒 | 蟹黄 | | +| 璃月-遗珑埠 | 连芳 | - | 沉玉仙茗 | - | | +| 稻妻-离岛 | 小畑 | 螃蟹、鱼肉、虾仁 | - | - | | +| 稻妻-稻妻城 | 葵 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | | +| 稻妻-稻妻城 | 志村勘兵卫 | 鱼肉、螃蟹 | 堇瓜 | - | | +| 稻妻-海祇岛 | 清子 | - | - | 牛奶、番茄、土豆、小麦、豆腐 | | +| 须弥-须弥城 | 朱特 | - | 帕蒂沙兰 | - | | +| 须弥-奥摩斯港 | 布特罗斯 | 鱼肉、螃蟹、虾仁 | - | - | | +| 须弥-须弥城 | 珀姆 | 鱼肉、螃蟹、虾仁 | - | - | | +| 须弥-须弥城 | 哈马维 | 洋葱、牛奶、卷心菜、土豆、小麦、稻米、虾仁、豆腐、盐、胡椒、番茄 | - | - | | +| 须弥-须弥城 | 兰巴德 | 鱼肉、螃蟹 | - | - | 独立地图 | +| 须弥-须弥城 | 恩忒卡 | 咖啡豆 | - | - | 独立地图 | +| 须弥-阿如村 | 阿扎莱 | 鱼肉、兽肉、秃秃豆 | - | - | 晚上出现 | +| 须弥-奥摩斯港 | 巴巴克 | - | 清心、琉璃袋 | - | | +| 枫丹-枫丹廷 | 布希柯 | 枫达、洋葱、牛奶、卷心菜、土豆、小麦、秃秃豆、杏仁、发酵果实汁、盐、胡椒、番茄 | - | - | | +| 枫丹-枫丹廷 | 阿鲁埃 | 咖啡豆、枫达 | - | - | | +| 枫丹-白淞镇 | 安特曼 | 鱼肉、螃蟹 | 海露花、汐藻 | - | | +| 枫丹-锈舵酒馆 | 皮托 | 牛奶 | - | 培根、火腿、香肠、奶酪 | | +| 纳塔-圣火竞技场 | 钦特利 | - | 青蜜莓、苦种 | - | | +| 纳塔-圣火竞技场 | 夏安卡 | - | - | 蟹黄 | | +| 纳塔-圣火竞技场 | 布纳马 | 盐、胡椒、小麦、洋葱、牛奶、番茄、卷心菜、土豆、秃秃豆 | - | - | | +| 挪德卡莱-那夏镇 | 采若 | 黑麦、盐、胡椒、洋葱、牛奶、番茄、卷心菜、土豆、小麦 | - | - | | +| 挪德卡莱-皮拉米达城 | 科菲策 | 牛奶、咖啡豆 | 微光角菌、琉鳞石 | - | | \ No newline at end of file