From c98915dd7777c7abf84f3aa3a738c0e915666543 Mon Sep 17 00:00:00 2001 From: LX666-666 Date: Thu, 26 Jun 2025 23:55:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A7=E7=89=88=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=AF=8F=E6=97=A5=E5=A7=94=E6=89=98=20(#1203)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/RecognitionObject/Completed.png | Bin 1612 -> 0 bytes .../Data/RecognitionObject/UnCompleted.png | Bin 1513 -> 0 bytes .../Data/RecognitionObject/paimon_menu.png | Bin 2372 -> 0 bytes repo/js/AutoEntrust/Data/URL.txt | 11 - .../js/AutoEntrust/Data/commissions_data.json | 29 - .../AutoEntrust/Data/commissions_report.txt | 9 - repo/js/AutoEntrust/Data/每日委托URL.txt | 11 - repo/js/AutoEntrust/README.md | 68 - .../A2,1-望风山地 -(不一定有效)危险运输现象-2.json | 151 -- .../A2-望风山地 -(不一定有效)危险运输现象.json | 118 -- .../(无效)固若金汤/H5龙脊雪山-A1固若金汤.json | 68 - .../(无效)固若金汤/H5龙脊雪山-A2固若金汤.json | 186 --- .../assets/process/冒险家安娜/process.json | 6 - .../冒险家安娜/冒险家,安娜!-蒙德城-1.json | 31 - .../冒险家安娜/冒险家,安娜!-蒙德城-2.json | 49 - .../冒险家安娜/冒险家,安娜!-蒙德城-3.json | 77 - .../assets/process/父亲能做的事/process.json | 6 - .../父亲能做的事/父亲能做的事-晨曦酒庄-1.json | 112 -- .../父亲能做的事/父亲能做的事-晨曦酒庄-2.json | 67 - .../父亲能做的事/父亲能做的事-晨曦酒庄-3.json | 112 -- .../assets/process/诗歌交流/process.json | 6 - .../process/诗歌交流/诗歌交流-坠星山谷-1.json | 67 - .../process/诗歌交流/诗歌交流-坠星山谷-2.json | 40 - .../process/诗歌交流/诗歌交流-坠星山谷-3.json | 31 - .../assets/process/语言交流/process.json | 7 - .../assets/process/语言交流/语言交流-1.json | 30 - .../assets/process/语言交流/语言交流-2.json | 30 - .../assets/process/语言交流/语言交流-3.json | 39 - .../assets/process/语言交流/语言交流-4.json | 21 - .../assets/process/说到做到/process.json | 5 - .../assets/process/说到做到/说到做到-1.json | 76 - .../assets/process/说到做到/说到做到-2.json | 53 - .../那位先生的委托-蒙德城-1.json | 49 - .../那位先生的委托-蒙德城-2.json | 76 - .../那位先生的委托-蒙德城-3.json | 49 - .../那位先生的委托-蒙德城/那位先生的委托.txt | 5 - .../process/那位先生的委托/process.json | 5 - .../那位先生的委托-蒙德城-1.json | 49 - .../那位先生的委托-蒙德城-2.json | 76 - .../那位先生的委托-蒙德城-3.json | 49 - .../钥匙是易丢物品-晨曦酒庄/晨曦酒庄.txt | 4 - .../钥匙是易丢物品-晨曦酒庄-1.json | 68 - .../钥匙是易丢物品-晨曦酒庄-2 .json | 193 --- .../有小湖泊的位置.txt | 4 - .../钥匙是易丢物品-达达乌帕谷-1.json | 58 - .../钥匙是易丢物品-达达乌帕谷-2.json | 178 --- .../钥匙是易丢物品/晨曦酒庄/process.json | 4 - .../晨曦酒庄/钥匙是易丢物品-晨曦酒庄-1.json | 68 - .../晨曦酒庄/钥匙是易丢物品-晨曦酒庄-2 .json | 193 --- .../钥匙是易丢物品/达达乌帕谷/process.json | 4 - .../达达乌帕谷/钥匙是易丢物品-达达乌帕谷-1.json | 58 - .../达达乌帕谷/钥匙是易丢物品-达达乌帕谷-2.json | 178 --- .../(上不了塔)新的风暴尚未出现/process.json | 7 - .../新的风暴尚未出现-1.json | 84 - .../新的风暴尚未出现-2.json | 80 - .../新的风暴尚未出现-3.json | 30 - .../assets/丘丘人的一小步/低语森林-1.json | 40 - .../assets/丘丘人的一小步/坠星山谷-1.json | 162 -- .../assets/丘丘人的一小步/苍风高地-1.json | 75 - .../assets/丘丘人的一小步/鹰翔海滩-1.json | 96 -- .../assets/临危受命/千风神殿-1.json | 45 - .../AutoEntrust/assets/临危受命/奔狼领-1.json | 109 -- .../AutoEntrust/assets/临危受命/奔狼领-2.json | 161 -- .../assets/临危受命/覆雪之路-1.json | 28 - .../assets/临危受命/达达乌帕谷-1.json | 57 - .../assets/临危受命/达达乌帕谷-2.json | 84 - .../assets/临危受命/达达乌帕谷-3.json | 165 -- .../assets/临危受命/风龙废墟-2.json | 39 - .../assets/临危受命/龙脊雪山-1.json | 28 - .../assets/为了执行官大人/龙脊雪山-1.json | 36 - .../assets/冷冰冰的大麻烦/晨曦酒庄-1.json | 93 -- .../assets/冷冰冰的大麻烦/龙脊雪山-1.json | 30 - .../assets/冷冰冰的大麻烦/龙脊雪山-2.json | 102 -- .../assets/冷凉凉的大团危机/苍风高地-1.json | 93 -- .../assets/圆滚滚的易爆品/(out)果酒湖-1.json | 48 - .../assets/圆滚滚的易爆品/坠星山谷-1.json | 70 - .../assets/圆滚滚的易爆品/奔狼领-1.json | 130 -- .../assets/圆滚滚的易爆品/明冠山地-1.json | 48 - .../assets/圆滚滚的易爆品/苍风高地-1.json | 94 -- .../assets/圆滚滚的易爆品/苍风高地-2.json | 153 -- .../assets/圆滚滚的易爆品/风起地-1.json | 87 -- .../assets/持盾的危机/千风神殿-1.json | 125 -- .../assets/持盾的危机/坠星山谷-1.json | 124 -- .../assets/攀高危险/坠星山谷-.json | 118 -- .../assets/攀高危险/坠星山谷-1.json | 76 - .../assets/攀高危险/坠星山谷-2.json | 118 -- .../AutoEntrust/assets/攀高危险/奔狼领-1.json | 75 - .../AutoEntrust/assets/攀高危险/奔狼领-2.json | 142 -- .../assets/攀高危险/明冠山地-1.json | 142 -- .../assets/攀高危险/未知攀高危险.json | 66 - .../AutoEntrust/assets/攀高危险/果酒湖-1.json | 75 - .../assets/攀高危险/苍风高地-1.json | 127 -- .../assets/攀高危险/风啸山坡-1.json | 102 -- .../assets/攀高危险/风啸山坡-2 .json | 135 -- .../assets/攀高危险/风啸山坡-2-old.json | 66 - .../assets/攀高危险/风啸山坡-2.json | 66 - .../AutoEntrust/assets/攀高危险/风起地-1.json | 102 -- .../AutoEntrust/assets/攀高危险/风起地-2.json | 150 -- .../assets/极速前进/龙脊雪山-1.json | 158 -- .../assets/邪恶的扩张/坠星山谷-1.json | 39 - .../assets/邪恶的扩张/奔狼领-1.json | 109 -- .../assets/邪恶的扩张/摘星崖-1.json | 39 - .../assets/邪恶的扩张/明冠峡-1-old.json | 68 - .../assets/邪恶的扩张/明冠峡-1.json | 102 -- .../assets/邪恶的扩张/明冠峡北-1.json | 68 - .../assets/邪恶的扩张/望风山地-1.json | 84 - .../assets/邪恶的扩张/苍风高地-1.json | 118 -- .../assets/邪恶的扩张/达达乌帕谷-1.json | 138 -- .../assets/邪恶的扩张/风龙废墟-1.json | 143 -- repo/js/AutoEntrust/main.js | 1367 ----------------- repo/js/AutoEntrust/manifest.json | 15 - repo/js/AutoEntrust/name.json | 23 - repo/js/AutoEntrust/name.txt | 10 - repo/js/AutoEntrust/settings.json | 18 - repo/js/AutoEntrust/对话委托制作方法.md | 45 - repo/js/AutoEntrust/对话委托制做方法.txt | 59 - repo/js/AutoEntrust/配置组配置参考.jpg | Bin 108256 -> 0 bytes 117 files changed, 9570 deletions(-) delete mode 100644 repo/js/AutoEntrust/Data/RecognitionObject/Completed.png delete mode 100644 repo/js/AutoEntrust/Data/RecognitionObject/UnCompleted.png delete mode 100644 repo/js/AutoEntrust/Data/RecognitionObject/paimon_menu.png delete mode 100644 repo/js/AutoEntrust/Data/URL.txt delete mode 100644 repo/js/AutoEntrust/Data/commissions_data.json delete mode 100644 repo/js/AutoEntrust/Data/commissions_report.txt delete mode 100644 repo/js/AutoEntrust/Data/每日委托URL.txt delete mode 100644 repo/js/AutoEntrust/README.md delete mode 100644 repo/js/AutoEntrust/assets/(无效)危险运输现象/A2,1-望风山地 -(不一定有效)危险运输现象-2.json delete mode 100644 repo/js/AutoEntrust/assets/(无效)危险运输现象/A2-望风山地 -(不一定有效)危险运输现象.json delete mode 100644 repo/js/AutoEntrust/assets/(无效)固若金汤/H5龙脊雪山-A1固若金汤.json delete mode 100644 repo/js/AutoEntrust/assets/(无效)固若金汤/H5龙脊雪山-A2固若金汤.json delete mode 100644 repo/js/AutoEntrust/assets/process/冒险家安娜/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/冒险家安娜/冒险家,安娜!-蒙德城-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/冒险家安娜/冒险家,安娜!-蒙德城-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/冒险家安娜/冒险家,安娜!-蒙德城-3.json delete mode 100644 repo/js/AutoEntrust/assets/process/父亲能做的事/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/父亲能做的事/父亲能做的事-晨曦酒庄-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/父亲能做的事/父亲能做的事-晨曦酒庄-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/父亲能做的事/父亲能做的事-晨曦酒庄-3.json delete mode 100644 repo/js/AutoEntrust/assets/process/诗歌交流/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/诗歌交流/诗歌交流-坠星山谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/诗歌交流/诗歌交流-坠星山谷-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/诗歌交流/诗歌交流-坠星山谷-3.json delete mode 100644 repo/js/AutoEntrust/assets/process/语言交流/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/语言交流/语言交流-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/语言交流/语言交流-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/语言交流/语言交流-3.json delete mode 100644 repo/js/AutoEntrust/assets/process/语言交流/语言交流-4.json delete mode 100644 repo/js/AutoEntrust/assets/process/说到做到/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/说到做到/说到做到-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/说到做到/说到做到-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托-蒙德城/那位先生的委托-蒙德城-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托-蒙德城/那位先生的委托-蒙德城-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托-蒙德城/那位先生的委托-蒙德城-3.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托-蒙德城/那位先生的委托.txt delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托/那位先生的委托-蒙德城-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托/那位先生的委托-蒙德城-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/那位先生的委托/那位先生的委托-蒙德城-3.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品-晨曦酒庄/晨曦酒庄.txt delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品-晨曦酒庄/钥匙是易丢物品-晨曦酒庄-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品-晨曦酒庄/钥匙是易丢物品-晨曦酒庄-2 .json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品-达达乌帕谷/有小湖泊的位置.txt delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品-达达乌帕谷/钥匙是易丢物品-达达乌帕谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品-达达乌帕谷/钥匙是易丢物品-达达乌帕谷-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品/晨曦酒庄/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品/晨曦酒庄/钥匙是易丢物品-晨曦酒庄-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品/晨曦酒庄/钥匙是易丢物品-晨曦酒庄-2 .json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品/达达乌帕谷/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品/达达乌帕谷/钥匙是易丢物品-达达乌帕谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/钥匙是易丢物品/达达乌帕谷/钥匙是易丢物品-达达乌帕谷-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/(上不了塔)新的风暴尚未出现/process.json delete mode 100644 repo/js/AutoEntrust/assets/process/(上不了塔)新的风暴尚未出现/新的风暴尚未出现-1.json delete mode 100644 repo/js/AutoEntrust/assets/process/(上不了塔)新的风暴尚未出现/新的风暴尚未出现-2.json delete mode 100644 repo/js/AutoEntrust/assets/process/(上不了塔)新的风暴尚未出现/新的风暴尚未出现-3.json delete mode 100644 repo/js/AutoEntrust/assets/丘丘人的一小步/低语森林-1.json delete mode 100644 repo/js/AutoEntrust/assets/丘丘人的一小步/坠星山谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/丘丘人的一小步/苍风高地-1.json delete mode 100644 repo/js/AutoEntrust/assets/丘丘人的一小步/鹰翔海滩-1.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/千风神殿-1.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/奔狼领-1.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/奔狼领-2.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/覆雪之路-1.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/达达乌帕谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/达达乌帕谷-2.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/达达乌帕谷-3.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/风龙废墟-2.json delete mode 100644 repo/js/AutoEntrust/assets/临危受命/龙脊雪山-1.json delete mode 100644 repo/js/AutoEntrust/assets/为了执行官大人/龙脊雪山-1.json delete mode 100644 repo/js/AutoEntrust/assets/冷冰冰的大麻烦/晨曦酒庄-1.json delete mode 100644 repo/js/AutoEntrust/assets/冷冰冰的大麻烦/龙脊雪山-1.json delete mode 100644 repo/js/AutoEntrust/assets/冷冰冰的大麻烦/龙脊雪山-2.json delete mode 100644 repo/js/AutoEntrust/assets/冷凉凉的大团危机/苍风高地-1.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/(out)果酒湖-1.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/坠星山谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/奔狼领-1.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/明冠山地-1.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/苍风高地-1.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/苍风高地-2.json delete mode 100644 repo/js/AutoEntrust/assets/圆滚滚的易爆品/风起地-1.json delete mode 100644 repo/js/AutoEntrust/assets/持盾的危机/千风神殿-1.json delete mode 100644 repo/js/AutoEntrust/assets/持盾的危机/坠星山谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/坠星山谷-.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/坠星山谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/坠星山谷-2.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/奔狼领-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/奔狼领-2.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/明冠山地-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/未知攀高危险.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/果酒湖-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/苍风高地-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/风啸山坡-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/风啸山坡-2 .json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/风啸山坡-2-old.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/风啸山坡-2.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/风起地-1.json delete mode 100644 repo/js/AutoEntrust/assets/攀高危险/风起地-2.json delete mode 100644 repo/js/AutoEntrust/assets/极速前进/龙脊雪山-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/坠星山谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/奔狼领-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/摘星崖-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/明冠峡-1-old.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/明冠峡-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/明冠峡北-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/望风山地-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/苍风高地-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/达达乌帕谷-1.json delete mode 100644 repo/js/AutoEntrust/assets/邪恶的扩张/风龙废墟-1.json delete mode 100644 repo/js/AutoEntrust/main.js delete mode 100644 repo/js/AutoEntrust/manifest.json delete mode 100644 repo/js/AutoEntrust/name.json delete mode 100644 repo/js/AutoEntrust/name.txt delete mode 100644 repo/js/AutoEntrust/settings.json delete mode 100644 repo/js/AutoEntrust/对话委托制作方法.md delete mode 100644 repo/js/AutoEntrust/对话委托制做方法.txt delete mode 100644 repo/js/AutoEntrust/配置组配置参考.jpg diff --git a/repo/js/AutoEntrust/Data/RecognitionObject/Completed.png b/repo/js/AutoEntrust/Data/RecognitionObject/Completed.png deleted file mode 100644 index f5786f87e69e3ba825b982185600a6921c0110ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1612 zcmV-S2DABzP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1>s3VK~z{r%~)Gc zTvZhQ&fJH&albW%TA>t#q-srTq^XzCSdGybAAK+}@fY|{eDgu0QKME9)1)?v;zz<=zNo%nX}KHnf2}Ut;;^j^2~&a5=Kf*B9K_Y zTzHf|C(z>RhSlKE?EyE_bD_vo+sm-bVtz#N|k^rFW&iaGJY{~ z2aWblI89ah{R~Rh0~_&0TwnbX4}$|ZM8+SochR0}yPk~_BcLLw#<3n>!jSI=%tyvi zZ)-=Z>ntpWGJQ=hN``=n6k@3e79zK4=fA+cKpz~&Dzv#@fyZ1=D>AyzMu`wmkw`@` z9lC)V-tRCU9*527#&P#+x^%WSvm^*4Dcd{<_G5VMCoD(rNdUJvyK#)9V^Xa8s{AMk z0uO@MG3fiAQsuPd{aWkO==8jimG8I4|42YZBJkB$TgUZG~+KaBg0U&Ek&#H!MZ($e$1T zF5s^JD&pkw-NH`>_j|v=g#U_ofdiKR#cZ%q);WU)TL%n^QCnOfwk5zpHR=CdIzg_G zj3E7SzxQh*)k}pZEOR@7H-gh+@1swMd@lv>22G~Dr%={u742ILc3Hn0Y)OC(o(lD2 zk}6_2xh}hvN@>F%U&h$_&s1>6bYj_Z$_#$Rsk+XFZsM=iujqYPB$Hy<5GjV+T!&{X z-bJ~&fvyVEeKztEU}G1lq>qx3{=_4FmY`&Q+($Y4Hf52;$OMsKDLjcJ#mZdxCiOKJ zFcTgYvaEM)_aUuum*-6!E;~V2yE8nEyaYHWbC%%r#yz=)+|WuPDTQZj{W8g8Qg$^P z2{LvzG$LtoK5|R8Iz(Err>1bN7pXl+UjQ#BkYOC)1uYrM4RhXYL(k4 z>*N(d!N@rivs~C1?oEOTFE$d3lscEh6MRp0k+EqHnMMZiNvYP_f(pxFij6tyDhH+b zrFWb^q`zxcY-snK!*iAIQM*tra~g6<7K*%wdiF#t6%wPl22A?<;ET^nM#)&Ez+|w9 z1UML3dh8Ji)Qsgi^lMc?gS`XYH6NnRcAV*J^ZP(v{}~lC>_!h9rb^N2GoIH`X=$Rs z(^^~pV=g{6gIliIOM&=`u5}7#(K{QR9vbW>H#$5$lJ|>YJY&blD!iLqcxEXb-VgjC z6*Nj+WL%Bt^&ug(AuqCQG!glBR}WsS{(wBj$HV`KKpJc)8_Y*Oj*;omkVr4dzPWg%soEe zFOKnyUFR@1qSJj|(jXtYbBx*4z6RDgpQ?^JUqW-)NxIr!%FKsd{~{YvX>G!Z@^@&w zO$Dh*^8)R>_O34^aF1VaZ^tp`SvsV1k6(Q3X-k-di?rN9vN%=wKAIgbNLJ#(87wU= z?(y09YU>gDPVr=ujXnF6Nw7SQI8NbA%}0`M`7pu{pcL|k#psa7fz6JSLh7KfX98*P z0mMVCaHr=y6{j|;ALT^MC3S;4%|f0m><2}9yiVOc6)-*`&V>J#MzE18E|n$I0000< KMNUMnLSTYEnEQAD diff --git a/repo/js/AutoEntrust/Data/RecognitionObject/UnCompleted.png b/repo/js/AutoEntrust/Data/RecognitionObject/UnCompleted.png deleted file mode 100644 index 3bd30f70838392f920c69c19fe252e6e1d775d56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1513 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1%63HK~z{r?U>n5 z8&?#@4_@(ZV=x%wg~e=1fF_}B+9FlTL*Lpy_o07frRJehL>^L_G$9ItG=w!_wZYgd zw(;8YU5~{ucF8jO(#J^_nxXu8mP(}}>GcLOTWr*BbCAVmr>;PldP0NbVzDN(MfxP|XcCvt zoeL{%tuE2d`Z6WKd4Ro6u$#l%*od44h~RXbX%2 zwESj{))rsWc_vNeQb~GO8xR(q{F1_>lVo$aq}2-e@-`L0bpxVYE>SYRN6Yhn($b4( zls!9bS{T^-xJrwB|Jvd!Di#Zx^SG|Kvs98c-n|i4yDrK2E`QEnw6*e%!=WIp)~Bvp z-@ks&C!VD^Cx8;8*-UP4H~IUAMQkC);PS)0E!zLIMyJVywDSUUyM_FbD1GNfrJmwo9o*OeBOHSPa5O?mwak2Y5%9pR9H#mktNl zI4^Z`@DEK))9Ax*$>H&m-e8dKevTeks6;(PS2FOCER4peoL6v68`Hl>WLP%K;6mHUfuApQO0FoKdN8QP&{aU^Mc1 zt{zB(#_p*!U5=@ZG)NZr-;CCg6Kxesq&(!%pU*cwOD zY6XbLKxyIbV0U>qmh{4f5QynTStE@mljt7PkAGsX1T~eHy5iubL~Msgra4-AIZFi; z&da-ns|;)fgl3VgCl7u(U4amdJ)EKF)YmnuKrK|=3h>2fSK+Y_i%F`x&IAkuZMK{=Bhp1-^)EVG%~>=JET=@)U_Od z^(mj;F9z z&@7I>O*HXg4rny=Mj#xpx0fenJSw(=W^r%`8a~QFX!tI9eE!NCH9(>D^@VAOpST=6 z#neh9Eoc*mSdlKo9K;1V^DrDJ!8GIQ@Uhh%T@>5u{Y|3Xtui{e??NErPdRkr86hw@ zN&|NvG*vcg(ULgO6^MwUig>DKp`ObO9$cc6Ux|*;inZjlEDi$!hJ*3x8Bxms;<111 z3sDzuf|kX>CRV$P2JcOC4Xkt!xDuV9(es5?8vd`O5t!ZZ(2b`lj93^X1;V4(bL+Lm zT|zcA)TGH6yczpn1B_T|+^o22JyW}CU{(A}OwNC9xq5sS*D9aIwFc3@%5D^CYNol4 P00000NkvXXu0mjfo|)AD diff --git a/repo/js/AutoEntrust/Data/RecognitionObject/paimon_menu.png b/repo/js/AutoEntrust/Data/RecognitionObject/paimon_menu.png deleted file mode 100644 index c424325b17a4956f7802352e7609bfcff2721afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2372 zcmV-K3A^@*P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2-!(QK~z{rt(SRF zR96@7{OrIrs3OB6ST- zP@DTTKA&cd-_x`4ifbQ;v^!UEWYd=r=ft5o>jaWdZ$#*F1Dp=`Lw#i>UdiRG$$NWQ zlS!qJbxWbLunJ)v#?D#+4Ko*L&U1#Kww~+hpIblw8}X6L@I3V>qTOd=&jwpmmE@tP zN6PlU71k%NS0-b{sVwYPN+w3?*E%@$g9jWc1ShNWOUqVas)}Z=D&g zor^(ddmGo&$7^Bli&I(H`jA5yHPeBFc|eOy)65lLn65z7v3Rt#cd}#T%%3oS_UaWY zP8XsoYg`}%_!_r5rlgw?!gfco5(B+3n1mL!af6==BzpXu8{&uT3qW6mS~El zkk8E=nsSFID@2ckOt;?zeTP8kFWU_L<(r{v?++`_P}J1FJ zrGzD=Wn-M71IC)Hz~luUn6cEC1O>prF&HzQw!v`aH!xiFElga#ftK|K6j!LeQ~fcd zu+pkpT)duyod@HvcufdKo4P~8+8;*FJ6JPb9Y(ejI`+W`*mDLlI_jSS1!4JxCG0UD zjGX)uI0x;=R2zR7yM)5TEgZ8vA~DL$8>v}OxltdFg0S1arJ|~;ihCNEj?QkRP&zVj z41%F+IE+Xf^I2P(TeuM)kAkquN&(Ks|A_jR&0Ndi6qZ$E%2INE=P)evj^tWD4GO}l zs|660<>Kz0L`bDQTlvJ_ zd*fhAC$o!g1)mB9VKP}S5-webP*{r6(tI2{eg@gOg$bAczCL=vv$<53XC zkeQu}q9VFy$(tdpeg^M=ojCvFHMF#d*ud8xObT(KlbXT*a1qj;9&~keb5F|ifiUJp zNhv9icK(5G$#b-d>yYrnMFa##prLW#L-Bw@#s88sxTm*NR@Wfn@W}xeH4txvNhA_- zcq#jW+`Iw^Y1d>OFVNK}fV`&#XU@hWEkpUF{2C@MnmesS7C)bBQI0pl_)qhZ`REaH zbDpBOT!@R8ZXho^3q6ur^t9F?BQ1rEbE?8D^!SPMuy^t0T9ku#bS|6c^{Bu}MgWpb_a$GGT7-OE0cORWTp;=~E8}W|#CW zR${z~Eqp`wL7jee<~rcixt~x{E}+8X!^F>HL`^VR!V1gg=di+jLJq*rB>)Q@{g7Lj zN99xl$_gIiNnRc|O*L9+cNVVl#e~`R*dBe9y@5R87vNS>8Xjb1<5}5<`I$FqjvfA{ zJ{#fD2dJ13WAB0QFoW(@F(=Q`N}ACvu7 z94CBkV1wTuWpOIxN6it998EI_F8V*b>3*K`Kbcg3(3`{ZXAAT4bR7q)3 zi8tS63pzXdYS4k;sTtc~=+|VZ=M}SYR<;_3-Qba3-?kI z@t^~J`z(Eg++aT0lFm2#AOF&x$eXiTPDp7 z;rzyS?wDrzH8d>N!Q5>Jw(UO$fv{#+$=c8<2qR6M$*06z3(!p0ZLKAKm_<8f>KcaW zD?;EHxOd1!^DJDqu(_;R)XLV2!$I8I4&R6q7;oW)^}CL8txPKF!PbNS!W0rV$88s8 zyGKB6kw0#xq;n$%hBwJN2#F7dP7#9<6del#`#`8ISPy>D+c2;{HUVl@8(`$M2PW>3 z7-Q~*9Wn7r`7O`VI~H~U2hk!@J|r+OaV_~#E-csV!lVV>RK9J;^`s2e1q2j4nK*SX zGZ)dZKfxvV0K9gdz}34C(5Yl$!kg!F3Wgp>VC)%%!qQ5vd2ljv^5GwL7@MQMN9={` zxc~SmS}1mjByBi&DgoNon-Ca%l1BE@0_1GH$rL%t!bs} 返回 "completed", "uncompleted", 或 "unknown" - */ -async function detectCommissionStatusByImage(buttonIndex) { - try { - const button = COMMISSION_DETAIL_BUTTONS[buttonIndex]; - if (!button) { - log.error("无效的按钮索引: {index}", buttonIndex); - return "unknown"; - } - - //log.info("检测委托{id}的完成状态(图像识别)", button.id); - - // 截图 - let captureRegion = captureGameRegion(); - - // 检测区域:按钮位置左右各扩展更大范围 - const checkRegion = captureRegion.deriveCrop( - button.checkX, - button.y - 30, // 稍微向上扩展检测区域 - button.checkWidth, - 60 // 增加高度以确保捕获状态图标 - ); - - - // 加载完成和未完成的模板图像 - let completedTemplate, uncompletedTemplate; - - try { - completedTemplate = file.readImageMatSync(COMPLETED_IMAGE_PATH); - uncompletedTemplate = file.readImageMatSync(UNCOMPLETED_IMAGE_PATH); - } catch (imageError) { - log.error("加载模板图像失败: {error}", imageError); - return "unknown"; - } - - // 创建识别对象,使用更灵活的参数 - const completedRo = RecognitionObject.TemplateMatch(completedTemplate, 0, 0, button.checkWidth, 60); - const uncompletedRo = RecognitionObject.TemplateMatch(uncompletedTemplate, 0, 0, button.checkWidth, 60); - - // 降低匹配阈值,提高识别灵活性 - completedRo.threshold = 0.65; - uncompletedRo.threshold = 0.65; - - // 检测完成状态 - const completedResult = checkRegion.find(completedRo); - if (!completedResult.isEmpty()) { - log.info("委托{id}已完成", button.id); - return "completed"; - } - - // 检测未完成状态 - const uncompletedResult = checkRegion.find(uncompletedRo); - if (!uncompletedResult.isEmpty()) { - log.info("委托{id}未完成", button.id); - return "uncompleted"; - } - - /* 尝试使用更低的阈值再次检测 - log.info("使用更低阈值再次检测委托{id}状态", button.id); - completedRo.threshold = 0.6; - uncompletedRo.threshold = 0.6; - - const completedResult2 = checkRegion.find(completedRo); - if (!completedResult2.isEmpty()) { - log.info("委托{id}已完成(低阈值检测)", button.id); - return "completed"; - } - - const uncompletedResult2 = checkRegion.find(uncompletedRo); - if (!uncompletedResult2.isEmpty()) { - log.info("委托{id}未完成(低阈值检测)", button.id); - return "uncompleted"; - }*/ - - log.warn("委托{id}状态识别失败", button.id); - return "unknown"; - - } catch (error) { - log.error("检测委托完成状态时出错: {error}", error); - return "unknown"; - } -} - - // 读取支持的委托列表 - function loadSupportedCommissions() { - let supportedCommissions = { - fight: [], - talk: [] - }; - - try { - // 使用正确的文件读取方法 - log.info("开始读取支持的委托列表: {path}", SUPPORT_LIST_PATH); - - // 尝试读取文件内容 - try { - const supportListContent = file.readTextSync(SUPPORT_LIST_PATH); - - if (supportListContent && supportListContent.trim()) { - try { - // 解析JSON格式 - const commissionData = JSON.parse(supportListContent); - supportedCommissions.fight = commissionData.fight || []; - supportedCommissions.talk = commissionData.talk || []; - - log.info("已加载支持的战斗委托列表,共 {count} 个", supportedCommissions.fight.length); - log.info("已加载支持的对话委托列表,共 {count} 个", supportedCommissions.talk.length); - } catch (jsonError) { - log.error("解析委托列表JSON失败: {error}", jsonError); - } - } else { - log.warn("支持的委托列表为空"); - } - } catch (readError) { - // 如果读取失败,检查文件是否存在 - log.error("读取委托列表失败: {error}", readError); - - // 尝试创建文件 - try { - // 创建默认的JSON结构 - const defaultJson = JSON.stringify({ - fight: [], - talk: [] - }, null, 2); - - const writeResult = file.writeTextSync(SUPPORT_LIST_PATH, defaultJson); - if (writeResult) { - log.info("已创建空的委托列表文件"); - } else { - log.error("创建委托列表文件失败"); - } - } catch (writeError) { - log.error("创建委托列表文件失败: {error}", writeError); - } - } - } catch (error) { - log.error("处理委托列表时出错: {error}", error); - } - - return supportedCommissions; - } - - // 清理文本(去除标点符号等) - function cleanText(text) { - if (!text) return ""; - // 去除标点符号和特殊字符 - return text.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, "").trim(); - } - - // 进入委托界面 - async function enterCommissionScreen() { - log.info("正在进入委托界面..."); - - try { - // 使用F1快捷键直接打开委托界面 - log.info("尝试使用F1快捷键打开委托界面"); - keyDown("VK_F1"); - await sleep(100); - keyUp("VK_F1"); - - // 点击委托界面 - log.info("点击委托界面"); - await sleep(900); - click(300, 350); - await sleep(100); - log.info("已进入委托界面"); - return true; - - } catch (error) { - log.error("进入委托界面失败: {error}", error); - return false; - } - } - - // 自动执行划页操作 - 新的滑动方法 - async function PageScroll(scrollCount) { - try { - const clickX = 950; // 假设点击的起始坐标 - const clickY = 600; - const totalDistance = 300; // 假设每次滑动的总距离 - const stepDistance = 10; // 每步移动的距离 - - for (let i = 0; i < scrollCount; ++i) { - log.info(`开始第 ${i + 1} 次滑动`); - - // 如果点击坐标为 (0, 0),则跳过点击 - if (clickX !== 0 || clickY !== 0) { - moveMouseTo(clickX, clickY); // 移动到指定坐标 - await sleep(100); - } - - // 按住鼠标左键 - leftButtonDown(); - - // 将鼠标移动到目标位置,模拟更自然的拖动操作 - const steps = totalDistance / stepDistance; // 分成若干步移动 - - for (let j = 0; j < steps; j++) { - moveMouseBy(0, -stepDistance); // 每次移动 stepDistance 像素 - await sleep(10); // 每次移动后延迟10毫秒 - } - - // 释放鼠标左键 - await sleep(700); - leftButtonUp(); - await sleep(1000); // 增加滑动后的等待时间,确保界面稳定 - } - - return true; - } catch (error) { - log.error(`执行滑动操作时发生错误:${error.message}`); - return false; - } - } - - // 识别委托地点 - function recognizeCommissionLocation() { - try { - log.info("识别委托地点 ({x}, {y}) ({width}, {height})...", - LOCATION_OCR_X, LOCATION_OCR_Y, LOCATION_OCR_X + LOCATION_OCR_WIDTH, LOCATION_OCR_Y + LOCATION_OCR_HEIGHT); - - // 创建OCR识别对象 - const locationOcrRo = RecognitionObject.Ocr( - LOCATION_OCR_X, - LOCATION_OCR_Y, - LOCATION_OCR_WIDTH, - LOCATION_OCR_HEIGHT - ); - - // 截图识别 - let captureRegion = captureGameRegion(); - let results = captureRegion.findMulti(locationOcrRo); - - if (results.count > 0) { - // 取第一个结果作为地点 - return results[0].text.trim(); - } - - return "未知地点"; - } catch (error) { - log.error("识别委托地点时出错: {error}", error); - return "识别失败"; - } - } - - // 保存委托数据到文件 - function saveCommissionsData(commissionsTable) { - try { - log.info("保存委托数据到文件..."); - - // 创建JSON格式的委托数据 - const commissionsData = { - timestamp: new Date().toISOString(), - commissions: commissionsTable - }; - - // 保存到文件 - const outputPath = `${OUTPUT_DIR}/commissions_data.json`; - try { - const jsonResult = file.writeTextSync(outputPath, JSON.stringify(commissionsData, null, 2)); - if (jsonResult) { - log.info("委托数据已保存到: {path}", outputPath); - } else { - log.error("保存委托数据失败"); - } - } catch (jsonError) { - log.error("保存委托数据失败: {error}", jsonError); - } - - // 创建可读的文本报告 - let reportContent = "# 原神每日委托识别报告\r\n"; - reportContent += `生成时间: ${new Date().toLocaleString()}\r\n\r\n`; - reportContent += "## 委托列表\r\n\r\n"; - - for (const commission of commissionsTable) { - const supportStatus = commission.supported ? "✅ 支持" : "❌ 不支持"; - const locationInfo = commission.location ? `(${commission.location})` : ""; - reportContent += `${commission.id}. ${commission.name} ${locationInfo} - ${supportStatus}\r\n`; - } - - // 保存报告 - const reportPath = `${OUTPUT_DIR}/commissions_report.txt`; - try { - const reportResult = file.writeTextSync(reportPath, reportContent); - if (reportResult) { - log.info("委托报告已保存到: {path}", reportPath); - } else { - log.error("保存委托报告失败"); - } - } catch (reportError) { - log.error("保存委托报告失败: {error}", reportError); - } - - return commissionsTable.filter(c => c.supported); - } catch (error) { - log.error("处理委托数据时出错: {error}", error); - return []; - } - } - - function ensureDirectoryExists(dirPath) { - try { - // 尝试创建目录,如果目录已存在,writeTextSync不会报错 - // 创建一个临时文件来确保目录存在 - const tempFilePath = `${dirPath}/.temp`; - file.writeTextSync(tempFilePath, ""); - log.info(`已确保目录存在: ${dirPath}`); - return true; - } catch (error) { - log.error(`创建目录时出错: ${error}`); - return false; - } - } - - // 检测是否进入委托详情界面 - async function checkDetailPageEntered() { - try { - //log.info("检测是否进入委托详情界面..."); - - // 创建OCR识别对象 - 检测区域(1480,100)到(1535,130) - const detailOcrRo = RecognitionObject.Ocr( - 1480, - 100, - 55, // 1535 - 1480 - 30 // 130 - 100 - ); - - // 尝试3次OCR识别 - for (let i = 0; i < 3; i++) { - log.info(`执行第${i + 1}次详情界面OCR检测`); - let captureRegion = captureGameRegion(); - let results = captureRegion.findMulti(detailOcrRo); - - if (results.count > 0) { - // 检查OCR结果 - for (let j = 0; j < results.count; j++) { - const text = results[j].text.trim(); - //log.info(`检测到文本: "${text}"`); - - // 如果有"蒙德",表示进入了详情界面 - if (text.includes("蒙德")) { - log.info("检测到蒙德委托,成功进入详情界面"); - return "蒙德"; - } - // 如果没有文字,可能是已完成委托 - else if (text === "") { - log.info("未检测到地区文本,可能是已完成委托"); - return "已完成"; - } - // 其他地区委托 - else if (text.length >= 2) { - log.info(`检测到其他地区委托: ${text}`); - return text; - } - } - } - - // 如果没有检测到,等待一会再试 - await sleep(500); - } - - log.warn("三次OCR检测后仍未确认是否进入详情界面"); - return "未知"; - } catch (error) { - log.error("检测委托详情界面时出错: {error}", error); - return "错误"; - } - } - - - -/** - * 优化后的委托识别主函数 - */ -async function Identification() { - try { - log.info("开始执行原神每日委托识别脚本"); - await genshin.returnMainUi(); - setGameMetrics(1920, 1080, 1); - - // 加载支持的委托列表 - const supportedCommissions = loadSupportedCommissions(); - - // 确保所有委托的资源目录存在 - for (const commission of supportedCommissions.fight) { - ensureDirectoryExists(`assets/${commission}`); - } - for (const commission of supportedCommissions.talk) { - ensureDirectoryExists(`assets/process/${commission}`); - } - - // 进入委托界面 - const enterSuccess = await enterCommissionScreen(); - if (!enterSuccess) { - log.error("无法进入委托界面,脚本终止"); - return; - } - await sleep(1000); - - // 步骤1: 执行第一次OCR识别 - log.info("步骤1: 执行第一次OCR识别"); - const ocrRo = RecognitionObject.Ocr( - OCR_REGION_X, - OCR_REGION_Y, - OCR_REGION_WIDTH, - OCR_REGION_HEIGHT - ); - - // 第一次截图识别 - log.info("执行第一次OCR识别 ({x}, {y}) ({width}, {height})", - OCR_REGION_X, OCR_REGION_Y, OCR_REGION_X + OCR_REGION_WIDTH, OCR_REGION_Y + OCR_REGION_HEIGHT); - let captureRegion = captureGameRegion(); - let firstResults = captureRegion.findMulti(ocrRo); - log.info("第一次OCR识别结果数量: {count}", firstResults.count); - - // 处理第一次识别结果 - let firstCommissions = []; - for (let i = 0; i < firstResults.count; i++) { - let result = firstResults[i]; - let text = cleanText(result.text); - if (text && text.length >= minTextLength) { - log.info("第{index}个委托: \"{text}\"", i + 1, text); - - // 检查委托类型 - const isFightCommission = supportedCommissions.fight.includes(text); - const isTalkCommission = supportedCommissions.talk.includes(text); - const isSupported = isFightCommission || isTalkCommission; - const commissionType = isFightCommission ? COMMISSION_TYPE.FIGHT : - (isTalkCommission ? COMMISSION_TYPE.TALK : ""); - - firstCommissions.push({ - id: i + 1, - name: text, - supported: isSupported, - type: commissionType, - location: "" - }); - } - } - - // 步骤2: 使用图像识别检测前3个委托的完成状态 - log.info("步骤2: 检测前3个委托的完成状态"); - for (let i = 0; i < Math.min(3, firstCommissions.length); i++) { - const commission = firstCommissions[i]; - - // 使用图像识别检测完成状态 - const status = await detectCommissionStatusByImage(i); - - if (status === "completed") { - log.info("委托{id} {name} 已完成,跳过详情查看", commission.id, commission.name); - commission.location = "已完成"; - continue; - } else if (status === "uncompleted") { - log.info("委托{id} {name} 未完成,查看详情", commission.id, commission.name); - } else { - log.warn("委托{id} {name} 状态未知,尝试查看详情", commission.id, commission.name); - } - - // 只有未完成或状态未知的委托才点击查看详情 - log.info("查看第{id}个委托详情: {name}", commission.id, commission.name); - - // 点击详情按钮 - const detailButton = COMMISSION_DETAIL_BUTTONS[commission.id - 1]; - log.info("点击委托详情按钮 ({x}, {y})", detailButton.x, detailButton.y); - click(detailButton.x, detailButton.y); - await sleep(2500); - - // 检测是否成功进入详情界面 - const detailStatus = await checkDetailPageEntered(); - log.info(`委托详情界面状态: ${detailStatus}`); - - // 根据检测结果处理 - if (detailStatus === "已完成") { - log.info("该委托已完成,跳过地点识别和退出操作"); - commission.location = "已完成"; - continue; - } else if (detailStatus === "未知" || detailStatus === "错误") { - log.warn("无法确认是否进入详情界面,尝试继续执行"); - const location = recognizeCommissionLocation(); - commission.location = location; - log.info("委托 {name} 的地点: {location}", commission.name, location); - } else { - const location = recognizeCommissionLocation(); - commission.location = location; - log.info("委托 {name} 的地点: {location}", commission.name, location); - } - - // 退出详情页面并获取地图坐标 - if (detailStatus !== "未知") { - log.info("退出详情页面 - 按ESC"); - keyDown("VK_ESCAPE"); - await sleep(300); - keyUp("VK_ESCAPE"); - await sleep(1200); - - // 获取地图坐标并保存 - const bigMapPosition = genshin.getPositionFromBigMap(); - if (bigMapPosition) { - currentPlayerPosition = bigMapPosition; - commission.playerPosition = bigMapPosition; - log.info("当前委托位置: ({x}, {y})", bigMapPosition.x, bigMapPosition.y); - } - - keyDown("VK_ESCAPE"); - await sleep(300); - keyUp("VK_ESCAPE"); - await sleep(1200); - } - } - - // 步骤3: 执行下滑操作 - log.info("步骤3: 执行下滑操作"); - await PageScroll(1); - await sleep(2000); - - // 步骤4: 执行第二次OCR识别 - log.info("步骤4: 执行第二次OCR识别({x}, {y}) ({width}, {height})", - OCR_REGION_X, OCR_REGION_Y, OCR_REGION_X + OCR_REGION_WIDTH, OCR_REGION_Y + OCR_REGION_HEIGHT); - captureRegion = captureGameRegion(); - let secondResults = captureRegion.findMulti(ocrRo); - log.info("第二次OCR识别结果数量: {count}", secondResults.count); - - // 处理第二次识别结果 - let fourthCommission = null; - for (let i = 0; i < secondResults.count; i++) { - let result = secondResults[i]; - let text = cleanText(result.text); - if (text && text.length >= minTextLength) { - log.info("第4个委托: \"{text}\"", text); - - // 检查委托类型 - const isFightCommission = supportedCommissions.fight.includes(text); - const isTalkCommission = supportedCommissions.talk.includes(text); - const isSupported = isFightCommission || isTalkCommission; - const commissionType = isFightCommission ? COMMISSION_TYPE.FIGHT : - (isTalkCommission ? COMMISSION_TYPE.TALK : ""); - - fourthCommission = { - id: 4, - name: text, - supported: isSupported, - type: commissionType, - location: "" - }; - } - } - - // 步骤5: 检测第4个委托的完成状态 - if (fourthCommission) { - log.info("步骤5: 检测第4个委托的完成状态"); - - // 使用图像识别检测完成状态 - const status = await detectCommissionStatusByImage(3); // 第4个按钮索引为3 - - if (status === "completed") { - log.info("委托4 {name} 已完成,跳过详情查看", fourthCommission.name); - fourthCommission.location = "已完成"; - } else if (status === "uncompleted" || status === "unknown") { - log.info("委托4 {name} 需要查看详情", fourthCommission.name); - - // 点击详情按钮 - const detailButton = COMMISSION_DETAIL_BUTTONS[3]; - log.info("点击委托详情按钮 ({x}, {y})", detailButton.x, detailButton.y); - click(detailButton.x, detailButton.y); - await sleep(2500); - - // 检测是否成功进入详情界面 - const detailStatus = await checkDetailPageEntered(); - log.info(`委托详情界面状态: ${detailStatus}`); - - // 根据检测结果处理 - if (detailStatus === "已完成") { - log.info("该委托已完成,跳过地点识别和退出操作"); - fourthCommission.location = "已完成"; - } else if (detailStatus === "未知" || detailStatus === "错误") { - log.warn("无法确认是否进入详情界面,尝试继续执行"); - const location = recognizeCommissionLocation(); - fourthCommission.location = location; - log.info("委托 {name} 的地点: {location}", fourthCommission.name, location); - } else { - location = recognizeCommissionLocation(); - fourthCommission.location = location; - log.info("委托 {name} 的地点: {location}", fourthCommission.name, location); - } - - // 退出详情页面并获取地图坐标 - if (detailStatus !== "未知") { - log.info("退出详情页面 - 按ESC"); - keyDown("VK_ESCAPE"); - await sleep(300); - keyUp("VK_ESCAPE"); - await sleep(1200); - - // 获取地图坐标并保存 - const bigMapPosition = genshin.getPositionFromBigMap(); - if (bigMapPosition) { - currentPlayerPosition = bigMapPosition; - fourthCommission.playerPosition = bigMapPosition; - log.info("当前委托位置: ({x}, {y})", bigMapPosition.x, bigMapPosition.y); - } - - keyDown("VK_ESCAPE"); - await sleep(300); - keyUp("VK_ESCAPE"); - await sleep(1200); - } - } - } - - // 合并所有委托结果 - let allCommissions = [...firstCommissions]; - if (fourthCommission) { - allCommissions.push(fourthCommission); - } - - // 输出完整委托列表 - log.info("完整委托列表:"); - for (const commission of allCommissions) { - const supportStatus = commission.supported ? "✅ 支持" : "❌ 不支持"; - const locationInfo = commission.location ? `(${commission.location})` : ""; - const typeInfo = commission.type ? `[${commission.type}]` : ""; - log.info("{id}. {name} {location} {type} - {status}", - commission.id, commission.name, locationInfo, typeInfo, supportStatus); - } - - // 保存委托数据 - saveCommissionsData(allCommissions); - - log.info("原神每日委托识别脚本执行完成"); - } catch (error) { - log.error("脚本执行出错: {error}", error); - } -} - - /** - * 计算两点之间的距离 - * @param {Object} pos1 - 位置1 {x, y} - * @param {Object} pos2 - 位置2 {x, y} - * @returns {number} 距离 - */ - function calculateDistance(point1, point2) { - if (!point1 || !point2 || !point1.X || !point1.Y || !point2.x || !point2.y) { - log.warn("无效的位置数据"); - return Infinity; - } - return Math.sqrt(Math.pow(point1.X - point2.x, 2) + Math.pow(point1.Y - point2.y, 2)); - } - - /** - * 获取委托的目标坐标(从路径追踪文件中获取最后一个坐标) - * @param {string} scriptPath - 委托的脚本路径 - * @returns {Object|null} 目标坐标 {x, y} 或 null - */ - async function getCommissionTargetPosition(scriptPath) { - try { - const scriptContent = await file.readText(scriptPath); - const pathData = JSON.parse(scriptContent); - - if (!pathData.positions || pathData.positions.length === 0) { - log.warn("路径追踪文件 {path} 中没有有效的坐标数据", scriptPath); - return null; - } - - const lastPosition = pathData.positions[pathData.positions.length - 1]; - if (!lastPosition.x || !lastPosition.y) { - log.warn("路径追踪文件 {path} 的最后一个路径点缺少坐标数据", scriptPath); - return null; - } - - log.debug("从脚本路径 {path} 获取到目标坐标: ({x}, {y})", scriptPath, lastPosition.x, lastPosition.y); - return { - x: lastPosition.x, - y: lastPosition.y - }; - } catch (error) { - log.error("获取委托目标位置时出错: {error}", error); - return null; - } - } - - /** - * 统一的对话委托流程处理器 - * @param {Array} processSteps - 处理步骤数组 - * @param {string} commissionName - 委托名称 - * @param {string} location - 委托地点 - * @returns {Promise} - 执行结果 - */ - async function executeUnifiedTalkProcess(processSteps, commissionName, location) { - try { - log.info("执行统一对话委托流程: {name}", commissionName); - - // 加载优先选项和白名单NPC名称的默认值 - let priorityOptions = []; - let npcWhiteList = []; - let clickedExtractedName = false; - - // 定义识别对象 - const paimonMenuRo = RecognitionObject.TemplateMatch( - file.ReadImageMatSync("Data/RecognitionObject/paimon_menu.png"), - 0, 0, genshin.width / 3.0, genshin.width / 5.0 - ); - - // 判断是否在主界面的函数 - const isInMainUI = () => { - let captureRegion = captureGameRegion(); - let res = captureRegion.Find(paimonMenuRo); - return !res.isEmpty(); - }; - - // 人名提取函数 - const extractName = (text) => { - const patterns = [ - /与(.+?)对话/, /与(.+?)一起/, /同(.+?)交谈/, /向(.+?)打听/, /向(.+?)回报/, - /陪同(.+?)\S+/, /找到(.+?)\S+/, /询问(.+?)\S+/, /拜访(.+?)\S+/, /寻找(.+?)\S+/, - /告诉(.+?)\S+/, /带(.+?)去\S+/, /跟随(.+?)\S+/, /协助(.+?)\S+/, /请教(.+?)\S+/, - /拜托(.+?)\S+/, /委托(.+?)\S+/ - ]; - - for (const pattern of patterns) { - const match = text.match(pattern); - if (match && match[1]) { - return match[1].trim(); - } - } - return null; - }; - - // 自动剧情函数 - const executeOptimizedAutoTalk = async ( - extractedName = null, - skipCount = 5, - customPriorityOptions = null, - customNpcWhiteList = null - ) => { - // 使用传入的参数,不再加载默认配置 - const effectivePriorityOptions = customPriorityOptions || []; - const effectiveNpcWhiteList = customNpcWhiteList || []; - - // 初始化 - keyPress("V"); - - // 初始触发剧情 - 识别人名并点击 - extractedName = []; - let captureRegion = captureGameRegion(); - let nameArea = captureRegion.DeriveCrop(75, 240, 225, 60); // 人名区域 - let nameOcrRo = RecognitionObject.Ocr(0, 0, nameArea.width, nameArea.height); - let nameResults = nameArea.FindMulti(nameOcrRo); - // 尝试提取任务人名 - for (let i = 0; i < nameResults.count; i++) { - let text = nameResults[i].text; - log.info(`任务区域识别文本: ${text}`); - - // 尝试提取任务人名 - let name = extractName(text); - if (name) { - extractedName = name; - log.info(`提取到人名: ${extractedName}`); - break; - } - } - - nameArea = captureRegion.DeriveCrop(1150, 300, 350, 400); - //nameArea = captureRegion.DeriveCrop(0, 0, 1920, 1080); - nameOcrRo = RecognitionObject.Ocr(0, 0, nameArea.width, nameArea.height); - nameResults = nameArea.FindMulti(nameOcrRo); - let clickedWhitelistNPC=false; - - - // 处理人名区域的OCR结果 - if (nameResults.count > 0) { - log.info(`人名区域识别到 ${nameResults.count} 个文本`); - - // 首先尝试点击白名单中的NPC - for (let i = 0; i < nameResults.count; i++) { - let text = nameResults[i].text; - let res = nameResults[i]; - log.info("人名区域识别到{text}:位置({x},{y},{h},{w})", res.text,res.x, res.y, res.width, res.Height); - // 检查是否包含白名单中的NPC名称 - for (let j = 0; j < effectiveNpcWhiteList.length; j++) { - if (text.includes(effectiveNpcWhiteList[j])) { - log.info(`找到白名单NPC: ${effectiveNpcWhiteList[j]},点击该NPC`); - keyDown("VK_MENU"); - await sleep(500); - click(res.x+1150, res.y+300); - leftButtonClick(); - keyUp("VK_MENU"); - clickedWhitelistNPC = true; - break; - } - } - if (clickedWhitelistNPC) break; - } - - // 如果没有点击白名单NPC,尝试点击包含提取到的人名的选项 - if (!clickedWhitelistNPC && extractedName) { - for (let i = 0; i < nameResults.count; i++) { - let text = nameResults[i].text; - let res = nameResults[i]; - if (text.includes(extractedName)) { - log.info(`点击包含提取到任务人名的选项: ${text}`); - keyDown("VK_MENU"); - await sleep(500); - click(res.x+1150, res.y+300); - leftButtonClick(); - keyUp("VK_MENU"); - clickedExtractedName = true; - break; - } - } - } - } - - // 如果没有找到NPC,使用默认触发 - if (!clickedWhitelistNPC && !clickedExtractedName) { - log.info("未找到匹配的NPC,使用默认触发方式"); - keyPress("F"); // 默认触发剧情 - await sleep(500); - } - - // 重复执行自动剧情,直到返回主界面 - let maxAttempts = 100; // 设置最大尝试次数,防止无限循环 - let attempts = 0; - await sleep(1000); - log.info("开始执行自动剧情"); - - while (!isInMainUI() && attempts < maxAttempts) { - attempts++; - - // 正常跳过对话 - await genshin.chooseTalkOption("纳西妲美貌举世无双", skipCount, false); - - if (isInMainUI()) { - log.info("检测到已返回主界面,结束循环"); - break; - } - - // 每skipCount次跳过后,进行OCR识别 - if (true) { - //log.info("执行OCR识别对话选项"); - - // 检查是否有匹配的优先选项 - let foundPriorityOption = false; - - // 获取对话区域截图并进行OCR识别 - let captureRegion = captureGameRegion(); - let dialogArea = captureRegion.DeriveCrop(1250, 450, 550, 400); // 对话选项区域 1250,450 到 1800,850 - - // 创建OCR识别对象并识别文本 - let ocrRo = RecognitionObject.Ocr(0, 0, dialogArea.width, dialogArea.height); - let ocrResults = dialogArea.FindMulti(ocrRo); - if(ocrResults.count>0){ - log.info(`识别到 ${ocrResults.count} 个选项`); - - for (let i = 0; i < ocrResults.count; i++) { - let ocrText = ocrResults[i].text; - - // 检查是否在优先选项列表中 - for (let j = 0; j < effectivePriorityOptions.length; j++) { - if (ocrText.includes(effectivePriorityOptions[j])) { - log.info(`找到优先选项: ${effectivePriorityOptions[j]},点击该选项`); - // 点击该选项 - ocrResults[i].click(); - await sleep(500); - foundPriorityOption = true; - break; - } - } - - if (foundPriorityOption) break; - } - - // 如果没有找到优先选项,则使用默认跳过 - if (!foundPriorityOption) { - await genshin.chooseTalkOption("", 1, false); - } - } - } - - // 检查是否已返回主界面 - if (isInMainUI()) { - log.info("检测到已返回主界面,结束循环"); - break; - } - } - - if (isInMainUI()) { - log.info("已返回主界面,自动剧情执行完成"); - keyPress("V"); - } else { - log.warn(`已达到最大尝试次数 ${maxAttempts},但未检测到返回主界面`); - } - - } - - // 执行处理步骤 - for (let i = 0; i < processSteps.length; i++) { - const step = processSteps[i]; - log.info("执行流程步骤 {step}: {type}", i + 1, step.type || step); - - // 重置为默认值 - priorityOptions = []; - npcWhiteList = []; - - // 如果步骤中包含自定义的优先选项和NPC白名单,则使用它们 - if (step.data && typeof step.data === "object") { - if (Array.isArray(step.data.priorityOptions)) { - priorityOptions = step.data.priorityOptions; - log.info("使用自定义优先选项: {options}", priorityOptions.join(", ")); - } - if (Array.isArray(step.data.npcWhiteList)) { - npcWhiteList = step.data.npcWhiteList; - log.info("使用自定义NPC白名单: {npcs}", npcWhiteList.join(", ")); - } - } - - if (typeof step === "string") { - // 简单格式处理 - if (step.endsWith(".json")) { - // 地图追踪文件 - const trackingPath = `${TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${step}`; - log.info("执行地图追踪: {path}", trackingPath); - try { - await pathingScript.runFile(trackingPath); - log.info("地图追踪执行完成"); - } catch (error) { - log.error("执行地图追踪时出错: {error}", error); - } - } else if (step === "F") { - // 按F键并执行优化的自动剧情 - log.info("执行自动剧情"); - await executeOptimizedAutoTalk(null, 5, priorityOptions, npcWhiteList); - } - } else if (typeof step === "object") { - // JSON格式处理 - if (step.note) { - log.info("步骤说明: {note}", step.note); - } - - switch (step.type) { - case "地图追踪": - log.info("执行地图追踪: {path}", step.data); - try { - const fullPath = `${TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${step.data}`; - await pathingScript.runFile(fullPath); - log.info("地图追踪执行完成"); - } catch (error) { - log.error("执行地图追踪时出错: {error}", error); - } - break; - - case "键鼠脚本": - log.info("执行键鼠脚本: {path}", step.data); - try { - const fullPath = `${TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${step.data}`; - await keyMouseScript.runFile(fullPath); - log.info("键鼠脚本执行完成"); - } catch (error) { - log.error("执行键鼠脚本时出错: {error}", error.message); - } - break; - - case "对话": - log.info("执行对话"); - let skipCount = 5; // 默认跳过5次 - - // 处理对话选项 - if (typeof step.data === "number") { - // 兼容旧版本,如果data是数字,则视为skipCount - skipCount = step.data; - } else if (typeof step.data === "object" && step.data.skipCount) { - // 新版本,data是对象,包含skipCount - skipCount = step.data.skipCount; - } - - // 执行对话,使用当前步骤的优先选项和NPC白名单 - await executeOptimizedAutoTalk(null, skipCount, priorityOptions, npcWhiteList); - break; - - case "按键": - if (typeof step.data === "string") { - log.info("执行按键: {key}", step.data); - keyPress(step.data); - } else if (typeof step.data === "object") { - if (step.data.action === "down") { - log.info("按下按键: {key}", step.data.key); - keyDown(step.data.key); - } else if (step.data.action === "up") { - log.info("释放按键: {key}", step.data.key); - keyUp(step.data.key); - } else if (step.data.action === "press") { - log.info("点击按键: {key}", step.data.key); - keyPress(step.data.key); - } - } - break; - - case "tp": - if (Array.isArray(step.data) && step.data.length >= 2) { - log.info("执行传送: {x}, {y}", step.data[0], step.data[1]); - const force = step.data.length > 2 ? step.data[2] : false; - await genshin.tp(step.data[0], step.data[1], force); - log.info("传送完成"); - } else { - log.error("传送参数格式错误"); - } - break; - - default: - log.warn("未知的流程类型: {type}", step.type); - } - } - - // 每个步骤之间等待一段时间 - await sleep(2000); - } - - log.info("统一对话委托流程执行完成: {name}", commissionName); - return true; - } catch (error) { - log.error("执行统一对话委托流程时出错: {error}", error.message); - return false; - } - } - -/** - * 执行对话委托流程(优化版) - * @param {string} commissionName - 委托名称 - * @param {string} location - 委托地点 - * @returns {Promise} - 执行结果 - */ -async function executeTalkCommission(commissionName, location) { - try { - log.info("开始执行对话委托: {name} ({location})", commissionName, location); - - // 优化的文件路径:固定使用 ${processBasePath}/${location}/process.json - const processBasePath = TALK_PROCESS_BASE_PATH; - const processFilePath = `${processBasePath}/${commissionName}/${location}/process.json`; - - let processContent; - try { - processContent = await file.readText(processFilePath); - log.info("找到对话委托流程文件: {path}", processFilePath); - } catch (error) { - log.warn("未找到对话委托 {name} 在 {location} 的流程文件: {path}", commissionName, location, processFilePath); - return false; - } - - // 解析流程内容 - let processSteps; - try { - // 尝试解析为JSON格式 - const jsonData = JSON.parse(processContent); - if (Array.isArray(jsonData)) { - processSteps = jsonData; - } else { - log.error("JSON流程格式错误,应为数组"); - return false; - } - } catch (jsonError) { - // 如果不是JSON格式,按简单格式处理 - const lines = processContent.split('\n').map(line => line.trim()).filter(line => line.length > 0); - processSteps = lines; - } - - // 使用统一的处理器执行流程 - return await executeUnifiedTalkProcess(processSteps, commissionName, location); - - } catch (error) { - log.error("执行对话委托时出错: {error}", error); - return false; - } -} - -/** - * 检查委托状态 - * @param buttonIndex — 按钮索引(1-4) - * @returns — 返回 ture,false - */ -async function iscompleted(buttonIndex) { - const enterSuccess = await enterCommissionScreen(); - if (!enterSuccess) { - log.error("无法进入委托界面,脚本终止"); - return false; - }/* - if (buttonIndex >= 2 && buttonIndex < 4) { - const status = await detectCommissionStatusByImage(buttonIndex-2); - if (status === "completed") { - return true; - } else { - return false; - } - }else{*/ - await PageScroll(1); - const status = await detectCommissionStatusByImage(3); - if (status === "completed") { - return true; - } else { - return false; - } -} - -/** - * 执行委托追踪(优化版 - 按距离排序) - */ -async function executeCommissionTracking() { - try { - log.info("开始执行委托追踪 - 按距离排序模式"); - - // 获取已识别的委托列表 - let commissions = []; - try { - const commissionsData = JSON.parse(file.readTextSync(`${OUTPUT_DIR}/commissions_data.json`)); - commissions = commissionsData.commissions.filter(c => c.supported); - log.info("已加载支持的委托数据,共 {count} 个", commissions.length); - } catch (error) { - log.error("读取委托数据失败: {error}", error); - return false; - } - - if (commissions.length === 0) { - log.warn("没有找到支持的委托,请先运行识别脚本"); - return false; - } - - // 确保回到主界面 - await genshin.returnMainUi(); - - // 执行每个委托 - let completedCount = 0; - for (const commission of commissions) { - // 跳过已完成的委托 - if (commission.location === "已完成") { - log.info("委托 {name} 已完成,跳过", commission.name); - completedCount++; - continue; - } - - // 跳过没有地点信息的委托 - if (!commission.location || commission.location === "未知地点" || commission.location === "识别失败") { - log.warn("委托 {name} 缺少地点信息,跳过", commission.name); - continue; - } - - log.info("开始执行委托: {name} ({location}) [{type}]", - commission.name, commission.location, commission.type || "未知类型"); - - log.info("当前委托位置: ({x}, {y})", commission.playerPosition.X, commission.playerPosition.Y); - - let success = false; - - // 根据委托类型执行不同的处理逻辑 - if (commission.type === COMMISSION_TYPE.TALK) { - // 执行对话委托 - success = await executeTalkCommission(commission.name, commission.location); - if (success) { - completedCount++; - log.info("对话委托 {name} 执行完成", commission.name); - } else { - log.warn("对话委托 {name} 执行失败", commission.name); - } - } else { - - //dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": false })); - - // 默认执行战斗委托 - const location = commission.location.trim(); - - // 脚本路径 - const scriptPaths = [ - `assets/${commission.name}/${location}-1.json`, - `assets/${commission.name}/${location}-2.json`, - `assets/${commission.name}/${location}-3.json` - ]; - - // 获取每个脚本对应的目标位置和距离 - const scriptInfo = []; - for (const scriptPath of scriptPaths) { - try { - await file.readText(scriptPath); - const targetPos = await getCommissionTargetPosition(scriptPath); - if (targetPos) { - const distance = calculateDistance(commission.playerPosition, targetPos); - scriptInfo.push({ - path: scriptPath, - distance: distance, - valid: true - }); - log.info("委托 {name} 目标位置: ({x}, {y}),距离: {distance}", - scriptPath, targetPos.x, targetPos.y, distance); - } else { - log.warn("委托 {name} 无法获取距离", scriptPath); - scriptInfo.push({ - path: scriptPath, - distance: Infinity, - valid: false - }); - } - } catch (readError) { - log.info("路径追踪脚本不存在: {path}", scriptPath); - continue; - } - } - - // 按距离从小到大排序 - scriptInfo.sort((a, b) => a.distance - b.distance); - - // 输出排序结果 - log.info("排序后的脚本执行顺序:"); - scriptInfo.forEach((info, index) => { - log.info("{index}. 脚本: {path}, 距离: {distance}", index + 1, info.path, info.distance); - }); - - // 尝试执行排序后的脚本路径 - let executed = false; - for (const info of scriptInfo) { - const scriptPath = info.path; - try { - /* 检查脚本文件是否存在 - log.info("检查路径追踪脚本: {path}", scriptPath); - - try { - // 尝试读取文件内容来检查是否存在 - await file.readText(scriptPath); - log.info("找到路径追踪脚本: {path}", scriptPath); - scriptFound = true; - } catch (readError) { - log.info("路径追踪脚本不存在: {path}", scriptPath); - continue; // 尝试下一个脚本路径 - }*/ - - // 执行路径追踪脚本 - log.info("开始执行路径追踪脚本: {path}", scriptPath); - await pathingScript.runFile(scriptPath); - log.info("路径追踪脚本执行完成"); - if(await iscompleted(commission.id)){ - log.info("委托 {name} 已完成", commission.name); - completedCount++; - success = true; - break; - }else{ - log.info("委托 {name} 未完成,尝试下一个脚本", commission.name); - } - } catch (scriptError) { - log.error("执行路径追踪脚本时出错: {error}", scriptError); - break; - } - } - - if (!success) { - log.warn("委托 {name} 执行失败", commission.name); - } - } - - // 每个委托之间等待一段时间 - log.info("等待5秒后执行下一个委托..."); - await sleep(5000); - } - - log.info("委托追踪全部执行完成,共执行 {count}/{total} 个委托", - completedCount, commissions.length); - - return completedCount > 0; - } catch (error) { - log.error("执行委托追踪时出错: {error}", error.message); - return false; - } -} - - // 主函数 - async function main() { - - //await Identification(); - - if(skipRecognition){ - log.info("跳过识别,直接加载数据"); - }else{ - await Identification(); - }//识别委托 - - // 开局准备 - await prepareForLeyLineRun(); - - // 执行自动委托 - await executeCommissionTracking(); - - log.info("每日委托执行完成,前往安全地点"); - await genshin.tpToStatueOfTheSeven(); - } - // 使用 Promise 包装 main 函数的执行 - return main(); - //log.info(""); -})(); \ No newline at end of file diff --git a/repo/js/AutoEntrust/manifest.json b/repo/js/AutoEntrust/manifest.json deleted file mode 100644 index a21d77d5..00000000 --- a/repo/js/AutoEntrust/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "manifest_version": 1, - "name": "(对话+成就)全自动蒙德地区每日委托", - "version": "0.96", - "bgi_version": "0.44.3", - "description": "(Beta)自动完成每日委托、自动识别委托内容、自动追踪委托路径、自动完成对话类委托。支持自动获得到隐藏成就。使用前请阅读README.md(可用记事本打开)获取详细说明和常见问题解答。目前项目正处于开发阶段急需人手,有意者可加1053392753(会在地图上标点即可)。每天只需花 5 ~ 10 分钟做一个蒙德城对话委托路径,就当是顺路补下成就。感谢云闲vsv & 换苏伟u的共同开发", - "authors": [ - { - "name": "星野", - "link": "https://github.com/LX666-666" - } - ], - "settings_ui": "settings.json", - "main": "main.js" -} \ No newline at end of file diff --git a/repo/js/AutoEntrust/name.json b/repo/js/AutoEntrust/name.json deleted file mode 100644 index ff168457..00000000 --- a/repo/js/AutoEntrust/name.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "fight": [ - "圆滚滚的易爆品", - "丘丘人的一小步", - "临危受命", - "持盾的危机", - "攀高危险", - "邪恶的扩张", - "冷冰冰的大麻烦", - "为了执行官大人", - "极速前进", - "冷凉凉的大团危机" - ], - "talk": [ - "说到做到", - "那位先生的委托", - "父亲能做的事", - "冒险家安娜", - "诗歌交流", - "钥匙是易丢物品", - "语言交流" - ] -} \ No newline at end of file diff --git a/repo/js/AutoEntrust/name.txt b/repo/js/AutoEntrust/name.txt deleted file mode 100644 index 867f7078..00000000 --- a/repo/js/AutoEntrust/name.txt +++ /dev/null @@ -1,10 +0,0 @@ -圆滚滚的易爆品 -丘丘人的一小步 -临危受命 -持盾的危机 -攀高危险 -邪恶的扩张 -冷冰冰的大麻烦 -为了执行官大人 -极速前进 -冷凉凉的大团危机 \ No newline at end of file diff --git a/repo/js/AutoEntrust/settings.json b/repo/js/AutoEntrust/settings.json deleted file mode 100644 index f5344aa8..00000000 --- a/repo/js/AutoEntrust/settings.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "name": "skipRecognition", - "type": "checkbox", - "label": "跳过识别(直接从Data文件夹加载委托数据进行追踪)" - }, - { - "name": "minTextLength", - "type": "input-text", - "label": "最小文本长度(小于此长度的文本将被过滤)", - "default": "4" - }, - { - "name": "team", - "type": "input-text", - "label": "战斗的队伍名称,不填表示不切换队伍" - } -] \ No newline at end of file diff --git a/repo/js/AutoEntrust/对话委托制作方法.md b/repo/js/AutoEntrust/对话委托制作方法.md deleted file mode 100644 index 36efc125..00000000 --- a/repo/js/AutoEntrust/对话委托制作方法.md +++ /dev/null @@ -1,45 +0,0 @@ -对话委托制作方法可分为初始配置和制作过程,加群看完整版1053392753 具体如下: - -### 初始配置 -- **绑定启动停止路径记录器**:设置添加路径点快捷键。 -- **启动录制编辑器**:确保熟悉地图追踪制作,若不熟悉可参考相关教程。 - -### 制作过程 -1. **查看委托信息**:了解当前对话委托的名称及地点。 -2. **检查重复**:查看`AutoEntrust\assets\process\{委托名称}\{委托地点}`,若已有同名同地点的对话委托则无需重复制作。 -3. **结合多种元素制作**:将地图追踪、对话和键鼠脚本结合,在流程文件中定义各步骤的类型、数据等。 -4. **特定格式使用**:不熟悉JSON时,可使用简单版格式,如`XXX-1.json`表示地图追踪,`F`表示对话。 - -### 流程文件创建方法 -- **文件位置**:`\AutoEntrust\assets\process\{委托名称}\{委托地点}\process.json`。 -- **流程步骤定义**:包括地图追踪、对话、按键和传送等类型,每个步骤可按需设置属性。 - -### 示例 -```json -[ - { - "type": "地图追踪", - "data": "assets/process/example/tracking1.json", - "note": "执行第一个地图追踪步骤" - }, - { - "type": "对话", - "data": { - "skipCount": 5, - "priorityOptions": ["同意", "接受委托", "我来帮忙"], - "npcWhiteList": ["派蒙", "凯亚", "安柏"] - }, - "note": "执行对话步骤,优先选择特定选项并与白名单NPC交互" - }, - { - "type": "按键", - "data": "F", - "note": "按下F键" - }, - { - "type": "tp", - "data": [100, 200, true], - "note": "传送到坐标(100, 200),强制传送" - } -] -``` \ No newline at end of file diff --git a/repo/js/AutoEntrust/对话委托制做方法.txt b/repo/js/AutoEntrust/对话委托制做方法.txt deleted file mode 100644 index 58255afe..00000000 --- a/repo/js/AutoEntrust/对话委托制做方法.txt +++ /dev/null @@ -1,59 +0,0 @@ -编写方法 -创建 JSON 文件 -使用文本编辑器创建一个新的 JSON 文件process.json。 -根据需要定义对话委托流程的各个步骤,每个步骤包含type(类型)和data(数据)等属性,可选地添加note(注释)属性来描述步骤。 -定义流程步骤类型 -地图追踪 :设置type为"地图追踪",data为地图追踪文件的路径。 -键鼠脚本 :设置type为"键鼠脚本",data为键鼠脚本文件的路径。 -对话 :设置type为"对话",可选地在data中指定跳过对话的次数(默认为10)。 -按键 :设置type为"按键",data为按键值(如"F");也可以是复杂按键操作对象,包含action(动作,如"down"、"up"、"press")和key(按键值)。 -传送 :设置type为"tp",data为一个数组,包含传送的目标坐标(x、y)以及可选的强制传送标志。 -组织流程步骤 -将所有步骤组织成一个数组,按照执行顺序排列。 -可以在每个步骤中添加note属性,用于记录步骤的详细说明或备注信息。 -[ - { - "type": "地图追踪", - "data": "assets/process/example/tracking1.json", - "note": "执行第一个地图追踪步骤" - }, - { - "type": "对话", - "note": "执行对话步骤,默认跳过10次对话" - }, - { - "type": "按键", - "data": "F", - "note": "按下F键" - }, - { - "type": "按键", - "data": { - "action": "press", - "key": "E" - }, - "note": "点击E键" - }, - { - "type": "tp", - "data": [100, 200, true], - "note": "传送到坐标(100, 200),强制传送" - }, - { - "type": "键鼠脚本", - "data": "assets/process/example/script1.js", - "note": "执行键鼠脚本" - } -] - -我不会json -可以用简单版 -格式如下 -XXX-1.json -F -XXX-2.json -F -XXX-3.json - -XXX-1.json:地图追踪 -F:对话 \ No newline at end of file diff --git a/repo/js/AutoEntrust/配置组配置参考.jpg b/repo/js/AutoEntrust/配置组配置参考.jpg deleted file mode 100644 index 0ac2859abb855c3446dcfdfa2b594f7b75bbd508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108256 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 Y8aRs@8Gfk-@W*^90e*|4?A0AZvX%Q