From 0a024d2a4527868398798722d256f79396adc6f1 Mon Sep 17 00:00:00 2001 From: Walofz Date: Sun, 19 Jan 2020 00:07:13 +0700 Subject: [PATCH 1/6] Set theme jekyll-theme-tactile --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..259a24e --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-tactile \ No newline at end of file From 9737d8d3f8d1a4759f1b3886cea4df95f5729386 Mon Sep 17 00:00:00 2001 From: Walofz Date: Sun, 19 Jan 2020 00:12:10 +0700 Subject: [PATCH 2/6] Set theme jekyll-theme-hacker --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 259a24e..fc24e7a 100644 --- a/_config.yml +++ b/_config.yml @@ -1 +1 @@ -theme: jekyll-theme-tactile \ No newline at end of file +theme: jekyll-theme-hacker \ No newline at end of file From 1e84d77cdd320d6536148463bde8fcaf6f8ddf6d Mon Sep 17 00:00:00 2001 From: Paitoon Joyparn Date: Wed, 22 Jan 2020 14:05:02 +0700 Subject: [PATCH 3/6] Merge branch 'master' of git://github.com/Egoistically/ALAuto into original # Conflicts: # assets/EN/maps/map_13-1.png # assets/EN/menu/button_confirm.png # config.ini # modules/combat.py # modules/headquarters.py # version.txt --- ALAuto.py | 5 +- README.md | 2 +- .../EN/event/Royal_Maids/easy_completed.png | Bin 0 -> 2418 bytes assets/EN/event/Royal_Maids/ex_completed.png | Bin 0 -> 2559 bytes .../EN/event/Royal_Maids/hard_completed.png | Bin 0 -> 3602 bytes assets/EN/event/Royal_Maids/menu_button.png | Bin 0 -> 8409 bytes .../EN/event/Royal_Maids/normal_completed.png | Bin 0 -> 3264 bytes assets/EN/maps/map_13-2.png | Bin 0 -> 1461 bytes assets/EN/maps/map_13-3.png | Bin 0 -> 1253 bytes assets/EN/maps/map_13-4.png | Bin 0 -> 1418 bytes assets/EN/menu/button_sort.png | Bin 6607 -> 6655 bytes .../{commission => menu}/button_confirm.png | Bin config.ini | 3 +- modules/combat.py | 82 ++++++++++++++++-- modules/commission.py | 9 +- modules/event.py | 56 +++++++----- modules/headquarters.py | 8 +- modules/mission.py | 4 +- util/config.py | 8 +- util/stats.py | 2 +- 20 files changed, 138 insertions(+), 41 deletions(-) create mode 100644 assets/EN/event/Royal_Maids/easy_completed.png create mode 100644 assets/EN/event/Royal_Maids/ex_completed.png create mode 100644 assets/EN/event/Royal_Maids/hard_completed.png create mode 100644 assets/EN/event/Royal_Maids/menu_button.png create mode 100644 assets/EN/event/Royal_Maids/normal_completed.png create mode 100644 assets/EN/maps/map_13-2.png create mode 100644 assets/EN/maps/map_13-3.png create mode 100644 assets/EN/maps/map_13-4.png rename assets/JP/{commission => menu}/button_confirm.png (100%) diff --git a/ALAuto.py b/ALAuto.py index d80246a..36c712b 100644 --- a/ALAuto.py +++ b/ALAuto.py @@ -1,4 +1,5 @@ import sys +import re import traceback import argparse from modules.combat import CombatModule @@ -196,9 +197,9 @@ def print_cycle_stats(self): if adb.init(): Logger.log_msg('Successfully connected to the service.') - res = ['1920x1080', '1080x1920'] + output = Adb.exec_out('wm size').decode('utf-8').strip() - if Adb.exec_out('wm size').decode('utf-8').strip()[15:] not in res: + if not re.search('1920x1080|1080x1920', output): Logger.log_error("Resolution is not 1920x1080, please change it.") sys.exit() diff --git a/README.md b/README.md index 777089c..cce92a7 100644 --- a/README.md +++ b/README.md @@ -28,4 +28,4 @@ Check the [Wiki](https://github.com/Egoistically/ALAuto/wiki/Config.ini-and-Modu * If you'd like to help us during events to release an update faster you can check [this guide](https://github.com/Egoistically/ALAuto/wiki/Creating-new-assets-for-bot). This was made for my own usage, it is far from good and I'm very aware of it. I am posting this because it might be useful to someone, that's all. -If you'd like to contribute in any way make sure to open a [pull request](https://github.com/Egoistically/ALAuto/pulls) or an [issue](https://github.com/Egoistically/ALAuto/issues). You can also contact me on Discord ego#9459. +If you'd like to contribute in any way make sure to open a [pull request](https://github.com/Egoistically/ALAuto/pulls) or an [issue](https://github.com/Egoistically/ALAuto/issues). If you'd like to contact us you can do so through our [Discord](https://discord.gg/vCFxDen). diff --git a/assets/EN/event/Royal_Maids/easy_completed.png b/assets/EN/event/Royal_Maids/easy_completed.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e65eb41f0e92562b322e110e1db53e0c7164ac GIT binary patch literal 2418 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 Vj9B@S=3oE-002ovPDHLkV1l+&{yP8w literal 0 HcmV?d00001 diff --git a/assets/EN/event/Royal_Maids/hard_completed.png b/assets/EN/event/Royal_Maids/hard_completed.png new file mode 100644 index 0000000000000000000000000000000000000000..25bd143633b4838d9458e5629aa4006bc76ab5f4 GIT binary patch literal 3602 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 Y2bW|p&{x}((f|Me07*qoM6N<$g1*B3djJ3c literal 0 HcmV?d00001 diff --git a/assets/EN/event/Royal_Maids/menu_button.png b/assets/EN/event/Royal_Maids/menu_button.png new file mode 100644 index 0000000000000000000000000000000000000000..15979f7ae336a3645a42ed9356e34be481c6c2b4 GIT binary patch literal 8409 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 literal 0 HcmV?d00001 diff --git a/assets/EN/event/Royal_Maids/normal_completed.png b/assets/EN/event/Royal_Maids/normal_completed.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0ed51945b372c5ac717e51727c7f65a4c8199e GIT binary patch literal 3264 zcmV;x3_tUUP)VZ7eu!T)%p(*rX1BDX$CvE?OY@tijhl2YM za2^77VHbNL5G^F2fCCzcK?64ELIo|~xj%HTMl-f&#=G7!2SPkE($yW^Pv7~@k2^mp zisHYtGPdfhn)^nK$76c>=chD28+-3R{@v&FswOFv=8qDF^ShyC>J(WDqJKs;!gv6S#uSHFi-W^h~jx)*^llV3y;Oq?`ok4`nOxEXhV6MiT=8 zIA-x(6M|^)v)Qf-z)NqZR#*Tu*NJs#1)e2YO_YC_bX$Wv-2efr49?R%fuQ7O!&+5U zvD>;%wi3)sFu0SlbR#uEA|Og!*JNCpzT?Tpd2Wj+j$-?onP*fupDPh9dE8~WGI6P~ zR?M>mQ+lVl=}{E%zjUKv4utT094P=LNjy{cAkyk@^qcd?lCmu01%@j$*NB`*Y!Txz zdl3nCvlkn41)e2X@xj+3g4qR&-)NSyEIqdaO*8oE4A;fNS}_kaGK=L}sAN#m1|^Lh6< z5a>7$3YAV3n3whGsb#Q+ZZ;??LlGYqU!m0FPNbSoNQZ%5hz!S0|#Rk$HfXfi&~f7Ar8fTJp=lOyYN^B z3wmeLb%mdV%>wJP1lP_0xFEFWBGLHh;Ujii#xQ>NI-|Xpdwk8d#(`_|@=pvN1x98v zqz4>!VONzV9;4y=X5VEix3#Eoq*YH2!U;Zockz@O0|>UZw)hpE`pvtW-g#V>*yuZX z995Q3E=wq_Q%h!oho9~!;AqAHSa$!lOK-9_Dl!v-b{_1|qu(|FW460Dpu^W07g@n( zh_c2QGx3YKaH}|832$QIjJW`y<>^W=FKk`RqbT03gpYU;#%GejX21jM_xqmiQDuqE ziL!)sS%~CrCNz97q$Fuv6+j8#upoBW?ckdOO7Cvca9dv!F0q$zBsdxgJEfi+izNNljeuC7LW>+79ohGi#1YF?#o!|o zq6Z-h->shy$wczS$Ab1=?M(oO^up))8@j(Wuv$hX7b81IrJ*#a)}7o@fb+++`(l^& zU+uFSb8V%07BEC25W*9YR;!Y(m?PxH!qe+TIw+Dl$wJQ8^c=Bl$`U$6he(FVHUMLH z@-FAlxeXk1J~WeiO=Pb_5qf$D0OH(`aI(ua(a|^ioxq_Lcos7(3NpuS^LluoMc!rV z??5n+{Bv4u8v!+8x^@rNZLyn6yo$VpK+ZDDPF=>h>Ck0H?{L_!uj_(`8SUj>Cva#5 zp2ZA8xHHm95?`}uS7jC^fA43DQ>RD@Rxn_~*u_bqSR)V=hB&sbG!^NPxhR;;W?3am z7Pu4U2yo6yJCPQ%&bL|T!(nU%o&^kT7!!KuRyy(Y8h{!0@LEZA4U5l1tA-m!*DATF z&J8(hY=NV}g$~APEwIMowV2}dra})L)r`^1+YR{vSd(6uW-IV4U|r0^`o$5;+@5On zh7zNPUmyAxMJ?-2YO}${xU^7~HgZD(&n;;fm)6C8vkcm((yq$rop3Go$|)#^RA;3Z zHMVU9o&_xLh_sZ;acWwc6=bcRb^rw7y;ormRLD-cHNqIm5)jKm3tKek+n#1*fKMxS zYv&nqH*Wq$WuH}T%=7~xBOW@D)_6Q(t)$qp8$iLczdk$v;zEUWoc5l9a+^@9<(2i? znj3l1>u`&KFvrr|jZ?O5As{;zLg4oO00`VL9gz@e7sJ_MPPmPkwXB=aea-xTuW5M4 zBIm~=Uc2xUgxG!0C1M=o)}|T2$c0kpJZ|sc$gHyWLq%E*aEnpN7-+MDs6tpG?!U? zu@KLxl+w<(Z8(0pZfk~r{IMIes%eFo@&Mr&!yv@@ou&ayJ#?mxLU0MeEm{IJa2vJ( zOqV5WNg@!QpoLYs2s+E6UP4i?0VIl@Bd}FnS-pb}0Lyq*h!-SJ^?W(L7xg zx5Uw}a_~-Lx9zkkOk-b^9lXqPEB9g+nv;cD=8c15C?YNQI{9&7OA?nA#pLY3aPvsW z*{~3H^iI-?J*@>cQx$my_%7W8Hd`uqnj3eu3v9u8+4=g~GUqRJ53k^y3cCsIt{6CH7({VSd^76W0twTT>$ zYBE!QcV92W+}7gG&%l;Q8@PQq&^iD#f0w!$w_TPfPfDszE1Q|NZ6NMkCY~WBwS;9nGjY(Y!2>I{qZALqv?(nC))uy$z*fg2p zx?my*WY;+FbE`kWaGY!$r2GR3cE_odboA{JYZ>)0l)CvVnk-8cI;&0Eb?GS4Xg#xY zBj7OhjD8R;@qL;KlP|j4pwc=+i^_9S6huwLVhoX8*A7pNCDznp09*hByTyRK9v)QU z`Jpz6JfsGWb?=a75`Yao#heK?EgeWWqTl$zPQyCdMIOFBWWg*%qj%8W;g%&ZKjpTh zo(mqLN~Jrb>I_J9-%l_rj-T6t>&QOU%h~3z!MDQ)bR8A+r{S1tqC*oJSs;OD#kfS+jLob zCxqH+(=iVlvg>}C4~18+GRKr=w?r-Ndx(^ZH5z6pNu7@b*BpjXGli zIH-T25B&x++;o$#^smgVw+?$Y>cI9p* zok+WwDaNi##7ZQSFP%3=rA0O#(H-t zqPK=w+L0E-vL8`O>nep#8*ndCKyX?2@qONy)lp@5QcP?G98^83Rhs8)Xap`q-CWeaU*K*=gzn z60X*DTVS{H)c=Jv>D(96fq`NkR@1ax_PNsL*2^#KMa}fh%;UG6Ycc?D9{!Ptpr`;{)~&-99VD)06Qp90x?zh2H2qjS`e{V<_OWr1F@hE z`~t1%ViZBeJ4*SpfGB8g7?E_svAIl#b(j0Cg?VlM-w&K-%D?OHaLI>h@8v$l>rEeW zRZTySlW#^x)D=Dd$8+!JRFv4(Lb>By?#{U@7AZnVXLY4s$0G+=Cgb<1EhM}T#Vj7x3{bV2z@H_!~*Ma@g&h&pD zpmofXCd?@V+D9^I3CD3@y|Ur$`I!}R3DP7B)e4rEssI%DzK693O>8`F_lPf_ucLCh z45gq!mSQsnU}BEzVEwlZw0_@sKg=Xx_Tv&ReA!@fY)~m$F95uK5ADrO+`In>p6ADh zB|)37om)U-sS35I@;Bd?xt+-sWYiWH&{(WOF35fNqw6}PqY!S)w@kx{r(pG{bU>%x`Fbk>9GjvMGckH^NBX=g^h2%zKS1i-cGcK zBiotWWVvSa`8GhkUQ0D6?W4;G~gd}VEt(&TAe)~9xW(k)0PM#@?(G!RR)3JJ(o_H zIr%`q^TSY)=now?q5IpHU;sSdv2f|~txUV;c`%L}Y@`H1Az;09M`kAif#;Tu)t~Pr zjArdT=Q>z9GoKmL5goX1oQPm*GrsE#UXW_so5Ma_6PFgC6jYQ>8qj0$M}6B*+t_-x zH8Mdmp7qj(8{gMk0rCl|i}Q2I!=N>{ckIxk^6FqGNVg1zTGUWqtZ{7iif^>B_U1NL ze`$`dXd;Ca2dOBk*J=0keS!9q&EEfs^ju-s9vw2LW;t9aZmvjqkYMNr{QCmUSDu;0 z{OMFEQ3zQU+A)tAs6~$g%4Qo+HepPvTx#NEs9aEtZ0%TZb{#a9YD3TO?EAQPcReA$ zv`G#1FS3SnU6-X=++)Tj=nLg3`nf6#>o`aruH9*I-!w*Y(eyzmv8zkkf?ZH8yME(#?zce@L5J^oWT^7Y zG^!~#r+6dR+<4l~on=UZf{W~6~R2@J7A- z?-Ke*H4(Y(=m--_C6ib}*KESJ`x|a(7w!1r(?vXC@QuMR;Oz^T8L0+-!WakBoLH)v z-O?T?GbhvxDIZEWcbcOS^hsO3uu+~lw5D26vGP@e<&m070OG*s>^drlgg#|t5(}b} zO-nT*C_ht1C+O{YSbxw;s(2|Z>S{6Bmul0a$8FY<<3LgRmzPZG36lMXCdgTfGS&@n z(3ei-UzFWl7wf-1LX#ey`efFB1DSVGewH&+aYPr)eJ>%G`2J{wk33X-RaN75N+^!w z!hYqj%1OM_j0n21=(={~!6YBMH=gkyej|m_y_9y|3fAkCJ^xdXZvyxSi`h|4(odO! P00000NkvXXu0mjf4UxrF literal 0 HcmV?d00001 diff --git a/assets/EN/maps/map_13-3.png b/assets/EN/maps/map_13-3.png new file mode 100644 index 0000000000000000000000000000000000000000..4a22d53967406c10ef0d6f7bc060eecec3896c7d GIT binary patch literal 1253 zcmVa zL2DaF6vzK{6&QgFD{x?!#>ETqL7@S!zy}F@$bt`+X%80UP(z^jSm>djpkJcL*0eEAZ|14&2w% zIa*t`u=!awX6$iVz4bL4)v5(^!Au;iR;{3Xd%T~*Miee)n8Mv&t)YF;h3EMk%9)*9 z$9Gb?Q#t$YL=Y(mFJ=1y7#qLin9;dcaJzsTt{?6Spy2nTGylhS~b3TE& z*Ft?YojF5|mAhpQ2XjGBb&!k;k>U~0_2B&Oa`HHWdPjkD8pC7kSoE4~6YiN98Lz~l-Kq&$D zr8_pWUN0)$g`y&F!s?gRnCWIW9Sq9FyQdD5}fq?0N-pkAw)4gXnz3zEC_S@ z(%Vp#lYReUwkKTG%*?=7i&ka15(84sw4b%lCo!ujnTsY2 zT|>oEFrT;K`GML=WGM5s6^l1&8f_HTd(%VnhdmsfIPshrPA>tOxuRh9dT8#%nKRR& zLKCw^uF97~M%Q&T?$>drY>xkEO1Vd&t7OjUti(o{xkzf~^fxZ^Bp`Ik<^M-5fE9|p zYP0UOS0a%yp|zguquq64QFbNsp3U`zWN0oq&=m@{6ywSPq_BAyiUEC(PGa z-!-j!>Oh=0u?oHScpt5&5%WtmQ_}=UYESHBX;xt4ego!hJ=WfS-bLrd5u6i;<=3dF z(6mw*UWM`Sx{i?+-Fnb~aZABGJc8q>nZ<}Tv6JEhfy#0j){+%#r_dmvA4nDkVr27X z*l@tb;Ht{4GB1!=U#+N_$0^LnGKFinBJsB3`AFmHgDmI+J3sD@?RAMZ@@Ax58f$hk zQ=zih3K>^2T!<_}Tk@tpy4PLTN;kD+W?Gew3f070$Y3B7B^uA0LSoTjc98v)g~3@y zX4ZX@a*CjrXHciZ>Rbtiu8$R$UN6X$i&HbB>zYhCNwSHGkEUJdTe>Y^nWfN?RB(d7 z{4A*Hn2~nPq3(TTXi1o9y(}uj-q_bZWA$&9kdTFnC~0<;@6kS>vbFR z9~rSW_m4L?IP4+_`Uw8+!+GW6#tdM5cvHFeQHcHW>;T_wH}UdU7sG$1({U3qzmGGO z_pZi#co`If1a$4^$D|ciJ<1EZJu{5(28}=zCUoYc^B$i*a=eyQGKZ4WfzF&NW-gb@ z1mZpGh5+74u4>a1nu(Z2!4p4tm(0vXyYe+e_+K8wO~#}OI&%LyW&r*JBO;NnIQ?C7 P00000NkvXXu0mjf2#RNh literal 0 HcmV?d00001 diff --git a/assets/EN/maps/map_13-4.png b/assets/EN/maps/map_13-4.png new file mode 100644 index 0000000000000000000000000000000000000000..1c44adbd4518b19f6cf9e570ec7a5f203bbf5520 GIT binary patch literal 1418 zcmV;51$Fv~P)E$POJzPfHI4_pp&23eh1Y8f>6K0um&k2My%G1RLLz{71HIN4D8vUuE@ z`~H9LEo-*&5B}$*41=dmtH>$9SqO+X0z!zyykV%Yu2?Xp4KN0X5D4CIc&|M;t_yK0 z`tlx&6u_8PQ#sICdBA}%dhQF7jv;Pu>E9mK-m;Sd7%XJl9@W6V?LPDK34)H9hf9k zyH$ZTYe_I^q-hM*n>Ts^l1U5E9#;VK9UZlsRWx4gf*kwve%^+?e}MISU$iWMhsT|FQQLGq7QXk%-ht<#5pfUzy#z5^>6{Yvn zr6uT(2e4l`iSfYW2)Kwjb_XL$J!fMBl%{&AZK`BF&L3{yvo=W{i8Rm*w@&=OA4rnk z-oAsiFV~YWC_e@q#zh0hOj2ugJ$OeP_1jCC`3EOH z8qaszrb_kc=^30?2QaP=FA63C(mVF?;G2hFEQjK}h4ruQCODIpi&y7>a1YhRa%TRN zcYQyA9v2|w1{5Hv5jYQJ2dMy-WnpzWsS(aOww~_5wjCJ|5_KhY3?JT!jGUfPK_fOWYo zG!j(t+Pg3c8qCYRMY?PtmaEu(X<+ABV?=XRqEfAsa?R&3Di}J6$!`vhIxa0d|pWG#1Koj(j;YNC{wwne^5>>E3zNjZ@^jev96S|!$#29E|; zQG>|yJlwtaEplDjqetp1SGt4X3CG6cP3+mWw4#wfa+#xC6yIw{JaYCspVp<8yL&wv z8>g(3ZJcfQoK`jz)4eSmtv|3GIB~I%-CXI=#~hnawv(lr5+#1R2}o>6wd=D6Txa|O zJu<)O%bLHD?gpKu=|~_+Qj{*%?tcfTtL5q>_sGY_51V-O<5tvbPJmeK8q)7`EH%1z zQ|i4d`I>2V<)2W%I}T*h?_6gX)LQAVOhaCaAU0?3(3iIa-my3SwWJb9>=+#DFk5X( zg{o^(p>h{WVRY6*uXTMonagFFH)-=os#0t8nS}OQ0Heq)0XCB|ndINpkjHzar8WTn Y0(TV_M${eRd;kCd07*qoM6N<$g2IfQ6aWAK literal 0 HcmV?d00001 diff --git a/assets/EN/menu/button_sort.png b/assets/EN/menu/button_sort.png index 1e2854416ec9f381af22bc8de793647bed87e3fd..60e2ecdf126bd81a89d58bc79baf180ed8042bfb 100644 GIT binary patch literal 6655 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 JPDHLkV1k6icy0gy literal 6607 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 N002ovPDHLkV1kcUe>eaD diff --git a/assets/JP/commission/button_confirm.png b/assets/JP/menu/button_confirm.png similarity index 100% rename from assets/JP/commission/button_confirm.png rename to assets/JP/menu/button_confirm.png diff --git a/config.ini b/config.ini index 4937468..93124d8 100644 --- a/config.ini +++ b/config.ini @@ -11,6 +11,7 @@ Server: EN [Combat] Enabled: False Map: 3-4 +BossFleet: False OilLimit: 1000 RetireCycle: 2 RetreatAfter: 0 @@ -28,5 +29,5 @@ Retirement: False [Events] Enabled: False -Event: Crosswave +Event: Royal_Maids Levels: EX,H,N,E diff --git a/modules/combat.py b/modules/combat.py index 391c4ea..7446990 100644 --- a/modules/combat.py +++ b/modules/combat.py @@ -50,6 +50,7 @@ def __init__(self, config, stats): 'event_button': Region(1770, 250, 75, 75), 'lock_ship_button': Region(1086, 739, 200, 55), 'clear_second_fleet': Region(1690, 473, 40, 40), + 'button_switch_fleet': Region(1430, 985, 240, 60), 'menu_nav_back': Region(54, 57, 67, 67) } @@ -84,12 +85,16 @@ def combat_logic_wrapper(self): Utils.touch_randomly(self.region["menu_button_battle"]) Utils.wait_update_screen(1) continue +<<<<<<< HEAD if Utils.find("combat/menu_fleet") and (lambda x: 414 < x < 584)(Utils.find("combat/menu_fleet").y): if not self.chapter_map[0].isdigit() and string.ascii_uppercase.index(self.chapter_map[2:3]) < 1 or \ self.chapter_map[0].isdigit(): +======= + if Utils.find("combat/menu_fleet") and (lambda x:x > 414 and x < 584)(Utils.find("combat/menu_fleet").y) and not self.config.combat['boss_fleet']: + if not self.chapter_map[0].isdigit() and string.ascii_uppercase.index(self.chapter_map[2:3]) < 1 or self.chapter_map[0].isdigit(): +>>>>>>> aec2c737492c9bd081a41739acee05735bae2732 Logger.log_msg("Removing second fleet from fleet selection.") Utils.touch_randomly(self.region["clear_second_fleet"]) - continue if Utils.find("combat/menu_select_fleet"): Logger.log_debug("Found fleet select go button.") Utils.touch_randomly(self.region["fleet_menu_go"]) @@ -390,6 +395,7 @@ def clear_map(self): Logger.log_warning("Fleet lock is not supported, disabling it.") Utils.wait_update_screen() +<<<<<<< HEAD # swipe map to fit everything on screen def swipe(cmap): if cmap == 'E-C3' or cmap == 'E-A3': @@ -404,6 +410,21 @@ def swipe(cmap): Utils.swipe(960, 540, 1300, 540, 100) swipe(self.chapter_map) +======= + #swipe map to fit everything on screen + swipes = { + 'E-C3': lambda: Utils.swipe(960, 800, 960, 400, 100), + 'E-A3': lambda: Utils.swipe(960, 800, 960, 400, 100), + '12-2': lambda: Utils.swipe(1000, 570, 1300, 540, 100), + '12-3': lambda: Utils.swipe(1250, 530, 1300, 540, 100), + '12-4': lambda: Utils.swipe(960, 300, 960, 540, 100), + '13-1': lambda: Utils.swipe(1020, 500, 1300, 540, 100), + '13-2': lambda: Utils.swipe(1125, 550, 1300, 540, 100), + '13-3': lambda: Utils.swipe(1150, 510, 1300, 540, 100), + '13-4': lambda: Utils.swipe(1200, 450, 1300, 540, 100) + } + swipes.get(self.chapter_map, lambda: Utils.swipe(960, 540, 1300, 540, 100))() +>>>>>>> aec2c737492c9bd081a41739acee05735bae2732 target_info = self.get_closest_target(self.blacklist) @@ -421,6 +442,30 @@ def swipe(cmap): return True if Utils.find("enemy/fleet_boss", 0.9, self.chapter_map): Logger.log_msg("Boss fleet was found.") + + if self.config.combat['boss_fleet']: + s = 0 + swipes = { + 0: lambda: Utils.swipe(960, 240, 960, 940, 300), + 1: lambda: Utils.swipe(1560, 540, 260, 540, 300), + 2: lambda: Utils.swipe(960, 940, 960, 240, 300), + 3: lambda: Utils.swipe(260, 540, 1560, 540, 300) + } + + Utils.touch_randomly(self.region['button_switch_fleet']) + Utils.wait_update_screen(2) + boss_region = Utils.find("enemy/fleet_boss", 0.9, self.chapter_map) + + while not boss_region: + if s > 3: s = 0 + swipes.get(s)() + + Utils.wait_update_screen(0.5) + boss_region = Utils.find("enemy/fleet_boss", 0.85, self.chapter_map) + s += 1 + Utils.swipe(boss_region.x, boss_region.y, 960, 540, 300) + Utils.wait_update_screen() + boss_region = Utils.find("enemy/fleet_boss", 0.9, self.chapter_map) # extrapolates boss_info(x,y,enemy_type) from the boss_region found boss_info = [boss_region.x + 50, boss_region.y + 25, "boss"] @@ -474,15 +519,28 @@ def clear_boss(self, boss_info): Utils.script_sleep(3) return - def get_enemies(self, blacklist=[]): + def get_enemies(self, blacklist=[], boss=False): sim = 0.99 - if blacklist != []: + i = 0 + if blacklist: Logger.log_info('Blacklist: ' + str(blacklist)) self.l = [x for x in self.l if (x not in blacklist)] - while self.l == []: + while not self.l: + if (boss and len(blacklist) > 4) or (not boss and len(blacklist) > 1) or sim < 0.95: + if i > 3: i = 0 + swipes = { + 0: lambda: Utils.swipe(960, 240, 960, 940, 300), + 1: lambda: Utils.swipe(1560, 540, 260, 540, 300), + 2: lambda: Utils.swipe(960, 940, 960, 240, 300), + 3: lambda: Utils.swipe(260, 540, 1560, 540, 300) + } + swipes.get(i)() + sim += 0.005 + i += 1 Utils.update_screen() +<<<<<<< HEAD l1 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] - 3, x[1] - 45], Utils.find_all('enemy/fleet_level', sim - 0.15, @@ -511,6 +569,19 @@ def get_enemies(self, blacklist=[]): Utils.find_all('enemy/fleet_2_up', sim - 0.06, self.chapter_map))) +======= + l1 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] - 3, x[1] - 45], Utils.find_all('enemy/fleet_level', sim - 0.15, self.chapter_map))) + l1 = [x for x in l1 if (not self.filter_blacklist(x, blacklist))] + l2 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_1_down', sim, self.chapter_map))) + l2 = [x for x in l2 if (not self.filter_blacklist(x, blacklist))] + l3 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_2_down', sim - 0.02, self.chapter_map))) + l3 = [x for x in l3 if (not self.filter_blacklist(x, blacklist))] + l4 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 130], Utils.find_all('enemy/fleet_3_up', sim - 0.06, self.chapter_map))) + l4 = [x for x in l4 if (not self.filter_blacklist(x, blacklist))] + l5 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_3_down', sim - 0.06, self.chapter_map))) + l5 = [x for x in l5 if (not self.filter_blacklist(x, blacklist))] + l6 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_2_up', sim - 0.06, self.chapter_map))) +>>>>>>> aec2c737492c9bd081a41739acee05735bae2732 l6 = [x for x in l6 if (not self.filter_blacklist(x, blacklist))] self.l = l1 + l2 + l3 + l4 + l5 + l6 @@ -578,13 +649,14 @@ def get_closest_target(self, blacklist=[], location=[], mystery_node=False): enemy to the specified location """ while True: + boss = True if location else False fleet_location = self.get_fleet_location() mystery_nodes = [] if not location: location = fleet_location - enemies = self.get_enemies(blacklist) + enemies = self.get_enemies(blacklist, boss) if mystery_node: sim = 0.9 diff --git a/modules/commission.py b/modules/commission.py index 4af0051..e7257c1 100644 --- a/modules/commission.py +++ b/modules/commission.py @@ -64,7 +64,11 @@ def commission_logic_wrapper(self): Utils.find("commission/alert_available", 0.9).y): Logger.log_debug("Found commission available indicator.") Utils.touch_randomly(self.region["button_go"]) - Utils.script_sleep(1) + Utils.wait_update_screen(1) + + while not Utils.find("menu/commission"): + Utils.touch_randomly(self.region["button_go"]) + Utils.wait_update_screen(1) if self.urgent_handler(): self.daily_handler() @@ -74,10 +78,9 @@ def commission_logic_wrapper(self): Utils.find("commission/button_go").y): Logger.log_msg("All commissions are running.") Utils.touch_randomly(self.region["dismiss_side_tab"]) - Utils.wait_update_screen(3) break - Utils.wait_update_screen(1) + Utils.wait_update_screen() return True def completed_handler(self): diff --git a/modules/event.py b/modules/event.py index f63c34e..e35e71a 100644 --- a/modules/event.py +++ b/modules/event.py @@ -19,68 +19,78 @@ def __init__(self, config, stats): self.region = { 'menu_fleet_go': Region(1485, 872, 270, 74), 'menu_combat_start': Region(1578, 921, 270, 70), + 'tap_to_continue': Region(661, 840, 598, 203), + 'dismiss_combat_finished': Region(725, 965, 647, 76), + 'combat_end_confirm': Region(1520, 963, 216, 58), + 'close_info_dialog': Region(1319, 217, 47, 47), + 'crosswave_ex': Region(1718, 246, 75, 75), 'crosswave_hard': Region(1650, 449, 75, 75), 'crosswave_normal': Region(1752, 612, 75, 75), 'crosswave_easy': Region(1683, 798, 75, 75), - 'tap_to_continue': Region(661, 840, 598, 203), - 'dismiss_combat_finished': Region(725, 965, 647, 76), - 'combat_end_confirm': Region(1520, 963, 216, 58) + + 'royal_maids_ex': Region(1583, 218, 165, 42), + 'royal_maids_hard': Region(1645, 366, 160, 30), + 'royal_maids_normal': Region(1587, 533, 160, 30), + 'royal_maids_easy': Region(1634, 699, 160, 30) } def event_logic_wrapper(self): """Method that fires off the necessary child methods that encapsulates the entire action of completing an event """ - if self.config.events['name'] == 'Crosswave' and not self.finished: + event = self.config.events['name'] + events = ['Crosswave', 'Royal_Maids'] + + if event in events and not self.finished: Logger.log_msg("Opening event menu.") while not Utils.find("menu/operation"): - Utils.find_and_touch("event/crosswave/menu_button") + Utils.find_and_touch(f"event/{event}/menu_button") Utils.wait_update_screen(1) Logger.log_msg("Event levels: " + str(self.levels)) while ('EX' in self.levels): Utils.update_screen() - if Utils.find("event/crosswave/ex_completed", 0.98): + if Utils.find(f"event/{event}/ex_completed", 0.98): Logger.log_info("No more EX combats to do.") break - Utils.touch_randomly(self.region['crosswave_ex']) + Utils.touch_randomly(self.region[f'{event.lower()}_ex']) if self.pre_combat_handler(): self.combat_handler() - Logger.log_msg("Finished EX crosswave combat.") + Logger.log_msg(f"Finished EX {event.replace('_', ' ')} combat.") while ('H' in self.levels): Utils.update_screen() - if Utils.find("event/crosswave/hard_completed"): - Logger.log_info("No more hard combats to do.") + if Utils.find(f"event/{event}/hard_completed"): + Logger.log_info("No more Hard combats to do.") break - Utils.touch_randomly(self.region['crosswave_hard']) + Utils.touch_randomly(self.region[f'{event.lower()}_hard']) if self.pre_combat_handler(): self.combat_handler() - Logger.log_msg("Finished hard crosswave combat.") + Logger.log_msg(f"Finished Hard {event.replace('_', ' ')} combat.") while ('N' in self.levels): Utils.update_screen() - if Utils.find("event/crosswave/normal_completed"): - Logger.log_info("No more normal combats to do.") + if Utils.find(f"event/{event}/normal_completed"): + Logger.log_info("No more Normal combats to do.") break - Utils.touch_randomly(self.region['crosswave_normal']) + Utils.touch_randomly(self.region[f'{event.lower()}_normal']) if self.pre_combat_handler(): self.combat_handler() - Logger.log_msg("Finished normal crosswave combat.") + Logger.log_msg(f"Finished Normal {event.replace('_', ' ')} combat.") while ('E' in self.levels): Utils.update_screen() - if Utils.find("event/crosswave/easy_completed"): - Logger.log_info("No more easy combats to do.") + if Utils.find(f"event/{event}/easy_completed"): + Logger.log_info("No more Easy combats to do.") break - Utils.touch_randomly(self.region['crosswave_easy']) + Utils.touch_randomly(self.region[f'{event.lower()}_easy']) if self.pre_combat_handler(): self.combat_handler() - Logger.log_msg("Finished easy crosswave combat.") + Logger.log_msg(f"Finished Easy {event.replace('_', ' ')} combat.") Logger.log_msg("Finished all event combats, going back to menu.") @@ -92,12 +102,15 @@ def pre_combat_handler(self): """Handles pre-combat stuff like fleet selection and starts combat_handler function. """ while True: - Utils.update_screen() + Utils.wait_update_screen() if Utils.find("combat/menu_select_fleet"): Logger.log_debug("Found event fleet go button.") Utils.touch_randomly(self.region['menu_fleet_go']) continue + if Utils.find("menu/alert_close"): + Utils.touch_randomly(self.region['close_info_dialog']) + continue if Utils.find("combat/menu_formation"): Logger.log_debug("Found formation asset.") return True @@ -124,6 +137,7 @@ def combat_handler(self): if Utils.find("combat/button_confirm"): Logger.log_msg("Combat ended.") Utils.touch_randomly(self.region['combat_end_confirm']) + self.stats.increment_combat_done() Utils.script_sleep(1) return if Utils.find("combat/menu_combat_finished"): diff --git a/modules/headquarters.py b/modules/headquarters.py index 13e8b6f..44da8f7 100644 --- a/modules/headquarters.py +++ b/modules/headquarters.py @@ -83,7 +83,7 @@ def hq_logic_wrapper(self): continue if Utils.find("headquarters/cat_lodge_alert", 0.99): # if only the cat lodge alert is detected as valid alert, ignore it - Logger.log_msg("Cat lodge alert detected, ignoring it.") + Logger.log_msg("Cat lodge alert detected, ignoring it.") if counterHQ < 5 and Utils.find("headquarters/hq_alert"): # counterHQ = 5 only if academy has been opened two times and dorm three times # the find fails if it's on the main menu and there is no alert or if it is on the selection screen @@ -146,7 +146,7 @@ def collect_dorm_balloons(self): # swipe bottom (also countering the previous swipe) and refresh Utils.swipe(960, 540, 960, 40, 300) continue - + # restore UI Utils.touch_randomly(self.region["dorm_eye_button"]) @@ -193,7 +193,11 @@ def skill_levelling(self): while True: Utils.wait_update_screen(1) +<<<<<<< HEAD +======= + +>>>>>>> aec2c737492c9bd081a41739acee05735bae2732 if Utils.find_and_touch("menu/button_confirm"): Logger.log_msg("Starting/ending skill levelling session.") Utils.script_sleep(3.5) diff --git a/modules/mission.py b/modules/mission.py index 0739e5e..b3b3c65 100644 --- a/modules/mission.py +++ b/modules/mission.py @@ -42,6 +42,7 @@ def mission_logic_wrapper(self): if Utils.find("mission/button_collect"): Logger.log_msg("Collected all missions.") Utils.touch_randomly(self.region["collect"]) + Utils.script_sleep(3) continue if Utils.find("mission/button_claim"): Logger.log_msg("Claimed mission.") @@ -52,6 +53,5 @@ def mission_logic_wrapper(self): continue else: Logger.log_msg("No more missions to claim/collect.") - Utils.touch_randomly(self.region["button_back"]) - Utils.wait_update_screen(1) + Utils.menu_navigate("menu/button_battle") return True \ No newline at end of file diff --git a/util/config.py b/util/config.py index b38c97f..54f18a1 100644 --- a/util/config.py +++ b/util/config.py @@ -88,6 +88,7 @@ def _read_combat(self, config): """ self.combat['enabled'] = True self.combat['map'] = config.get('Combat', 'Map') + self.combat['boss_fleet'] = config.getboolean('Combat', 'BossFleet') self.combat['oil_limit'] = int(config.get('Combat', 'OilLimit')) self.combat['retire_cycle'] = config.get('Combat', 'RetireCycle') self.combat['retreat_after'] = int(config.get('Combat', 'RetreatAfter')) @@ -135,9 +136,9 @@ def try_cast_to_int(val): valid_servers = ['EN', 'JP'] if self.assets['server'] not in valid_servers: if len(valid_servers) < 2: - Logger.log_error("Invalid assets configured. Only {} is supported.".format(''.join(valid_servers))) + Logger.log_error("Invalid server assets configured. Only {} is supported.".format(''.join(valid_servers))) else: - Logger.log_error("Invalid assets configured. Only {} and {} are supported.".format(', '.join(valid_servers[:-1]), valid_servers[-1])) + Logger.log_error("Invalid server assets configured. Only {} and {} are supported.".format(', '.join(valid_servers[:-1]), valid_servers[-1])) self.ok = False if not self.combat['enabled'] and not self.commissions['enabled'] and not self.enhancement['enabled'] \ @@ -169,7 +170,8 @@ def try_cast_to_int(val): Logger.log_error("Oil limit must be an integer.") if self.events['enabled']: - if self.events['name'] != 'Crosswave' or ',' not in self.events['levels']: + events = ['Crosswave', 'Royal_Maids'] + if self.events['name'] not in events or ',' not in self.events['levels']: self.ok = False Logger.log_error("Invalid event settings, please check the wiki.") diff --git a/util/stats.py b/util/stats.py index 71b7194..1f44e78 100644 --- a/util/stats.py +++ b/util/stats.py @@ -121,7 +121,7 @@ def increment_defensive_skillbook_used(self): """Increments the number of defensive skill book used """ self.defensive_skillbook += 1 - + def increment_support_skillbook_used(self): """Increments the number of support skill book used """ From 6f00030f72b785e49abe36d9d56d01ac95ee83e2 Mon Sep 17 00:00:00 2001 From: Paitoon Joyparn Date: Wed, 22 Jan 2020 14:14:53 +0700 Subject: [PATCH 4/6] Merge branch 'master' of git://github.com/Egoistically/ALAuto into original # Conflicts: # assets/EN/maps/map_13-1.png # assets/EN/menu/button_confirm.png # config.ini # modules/combat.py # modules/headquarters.py # version.txt --- .gitignore | 9 +------ modules/combat.py | 55 +---------------------------------------- modules/headquarters.py | 4 --- 3 files changed, 2 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index a76709c..dd76ac1 100644 --- a/.gitignore +++ b/.gitignore @@ -111,11 +111,4 @@ venv.bak/ start.bat config-local.ini - - -.idea/ALAuto.iml -.idea/inspectionProfiles/profiles_settings.xml -.idea/misc.xml -.idea/modules.xml -.idea/rSettings.xml -.idea/vcs.xml +.idea/ \ No newline at end of file diff --git a/modules/combat.py b/modules/combat.py index 7446990..c3ac723 100644 --- a/modules/combat.py +++ b/modules/combat.py @@ -85,14 +85,9 @@ def combat_logic_wrapper(self): Utils.touch_randomly(self.region["menu_button_battle"]) Utils.wait_update_screen(1) continue -<<<<<<< HEAD - if Utils.find("combat/menu_fleet") and (lambda x: 414 < x < 584)(Utils.find("combat/menu_fleet").y): - if not self.chapter_map[0].isdigit() and string.ascii_uppercase.index(self.chapter_map[2:3]) < 1 or \ - self.chapter_map[0].isdigit(): -======= + if Utils.find("combat/menu_fleet") and (lambda x:x > 414 and x < 584)(Utils.find("combat/menu_fleet").y) and not self.config.combat['boss_fleet']: if not self.chapter_map[0].isdigit() and string.ascii_uppercase.index(self.chapter_map[2:3]) < 1 or self.chapter_map[0].isdigit(): ->>>>>>> aec2c737492c9bd081a41739acee05735bae2732 Logger.log_msg("Removing second fleet from fleet selection.") Utils.touch_randomly(self.region["clear_second_fleet"]) if Utils.find("combat/menu_select_fleet"): @@ -395,22 +390,6 @@ def clear_map(self): Logger.log_warning("Fleet lock is not supported, disabling it.") Utils.wait_update_screen() -<<<<<<< HEAD - # swipe map to fit everything on screen - def swipe(cmap): - if cmap == 'E-C3' or cmap == 'E-A3': - Utils.swipe(960, 800, 960, 400, 100) - elif cmap == '12-2': - Utils.swipe(1000, 570, 1300, 540, 100) - elif cmap == '12-3': - Utils.swipe(1250, 530, 1300, 540, 100) - elif cmap == '11-3': - Utils.swipe(1020, 570, 1300, 540, 100) - else: - Utils.swipe(960, 540, 1300, 540, 100) - - swipe(self.chapter_map) -======= #swipe map to fit everything on screen swipes = { 'E-C3': lambda: Utils.swipe(960, 800, 960, 400, 100), @@ -424,7 +403,6 @@ def swipe(cmap): '13-4': lambda: Utils.swipe(1200, 450, 1300, 540, 100) } swipes.get(self.chapter_map, lambda: Utils.swipe(960, 540, 1300, 540, 100))() ->>>>>>> aec2c737492c9bd081a41739acee05735bae2732 target_info = self.get_closest_target(self.blacklist) @@ -540,36 +518,6 @@ def get_enemies(self, blacklist=[], boss=False): i += 1 Utils.update_screen() -<<<<<<< HEAD - l1 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] - 3, x[1] - 45], - Utils.find_all('enemy/fleet_level', - sim - 0.15, - self.chapter_map))) - l1 = [x for x in l1 if (not self.filter_blacklist(x, blacklist))] - l2 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] + 75, x[1] + 110], - Utils.find_all('enemy/fleet_1_down', sim, - self.chapter_map))) - l2 = [x for x in l2 if (not self.filter_blacklist(x, blacklist))] - l3 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] + 75, x[1] + 110], - Utils.find_all('enemy/fleet_2_down', - sim - 0.02, - self.chapter_map))) - l3 = [x for x in l3 if (not self.filter_blacklist(x, blacklist))] - l4 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] + 75, x[1] + 130], - Utils.find_all('enemy/fleet_3_up', - sim - 0.06, - self.chapter_map))) - l4 = [x for x in l4 if (not self.filter_blacklist(x, blacklist))] - l5 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] + 75, x[1] + 110], - Utils.find_all('enemy/fleet_3_down', - sim - 0.06, - self.chapter_map))) - l5 = [x for x in l5 if (not self.filter_blacklist(x, blacklist))] - l6 = filter(lambda x: x[1] > 80 and x[1] < 977 and x[0] > 180, map(lambda x: [x[0] + 75, x[1] + 110], - Utils.find_all('enemy/fleet_2_up', - sim - 0.06, - self.chapter_map))) -======= l1 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] - 3, x[1] - 45], Utils.find_all('enemy/fleet_level', sim - 0.15, self.chapter_map))) l1 = [x for x in l1 if (not self.filter_blacklist(x, blacklist))] l2 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_1_down', sim, self.chapter_map))) @@ -581,7 +529,6 @@ def get_enemies(self, blacklist=[], boss=False): l5 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_3_down', sim - 0.06, self.chapter_map))) l5 = [x for x in l5 if (not self.filter_blacklist(x, blacklist))] l6 = filter(lambda x:x[1] > 160 and x[1] < 977 and x[0] > 180, map(lambda x:[x[0] + 75, x[1] + 110], Utils.find_all('enemy/fleet_2_up', sim - 0.06, self.chapter_map))) ->>>>>>> aec2c737492c9bd081a41739acee05735bae2732 l6 = [x for x in l6 if (not self.filter_blacklist(x, blacklist))] self.l = l1 + l2 + l3 + l4 + l5 + l6 diff --git a/modules/headquarters.py b/modules/headquarters.py index 44da8f7..aaf297b 100644 --- a/modules/headquarters.py +++ b/modules/headquarters.py @@ -193,11 +193,7 @@ def skill_levelling(self): while True: Utils.wait_update_screen(1) -<<<<<<< HEAD - -======= ->>>>>>> aec2c737492c9bd081a41739acee05735bae2732 if Utils.find_and_touch("menu/button_confirm"): Logger.log_msg("Starting/ending skill levelling session.") Utils.script_sleep(3.5) From 74caffd3e9be765fa8699f886682f7731a67c392 Mon Sep 17 00:00:00 2001 From: Paitoon Joyparn Date: Wed, 22 Jan 2020 14:18:06 +0700 Subject: [PATCH 5/6] Change version.txt --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index da93c5d..55eb7c0 100644 --- a/version.txt +++ b/version.txt @@ -1,2 +1,2 @@ -0.0.5 +0.0.6-original 20200118.02 \ No newline at end of file From a2a64067e66f8fbaf8c3d4a2848ad1d47a1ee12e Mon Sep 17 00:00:00 2001 From: Paitoon Joyparn Date: Wed, 22 Jan 2020 14:35:19 +0700 Subject: [PATCH 6/6] 20200122.1 + added delay 1 sec + change location clicked + change version.txt --- ALAuto.py | 2 +- modules/event.py | 1 + version.txt | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ALAuto.py b/ALAuto.py index 36c712b..8aae0ba 100644 --- a/ALAuto.py +++ b/ALAuto.py @@ -220,7 +220,7 @@ def print_cycle_stats(self): continue if Utils.find("menu/announcement"): Logger.log_msg("Found Announcement Window") - Utils.touch_randomly(Region(1790, 100, 60, 60)) + Utils.touch_randomly(Region(1790, 100, 10, 10)) Utils.script_sleep(1) continue if Utils.find("menu/item_found"): diff --git a/modules/event.py b/modules/event.py index e35e71a..687648b 100644 --- a/modules/event.py +++ b/modules/event.py @@ -129,6 +129,7 @@ def combat_handler(self): continue if Utils.find("combat/menu_touch2continue"): Utils.touch_randomly(self.region['tap_to_continue']) + Utils.script_sleep(1) continue if Utils.find("menu/item_found"): Utils.touch_randomly(self.region['tap_to_continue']) diff --git a/version.txt b/version.txt index 55eb7c0..c6284b4 100644 --- a/version.txt +++ b/version.txt @@ -1,2 +1,2 @@ -0.0.6-original -20200118.02 \ No newline at end of file +0.0.7-original +20200122.01 \ No newline at end of file