From 6c0088e9e0fe8ce3504e17a452c95c76ed67d14e Mon Sep 17 00:00:00 2001 From: mno <718135749@qq.com> Date: Wed, 11 Feb 2026 16:18:21 +0800 Subject: [PATCH] =?UTF-8?q?js=EF=BC=9A=E9=94=84=E5=9C=B0=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E9=BE=99=20=E6=B8=85=E7=90=86=E7=88=86=E4=BB=93=E6=9D=90?= =?UTF-8?q?=E6=96=99=20(#2862)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * js:锄地一条龙 高收益优先模式的菜肴排序依据也改为文件名 * js:清理爆仓材料 支持删除材料界面的材料,允许设置白名单等以排除部分材料不删 长按过程中增加鼠标移动以防止有人跑一半乱动鼠标 增加终止快捷键按下时的跳出点 --- repo/js/AutoBackpackCleaner/README.md | 6 +- .../assets/RecognitionObject/0星.png | Bin 0 -> 967 bytes .../assets/RecognitionObject/1星.png | Bin 0 -> 1579 bytes .../assets/RecognitionObject/2星.png | Bin 0 -> 1898 bytes .../assets/RecognitionObject/一星.png | Bin 1804 -> 0 bytes .../assets/RecognitionObject/二星.png | Bin 2465 -> 0 bytes .../RecognitionObject/背包界面/材料1.png | Bin 0 -> 3743 bytes .../RecognitionObject/背包界面/材料2.png | Bin 0 -> 3461 bytes repo/js/AutoBackpackCleaner/main.js | 201 +++++++++++------- repo/js/AutoBackpackCleaner/manifest.json | 2 +- repo/js/AutoBackpackCleaner/settings.json | 29 ++- repo/js/AutoHoeingOneDragon/main.js | 2 +- repo/js/AutoHoeingOneDragon/manifest.json | 2 +- 13 files changed, 158 insertions(+), 84 deletions(-) create mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/0星.png create mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/1星.png create mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/2星.png delete mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/一星.png delete mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/二星.png create mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/背包界面/材料1.png create mode 100644 repo/js/AutoBackpackCleaner/assets/RecognitionObject/背包界面/材料2.png diff --git a/repo/js/AutoBackpackCleaner/README.md b/repo/js/AutoBackpackCleaner/README.md index 9d3a6acf1..9a2305d3b 100644 --- a/repo/js/AutoBackpackCleaner/README.md +++ b/repo/js/AutoBackpackCleaner/README.md @@ -1,3 +1,5 @@ 1. 适配1080p分辨率,其他分辨率不能使用属于正常现象,能够使用纯属巧合 -2. 目前只支持删除养成道具页的1-2星材料 -3. 注意当你的流浪者的经验(绿色经验书)数量大于你设置的起删数量时,也会删除 \ No newline at end of file +2. 目前只支持删除材料和养成道具页的0-2星材料 +3. 注意当你的流浪者的经验(绿色经验书)数量大于你设置的起删数量并小于设置的终止数量,且不等于指定的白名单数量时,也会删除 +4. 务必仔细自行关注各个物品的数量,如有误删,后果自负 +5. 将js添加至配置组中,在配置组界面右键点击js以修改自定义配置 \ No newline at end of file diff --git a/repo/js/AutoBackpackCleaner/assets/RecognitionObject/0星.png b/repo/js/AutoBackpackCleaner/assets/RecognitionObject/0星.png new file mode 100644 index 0000000000000000000000000000000000000000..19f4498bfc1f0e54ce7770029befd7adef0ed212 GIT binary patch literal 967 zcmV;&133JNP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D16)Z&K~z{r?N-Td z6G0GtHQ12Vv7HS_LPR)lKpc=DfU+PYgb?3^L===C;*hW5%7LFqaj2!Md)i|gE)e-i z*7S7O{<>;RU%p;42p|xc84Ly(01?295=0cvxF#|k>Q9#d$(#EI(o@~Z(iWW7872gy z+sq8sxD7-U?D}>N<`|CVY`Lcsi_^iHQ+St$EU2Z>hQ~(|e+`F^_VDiP4c69H$|E$M z8zp1%3;PQ~`0l9uU1$?!)cCnu@}J9ZHU5zsV*h8q8AHg!wo zCgViUU4pYfg*E(VJ9*Vf zF06yKQ6wQJ!bq-@2TQUtg4zo0%}8E42_)N@3)slJ@eaz=;#R9Bt${==iTGp3Nn!NZ$N*;rYRN`z%tG_J&N?h|J^=oF%$X0T5GEE~Pj@MZ*O`eF*@AWYn zZQ%U$7@t4A$Ii|snx-j5tDuX^D`x8sPs|)j@Rp##SGG{HT+a(ZK}fE?$+dC{gP<&0 zzLlI35t@cnH#3mCuGur_k?V(sV`wK8-_|Zdx>3oyYELfHaASbY%@GdvAL8io0hX5T z6>`%-7vHWl_U=CjwKG)s>nw zqW=`%#Jm+mgw@p*+~3{C?#>prx5gNchkrz@fv&H=GptaaN9<qu=k%JcheKzkdFhC;SEeGyMG( pS>T_>g5X<@1;Mu*3xaPseggqXX`oR&vVs5r002ovPDHLkV1m_TyJ!Fa literal 0 HcmV?d00001 diff --git a/repo/js/AutoBackpackCleaner/assets/RecognitionObject/1星.png b/repo/js/AutoBackpackCleaner/assets/RecognitionObject/1星.png new file mode 100644 index 0000000000000000000000000000000000000000..d733c4fdeb47c2b11d9b274eaceb13f97e4bc174 GIT binary patch literal 1579 zcmV+`2Gse9P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1;9x}K~z{r-Iz;n z97Pbvf7LyYwY}b5JDVsZ#+W!!K#`rdKtY5H65oVxf;i^Fi3?wVTL?nAppYPO$O#F7 z2vUHEBo2Anj_rL-bLj4wp4qWO0z@SL)o6RVtGlb}Usc_^^6|Nkj9?HEj4_zZU~tGA z1w;gKL&nqy)Idan7Z3yy-ye(_yQbGbMBHQNgrdHgWdls_F=yw$=j7rYB9#?F&xrm| z^Z9p2xH;U9#FHqc%X&KGx;nkRJ-NP68aKv(3H)mXf_BB9#&7Favocn!EIZwt;@I*s zug%Y+waWX87C7(Q#iUA11%>mij3=z_DJI!3gHl8o7whQ=o;fLS% zu=Y3(2cH>h8xiYU5vD?FnG2`0>&(e@g4V7KlNmCT70FO>Y01SlGAanj9i!FmJJD#c zbmYhwxd6&fHpV+QXDeTzv}X{3A-Of0Sy;QrhCN}%WVY>k34_DSmWZ{EErM7uI_ANs z&6ihR<-uw)mIzOS2dfF^zg=LBX+%Zk01foU`OLSi&SjZ$0DBa6<==(7ZLfbR_4^IU zX;w54phQ(mpZ^3X_6v3l3{$FPV2b6H2Sf3`(MD3=W~ z*&`S8eeT=!ixNa@RNP?L=x~cJUwyNe`}d<_jlY4lwTKIs_OYV6WN8bn8;H`@=AeM& z8XD_pkNm9l!W9$BsBw^Wr5g^?tP&?8!o);_`MLd^IDWLYEQe5nFNt0$d-CKFB#bNL z;4{tzvqL5OgWg>fC}dPED&+dtJ%)QUy&_iBx{sT8LA1^hK+FQ z6R}|u2D*VnDWWX7;F+sCOLstEZY^@#axaY;Y%mCd))5np1~W4q78e#c`_35-E-sR$ z$@r021LYUqRyc^PI;UGlyN1)#u4NlV##;EM<+gI$&g**t=imHj_Q`E8GH$KBGAMf= zP>S?vFVspQVxOurb|N>_t%N#Xg>?G(#`~d=(OQ$HDXnIc{jcohjl+j|>(nVuo;XgY z)2^zwBjl4$&$$ZZ9abDTCB4J*r3RK8yK}LBsEPa0QBv+HG<7Ji;m>^AVX};@zlCi6 z$%&aCIdl9@Fw@F!XTTRT;UiTBU!>TvKX@!D-6H@o}F->mlGk0 zVy0WubZ2Mjv|F@VZKj)3HUXXia^=d!+y=XdGsa8Q`=cIChkAnl9n`MqSkFd7dYkJE zAKc(*=OTN%E4fI&mohX7Mg$=vmOgRP&&PkewZKms?-9?;kxVq*pBn|a|0#^MAx%FiPH&`)?~vG{r(31$B!^ukI-B9P-%qf9A>iBC29EopI>~u zR0NwWV>lYn+gzvL+r(rUI*v)wN#Zy~=@>yUCS#Nh81{Sgdz*{~J(P}!8&jl>Nunq& dekQ%(_zM7DTD#JIBe4Jg002ovPDHLkV1j=o^(g=V literal 0 HcmV?d00001 diff --git a/repo/js/AutoBackpackCleaner/assets/RecognitionObject/2星.png b/repo/js/AutoBackpackCleaner/assets/RecognitionObject/2星.png new file mode 100644 index 0000000000000000000000000000000000000000..928ff0bb34de19700122f45ab31408059942cf59 GIT binary patch literal 1898 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 diff --git a/repo/js/AutoBackpackCleaner/assets/RecognitionObject/背包界面/材料1.png b/repo/js/AutoBackpackCleaner/assets/RecognitionObject/背包界面/材料1.png new file mode 100644 index 0000000000000000000000000000000000000000..05aa05be94eb773a67b5f6d019c895104991a632 GIT binary patch literal 3743 zcmV;Q4q)+#P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D4m3$bK~z{rt(n=6 z9M^TmfA>~Zuho0^EIs=SXQ758?jl8+q9n^(;vmif1bGaQ0C~`pg6NrlLXg0)0|y8a z#7PjqaU2`5WeK#Yg_bB$B1MX;NY29HY`skPOz&NF^H9}2)595xa`K@s&|P)w)cwvq z_iQaPi?2REEzeu;T;;8IuV7hr>-L_IQWA@p#G@vKVu?(C1C+vU2?V4Nc)cD* z2fOil4VG8)tYr&?%>ZXkPV?XDt5)KED(h;pmi4cO`?l@kL!D?omOs+`1(L|wWHZ5wk#!it>jmHRN zb46w!u2QbnI<)vjuq>O+a+S?;m3Y)7==Y*YiN|Bm(-k8a@UoUGlFe^WuQySyY+EUs zmbFvdQ=@}`W!bD`)>(Lz!Lsc3OP&e}>h%WYaur?ENW{a$qalX+QzYYI^6MpXt;Mq? zSJyOrUe9lBMjZsIwK~Pk3YKjX3i=5KeC=Td{RI6!%z!htUk?TSgiJqX(2uU`NGa$^ zMHwFGA{6wKTi+m?cgzMrAkZ|4$Ivl!4Jic*g%Drv0JD?8MyW!zS|=3r6A1^2hJ(Z+ zCb5V~A{rtdGl|DSB;sKbu@K2vm{dGWDiI--2osN*1pHp4l$b$3@o0$L`UXoY`S#)w zplK3A*YSD{0s${xkI~`nlzQ^mjt&CNrqwo`dc8r@va#IJuq-TFwXfN>!d5nx?TlvA zrdDrIu2fkslqhbLsn+TgHpxB|) z*>x6|Gu)qBVs>GLY`#dN=_+6c#P&E)+$eMT+C47(<~s9>YgqQv9WEgR0)ed@Gtf1S zR3bvUC(hzhmRh|*EMgK41xUm~Bw}Hr;Q+ya53k3-Fm!C&X0ue`(Mp~|u|#pRLZMi~ zFf@kxyBHryGuW3RYzB~W%g#CoG@2HROIhBz^cfdFyvb&{+Mf7jAf+H|201i6LM&pU z>l%||eS}Rvwym5)tf07A;o(w-`A2Ky@*9*ZHC8hPN|joNJYAE-qaj{8{Vb=CO%V3nDZrokq z{@gMTmontmH>p(XG@BN-QVucOcI+I5K;VAb*U~)+zV*@(P9NKkVd${)4B(~(gMBGp zIC+4f{;oFD7L;;@?*UCpBB212`}&y}P1E0-B)7i7&))iw|9;~G-o12#yAPJgUv%OWdl3ME z*K05~)WeIXX7G7EJ16W3!*C98Z+9G}6u-K7jck5{Qn|WkaFjwgj$r3*@1m$|zR2Qo zw(XW5OXgamWeSH6jB@1p%agqD5bbRzl>$sgiJq& zrbqalmyhzDZ=U4qXAg69W{iP!l7QdWA&)&Yk4wz5Z7P)-CD%i0um9Dn=XOrqf)n!1 zppR4{!u`1wN|kDd83>#-0GCWOVsdn5AKj@aODlO+vjv9xyZFj;(@akcGBVK3@IW_X z!@W$5^fA<*A{+{!6i!NR?_Phj-KKz^t~gU;eS}Q^lXt*@z+>o)kED6=`2!^5VKg^Y zc5in;N`cp-qw5+0zn5UZOS&h{KsrG(9wrts=}JTx>PxYIe1MZjCi(gchxy&F9^;iW zhuAlqZo9}9gb+BPL!oOLy1te8J(0lHnGhJd#&d@zIC*%Icr1jjYumKqvQW9_Ga138LX3(yb*N(atU#x`xNl+Nu5% z3G75PVshfhB>Tq)FoXWbGRIbg6+$3|AmH<227KErdTa6Rfj|n0&+8$T2yLI~C=`;R*VB5*WIUQcl2Wq0wwo*eD^TAQ2Cdh=tIk zz_yjMMcZI2n{uVf@@kI7jcEDk#wxzGm z0$UFly3W+TehyEMkV-^4&jV1cHCSHFBZT9IW6=| zjeE1p?YpBxJv{r&Fx|;09*@!9F#yZ9vE9QiaoIF2i)yt_sa&DBQ6`%&vXWWn(Q=N3 zM;Yc9Gb}D=SP)N<)EiCKvPEoVBZQ!@Cr&WvbK-!#eW#q}!POfN z_~f(uT)#cf&ASWjjMnEh7#~S9HrzwN?```E+qTxqgq!*FNXcl{;Mi^m9JFIm`XIWx}SPu4I&0)TC6ZlF2&xx)1_glSINn zruOyY^Lh#Ry;LeS3`57~F_6+pyEEAW*KW;n{nk9$ToKz=csx3XpBZUu++*l8n--5& zaukYXEZauYBt2a*CPvdl!a=mxUwif3YG$1`-@d~CoWIORSMPG;&H@h>R#;lev6d@R z+$dA2I_2hSrod{pKyP=P!F0-vxSOoyijIn0Zxaoh45U*4m_Z-4S_3HsQc4QNGM7KS z$NL}O=Fv(H%d#c4(T0W!cOvu2LwL3HZH? zkEWTP9CW->tDv!Lo3(6#UtYMv`S-4N6xln`3PSN{h=cowIemOT{plplriHFKU51TP zg^M5Eauwo~i`n%JiW_C>^=7*=lTzaMd6*dO<4?cy0zIkN&eyS;UFWC2yu|g}^GuGW zdF6#e>>KWN;*FCF2!xO%Vqs1n-_P?$ryg^U+o6=gvTX8&O|IXb=f>RyD%CmxzYi$| zvkzDK-ar4GH{ZU()f@M@c59Z;XP3z4oW9WZA_X86^fNJJvawRFQ*Sh#ZiaHAHSSJ&JvzPJF~&#I*p}1TD3vQ@as_UEzQ7y5{+LTw?h*+F zIeTK7nW-WCK5zSZDdbj817H|BBLiKWIWf(|Xc{RW5C6KR;rDuoMS=|Wr5H>nF#}G) z-e_9n3#DDN%2t`UJ$voxig9FSjILzFY0+2~?E?(ome(}Du=v|yZOJT8y$*E)edF9MO!l8h3Q$gKr6j!Qslu{&O zAp$)+Pmg8?5$X2$s1nS*;Y4_fnE7h1msy2mMkuHU?erbOu6vj-*#g#vCi zxkW(NG`bQ|_6_$k)ZazAJ5Dql#N*K)dtnQjbR5F$!V0QqvI9S^Uy!j=%ZtzwqwGkI~}E{&TZ)i_9-9 zG0@*jPj?b2HI%YJxEg}kk zc7@~N5mH0fJxD3}?B;#`_Iv-zJMUdaDG(F;PqkG&H95*({MjFK`ouwmP$*?NY3nY# z@ib6MQL8s8Zj{k=4WHM*W9VqwR(}6PxYi)0j#7g6KDf#c{_#iLx_y6Z%60-m2*P2L zzx?w*;Saw3GE#zVH&HH$y}AYe-*DQBj+>NH!?xkaKReI&|KUF<7B@T0TT7${&b9Xn zsMYGcf9X?}SF#KarZLSRhG8JEkkT;`<-Dc!$o~y3IRd0~hL8fOdudpT`G>1~_wWCm zfBNB1s8k+rHj9bNf|Gk$v`@(UC27Ay1DBE(Iu@{u-rfCltaWJqY!%p zuI&&)wBoR{XdytjXF}6iUdi#J|9q1VKl+phvk$4(I$P~K@xP1Ze^iRz&|d%m002ov JPDHLkV1laT}8 literal 0 HcmV?d00001 diff --git a/repo/js/AutoBackpackCleaner/assets/RecognitionObject/背包界面/材料2.png b/repo/js/AutoBackpackCleaner/assets/RecognitionObject/背包界面/材料2.png new file mode 100644 index 0000000000000000000000000000000000000000..83b8064ffdaf51808f86a24c0e1632964b5cf9ac GIT binary patch literal 3461 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 literal 0 HcmV?d00001 diff --git a/repo/js/AutoBackpackCleaner/main.js b/repo/js/AutoBackpackCleaner/main.js index 0ec0577b2..63eb50ad4 100644 --- a/repo/js/AutoBackpackCleaner/main.js +++ b/repo/js/AutoBackpackCleaner/main.js @@ -1,11 +1,14 @@ const bottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/到底了.png"), 1282, 934, 1296 - 1282, 945 - 934); bottomRo.Threshold = 0.9; bottomRo.InitTemplate(); -const star1Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/一星.png"), 107, 214, 1169, 706); -star1Ro.Threshold = 0.9; +const star0Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/0星.png"), 107, 214, 1169, 706); +star0Ro.Threshold = 0.93; +star0Ro.InitTemplate(); +const star1Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/1星.png"), 107, 214, 1169, 706); +star1Ro.Threshold = 0.85; star1Ro.InitTemplate(); -const star2Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/二星.png"), 107, 214, 1169, 706); -star2Ro.Threshold = 0.9; +const star2Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/2星.png"), 107, 214, 1169, 706); +star2Ro.Threshold = 0.85; star2Ro.InitTemplate(); const delete1Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/摧毁图标1.png"), 31, 969, 93, 101); delete1Ro.Threshold = 0.9; @@ -29,102 +32,140 @@ let scrollScale = Number(settings.scrollScale) || 10; (async function () { //进入养成道具界面 + if (!settings.delayScale) { + log.error("延迟系数异常,你从来没打开过自定义配置"); + log.error("去阅读README后再使用"); + return; + } + log.warn("务必仔细自行关注各个物品的数量,如有误删,后果自负"); await genshin.returnMainUi(); + log.warn("务必仔细自行关注各个物品的数量,如有误删,后果自负"); await genshin.tpToStatueOfTheSeven(); + log.warn("务必仔细自行关注各个物品的数量,如有误删,后果自负"); await genshin.returnMainUi(); keyPress("B"); - let type = "养成道具"; + let types = Array.from(settings.executingTypes); const targetNumber = Number(settings.targetNumber) || 9000; const startNumber = Number(settings.startNumber) || 9900; + const endNumber = Number(settings.endNumber) || 9999; + const whiteNumbers = settings.whiteNumbers || ""; + + // 按中文逗号分隔,去除空项 + const numberArray = whiteNumbers + .split(',') + .map(s => s.trim()) + .filter(s => s !== ''); + + const validWhiteNumbers = []; + + // 校验每一项是否为有效数字 + for (const item of numberArray) { + const num = Number(item); + + // 校验:必须是有效数字(不是NaN,不是Infinity) + if (!Number.isFinite(num)) { + log.error(`${item} 不是有效数字`); + throw new Error('存在非法数字格式'); + } + + validWhiteNumbers.push(num); + } + + // 此时 validWhiteNumbers 存储的是数字类型数组,如 [1, 2, 3] + log.info(`白名单数字列表:${validWhiteNumbers.join(', ')}`); + if (targetNumber >= startNumber) { log.error("目标数量必须小于起删数量"); return; } - if (await findAndClick([`assets/RecognitionObject/背包界面/${type}1.png`, `assets/RecognitionObject/背包界面/${type}2.png`])) { - log.info(`成功进入${type}界面,开始执行`); - } else { - await genshin.returnMainUi(); - keyPress("B"); + for (let type of types) { + try { await sleep(1) } catch (e) { break; } if (await findAndClick([`assets/RecognitionObject/背包界面/${type}1.png`, `assets/RecognitionObject/背包界面/${type}2.png`])) { log.info(`成功进入${type}界面,开始执行`); } else { - log.info(`进入${type}界面失败`); - return; - } - } - let scrolls = 0 - while (scrolls < 200) { - try { await sleep(1) } catch (e) { break; } - if (await findAndClick(delete2Ro, false, 100, 16)) { - await findAndClick("assets/RecognitionObject/返回.png"); - await sleep(delay2); - } - let findFullRes = null; - let time4 = new Date(); - const gameRegion = captureGameRegion(); - const allRes1 = gameRegion.findMulti(star2Ro); - - let time5 = new Date(); - log.info(`调试-找出所有2星用时${time5 - time4}`); - for (let i = 0; i < allRes1.count; i++) { - const res = allRes1[i]; - const num = await numberTemplateMatch("assets/背包物品数字", res.x + 34, res.y + 16, 59, 30); - if (num >= startNumber) { - findFullRes = { x: res.x, y: res.y }; - break; + await genshin.returnMainUi(); + keyPress("B"); + if (await findAndClick([`assets/RecognitionObject/背包界面/${type}1.png`, `assets/RecognitionObject/背包界面/${type}2.png`])) { + log.info(`成功进入${type}界面,开始执行`); + } else { + log.info(`进入${type}界面失败`); + return; } } - let time6 = new Date(); - log.info(`调试-依次核对数量${time6 - time5}`); - if (!findFullRes) { - let time1 = new Date(); - const allRes2 = gameRegion.findMulti(star1Ro); - let time2 = new Date(); - log.info(`调试-找出所有1星用时${time2 - time1}`); - for (let i = 0; i < allRes2.count; i++) { - const res = allRes2[i]; - const num = await numberTemplateMatch("assets/背包物品数字", res.x + 34, res.y + 16, 59, 30); - if (num >= startNumber) { + await sleep(500); + let scrolls = 0 + while (scrolls < 200) { + try { await sleep(1) } catch (e) { break; } + if (await findAndClick(delete2Ro, false, 100, 16)) { + await findAndClick("assets/RecognitionObject/返回.png"); + await sleep(delay2); + } + let findFullRes = null; + const gameRegion = captureGameRegion(); + const allRes1 = gameRegion.findMulti(star2Ro); + for (let i = 0; i < allRes1.count; i++) { + const res = allRes1[i]; + const num = await numberTemplateMatch("assets/背包物品数字", res.x + 20, res.y + 14, 80, 30); + if (num >= startNumber && num <= endNumber && !validWhiteNumbers.includes(num)) { findFullRes = { x: res.x, y: res.y }; break; } } - let time3 = new Date(); - log.info(`调试-依次核对数量${time3 - time2}`); - } - gameRegion.dispose(); - if (findFullRes) { - //二次确认 - let fullNum = await numberTemplateMatch("assets/背包物品数字", findFullRes.x + 34, findFullRes.y + 16, 59, 30); - log.info(`找到一个爆仓材料,位置(${findFullRes.x},${findFullRes.y}),数量 ${fullNum} 个`); - await findAndClick(delete1Ro, true, 200, 16); - await sleep(delay2); - click(findFullRes.x + 20, findFullRes.y - 60); - await sleep(delay2); - if (!await deleteToTargetNumber(fullNum - targetNumber)) { + if (!findFullRes) { + const allRes2 = gameRegion.findMulti(star1Ro); + for (let i = 0; i < allRes2.count; i++) { + const res = allRes2[i]; + const num = await numberTemplateMatch("assets/背包物品数字", res.x + 20, res.y + 14, 80, 30); + if (num >= startNumber && num <= endNumber && !validWhiteNumbers.includes(num)) { + findFullRes = { x: res.x, y: res.y }; + break; + } + } + } + if (!findFullRes) { + const allRes3 = gameRegion.findMulti(star0Ro); + for (let i = 0; i < allRes3.count; i++) { + const res = allRes3[i]; + const num = await numberTemplateMatch("assets/背包物品数字", res.x + 20, res.y + 14, 80, 30); + if (num >= startNumber && num <= endNumber && !validWhiteNumbers.includes(num)) { + findFullRes = { x: res.x, y: res.y }; + break; + } + } + } + gameRegion.dispose(); + if (findFullRes) { + let fullNum = await numberTemplateMatch("assets/背包物品数字", findFullRes.x + 20, findFullRes.y + 14, 80, 30); + log.info(`找到一个爆仓材料,位置(${findFullRes.x},${findFullRes.y}),数量 ${fullNum} 个`); + await findAndClick(delete1Ro, true, 200, 16); + await sleep(delay2); + click(findFullRes.x + 20, findFullRes.y - 60); + await sleep(delay2); + if (!await deleteToTargetNumber(fullNum - targetNumber)) { + continue; + } + await sleep(delay2); + await findAndClick(delete2Ro); + await sleep(delay2); + await findAndClick(delete3Ro); + itemCount++; + itemDeleteCount += fullNum - targetNumber; continue; } - await sleep(delay2); - await findAndClick(delete2Ro); - await sleep(delay2); - await findAndClick(delete3Ro); - itemCount++; - itemDeleteCount += fullNum - targetNumber; - continue; - } - scrolls++; - let bottomres = await findAndClick(bottomRo, false, 2, 3, 1); - if (bottomres) { + scrolls++; + let bottomres = await findAndClick(bottomRo, false, 2, 3, 1); + if (bottomres) { + moveMouseTo(139, 910); + await scrollDown(3); + bottomres = await findAndClick(bottomRo, false, 2, 3, 1); + if (bottomres) { + log.info(`到底了,${type}类型处理完毕`); + break; + } + } moveMouseTo(139, 910); await scrollDown(3); - bottomres = await findAndClick(bottomRo, false, 2, 3, 1); - if (bottomres) { - log.info(`到底了,${type}类型处理完毕`); - break; - } } - moveMouseTo(139, 910); - await scrollDown(3); } log.info(`删除了${itemCount}种爆仓材料共${itemDeleteCount}个`); })(); @@ -205,6 +246,7 @@ async function findAndClick(target, async function scrollDown(lines = 1) { lines = lines * scrollScale; for (let i = 0; i < lines; i++) { + try { await sleep(1) } catch (e) { break; } await keyMouseScript.runFile(`assets/滚轮下翻.json`); } await sleep(delay1); @@ -357,6 +399,7 @@ async function deleteToTargetNumber(delta) { click(342, 923); await sleep(delay1); while (true) { + try { await sleep(1) } catch (e) { break; } let res = await numberTemplateMatch("assets/摧毁物品数字", 192, 901, 116, 56); //log.info(`调试-识别结果为${res}`); if (res === -1 || Math.abs(res - lastRes) > 100) { @@ -390,6 +433,9 @@ async function deleteToTargetNumber(delta) { moveMouseTo(342, 923); leftButtonDown(); state = 1; + } else { + moveMouseTo(342, 923); + leftButtonDown(); } } else { if (state != 0) { @@ -410,6 +456,9 @@ async function deleteToTargetNumber(delta) { moveMouseTo(168, 923); leftButtonDown(); state = -1; + } else { + moveMouseTo(168, 923); + leftButtonDown(); } } else { if (state != 0) { diff --git a/repo/js/AutoBackpackCleaner/manifest.json b/repo/js/AutoBackpackCleaner/manifest.json index ccba42d24..a947416b6 100644 --- a/repo/js/AutoBackpackCleaner/manifest.json +++ b/repo/js/AutoBackpackCleaner/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "清理爆仓材料", - "version": "1.0", + "version": "1.1", "description": "识别达到一定数量的材料,将其删除到指定数量", "authors": [ { diff --git a/repo/js/AutoBackpackCleaner/settings.json b/repo/js/AutoBackpackCleaner/settings.json index 5f986502b..7fb6909b1 100644 --- a/repo/js/AutoBackpackCleaner/settings.json +++ b/repo/js/AutoBackpackCleaner/settings.json @@ -3,13 +3,36 @@ "name": "targetNumber", "type": "input-text", "label": "删除后的目标数量", - "default": "9000" + "default": "9900" }, { "name": "startNumber", "type": "input-text", - "label": "起删数量,大于这个数量的材料才删", - "default": "9900" + "label": "起删数量,大于等于这个数量的材料才删", + "default": "9901" + }, + { + "name": "endNumber", + "type": "input-text", + "label": "终止数量,大于这个数量的材料不删(以防把矿删了)", + "default": "9999" + }, + { + "name": "whiteNumbers", + "type": "input-text", + "label": "白名单数量,数量恰好等于该值的物品不会被删除,如有多个,使用【中文逗号】分隔\n用于保留特定物品" + }, + { + "name": "executingTypes", + "type": "multi-checkbox", + "label": "要执行的物品种类", + "default": [ + "养成道具" + ], + "options": [ + "养成道具", + "材料" + ] }, { "name": "delayScale", diff --git a/repo/js/AutoHoeingOneDragon/main.js b/repo/js/AutoHoeingOneDragon/main.js index 1dcdcb205..3dc4c714a 100644 --- a/repo/js/AutoHoeingOneDragon/main.js +++ b/repo/js/AutoHoeingOneDragon/main.js @@ -628,7 +628,7 @@ async function findBestRouteGroups(pathings, k1, k2, targetEliteNum, targetMonst pathings.sort((a, b) => { const aHigh = a.tags.includes("高收益") ? 1 : 0; const bHigh = b.tags.includes("高收益") ? 1 : 0; - return bHigh - aHigh || a.index - b.index; // 有标签的在前,同标签按原顺序 + return bHigh - aHigh || a.fileName.localeCompare(b.fileName); // 有标签的在前,同标签按文件名排序 }); break; diff --git a/repo/js/AutoHoeingOneDragon/manifest.json b/repo/js/AutoHoeingOneDragon/manifest.json index b05a50133..8609db5a7 100644 --- a/repo/js/AutoHoeingOneDragon/manifest.json +++ b/repo/js/AutoHoeingOneDragon/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "锄地一条龙", - "version": "2.2.7", + "version": "2.2.8", "description": "一站式解决自动化锄地,支持只拾取狗粮,请仔细阅读README.md后使用", "authors": [ {