提交确认
涉及范围
JS 脚本
相关脚本名称与版本
AutoWoodcutting-Pathing 自动伐木-地图追踪版
需求或建议
问题描述
当前脚本每次运行都是独立、无状态的。当用户设定某种木材的目标数量(例如 8000)超过单次运行上限(2000)时,需要分多次运行才能达成。但在同一天内多次运行脚本时,由于脚本没有记录“今天已经砍了多少”,每次都会根据背包当前库存计算缺口,并再次尝试砍伐 2000。
然而原神中单个木材每天有 2000 的获取上限(或用户自行设定的每日限额),当第二次运行时,如果当天已经砍满 2000,脚本仍然会执行砍伐动作,但实际上无法获得任何木材,导致空跑,浪费时间和资源。
使用场景
复现步骤
- 设定
targetInventoryNumber = 8000,开启背包检测,woodInventoryNumber = 2000。
- 当天首次运行脚本:背包中该木材为 0,计算出需砍 6000(但受上限限制,实际砍 2000),运行后背包变为 2000。
- 当天第二次运行脚本(假设背包仍为 2000):脚本再次计算需砍 6000,上限 2000,仍会执行砍伐 2000 的循环。
- 但当天该木材已砍 2000,游戏内无法再获得,所以此次运行所有砍伐动作均无效,脚本空跑。
要调整
预期收益
期望行为
- 脚本应能记录当天(以自然日或服务器重置时间为准)每种木材已砍伐的数量。
- 在计算本次运行需要砍伐的数量时,应减去当天已砍量,若已满 2000 则直接跳过该木材。
- 记录应持久化,例如保存在本地 JSON 文件中,并支持跨运行读取和更新。
- 每天第一次运行时自动清零记录,或按日期区分。
影响与约束
建议方案
-
引入本地状态文件:在脚本目录下创建 records/ 文件夹,并按用户名分目录存放记录文件,路径为 records/用戶名字/record.json,结构如下:
{
"2026-09-06": {
"雪杨木": 2000,
"白桦木": 1200
}
}
其中 用戶名字 建议从 settings 中读取(如新增 username 配置项),若未配置则使用默认值 default。
-
读取记录:每次脚本启动时,根据当前用户名读取对应 records/用戶名字/record.json 中当天日期的记录。若文件或当天记录不存在,则视为今日尚未砍伐。
-
计算砍伐量:在 woodInventory 或 mapWoodsToNumbers 阶段,将计算出的本次目标砍伐量减去当日已砍量(若结果为负则设为 0),避免重复执行已满额的木材路线。
-
更新记录:每次实际砍伐完成后(runPathingNTimes 执行完毕),将该木材本次实际获得的数量累加到当日已砍量中,并立即写回 records/用戶名字/record.json,确保中途中断也不会丢失进度。
-
跨天自动重置:以游戏每日刷新时间(北京时间 04:00)为界,若当前时间已过 04:00,则使用新的日期键记录当日砍伐量;若当前时间在 00:00~03:59 之间,仍归属前一日记录。旧记录可保留用于历史查看,或由用户手动清理。
-
目录自动创建:脚本首次运行时,若 records/ 或 records/用戶名字/ 目录不存在,应自动创建,避免因路径不存在而报错。
补充信息
No response
提交确认
涉及范围
JS 脚本
相关脚本名称与版本
AutoWoodcutting-Pathing 自动伐木-地图追踪版
需求或建议
问题描述
当前脚本每次运行都是独立、无状态的。当用户设定某种木材的目标数量(例如 8000)超过单次运行上限(2000)时,需要分多次运行才能达成。但在同一天内多次运行脚本时,由于脚本没有记录“今天已经砍了多少”,每次都会根据背包当前库存计算缺口,并再次尝试砍伐 2000。
然而原神中单个木材每天有 2000 的获取上限(或用户自行设定的每日限额),当第二次运行时,如果当天已经砍满 2000,脚本仍然会执行砍伐动作,但实际上无法获得任何木材,导致空跑,浪费时间和资源。
使用场景
复现步骤
targetInventoryNumber = 8000,开启背包检测,woodInventoryNumber = 2000。要调整
预期收益
期望行为
影响与约束
建议方案
引入本地状态文件:在脚本目录下创建
records/文件夹,并按用户名分目录存放记录文件,路径为records/用戶名字/record.json,结构如下:{ "2026-09-06": { "雪杨木": 2000, "白桦木": 1200 } }读取记录:每次脚本启动时,根据当前用户名读取对应
records/用戶名字/record.json中当天日期的记录。若文件或当天记录不存在,则视为今日尚未砍伐。计算砍伐量:在
woodInventory或mapWoodsToNumbers阶段,将计算出的本次目标砍伐量减去当日已砍量(若结果为负则设为 0),避免重复执行已满额的木材路线。更新记录:每次实际砍伐完成后(
runPathingNTimes执行完毕),将该木材本次实际获得的数量累加到当日已砍量中,并立即写回records/用戶名字/record.json,确保中途中断也不会丢失进度。跨天自动重置:以游戏每日刷新时间(北京时间 04:00)为界,若当前时间已过 04:00,则使用新的日期键记录当日砍伐量;若当前时间在 00:00~03:59 之间,仍归属前一日记录。旧记录可保留用于历史查看,或由用户手动清理。
目录自动创建:脚本首次运行时,若
records/或records/用戶名字/目录不存在,应自动创建,避免因路径不存在而报错。补充信息
No response