From aa8081547327aeb06df323d446d1d54f16694cb1 Mon Sep 17 00:00:00 2001 From: kaedelcb <57870068+kaedelcb@users.noreply.github.com> Date: Wed, 10 Sep 2025 17:14:57 +0800 Subject: [PATCH] =?UTF-8?q?v.3.9=E7=89=88=20=E6=9C=AC=E5=85=A8=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9E=AB=E4=B8=B9=E5=9C=B0=E8=84=89=E8=8A=B1=20025091?= =?UTF-8?q?0=20(#1853)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### v.3.9版本:20250910 - **新功能**: 1、添加原石购买体力功能,在设定的树脂使用完的前提下,如设定次数大于0,会继续使用原石购买体力领取奖励。 - **优化**: 1. 适配6.0领取界面。 2. 优化开书找地脉花的时序,添加确认大地图打开后才进行寻找。 3. 优化树脂识别正确性。 --- repo/js/AutoFontaineLeyLine/README.md | 12 ++ .../assets/model/cilun.bmp | Bin 0 -> 3382 bytes .../AutoFontaineLeyLine/assets/model/five.png | Bin 1756 -> 2605 bytes .../AutoFontaineLeyLine/assets/model/four.png | Bin 1781 -> 2696 bytes .../AutoFontaineLeyLine/assets/model/one.png | Bin 1676 -> 2592 bytes .../assets/model/three.png | Bin 1782 -> 2692 bytes .../AutoFontaineLeyLine/assets/model/two.png | Bin 1774 -> 2692 bytes .../AutoFontaineLeyLine/assets/model/zero.png | Bin 0 -> 2632 bytes repo/js/AutoFontaineLeyLine/main.js | 190 +++++++++++++----- repo/js/AutoFontaineLeyLine/manifest.json | 2 +- repo/js/AutoFontaineLeyLine/settings.json | 21 +- 11 files changed, 173 insertions(+), 52 deletions(-) create mode 100644 repo/js/AutoFontaineLeyLine/assets/model/cilun.bmp create mode 100644 repo/js/AutoFontaineLeyLine/assets/model/zero.png diff --git a/repo/js/AutoFontaineLeyLine/README.md b/repo/js/AutoFontaineLeyLine/README.md index d743609ff..4b8340d08 100644 --- a/repo/js/AutoFontaineLeyLine/README.md +++ b/repo/js/AutoFontaineLeyLine/README.md @@ -23,9 +23,21 @@ 6. **直跑模式**:当打完一个地脉花后,如下一个地脉花比较近,直接跑过去而不是重新传送。 +7. **异步检测战斗**:默认打开,请把配置组中的“更快检测结束战斗”和“旋转寻找敌人”关掉,否则可能会出错。 + ## 三、更新说明 +### v.3.9版本:20250910 + +- **新功能**: +1、添加原石购买体力功能,在设定的树脂使用完的前提下,如设定次数大于0,会继续使用原石购买体力领取奖励。 + +- **优化**: +1. 适配6.0领取界面。 +2. 优化开书找地脉花的时序,添加确认大地图打开后才进行寻找。 +3. 优化树脂识别正确性。 + ### v.3.8版本:20250830 - **新功能**: diff --git a/repo/js/AutoFontaineLeyLine/assets/model/cilun.bmp b/repo/js/AutoFontaineLeyLine/assets/model/cilun.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6460289afbb0da7622ba03ee2c92605408050cd1 GIT binary patch literal 3382 zcmchaPiqrF7{=ER;N7Em@)Pu;pw!w!)k6;!g`$*_gMz3~=s^Sz9t~KrSiA`(Hvei+ zD2N9sO05;`pGdMv+9s{p-AI$}!7t#inRb}&Y?ciq3A4+)?>z7G%)B$R`=*Icw>kQXvt`o*7?)(n>#e=wS*7i-iZdzSvcBA09r9ZXVw{gQLSdFfT91OgXcib(< z&2Lu?BUohVS2h-#Tgeu5*!K;SE&zI$@GyfCB92?GxqdqN>K<)*J@<0z`St#Dw9zY< z-!FX3?fw;A7(C(>y}$sAE+5Tmy=XOB=%nT|k&$6Rb0{@5FnRCp>zNrE#^}(1+6$Nv zq3mxJdUNoiN)yH=gur%mo<4pQhFHfC=&OU%Z$8O%M&}6QAuzNKIsUw~ z5{6aB5ZG#owD|y>iaygh!gyXpqoH-yN;_l2S3RsFm(D*Jznx6K%a*OxLM5I|Ka7mw z^uP!t+&6W{=kskn_hfRyLqPOgBKf;ws{}m86DiM#2qYX56)Ef^oz-IH)%3JHdUBwI zBI273oOF2xMIai@TXhZ8jqq6FDJ30Y*OQhy? zZq)-oorbji@)ocUI5xri0D$CH4Q(HY!F7LMt4Rnrr@RSNB##`P_Rp#0Acvl4vcX}z zKYoj)VAW|DJnAQuK*A-JY8<@}q>r7*>rl;fc$*in+{ltp7=AiE`7R*elkXflz4~r< zybfXP+WO#QEjwFRwbntZV|AicFWSC!BJ#3{x|b4HdZa-y99;JbB-QVxvrirGG)$XP pzAM!{6)z&@4t4zY-aoThZOegnz~GOLeUPrQ;}&4{s>D-Bl@(9NXh(-j8RV_nmov z{o0kK(`QasDwU;Hv#|m9=iz$cnWy3Zy?5^a3Aa;8^R28>dG@*Dda82!lNVv^gQ&BW zZ?&)bOb)7)%Rp4eg9Ol(%7x`|LfN*+l|Xc(xTgO0&9|x&@tV46wQ)PCi(b^+OU3oQ zYaO(Gc6M%|Au^UmNgl~qDJ;@J?&LKUBAuo%NJ_JDHlqm$ z)5bK>NEH_;O@N%0xMU~oPn>h6iM|+!IL`n}N-VI{ZkO;w%?<`7I?Gpw5Ya5RL(y4h zHxb%~$mCAS#Oe?{o}CAl?Xjf=S+?{x9xBXU} zuHcB9Mt~?aJro#1AdiIvJGw52$L8}JlI;}BU(BCY0+$SIl)U+l?U*K^3~|Tci0P&S zhI9{^%&=T92m;Lb+}c_iK{3+)qSYcQ4ip)bVEj$zw=2@H=jM~8A zf#169%d{;yaBeJ)x9auvREAL>K4cqLE-9_mx=lRWMtYSLH8at!-;6R?1QW!gM$~gwT_PKAk`62{8Hyl}uro4D%69#Yz{*KURg>QNd?) z_~_6*B6Jpl3>@MJWO*jYKo1OLTUJOJ4w%E7dFqRyPc>`#28NzC*X-kjKBJZOXxtUh zo;CIHlVO-K9a{tm-8K-&k|Sya0hCwZhPK6Q&$f3pSagjy~8d&sFhM+t_f5$5BWZmcA#d2tu zd~%DV6@}ZR;(_8}_aK=r7SioGwb<;or z!4`6K=24RcAvGt8F09G_+FT0_O=ws+QOt+nm{L5J=OcJ2Pgo*`x=rEy^zzsJA)LLM zt;R~ny~S?a|KW{`XZY>E?p1!;K6f|NKi&W1m$l#buip9c-8EzNvs>Rcbc_AC+%xZ; v`t|Oemo~pUXMg_S!Ty^+H*UVN^if#(Q1QM>n&&?*4s@;6YmF~1-MINTDK0|u delta 569 zcmZ20a)(#3Gr-TCmrII^fq{Y7)59eQNXr7TBnK0abV}IdH&IcXiS^?~D__RRn;CN_ zw=?QYj%BK0x3Ds`v@$fB{D4V;*Fx9WAjAMB!pkfdj3S~9lrk_-QmDu+@b$Iw%quQQ z%u7!7bg@+eis)r#rdTB!8JZ-UB%A6Q8W~vVrWu=9>ROtmn(C&SCt4;Nr!_MS#)&^aJnMv#6GA>c4=Zw)TED5YyF26RZs s$&FX{`*ycZXFh(WvFU)^{&)HBQWpE9&-)+a4RjrYr>mdKI;Vst0J*!lTmS$7 diff --git a/repo/js/AutoFontaineLeyLine/assets/model/four.png b/repo/js/AutoFontaineLeyLine/assets/model/four.png index ac4e17f3d65d28f1a2c3c76191a68dc99a0f9f60..a83e9a0aef9fd18d8e2a4dff69610b69c89d7ac3 100644 GIT binary patch delta 1209 zcmb7@NoW*76ozMuxJ5juBckJE9KooSsp@5VNk&|HqEQn>BM1RWbyaoJCNtgkv=bE} zpyIAkTQCPfM1_EB4qo)22pU8WiaCfv4&p`Qf)GVP)E<|BpfDb4rQZKO{(A32<-Vy^ z``0uruN*&Pd>|00Y*?YK_17u>h>i{U^X~3XBgd+up>YTM)yAMV5?tu*4dyBe?pkJe zI2iMu1SduO{Ty$4XfF~}5iWqT3SlC?HD{}h%*7PDSi>&MBsj>404e~%W|US1s3PP& z48^MdxcMDUiE3C*4!fCznZs=?W#`+xV0dOyS1`u9&I2WFaDXEM0$4H(Aj_5+Tw7B$5C)CNO}h$O9x0CPJMjkVjrmIGIG8jtSurkaH#IEgykc`66>%HmYM|2j`f}oI)mHI94u>ZM)MXxb!?#%+nf7 zEuGca?Urj5+ATZoTJh0OOQaUX>;9UDvS!CD{yohoL;SxJdXb9SY&lg@u1#FjujR%@ zRbxMJ>q`#&Yyc}V6_ooSev_!wTN$qE)}c-b_3M`CLZGEx6XP_>z_(ri9YnAI)^*?IrS+`0`J}#Kf0Drgd^qV~|w|$Jh-z{Fe gKGFDcv-Wk%#uM31ui!=Zu+JN4$Tn%0m$vTw4vYPW>Hq)$ delta 591 zcmeAW{mQG@8Q|y6%O%Cdz`(%k>ERLtq-B9vl7k6IIwfrKo2V$x#QJfgl`rGu&5XH| z+ZlBx$1>Hk7+V=wPJY0oz-ysvY!G5#X=MNw;boQ!MiJ3Au&^>PP*SMKE%5cV^2{qP zNz6-5^>ndS0*dHmW~NxB8X2WoCMKuq8XK7>>LwYR80aRYB^&CRnwndhCYqX9Bqb$J zp2Do9VrG<>m|~e?tZR^Dk)~^wXkrdjZI+^Io@kh2Vw_@{Y++zA`4O{#|qX$`SCOffO zsSxFQY}$h+w{pl#?%}kp@3Xn{6ByX5JY5_^JdVG;>dSptfrl-jRZQz{>F@vh3;IOw z#Py!!D_gq5JN2WHSkVL-xjzaQB@AOfU5^#KSpHOY*19)Nms6kVtrMJFe67TpBh|6% zU2WtxQ^C?5?Ax;R1mE7BGO6kH-?gh=>G_+?7)Tnj3qPqkFplT>CO5Z7V~!JIk5x(@8_Hnw=ypJ UVEs*#73gdRPgg&ebxsLQ0Emyo9RL6T diff --git a/repo/js/AutoFontaineLeyLine/assets/model/one.png b/repo/js/AutoFontaineLeyLine/assets/model/one.png index 14d143cea658299a7fc9a6f34c58ea31872f8a33..da41773c2334bfd5010d5744bde7f0f03c2369a0 100644 GIT binary patch delta 1077 zcmb7DO=uHA6wWW$VilnpDN?pE7q!#O{_jki(n?|*B}GcWYbP_a?Lw0cn>FgGpal`d zA_EG&*rRw5^dNW>RHP?8iU*J4MS8G@g4Q~1lVYJlJj^feeeZqWd+%P)O7Fm(%Tp6Q z-F@AWNTjDYnV*(tuUx4^F}W`;Y^*;RNX5GDKF6h~SdR{h+tF&W5l(YgkZ8a76g`rV z_tWBJY|%g%8rX#Apo1YyE7z-aT;d^NBqVtf@?2Vjnh78RDlDrO))7_>@iEqaX5UZS zol)%iL6wBLv{xmwJX^2LifH^)hUzMz4C#O)(**`HbU-vnfWdX$R*9h_2E};%Y{qnn zMr_*#2oeUEW;nost_~dPTEsR~+u*iXif1yaRv}cv0!K&E#x@W@7DvEUDKeR=Q({5! zJ^rZBiD6o4goS2^ug&pVo3aCRScWZq#A>2hKq}X$t5<-n+8mh3-~eeA9ayH!n!*aT zseKUAu2d%0AvSG^G$LLnPl&FhRj{aGR3K%5ySgO74HY1w+JH(;G{P+AaP{Aa?Q*mb z7Xs$ud9Ou<(9rWG8S2-XJP0{!u_40z3LmP^ z`JvyK^Xp3JD|^LEXGfKh1LH7W4!q{UVfJ!R{yU&ZB!>%~bWfY!-zD7Fqb=dJl9+;d%L{#d-KwLcje{Q%-HhR1^JqYWj_Bp`tFdn qIr8*I`NtD?@Z0;P$G2V_jz@kzOnq5<^J+lCM2dx}{Il~jH~#=c!cJNM delta 455 zcmZ1=(!;CR8Q|y6%O%Cdz`(%k>ERLtq-B9vl7k6IIwfrKo2V$x#QJfgl`rGu&5XH| z+ZlBx$1>HhTUeP|SQ!{je!!%_YoTjw5Mlrm;boQ!MiJ2lN*Nd^DOBVZ`1)FT<`tJD z<|U_ky4WfKMf5T=Q>@IB4J{4K%#3wSP0SK?Q;kegbS;h3%yp9t%+pL0Eldp(&C@1N zVb+=~&8ar|3A2()N}@@Mp_!$DZnBZFv93w7NvdvAqIt5ek&%H>N}6$^xrIUEWIJYw z$vP}kiBr6QRRql+2U%?*+Jh#ya>z{X;k1oqSas_@FgP7OT^vI^j=#NX z$j6|-!*t-^|D&Z0F{M`)2=jh!-LS>$t4d*i3`3fDgNmow^d-|ie|@^__xE0D^SnFv g^S+;`-+h{8#bx;?JJlUEfrc@7y85}Sb4q9e0FkkWE&u=k diff --git a/repo/js/AutoFontaineLeyLine/assets/model/three.png b/repo/js/AutoFontaineLeyLine/assets/model/three.png index 869e2f674119d2e4211c3f5c2d74f5f359b0d1bc..140b9c63bfff529f4393955af8f9d97fc22e5898 100644 GIT binary patch delta 1205 zcmb7@UuYCZ9LICHONglv0;UnMadW-4{+ry+{+~71YT0XhmXm6u4=UA}+1cDe?snN5 z&z4FfC16SwYo|qD+Plm}3ufR>*3qW zs18BP)sYm7tF3*@XPwMk_o*91Nfq-#Hmu@dmXB-0B9&f}!-j?-HZU+8(*c%gAV3IW z03ie+C4r475o^;ca)AnUonZ`+&mgdLDMSv0a>6<@t$^yt76;O~9MlM=RENOPkpmpN zDYO^@0i?+Ep-!=-imCLWxe1SDUduFn5EnCzB7#h#flh!8Z3awaNKTFD659+gRSC7J zomJ|**x>H23aiaF$#iwqHEkJbQ2g5Vs+iYi6-i*I5=e3enhs26*nnV71CC)*+kn*Y z3H|SgGqyjEIGXr@I}$zzz?6rPM4(Zv!4l5=nK&^{aFubE)C<`liK+^Y(c$BL?u4;4G1Wq4)8TY2L!4nur-RX zAxjt=W|OUXBTB;Iu!cvxi0-Vi8ZUW;tfU$6L*JcC-9B|c-?ZOjb((}R55H~CkGku| zH^}b(spPF4awe~Q_u+y)%6zZ;uTOUMo!uHgPIp)C=E~zs7rwE$dVS5`%Xs^~?vLO3 zqJ46J?Avd!ML*yCd~);A9c#$J@y_^E$B`{(<}dy8K6_ZXb8;pA=JM|JkCo)!FPrW> zE{Ih-C-~t@N4D}mHr>$cV{hH6|8Qo{;I-WN_fvMMf2=Dy|K{l=@<8Q|y6%O%Cdz`(%k>ERLtq-B9vl7k6IIwfrKo2V$x#QJfgl`rGu&5XH| z+ZlBx$1>Hk7+RTFOn$(mz-ysvY!G5#X=MNw;boQ!MiJ3Au&^>PP*SMKE%5cV^2{qP zNz6-5^>ndS0*dHmW~NxBS*DsKrkNP%8Yd@N>ZYZb80sb_C8p`78Cja9Stcc0n5LLc zp2Do9l5A?4Xpm}|rkiAxVy>HNW|F9zWSo+uo0^(zZj@qRnrvufHu({=ib`r~N}9Q0 zl7((^iZRfzWT4rWrpZaV$(9x=i7BSZriNyglkJ!#ChM?FB~I}IRuMFh9%Qwd?8IuN zLX_*VX%Cv*${{nkhtsw`UP^@r7}%>lT^vI^j=!Di$aUC&hef&l&h2QqiSbYVzb|Z2 z&E;i6tq_ywK8eE$Pa>-&4F072-6>xDF;vNEfu0^in%}eM)A&vw-M#-~WijI%54)Qp^B;dc zrvKpD-@W|Tiy0Rf9$z|zzr^X*!ngATJwgjZ_^ZGDvc9!L{p^{vx##7-{{EY<&$vI7 Uzopr08)U)%K!iX diff --git a/repo/js/AutoFontaineLeyLine/assets/model/two.png b/repo/js/AutoFontaineLeyLine/assets/model/two.png index e7f8c3065be822601b104217253abace3a5d9f8c..efbef9fb4d21ef1e58816278bc7c76109373a0d0 100644 GIT binary patch delta 1205 zcmb7@O>7fK6vyq@2_+CNG)4B;hLCS#^)_d3Y;QO!sU{S=M8gzCA+_J}%w85?iUXX(0qYTDQHDT7 zKoa{T%~X)7$l?8lrJv1unK7rtApm6+1A`b07>Gkeuz_U6!{J0aEy)%pM3I1@ zAOje>iU86g6D|=1siY9BiQ$vP=-fVDOfE^*bqMbyt9c|bnQ+Adx}-Azk;(v)Ed^*0 za!f>v=tLJ%l^|aY%zXo_JX<7aDxwMX$Wu1F+4xa7zfsFu5{?ps63{K80tTb>4IL98 zb4#~4Hgu@}hsPP&-*~L~l$(S08vslK+l>&2Tdp!cV04De!#;Lc!2C*&zygF1#aqX(S*#JRQA1bDC_g>>ifgIWk~(+fMK$6b$%{g zGLzoB!q1jTZi{-kx7WPK59VC5*J0(Lkn0g5nr>=Sb1r@RO8rb-{v4|i-}VA~ zq$yK-^y!0B(R6=a$gS%$?*8=S_szFc3+H*yink^%U%AzE;KjZj6W9I?mo)9#{ZGdb zoD`-PZ#lL8%Hto_-u`ky>}jQ&@I{^9jtQ;9UB67OD2yB%7Y}~7bLxC$`eJt3;PbJ? ziS}>qKUn$IALECfY##~kjqN!-dg9E)*>lGqf1U04E4%ml*y_F^#px>XT|bZheg1c6 uUTJFk)6y3=ibKD(A2>4nYyWh*_VDAKr6O;;F?k_kjTQ1+bC=ea4!s0;a*8eaEZV8Q|y6%O%Cdz`(%k>ERLtq-B9vl7k6IIwfrKo2V$x#QJfgl`rGu&5XH| z+ZlBx$1>Hk7+4vbPJY0oz-ysvY!G5#X=MNw;boQ!MiJ3AumDOaDOBVZ`1)FT<`tJD z<|U_ky4WfKMf5T=Q>+qA6O)sSQVn&}j7$=BQ;kf_bS(|d40R0+laf#AF?osl+K>z$${~(Sxiulbu+t zRETmtHtj)^TRCJV_i)#fb#Tr7QSOUOrp0lat|a_KG6UV-nYw3T~bk@~-agde?4` zwcHAYOJZ{t&el8H>Rm1FAig`THcdSGci!zQi}rr+tky5=osl`qqw7R+jl;IW{KvMd z_kPYD_SzE@wwCm$4zq%nSbe>P`Lno#S)?#|Bs=KH?+ z&F}kW-kq5~JvwrDB$vyLR;J3c@O~WbCl5XZ&$lkF{|2vz!>My|F89cx^gfWga`h?b zd(W@UC3Dr6Tq;_5!i2~3omL3wTyFeCCnR)%Cz8kK{h%oSa&uLdd{>npIp4OT6Jv ztwj9H%5;scEKrBZCyqR&Q=i&)*AEuZT9g0G_7NRrT1 zlyJ4nSf)pB*)HH?3N1@r66dqNp?>mq6qpxAGbd9H-PeAipG>Q;g{Apzx;a#4m* z^S;kqhiDqs9fnL=;7HR90}Qe8#1?%2pKKtPVgAu5$R zCR24vEZ}h4Z%H&oR22+3*N6KnrP53!>V6Y`#IvVQN|niyr8<^{w7i<;Ojo<^lpn(y zFZZ+X41cZPYWh-Ft}dZzMiph6s(~}P-|g=}=>9_QnQb>X7`=x|dazj3lQxO?#5|C{ zrwWzbf{)44y+e0YuF<;gp@IrpFdc&+=Lp4-HJk3KIEm)SS7l>E4cAv~$3HU!xhKgW` zM?=C2Nkm|a;Zayc+F>Q zy}0$wr%&G;z40-AC5N7SRlj!o*<0f`jIBR^y?m$h$=KUJe0S;E`ez?rfB%CE8-Hzn o|I^y)h0QO2zWUL*cMjx6UY}@uef#$#=~=HbIbHtz 1920 || ya+ha > 1080){ log.info("图片区域超出屏幕范围");return} const startTime = new Date(); - // const recognitionObject = new RecognitionObject(); - // recognitionObject.UseMask = false; // 设置 UseMask 为 true - // 下个版本BGI才支持带UseMask的构造函数RecognitionObject.RegionOfInterest = new Rect(xa, ya, wa, ha); + // 支持带UseMask的构造函数 const Imagidentify = RecognitionObject.TemplateMatch(file.ReadImageMatSync(imagefilePath),true); if (tt !== 0.8){ Imagidentify.Threshold=tt; Imagidentify.InitTemplate(); } + + // Imagidentify.Name = "测试"; + // Imagidentify.DrawOnWindow=true; + // Imagidentify.InitTemplate(); for (let ii = 0; ii < 10; ii++) { captureRegion = captureGameRegion(); // 获取一张截图 @@ -117,26 +119,44 @@ const ocrRegion3 = { x: 906, y: 928, width: 161, height: 100 }; // 下方区域 const ocrRo3 = RecognitionObject.ocr(ocrRegion3.x, ocrRegion3.y, ocrRegion3.width, ocrRegion3.height); var method= settings.method ? settings.method : "冒险之证"; - var Rewardsuse = settings.Rewardsuse ? settings.Rewardsuse : "1/2"; + var Rewardsuse = settings.Rewardsuse ? settings.Rewardsuse : "1/2/5"; var resinTypes = Rewardsuse.split("/"); var rewards = []; - var onerewards, secendrewards, threendrewards, fourdrewards; + var reBigMap = false;//大地图缩放标志 + var onerewards, secendrewards, threendrewards, fourdrewards,fiverewards; for (var i = 0; i < resinTypes.length; i++) { var resinType = parseInt(resinTypes[i]); - if (isNaN(resinType) || resinType < 1 || resinType > 4) { + if (isNaN(resinType) || resinType < 1 || resinType > 5) { throw new Error("设定的树脂类型无效或缺失,请重新配置"); } rewards.push(resinType); } - const resinTypeMap = ["","使用1个浓缩树脂,获取2倍产出", "使用20个原粹树脂", "使用1个脆弱树脂,获取3倍产出", "使用1个须臾树脂,获取3倍产出"]; + const resinTypeMap = ["","使用1个浓缩树脂,获取3次产出", "使用40个原粹树脂,获取2次产出", "使用1个脆弱树脂,获取3次产出", "使用1个须臾树脂,获取3次产出","使用20个原粹树脂"]; + const resinTypeMap2 = ["使用50原石,获取3次产出", "使用100原石,获取3次产出", "使用150原石,获取3次产出", "使用200原石,获取3次产出"]; + //原石使用 + var primogemUseCount = settings.primogemUseCount ? settings.primogemUseCount : 0; + if (primogemUseCount === undefined || primogemUseCount === null) { + throw new Error("原石使用 参数无效,请设置0到6之间的整数值"); + } + primogemUseCount = parseInt(primogemUseCount); + if (isNaN(primogemUseCount) || !Number.isInteger(primogemUseCount) || primogemUseCount < 0 || primogemUseCount > 6) { + throw new Error("原石使用 数量设置无效,请设置0到6之间的整数值"); + } + primogemUseCount = (isNaN(primogemUseCount)) ? 0 : primogemUseCount; + var primogemUseDone = 0; + var resinDone = false; + const golbalRewards = ["","浓缩树脂","原粹树脂","脆弱树脂","须臾树脂"]; // 对应四种树脂 // 根据 rewards 数组长度,依次赋值给对应的变量 if (rewards.length > 0) onerewards = golbalRewards[rewards[0]]; if (rewards.length > 1) secendrewards = golbalRewards[rewards[1]]; if (rewards.length > 2) threendrewards = golbalRewards[rewards[2]]; if (rewards.length > 3) fourdrewards = golbalRewards[rewards[3]]; - const golbalRewardText = [onerewards, secendrewards, threendrewards, fourdrewards].filter(Boolean);//过滤树脂使用类型 + if (rewards.length > 4) fiverewards = golbalRewards[rewards[4]]; + const golbalRewardText = [onerewards, secendrewards, threendrewards, fourdrewards,fiverewards].filter(Boolean);//过滤树脂使用类型 + if(primogemUseCount>0){golbalRewardText.push("原石")} + // 根据 rewards 数组长度,依次赋值给对应的变量 var doneCount = 0; @@ -168,7 +188,7 @@ : 0.8; log.warn(`屏幕分辨率${genshin.width},识别阈值调整为${Threshold}...`); - log.warn(`全自动枫丹地脉花: v3.8 - ${SHUV}.${color}.${rawTimes}`);//调试LOG + log.warn(`全自动枫丹地脉花: v3.9 - ${SHUV}.${color}.${rawTimes}`);//调试LOG log.warn(`使用树脂类型数量:${rewards.length}`); log.warn(`使用树脂顺序:${golbalRewardText.join(" ->")}`); @@ -181,8 +201,10 @@ var originalResin = "assets/model/original_resin_count.png"; var fragileResin = "assets/model/fragile_resin_count.png"; var momentResin = "assets/model/moment_resin_count.png"; + var cilun = "assets/model/cilun.bmp"; var resinImages = [ + "assets/model/zero.png", "assets/model/one.png", "assets/model/two.png", "assets/model/three.png", @@ -193,6 +215,7 @@ if (Rewards){log.warn("结束后领励练点和提交每日...");if(settings.nh === undefined || settings.nh === "") {log.warn("好感队未配置,领奖励时不切换队伍..")}} if (SHUV == 1) {log.warn(`线路模式 : <<按次数刷取>> ${timesConfig.value/2} 次 `);}else{log.warn("线路模式 : 设定使用的树脂类型<<耗尽模式>>(最多99次)");timesConfig.value = 198;} if (color == 1) {log.warn("地脉类型 : <<蓝色-经验花>>...");}else{log.warn("地脉类型 : <<黄色-摩拉花>>...")} + if (primogemUseCount>0)log.warn("{t}设置了 {d} 使用次数:{1} !!","请注意!!","原石",primogemUseCount); if (settings.n === undefined || settings.n === "") { log.warn("队伍名称未配置,不更换队伍...");SHUOVER=1;} if (settings.nh === undefined || settings.nh === "") { log.warn("好感队禁用...");haoganq=0}else{var haogandui = settings.nh;haoganq=1;if(settings.n === undefined ) {throw new Error("好感队已经设置,请填战斗队伍...")}} let nowuidString = settings.nowuid ? settings.nowuid : ""; @@ -349,9 +372,8 @@ async function PathCheak0() { - repeatRoute = false; + repeatRoute = false; var bigMapPosition={x:0,y:0}; - await genshin.returnMainUi(); log.info("重置地图中,打开冒险之证寻找地脉花..."); await genshin.tp(2297.60, -824.45); @@ -453,17 +475,31 @@ } } - try{ - bigMapPosition = genshin.getPositionFromBigMap(); - if (bigMapPosition.x >= 2900 && bigMapPosition.y <= 5100 ){ - log.info("区域正确..."); - break; - }else{ - log.info("区域错误..."); + try{ + let cilun2 = await imageRecognition(cilun,3,0,0,13,971,85,78); + if (!cilun2.found){ + log.info("大地图打开错误..."); } + else{ + await sleep(500); + if (reBigMap){ + await genshin.setBigMapZoomLevel(2.5); + await sleep(1000); + } + bigMapPosition = genshin.getPositionFromBigMap(); + if (bigMapPosition.x >= 2900 && bigMapPosition.y <= 5100 ){ + log.info("区域正确..."); + break; + }else{ + log.info("区域错误..."); + } + } } catch(error){ log.info("冒险之证打开错误G...", error); + reBigMap = true; + await genshin.returnMainUi(); + await sleep(1100); continue; } } @@ -495,7 +531,7 @@ else{ return false } - } + } // 输出选择的线路 async function PathCheak1() { @@ -797,20 +833,38 @@ } await sleep(500); + //确保转换按键,根据数字2和5的顺序,判断是否要点 + if(doneCount == 0){ + let index2 = resinTypes.indexOf("2"); + let index5 = resinTypes.indexOf("5"); + + if (index2 !== -1 && (index5 === -1 || index2 < index5)) { + let SHU = await Textocr(resinTypeMap[5], 0.1, 0, 0, 510, 380, 640, 600); + if (SHU.found) { + await click(SHU.x + 480, SHU.y + 15); + } + }else{ + let SHU = await Textocr(resinTypeMap[2], 0.1, 0, 0, 510, 380, 640, 600); + if (SHU.found) { + await click(SHU.x + 480, SHU.y + 15); + } + } + } for (let j = 0;j < 2;j++) { - for (let i = 0;i < rewards.length;i++) { + for (let i = 0;i < rewards.length && !resinDone;i++) { let SHU = await Textocr(resinTypeMap[rewards[i]],0.1,0,0,510,380,640,600); if (SHU.found){ - if (resinTypeMap[rewards[i]] == "使用20个原粹树脂") - { - let BUC = await Textocr("补充",0.1,0,0,1150,440,210,130); + if (resinTypeMap[rewards[i]] == "使用20个原粹树脂" || resinTypeMap[rewards[i]] == "使用40个原粹树脂,获取2次产出") + { + let BUC = await Textocr("补充",0.1,0,0,1150,440,210,130); if (BUC.found) {continue;} } await sleep(1000); + let shouldExit = true; let { condensedResinCount, originalResinCount, fragileResinCount, momentResinCount } = await getRemainResinStatus(); switch (rewards[i]) { @@ -826,9 +880,7 @@ case 4: momentResinCount--; break; - } - - let shouldExit = true; + } if (resinTypes.includes("1")) { @@ -848,25 +900,64 @@ } log.info(`${resinTypeMap[rewards[i]]} ...`); - let dimai2 = await Textocr("地脉之花", 1, 0, 0, 840,225, 230, 125); - if (!dimai2.found) { await keyPress("F");await sleep(700);await keyPress("F");await sleep(700);await keyPress("F") ; } + let dimai2 = await Textocr("地脉之花",1, 0, 0, 840,225, 230, 125); + if (!dimai2.found) { await keyPress("F");await sleep(700);await keyPress("F");await sleep(700);await keyPress("F") ; } await click(SHU.x+550,SHU.y) await click(SHU.x+550,SHU.y) if (shouldExit) { - log.warn("树脂耗尽,停止执行..."); - await sleep(1000); - SHUOVER=2; - return false; + if(primogemUseCount <= 0){ + log.warn("树脂耗尽,停止执行..."); + await sleep(1000); + SHUOVER=2; + return false; + } + else{ + log.warn("树脂耗尽,后续尝试使用原石 {0} 次...", primogemUseCount); + resinDone = true; + } } return true; } - } - await sleep(500); + } } - log.warn("未找到树脂,结束地脉花..."); + + resinDone = true; + if(primogemUseCount > 0 && resinDone){ + + log.warn("树脂耗尽,尝试使用原石 {0}/{1} ...", primogemUseDone+1, primogemUseCount); + + for (let k = 0; k < resinTypeMap2.length; k++) { + let SHU = await Textocr(resinTypeMap2[k],0.1,0,0,510,380,640,600); + if (SHU.found){ + log.warn("{t}","原石使用啦!!!!!!!!!..."); + await click(SHU.x+550,SHU.y) + + let dimai2 = await Textocr("确认",0.5, 0, 0, 960,720, 400, 80); + if (dimai2.found) { + await click(865,630)//不再提示 + await sleep(1000); + // await moveMouseTo(dimai2.x,dimai2.y+10); + await click(dimai2.x,dimai2.y+10) + } + + primogemUseDone ++; + primogemUseCount--; + if (primogemUseCount <= 0) { + log.warn("原石使用次数耗尽,停止执行..."); + break; + } + return true; + }else{ + log.warn("未找到原石使用选项,停止执行..."); + break; + } + } + } + + log.warn("结束全自动枫丹地脉花..."); await sleep(1000); await keyPress("VK_ESCAPE"); await sleep(1000); @@ -885,9 +976,9 @@ if (condensedResinCountRa.found) { for (let i = 0; i < resinImages.length; i++) { if(i==0){await sleep(1000);} - let countArea = await imageRecognition(resinImages[i],0.2, 0, 0,condensedResinCountRa.x+condensedResinCountRa.w*0.9,condensedResinCountRa.y,condensedResinCountRa.w*2,condensedResinCountRa.h,Threshold); + let countArea = await imageRecognition(resinImages[i],0.1, 0, 0,condensedResinCountRa.x+condensedResinCountRa.w,condensedResinCountRa.y,condensedResinCountRa.w*2,condensedResinCountRa.h,Threshold); if (countArea.found){ - condensedResinCount =i+1; + condensedResinCount =i; break; } if (i==4){log.info("未检测到浓缩数量,强制为1"); condensedResinCount=1;} @@ -897,7 +988,8 @@ log.info("未检测到浓缩树脂图标"); } - var originalResinCountRa = await imageRecognition(originalResin,0.1, 0, 0,1555,0,100,100,Threshold); + //脆弱树脂 + var originalResinCountRa = await imageRecognition(originalResin,0.1, 0, 0,1325,0,100,500,Threshold); if (originalResinCountRa.found) { // await moveMouseTo(originalResinCountRa.x,originalResinCountRa.y); let countArea = await Textocr("",0.5, 0, 2,originalResinCountRa.x+originalResinCountRa.w,originalResinCountRa.y,originalResinCountRa.w*3,originalResinCountRa.h,Threshold);// @@ -922,16 +1014,17 @@ log.info("未检测到原粹树脂图标"); } - var momentResinCountRa = await imageRecognition(momentResin,0.2, 0, 1,1170,0,500,100,0.7,Threshold); + // 须臾树脂 + var momentResinCountRa = await imageRecognition(momentResin,0.1, 0, 1,960,0,500,100,Threshold); if (momentResinCountRa.found) { for (let i = 0; i < resinImages.length; i++) { - let countArea = await imageRecognition(resinImages[i],0.2, 0, 0,momentResinCountRa.x+momentResinCountRa.w,momentResinCountRa.y,momentResinCountRa.w*2,momentResinCountRa.h,Threshold); + let countArea = await imageRecognition(resinImages[i],0.1, 0, 0,momentResinCountRa.x+momentResinCountRa.w,momentResinCountRa.y,momentResinCountRa.w*2,momentResinCountRa.h,Threshold); if (countArea.found){ - momentResinCount =i+1; + momentResinCount =i; break; } - if (i==4){log.info("未检测到须臾图标,强制为1"); momentResinCount=1;} + if (i==4){log.info("未检测到须臾数量,强制为1"); momentResinCount=1;} } fragileResinCount = "1"; @@ -941,10 +1034,12 @@ { log.info("未检测到须臾树脂图标"); - var fragileResinCountRa = await imageRecognition(fragileResin,0.1, 0, 1,1170,0,300,100,Threshold); + // 脆弱树脂 + var fragileResinCountRa = await imageRecognition(fragileResin,0.1, 0, 1,960,0,500,100,Threshold); if (fragileResinCountRa.found) { - // await moveMouseTo(fragileResinCountRa.x+fragileResinCountRa.w+20,fragileResinCountRa.y-15); - let countArea = await Textocr("",0.5, 0, 2,fragileResinCountRa.x+fragileResinCountRa.w,fragileResinCountRa.y,fragileResinCountRa.w*2,fragileResinCountRa.h,Threshold);// + // await moveMouseTo(fragileResinCountRa.x+fragileResinCountRa.w+20,fragileResinCountRa.y-15); + + let countArea = await Textocr("",0.1, 0, 2,fragileResinCountRa.x+fragileResinCountRa.w,fragileResinCountRa.y,fragileResinCountRa.w*2,fragileResinCountRa.h,Threshold);// if (countArea.found){ // log.info("脆弱树脂识别数量结果:"+ countArea.text); fragileResinCount = countArea.text @@ -1323,12 +1418,11 @@ return isUpdated; } - // // 树脂测试 + // //测试 // while (true) { - // await getRemainResinStatus(); + // await getRemainResinStatus(); // await sleep(500); // } - // return; // UID获取存在概率不成功,慎用!请更换背景纯色的名片提高OCR成功率 diff --git a/repo/js/AutoFontaineLeyLine/manifest.json b/repo/js/AutoFontaineLeyLine/manifest.json index a15f23a54..e82bb84aa 100644 --- a/repo/js/AutoFontaineLeyLine/manifest.json +++ b/repo/js/AutoFontaineLeyLine/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "全自动枫丹地脉花", - "version": "3.8", + "version": "3.9", "bgi_version": "0.47.1", "description": "枫丹地脉花,蓝花金花通用。生存压力大,请带盾奶;避免纯水输出,请注意说明文件。如有BUG请联系作者QQ:119996800", "tags": [ diff --git a/repo/js/AutoFontaineLeyLine/settings.json b/repo/js/AutoFontaineLeyLine/settings.json index 11f82426f..f6cb819a5 100644 --- a/repo/js/AutoFontaineLeyLine/settings.json +++ b/repo/js/AutoFontaineLeyLine/settings.json @@ -48,13 +48,28 @@ { "name": "Rewardsuse", "type": "input-text", - "label": "树脂设定:1=浓缩/2=原粹/3=脆弱/4=须臾\n用`/`隔开:填写对应的树脂<数字>即可\n默认:1/2 (表示先用浓缩后原粹,直至用完,不填的不使用)", - "default": "1/2" + "label": "树脂设定:1=浓缩/2=40原粹/3=脆弱/4=须臾/5=20原粹\n用`/`隔开:填写对应的树脂<数字>即可\n默认:1/2/5 (先用浓缩后原粹,直至用完,不填的不使用 ↓↓)", + "default": "1/2/5" + }, + { + "name": "primogemUseCount", + "type": "select", + "label": "原石购买体力次数(0~6次),上面设置的树脂用完后才会使用 ↓↓", + "options": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ], + "default": "0" }, { "name": "Fightquick", "type": "checkbox", - "label": "默认开启:异步检测战斗结束,即地脉花长出后马上停止战斗\n开启后,建议关闭配置组中的<自动检测战斗结束>选项\n不启用:使用传统<打开队伍界面>判断战斗结束 ↓↓", + "label": "默认开启:异步检测战斗结束,即地脉花长出后马上停止战斗\n开启后,请关闭配置组中的<自动检测战斗结束>选项\n不启用:使用传统<打开队伍界面>判断战斗结束 ↓↓", "default": "true" },