From a5a6d315e5d31bf1a6c08ee58a71cd9f28621e27 Mon Sep 17 00:00:00 2001 From: ddaodan <40017293+ddaodan@users.noreply.github.com> Date: Sun, 9 Nov 2025 23:08:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E9=80=B8=E6=97=85=E9=97=BB=200.2=20(#?= =?UTF-8?q?2334)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- repo/js/TravelersTales/README.md | 206 ++++++++++++--- .../TravelersTales/assets/avatars/琳妮特.png | Bin 0 -> 2633 bytes .../js/TravelersTales/assets/avatars/辛焱.png | Bin 0 -> 3294 bytes .../assets/keymouse/伊涅芙-3.json | 1 + .../assets/keymouse/凝光-1.json | 1 + .../assets/keymouse/奈芙尔-2.json | 1 + .../assets/keymouse/奈芙尔-3.json | 1 + .../assets/keymouse/菲谢尔-1.json | 1 + .../assets/keymouse/菲谢尔-2.json | 1 + .../assets/keymouse/菲谢尔-3.json | 1 + .../assets/keymouse/辛焱-1.json | 1 + .../assets/keymouse/迪卢克-1.json | 1 + .../TravelersTales/assets/pathing/七七-1.json | 39 +++ .../assets/pathing/丝柯克-1.json | 67 +++++ .../TravelersTales/assets/pathing/云堇-1.json | 103 ++++++++ .../TravelersTales/assets/pathing/云堇-2.json | 103 ++++++++ .../assets/pathing/伊安珊-1.json | 49 ++++ .../TravelersTales/assets/pathing/伊法-1.json | 49 ++++ .../assets/pathing/伊涅芙-1.json | 44 ++++ .../assets/pathing/伊涅芙-2.json | 44 ++++ .../assets/pathing/伊涅芙-3.json | 49 ++++ .../TravelersTales/assets/pathing/凝光-1.json | 229 +++++++++++++++++ .../TravelersTales/assets/pathing/刻晴-1.json | 75 ++++++ .../assets/pathing/基尼奇-1.json | 40 +++ .../assets/pathing/奈芙尔-1.json | 148 +++++++++++ .../assets/pathing/奈芙尔-2.json | 103 ++++++++ .../assets/pathing/奈芙尔-3.json | 94 +++++++ .../TravelersTales/assets/pathing/安柏-1.json | 45 ++++ .../TravelersTales/assets/pathing/安柏-2.json | 66 +++++ .../TravelersTales/assets/pathing/安柏-3.json | 48 ++++ .../TravelersTales/assets/pathing/安柏-4.json | 165 ++++++++++++ .../TravelersTales/assets/pathing/安柏-5.json | 102 ++++++++ .../assets/pathing/希诺宁-1.json | 40 +++ .../assets/pathing/枫原万叶-1.json | 48 ++++ .../assets/pathing/枫原万叶-2.json | 57 +++++ .../assets/pathing/枫原万叶-3.json | 66 +++++ .../TravelersTales/assets/pathing/烟绯-1.json | 71 ++++++ .../TravelersTales/assets/pathing/烟绯-2.json | 103 ++++++++ .../TravelersTales/assets/pathing/爱诺-1.json | 44 ++++ .../TravelersTales/assets/pathing/爱诺-2.json | 49 ++++ .../TravelersTales/assets/pathing/爱诺-3.json | 49 ++++ .../TravelersTales/assets/pathing/爱诺-4.json | 49 ++++ .../TravelersTales/assets/pathing/爱诺-5.json | 58 +++++ .../assets/pathing/珊瑚宫心海-1.json | 57 +++++ .../assets/pathing/珊瑚宫心海-2.json | 30 +++ .../assets/pathing/琳妮特-1.json | 239 ++++++++++++++++++ .../TravelersTales/assets/pathing/瑶瑶-1.json | 39 +++ .../TravelersTales/assets/pathing/瑶瑶-2.json | 48 ++++ .../TravelersTales/assets/pathing/申鹤-1.json | 39 +++ .../TravelersTales/assets/pathing/砂糖-1.json | 67 +++++ .../TravelersTales/assets/pathing/米卡-1.json | 53 ++++ .../assets/pathing/罗莎莉亚-1.json | 66 +++++ .../assets/pathing/罗莎莉亚-2.json | 175 +++++++++++++ .../assets/pathing/罗莎莉亚-3.json | 39 +++ .../assets/pathing/菈乌玛-1.json | 121 +++++++++ .../assets/pathing/菈乌玛-2.json | 121 +++++++++ .../assets/pathing/菲林斯-1.json | 152 +++++++++++ .../assets/pathing/菲林斯-2.json | 71 ++++++ .../assets/pathing/菲林斯-3.json | 67 +++++ .../assets/pathing/菲林斯-4.json | 76 ++++++ .../assets/pathing/菲林斯-5.json | 130 ++++++++++ .../assets/pathing/菲林斯-6.json | 139 ++++++++++ .../assets/pathing/菲谢尔-1.json | 58 +++++ .../assets/pathing/菲谢尔-2.json | 58 +++++ .../assets/pathing/菲谢尔-3.json | 58 +++++ .../TravelersTales/assets/pathing/行秋-1.json | 70 +++++ .../TravelersTales/assets/pathing/行秋-2.json | 70 +++++ .../TravelersTales/assets/pathing/行秋-3.json | 70 +++++ .../TravelersTales/assets/pathing/行秋-4.json | 84 ++++++ .../assets/pathing/诺艾尔-1.json | 49 ++++ .../assets/pathing/诺艾尔-2.json | 48 ++++ .../TravelersTales/assets/pathing/辛焱-1.json | 62 +++++ .../assets/pathing/迪卢克-1.json | 103 ++++++++ .../assets/pathing/迪奥娜-1.json | 139 ++++++++++ .../assets/pathing/迪奥娜-2.json | 30 +++ .../assets/pathing/迪奥娜-3.json | 48 ++++ .../assets/pathing/迪奥娜-4.json | 30 +++ .../TravelersTales/assets/pathing/钟离-1.json | 84 ++++++ .../TravelersTales/assets/pathing/钟离-2.json | 102 ++++++++ .../TravelersTales/assets/pathing/钟离-3.json | 39 +++ .../TravelersTales/assets/pathing/闲云-1.json | 57 +++++ .../TravelersTales/assets/pathing/闲云-2.json | 111 ++++++++ .../TravelersTales/assets/pathing/闲云-3.json | 39 +++ .../TravelersTales/assets/pathing/闲云-4.json | 48 ++++ .../TravelersTales/assets/pathing/闲云-5.json | 48 ++++ .../assets/pathing/雅珂达-1.json | 58 +++++ .../assets/pathing/雅珂达-2.json | 49 ++++ .../assets/pathing/雅珂达-3.json | 58 +++++ .../TravelersTales/assets/pathing/香菱-1.json | 30 +++ repo/js/TravelersTales/data.json | 69 ++--- repo/js/TravelersTales/main.js | 165 ++++++------ repo/js/TravelersTales/manifest.json | 47 ++-- repo/js/TravelersTales/positions.json | 82 ++++++ repo/js/TravelersTales/settings.json | 46 +++- 94 files changed, 6156 insertions(+), 193 deletions(-) create mode 100644 repo/js/TravelersTales/assets/avatars/琳妮特.png create mode 100644 repo/js/TravelersTales/assets/avatars/辛焱.png create mode 100644 repo/js/TravelersTales/assets/keymouse/伊涅芙-3.json create mode 100644 repo/js/TravelersTales/assets/keymouse/凝光-1.json create mode 100644 repo/js/TravelersTales/assets/keymouse/奈芙尔-2.json create mode 100644 repo/js/TravelersTales/assets/keymouse/奈芙尔-3.json create mode 100644 repo/js/TravelersTales/assets/keymouse/菲谢尔-1.json create mode 100644 repo/js/TravelersTales/assets/keymouse/菲谢尔-2.json create mode 100644 repo/js/TravelersTales/assets/keymouse/菲谢尔-3.json create mode 100644 repo/js/TravelersTales/assets/keymouse/辛焱-1.json create mode 100644 repo/js/TravelersTales/assets/keymouse/迪卢克-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/七七-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/丝柯克-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/云堇-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/云堇-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/伊安珊-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/伊法-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/伊涅芙-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/伊涅芙-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/伊涅芙-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/凝光-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/刻晴-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/基尼奇-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/奈芙尔-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/奈芙尔-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/奈芙尔-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/安柏-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/安柏-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/安柏-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/安柏-4.json create mode 100644 repo/js/TravelersTales/assets/pathing/安柏-5.json create mode 100644 repo/js/TravelersTales/assets/pathing/希诺宁-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/枫原万叶-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/枫原万叶-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/枫原万叶-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/烟绯-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/烟绯-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/爱诺-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/爱诺-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/爱诺-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/爱诺-4.json create mode 100644 repo/js/TravelersTales/assets/pathing/爱诺-5.json create mode 100644 repo/js/TravelersTales/assets/pathing/珊瑚宫心海-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/珊瑚宫心海-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/琳妮特-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/瑶瑶-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/瑶瑶-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/申鹤-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/砂糖-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/米卡-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/罗莎莉亚-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/罗莎莉亚-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/罗莎莉亚-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/菈乌玛-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/菈乌玛-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲林斯-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲林斯-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲林斯-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲林斯-4.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲林斯-5.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲林斯-6.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲谢尔-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲谢尔-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/菲谢尔-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/行秋-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/行秋-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/行秋-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/行秋-4.json create mode 100644 repo/js/TravelersTales/assets/pathing/诺艾尔-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/诺艾尔-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/辛焱-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/迪卢克-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/迪奥娜-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/迪奥娜-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/迪奥娜-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/迪奥娜-4.json create mode 100644 repo/js/TravelersTales/assets/pathing/钟离-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/钟离-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/钟离-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/闲云-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/闲云-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/闲云-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/闲云-4.json create mode 100644 repo/js/TravelersTales/assets/pathing/闲云-5.json create mode 100644 repo/js/TravelersTales/assets/pathing/雅珂达-1.json create mode 100644 repo/js/TravelersTales/assets/pathing/雅珂达-2.json create mode 100644 repo/js/TravelersTales/assets/pathing/雅珂达-3.json create mode 100644 repo/js/TravelersTales/assets/pathing/香菱-1.json create mode 100644 repo/js/TravelersTales/positions.json diff --git a/repo/js/TravelersTales/README.md b/repo/js/TravelersTales/README.md index e2afc9241..b1950f99f 100644 --- a/repo/js/TravelersTales/README.md +++ b/repo/js/TravelersTales/README.md @@ -1,48 +1,170 @@ # 自动游逸旅闻 自动完成游逸旅闻活动 -暂仅支持“鎏溢之章” +## 注意事项 +- 请将脚本加入调度器内运行 +- 由于角色出现时并不一定会按以下排序,可能会出现问题,也因此下方表格中的游戏内名称可能存在错误 ## 路线 +|路径|游戏内名称|支持情况|含有键鼠脚本|登场版本| +|--|--|--|--|--| +|安柏-1|你好,旅行者|✔️||5.4| +|安柏-2|蒙德城的猫|✔️||5.4| +|安柏-3|区区史莱姆|✔️||5.4| +|安柏-4|飞起来看看|✔️||5.4| +|安柏-5|休息日|✔️||5.4| +|香菱-1|甜甜香膏|✔️||5.4| +|行秋-1|书剑之一|✔️||5.4| +|行秋-2|书剑之二|✔️||5.4| +|行秋-3|事急从权!|✔️||5.4| +|行秋-4|一字千金|✔️||5.4| +|凝光-1|重任|✔️|✔️|5.4| +|菲谢尔-1|修订|✔️|✔️|5.4| +|菲谢尔-2|魔女|✔️|✔️|5.4| +|菲谢尔-3|命运时刻|✔️|✔️|5.4| +|诺艾尔-1|剑术|✔️||5.4| +|诺艾尔-2|进步法|✔️||5.4| +|砂糖-1|观测|✔️||5.4| +|迪卢克-1|定价|✔️|✔️|5.4| +|七七-1|烹饪|✔️||5.4| +|刻晴-1|奔走|✔️||5.4| +|迪奥娜-1|打猎|✔️||5.4| +|迪奥娜-2|委托|✔️||5.4| +|迪奥娜-3|空空如也|✔️||5.4| +|迪奥娜-4|猎物的真面目|✔️||5.4| +|钟离-1|茶|✔️||5.4| +|钟离-2|书|✔️||5.4| +|钟离-3|戏|✔️||5.4| +|罗莎莉亚-1|工作|✔️||5.4| +|罗莎莉亚-2|本职工作|||5.4| +|罗莎莉亚-3|假日|✔️||5.4| +|枫原万叶-1|远望天地||✔️|5.4| +|枫原万叶-2|旅途小感|✔️||5.4| +|枫原万叶-3|剑与酒|✔️||5.4| +|早柚-1|长高的…方法?|✔️||5.7| +|珊瑚宫心海-1|孤梦|||5.4| +|珊瑚宫心海-2|团聚|||5.4| +|托马-1|培训考试|✔️||5.7| +|托马-2|悠长假期|✔️||5.7| +|云堇-1|他山之石|✔️||5.4| +|云堇-2|来者是客|✔️||5.4| +|申鹤-1|萦怀|✔️||5.4| +|八重神子-1|好运气|✔️[^1]||5.7| +|神里绫人-1|事务|✔️||5.7| +|鹿野院平藏-1|怪案|✔️||5.7| +|鹿野院平藏-2|真相|✔️||5.7| +|鹿野院平藏-3|追缉|✔️||5.7| +|鹿野院平藏-4|静待…|✔️||5.7| +|鹿野院平藏-5|破案日|✔️||5.7| +|鹿野院平藏-6|他人之罪|✔️||6.0| +|柯莱-1|学习会|✔️|✔️|5.7| +|赛诺-1|估量|✔️||5.7| +|赛诺-2|食物|✔️||5.7| +|赛诺-3|职责|✔️||5.7| +|瑶瑶-1|练枪|✔️||5.4| +|瑶瑶-2|郊游|✔️||5.4| +|迪希雅-1|机关舞步|✔️||5.7| +|迪希雅-2|裙子|✔️||5.7| +|绮良良-1|热腾腾|✔️||5.7| +|绮良良-2|凉丝丝|✔️||5.7| +|绮良良-3|我的快递!|✔️||5.7| +|琳妮特-1|修理…?|✔️||5.7| +|林尼-1|魔术|✔️||5.7| +|菲米尼-1|故事|✔️|✔️|5.7| +|那维莱特-1|雨中|✔️||5.7| +|那维莱特-2|礼物|✔️||5.7| +|那维莱特-3|拜访|✔️||5.7| +|夏洛蒂-1|耐心|✔️[^1]||5.7| +|夏洛蒂-2|糟糕糟糕|✔️[^1]||5.7| +|夏洛蒂-3|新目的地|✔️[^1]||5.7| +|夏沃蕾-1|再加把劲!|✔️||5.7| +|闲云-1|弟子的礼物|||5.4| +|闲云-2|摘星崖掠影|||5.4| +|闲云-3|蒙德印象|||5.4| +|闲云-4|奔狼巧遇|||5.4| +|闲云-5|叨光受赞|||5.4| +|梦见月瑞希-1|新患者|✔️|✔️|5.7| +|梦见月瑞希-2|诊疗|✔️|✔️|5.7| +|爱诺-1|救治|✔️||6.0| +|爱诺-2|选择…|✔️||6.0| +|爱诺-3|时间足够你道别[^3]|✔️||6.0| +|爱诺-4|猫,可爱|✔️||6.0| +|奈芙尔-2|贵客登门|||6.0| +|奈芙尔-3|旧客登门|||6.0| +|菲林斯-1|力有未逮|✔️||6.0| +|菲林斯-4|古币|||6.0| +|菲林斯-5|日常所需|||6.0| +|菲林斯-6|意外助手|||6.0| +|菈乌玛-1|聚会|||6.0| +|菈乌玛-2|可承之重|||6.0| +|伊涅芙-1|冥想时间||✔️|6.0| +|伊涅芙-2|语言问题|✔️||6.0| +|伊涅芙-3|事关蛋卷|||6.0| +|丝柯克-1|日常所需|||6.0| +|米卡-1|为信而来|✔️||6.0| +|烟绯-1|学术所致|✔️||6.0| +|烟绯-2|噢,角|||6.0| +|辛焱-1|新演出|✔️|✔️|6.0| +|雅珂达-3|对不起嘛!伊涅芙——|||6.0| -|路径|支持情况|含有键鼠脚本| -|--|--|--| -|八重神子-1|✔️|| -|迪希雅-1|✔️|| -|迪希雅-2|✔️|| -|菲米尼-1|✔️|✔️| -|基尼奇-1|❌[^1]|| -|柯莱-1|✔️|✔️| -|林尼-1|✔️|| -|琳妮特-1|❌[^2]|| -|鹿野院平藏-1|✔️|| -|鹿野院平藏-2|✔️|| -|鹿野院平藏-3|✔️|| -|鹿野院平藏-4|✔️|| -|鹿野院平藏-5|✔️|| -|梦见月瑞希-1|✔️|✔️| -|梦见月瑞希-2|✔️|✔️| -|那维莱特-1|✔️|| -|那维莱特-2|✔️|| -|那维莱特-3|✔️|| -|绮良良-1|✔️|| -|绮良良-2|✔️|| -|绮良良-3|✔️|| -|赛诺-1|✔️|| -|赛诺-2|✔️|| -|赛诺-3|✔️|| -|神里绫人-1|✔️|| -|托马-1|✔️|| -|托马-2|✔️|| -|希诺宁-1|❌[^1]|| -|夏洛蒂-1|✔️|| -|夏洛蒂-2|✔️|| -|夏洛蒂-3|✔️|| -|夏沃蕾-1|✔️|| -|伊安珊-1|❌[^1]|| -|伊法-1|❌[^1]|| -|早柚-1|✔️|| +### 隐藏路线 +此类路线在地图上不可见 +将在后续版本更新支持 +|路径|游戏内名称|支持情况|含有键鼠脚本|登场版本| +|--|--|--|--|--| +|基尼奇-1|委托|❌||5.7| +|希诺宁-1|面谈实务|❌||5.7| +|伊安珊-1|训练问题|❌||5.7| +|伊法-1|药物|❌||5.7| +|雅珂达-1|对应酬劳|❌||6.0| +|雅珂达-2|猫!喂!猫——|||6.0| +|奈芙尔-1|靠谱与否|||6.0| +|菲林斯-2|巡视古币|||6.0| +|菲林斯-3|藏品|||6.0| +|爱诺-5|运转吧,伊涅芙|||6.0| -[^1]: 角色所在位置(圣火竞技场)无法使用地图追踪功能前往,键鼠录制的效果也非常不稳定 -[^2]: 角色所在位置(灰河)无法使用地图追踪功能前往,键鼠录制的效果也非常不稳定 -## 待完成功能 -- [x] 连续运行 \ No newline at end of file +[^1]: 可能存在无法识别的问题 +[^3]: 如果没有抽取菈乌玛,爱诺的[选择]则持续5日,每次做完获得1个逸闻印签,若后续再抽取菈乌玛,解锁该后续,可获得1个逸闻印签;如果有抽取菈乌玛,爱诺的[选择]则持续1日,解锁该后续,可获得5个逸闻印签。因此,如果有的话请尽量在队伍中携带菈乌玛!脚本后续会对此情况进行自动处理。也有人反馈没有菈乌玛的话无法触发该后续。 + + +## 文件结构 +``` +TravelersTales/ // 主目录 +├── assets/ // 资源目录 +│ ├── avatars/ // 角色头像 +│ │ ├── 安柏.png +│ │ └── ... +│ ├── icon/ // OCR用图标 +│ ├── keymouse/ // 键鼠脚本 +│ │ ├── 迪卢克-1.json +│ │ └── ... +│ └── pathing/ // 路径追踪 +│ ├── 爱诺-1.json +│ └── ... +├── data.json // 识别点数据 +├── config.json // 配置文件,存放路线的完成状态 +├── positions.json // 角色点位数据 +├── main.js // 脚本文件 +└── README.md // 说明文档 +``` +### config.json +存放每条路线的完成状态,脚本会自动更新 +不存在的路线默认设为false +```json +{ + "安柏-1": true, + "安柏-2": true, + ... +} +``` +### positions.json +存放角色的大地图点位数据,一般取地图追踪的最后一个点位的坐标 +含有键鼠脚本的路线需添加`hasKeyMouse`属性 +```json +[ + { "name": "安柏-1", "x": -1132, "y": 2297 }, + { "name": "安柏-2", "x": -959, "y": 2248 }, + ... + { "name": "凝光-1", "x": 449, "y": -834, "hasKeyMouse": true }, + ... +] +``` \ No newline at end of file diff --git a/repo/js/TravelersTales/assets/avatars/琳妮特.png b/repo/js/TravelersTales/assets/avatars/琳妮特.png new file mode 100644 index 0000000000000000000000000000000000000000..8563658846773af6e415e793c96444848a6c4333 GIT binary patch literal 2633 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 literal 0 HcmV?d00001 diff --git a/repo/js/TravelersTales/assets/avatars/辛焱.png b/repo/js/TravelersTales/assets/avatars/辛焱.png new file mode 100644 index 0000000000000000000000000000000000000000..ee085d75dba420b2f2d70767d0ddd2b95c1341ae GIT binary patch literal 3294 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 0) { + if (settings.showRemainingCharacters && currentProgress.remaining > 0) { log.info(`未完成的角色: ${currentProgress.remainingCharacters.join(", ")}`); } // 前往七天神像 // await genshin.tpToStatueOfTheSeven(); let runCount = 0; - const maxRuns = parseInt(settings.maxRuns) || 50; + const maxRuns = parseInt(settings.maxRuns) || 3; - log.info(`最大运行次数: ${maxRuns}`); + if (settings.enableDetailedLogs) { + log.info(`最大运行次数: ${maxRuns}`); + } showCurrentSettings(); let failCount = 0; @@ -81,7 +51,9 @@ let failed = false; let skipList = []; while (runCount < maxRuns) { - log.info(`开始第${runCount + 1}次运行`); + if (settings.enableProgressLogs) { + log.info(`开始第${runCount + 1}次运行`); + } // 在每次运行前检查是否还有未完成的角色 currentProgress = checkProgress(characterPositions); @@ -106,7 +78,9 @@ let failed = false; break; } - log.info(`当前进度: ${currentProgress.completed}/${currentProgress.total} (剩余${currentProgress.remaining}个)`); + if (settings.enableProgressLogs) { + log.info(`当前进度: ${currentProgress.completed}/${currentProgress.total} (剩余${currentProgress.remaining}个)`); + } const detectedCharacters = await find(); let pathingName = null; @@ -114,23 +88,15 @@ let failed = false; let found = false; let matchedNames = []; for (const pos of characterPositions) { - //如果启用了跳过已完成角色的设置,则跳过已完成的角色 + // 如果启用了跳过已完成角色的设置,则跳过已完成的角色 if (settings.skipCompletedCharacters && config[pos.name]) { skipList.push(pos.name); } // 使用 Set 去除重复项 skipList = [...new Set(skipList)]; - - if (isNearPosition(characterX, characterY, pos.x, pos.y)) { + if (!config[pos.name] && isNearPosition(characterX, characterY, pos.x, pos.y)) { matchedNames.push(pos.name); - /* - pathingName = pos.name; - hasKeyMouse = !!pos.hasKeyMouse; - found = true; - log.info(`找到角色,执行路线:${pathingName}`); - break; - */ } } if (matchedNames.length === 1) { @@ -183,8 +149,7 @@ let failed = false; } if (!found) { currentProgress = checkProgress(characterPositions); - log.error("未找到角色,或者角色未被收录"); - log.error(`当前位置可能没有未完成的角色对话`); + log.error("未找到角色,或者当前位置可能没有未完成的角色对话"); log.error(`剩余未完成角色: ${currentProgress.remainingCharacters.join(", ")}`); log.info("继续寻找下一个角色..."); continue; // 继续下一次循环而不是直接返回 @@ -204,7 +169,7 @@ let failed = false; log.info("开始对话..."); } await sleep(3000); - await waitToMain(pathingName, hasKeyMouse); + await waitToMain(hasKeyMouse); if (hasKeyMouse) { log.info("执行对应键鼠脚本"); await keyMouseScript.runFile(`assets/keymouse/${pathingName}.json`) @@ -214,8 +179,9 @@ let failed = false; keyPress("F"); log.info("开始对话..."); await sleep(3000); - await waitToMain(pathingName, hasKeyMouse); + await waitToMain(hasKeyMouse); } + config[pathingName] = true; if (failed) { log.info("本次运行结果不会被保存"); // 将 pathingName 加入 skipList @@ -229,7 +195,7 @@ let failed = false; if (runCount < maxRuns) { log.info(`第${runCount}次运行完成`); // 根据设置决定进度更新间隔 - const updateInterval = parseInt(settings.progressUpdateInterval) || 3; + const updateInterval = parseInt(settings.progressUpdateInterval) || 5; if (runCount % updateInterval === 0) { currentProgress = checkProgress(characterPositions); log.info(`=== 进度更新 (第${runCount}次运行后) ===`); @@ -252,7 +218,9 @@ let failed = false; } else { log.info(`还有 ${finalProgress.remaining} 个角色未完成:`); log.info(finalProgress.remainingCharacters.join(", ")); + log.info("可以重新运行程序继续完成剩余角色"); } + log.info(`程序结束`); })(); @@ -264,6 +232,11 @@ async function loadData() { try { data = JSON.parse(await file.readText("data.json")); config = JSON.parse(await file.readText("config.json")); + characterPositions = JSON.parse(await file.readText("positions.json")); + + if (settings.enableDetailedLogs) { + log.info("数据加载完成"); + } } catch (error) { log.error(`加载配置文件失败: ${error.message}`); } @@ -274,12 +247,15 @@ async function loadData() { * @returns {Promise} 找到的角色名字数组,如果没有找到则返回空数组 */ async function find() { - log.info(`开始寻找角色...`); const positions = data.mapPositions; // 读取data.json中的点位数据 for (let retryCount = 0; retryCount < positions.length; retryCount++) { - const position = positions[retryCount]; - log.info(`第 ${retryCount + 1} 次尝试定位...`); - log.info(`移动到位置:(${position.x}, ${position.y}), ${position.name || '未命名位置'}`); + position = positions[retryCount]; + + if (settings.enableDetailedLogs) { + log.info(`第 ${retryCount + 1} 次尝试定位...`); + log.info(`移动到位置:(${position.x}, ${position.y}), ${position.name || '未命名位置'}`); + } + await genshin.moveMapTo(position.x, position.y, position.country); log.info(`缩放等级为${(position.zoom && typeof position.zoom === "number") ? position.zoom : 6.0}`); await genshin.setBigMapZoomLevel((position.zoom && typeof position.zoom === "number") ? position.zoom : 6.0); @@ -290,12 +266,12 @@ async function find() { return detectedNames; // 保持兼容性,设置全局变量 } } catch (error) { - await genshin.setBigMapZoomLevel(3.0); + log.debug(error.message); continue; } } log.error("寻找所有角色可能存在的位置都没有找到角色"); - throw new Error("在所有可能的位置都没有找到角色,结束任务,请手动清理出现在地图上的旅闻后重新启动js"); + throw new Error("在所有可能的位置都没有找到角色,结束任务"); } /** @@ -304,6 +280,10 @@ async function find() { * @returns {Promise} 检测到的角色名字数组 */ async function locate() { + await sleep(500); // 确保画面稳定 + await genshin.setBigMapZoomLevel((position && typeof position.zoom === "number") ? position.zoom : 6.0); + log.info(`设置大地图缩放级别为 ${position.zoom || 6.0}`); + let ro1 = captureGameRegion(); let character = await ro1.findMulti(RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/三个点.png"))); ro1.dispose(); @@ -317,7 +297,9 @@ async function locate() { characterX = (960 - avatar.x - 13) * mapZoomLevel / mapScaleFactor + center.x + 20; characterY = (540 - avatar.y - 13) * mapZoomLevel / mapScaleFactor + center.y + 20; - log.info(`找到角色的大致坐标:(${characterX}, ${characterY})`); + if (settings.enableDetailedLogs) { + log.info(`找到角色的大致坐标:(${characterX}, ${characterY})`); + } await sleep(200); click(avatar.x + 20, avatar.y + 20); @@ -328,9 +310,11 @@ async function locate() { // 识别text中的角色名字 const characterNames = [ - "柯莱", "迪希雅", "赛诺", "林尼", "夏沃蕾", "菲米尼", "夏洛蒂", - "绮良良", "鹿野院平藏", "托马", "梦见月瑞希", "八重神子", - "那维莱特", "神里绫人", "早柚" + "安柏","香菱","行秋","凝光","菲谢尔","诺艾尔","砂糖","迪卢克","七七", + "刻晴", "迪奥娜", "钟离", "罗莎莉亚", "枫原万叶", "早柚", "珊瑚宫心海", + "托马", "云堇", "申鹤", "八重神子", "神里绫人", "鹿野院平藏", + "柯莱", "赛诺", "瑶瑶", "迪希雅", "绮良良", "琳妮特", "林尼", "菲米尼", + "那维莱特", "夏洛蒂", "夏沃蕾", "闲云", "梦见月瑞希", "烟绯", "辛焱" ]; let foundNames = []; for (let i = 0; i < resList.count; i++) { @@ -347,9 +331,10 @@ async function locate() { keyPress("VK_ESCAPE"); // 关闭菜单 await sleep(1000); // 等待菜单关闭 return foundNames; + } else { + log.warn("未找到角色"); + throw new Error("未找到角色,当前位置没有角色"); } - log.warn("未找到角色"); - throw new Error("未找到角色,当前位置没有角色"); } /** @@ -358,10 +343,10 @@ async function locate() { * @param {boolean} hasKeyMouse - 是否需要执行键鼠操作 * @returns {Promise} - 如果检测到主菜单,则返回 true,否则在超时时返回 false。 */ -async function waitToMain(pathingName, hasKeyMouse = false) { +async function waitToMain(hasKeyMouse = false) { log.info("等待返回主界面..."); const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/paimon_menu.png"), 0, 0, genshin.width / 3.0, genshin.width / 5.0); - const maxRetries = 60; // 设置最大重试次数以防止无限循环 + const maxRetries = 180; // 设置最大重试次数以防止无限循环 let retries = 0; let enteredLoop = false; while (true) { @@ -400,8 +385,7 @@ async function waitToMain(pathingName, hasKeyMouse = false) { * @returns {boolean} 是否在指定范围内 */ function isNearPosition(x, y, targetX, targetY) { - // 使用配置中的阈值或默认值100 - const errorThreshold = 150; + const errorThreshold = 150; // 误差范围 return Math.abs(x - targetX) <= errorThreshold && Math.abs(y - targetY) <= errorThreshold; } @@ -469,26 +453,33 @@ function hasRemainingCharacters(characterPositions) { /** * 显示当前设置 */ -function showCurrentSettings() { - log.info("=== 当前设置 ==="); - log.info(`启动时重置进度: ${settings.resetOnStart ? "✅ 启用" : "❌ 禁用"}`); - log.info(`进度更新间隔: ${settings.progressUpdateInterval} 次`); - log.info(`最大运行次数: ${settings.maxRuns}`); - log.info(`跳过已完成角色: ${settings.skipCompletedCharacters ? "✅ 启用" : "❌ 禁用"}`); - log.info("==============="); -} +// function showCurrentSettings() { +// log.info("=== 当前设置 ==="); +// log.info(`启动时重置进度: ${settings.resetOnStart ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`重置前确认: ${settings.confirmBeforeReset ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`进度更新间隔: ${settings.progressUpdateInterval} 次`); +// log.info(`显示剩余角色: ${settings.showRemainingCharacters ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`启用进度日志: ${settings.enableProgressLogs ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`启用详细日志: ${settings.enableDetailedLogs ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`显示统计信息: ${settings.showStatistics ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`找不到角色时继续: ${settings.continueOnNotFound ? "✅ 启用" : "❌ 禁用"}`); +// log.info(`跳过已完成角色: ${settings.skipCompletedCharacters ? "✅ 启用" : "❌ 禁用"}`); +// log.info("==============="); +// } /** * 处理重置相关设置 * @param {Object[]} characterPositions - 角色点位信息数组 * @returns {Promise} 是否继续执行程序 */ -async function handleResetSettings() { +async function handleResetSettings(characterPositions) { // 启动时重置 if (settings.resetOnStart) { - log.info("⚠️ 检测到启动时重置设置已启用"); - log.info("将在 5 秒后重置所有进度,如需取消请立即停止程序"); - await sleep(5000); + if (settings.confirmBeforeReset) { + log.info("⚠️ 检测到启动时重置设置已启用"); + log.info("将在 5 秒后重置所有进度,如需取消请立即停止程序"); + await sleep(5000); + } await resetAllProgress(); log.info("🔄 已根据设置重置所有进度"); diff --git a/repo/js/TravelersTales/manifest.json b/repo/js/TravelersTales/manifest.json index 864aec19b..e42bc4f63 100644 --- a/repo/js/TravelersTales/manifest.json +++ b/repo/js/TravelersTales/manifest.json @@ -1,23 +1,26 @@ { - "manifest_version": 1, - "name": "游逸旅闻", - "version": "0.1.5", - "bgi_version": "0.45.1", - "description": "自动游逸旅闻", - "authors": [ - { - "name": "ddaodan", - "links": "https://github.com/ddaodan" - }, - { - "name": "秋云", - "links": "https://github.com/physligl" - }, - { - "name": "mno", - "links": "https://github.com/Bedrockx" - } - ], - "settings_ui": "settings.json", - "main": "main.js" -} \ No newline at end of file + "manifest_version": 1, + "name": "游逸旅闻", + "version": "0.2", + "bgi_version": "0.45.1", + "description": "自动游逸旅闻", + "authors": [ + { + "name": "ddaodan", + "link": "https://github.com/ddaodan" + }, + { + "name": "秋云", + "link": "https://github.com/physligl" + }, + { + "name": "Tool_tingsu", + "link": "https://github.com/Tooltingsu" + } + ], + "settings_ui": "settings.json", + "main": "main.js", + "saved_files": [ + "config.json" + ] + } \ No newline at end of file diff --git a/repo/js/TravelersTales/positions.json b/repo/js/TravelersTales/positions.json new file mode 100644 index 000000000..5be80c3f0 --- /dev/null +++ b/repo/js/TravelersTales/positions.json @@ -0,0 +1,82 @@ +[ + { "name": "安柏-1", "x": -1132, "y": 2297 }, + { "name": "安柏-2", "x": -959, "y": 2248 }, + { "name": "安柏-3", "x": -1301, "y": 2587 }, + { "name": "安柏-4", "x": -325, "y": 2068 }, + { "name": "安柏-5", "x": -652, "y": 2371 }, + { "name": "香菱-1", "x": 234, "y": -666 }, + { "name": "行秋-1", "x": 833, "y": 1604 }, + { "name": "行秋-2", "x": 833, "y": 1604 }, + { "name": "行秋-3", "x": 833, "y": 1604 }, + { "name": "行秋-4", "x": 390, "y": -543 }, + { "name": "凝光-1", "x": 449, "y": -834, "hasKeyMouse": true }, + { "name": "菲谢尔-1", "x": -778, "y": 2243, "hasKeyMouse": true }, + { "name": "菲谢尔-2", "x": -778, "y": 2243, "hasKeyMouse": true }, + { "name": "菲谢尔-3", "x": -778, "y": 2243, "hasKeyMouse": true }, + { "name": "诺艾尔-1", "x": -732, "y": 2262 }, + { "name": "诺艾尔-2", "x": -737, "y": 2266 }, + { "name": "砂糖-1", "x": -1675, "y": 2383 }, + { "name": "迪卢克-1", "x": -399, "y": 1769, "hasKeyMouse": true }, + { "name": "七七-1", "x": 231, "y": -672 }, + { "name": "刻晴-1", "x": 437, "y": -437 }, + { "name": "迪奥娜-1", "x": -397, "y": 2089 }, + { "name": "迪奥娜-2", "x": -894, "y": 1984 }, + { "name": "迪奥娜-3", "x": -421, "y": 2315 }, + { "name": "迪奥娜-4", "x": -421, "y": 2253 }, + { "name": "钟离-1", "x": 389, "y": -543 }, + { "name": "钟离-2", "x": 317, "y": -565 }, + { "name": "钟离-3", "x": 2389, "y": 2416 }, + { "name": "罗莎莉亚-1", "x": -684, "y": 2371 }, + { "name": "罗莎莉亚-2", "x": -927, "y": 2304 }, + { "name": "罗莎莉亚-3", "x": -904, "y": 2238 }, + { "name": "枫原万叶-1", "x": -117, "y": -165 }, + { "name": "枫原万叶-2", "x": 190, "y": -38 }, + { "name": "枫原万叶-3", "x": 566, "y": -180 }, + { "name": "柯莱-1", "x": 2843, "y": -384, "hasKeyMouse": true }, + { "name": "迪希雅-1", "x": 3771, "y": 3608 }, + { "name": "迪希雅-2", "x": 4436, "y": 3539 }, + { "name": "赛诺-1", "x": 3062, "y": -268 }, + { "name": "赛诺-2", "x": 3059, "y": -268 }, + { "name": "赛诺-3", "x": 2863, "y": -380 }, + { "name": "林尼-1", "x": 4197, "y": 4805 }, + { "name": "夏沃蕾-1", "x": 4356, "y": 3707 }, + { "name": "菲米尼-1", "x": 4202, "y": 3037, "hasKeyMouse": true }, + { "name": "夏洛蒂-1", "x": 4618, "y": 3518 }, + { "name": "夏洛蒂-2", "x": 4642, "y": 3495 }, + { "name": "夏洛蒂-3", "x": 4443, "y": 3538 }, + { "name": "绮良良-1", "x": 231, "y": -672 }, + { "name": "绮良良-2", "x": 231, "y": -672 }, + { "name": "绮良良-3", "x": -4473, "y": -2655 }, + { "name": "鹿野院平藏-1", "x": -4459, "y": -3141 }, + { "name": "鹿野院平藏-2", "x": -4467, "y": -3127 }, + { "name": "鹿野院平藏-3", "x": -4417, "y": -3037 }, + { "name": "鹿野院平藏-4", "x": -4232, "y": -2999 }, + { "name": "鹿野院平藏-5", "x": -4232, "y": -2999 }, + { "name": "珊瑚宫心海-1", "x": -700, "y": -3979 }, + { "name": "珊瑚宫心海-2", "x": -721, "y": -3806 }, + { "name": "托马-1", "x": -4399, "y": -3130 }, + { "name": "托马-2", "x": -929, "y": 2301, "hasKeyMouse": true }, + { "name": "云堇-1", "x": 315, "y": -565 }, + { "name": "云堇-2", "x": 315, "y": -565 }, + { "name": "申鹤-1", "x": 228, "y": -668 }, + { "name": "八重神子-1", "x": -4424, "y": -2475 }, + { "name": "神里绫人-1", "x": -4473, "y": -3132 }, + { "name": "瑶瑶-1", "x": 447, "y": -536 }, + { "name": "瑶瑶-2", "x": 766, "y": 1759 }, + { "name": "梦见月瑞希-1", "x": -4458, "y": -3111, "hasKeyMouse": true }, + { "name": "梦见月瑞希-2", "x": -4458, "y": -3111, "hasKeyMouse": true }, + { "name": "那维莱特-1", "x": 3600, "y": 3804 }, + { "name": "那维莱特-2", "x": 4472, "y": 3553 }, + { "name": "那维莱特-3", "x": 4797, "y": 2660 }, + { "name": "早柚-1", "x": -4327, "y": -3141 }, + { "name": "琳妮特-1", "x": 4582, "y": 3543 }, + { "name": "爱诺-1", "x": 9914, "y": 1656 }, + { "name": "爱诺-2", "x": 9914, "y": 1654 }, + { "name": "爱诺-3", "x": 9914, "y": 1654 }, + { "name": "爱诺-4", "x": 9914, "y": 1654 }, + { "name": "菲林斯-1", "x": 9285, "y": 2418 }, + { "name": "菲林斯-2", "x": 9424, "y": 1703 }, + { "name": "米卡-1", "x": 9447, "y": 1634 }, + { "name": "烟绯-1", "x": 9513, "y": 1614 }, + { "name": "辛焱-1", "x": 9461, "y": 1598, "hasKeyMouse": true } +] \ No newline at end of file diff --git a/repo/js/TravelersTales/settings.json b/repo/js/TravelersTales/settings.json index 56a0b5f38..967ad1f90 100644 --- a/repo/js/TravelersTales/settings.json +++ b/repo/js/TravelersTales/settings.json @@ -2,27 +2,51 @@ { "name": "resetOnStart", "type": "checkbox", - "label": "启动时重置所有进度", + "label": "启动时重置所有进度\n仅推荐在切换账号后使用!", "default": false }, + { + "name": "confirmBeforeReset", + "type": "checkbox", + "label": "重置前需要确认", + "default": true + }, { "name": "progressUpdateInterval", "type": "select", "label": "进度更新间隔(次数)", - "options": [ - "1", - "3", - "5", - "10", - "20" - ], + "options": ["1", "3", "5", "10", "20"], "default": "3" }, + { + "name": "showRemainingCharacters", + "type": "checkbox", + "label": "显示剩余角色列表", + "default": true + }, + { + "name": "enableProgressLogs", + "type": "checkbox", + "label": "启用进度日志", + "default": true + }, + { + "name": "enableDetailedLogs", + "type": "checkbox", + "label": "启用详细日志", + "default": true + }, + { + "name": "showStatistics", + "type": "checkbox", + "label": "显示统计信息", + "default": true + }, { "name": "maxRuns", "type": "input-text", - "label": "最大运行次数", - "default": "50" + "label": "最大运行次数\n每天刷新一个逸闻,不推荐设置的太高", + "default": "1" }, { "name": "skipCompletedCharacters", @@ -30,4 +54,4 @@ "label": "跳过已完成的角色", "default": true } -] \ No newline at end of file +]