From 36e8607ae46dde80e4fd95b39384cc77188ebc47 Mon Sep 17 00:00:00 2001 From: Thaloria Date: Fri, 29 Apr 2022 12:57:28 +0200 Subject: [PATCH] more book fixes --- .idea/lc-py.iml | 2 +- .idea/misc.xml | 2 +- equip/book_1_32.jpg | Bin 2367 -> 2513 bytes equip/book_2_32.jpg | Bin 2513 -> 2417 bytes equip/book_3_32.jpg | Bin 3026 -> 3035 bytes equip/book_4_32.jpg | Bin 3316 -> 3343 bytes equip/book_5_32.jpg | Bin 2946 -> 2971 bytes equip/book_6_32.jpg | Bin 3471 -> 3562 bytes equipment_main.py | 18 ++-- equipment_main2.py | 208 ++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 220 insertions(+), 10 deletions(-) create mode 100644 equipment_main2.py diff --git a/.idea/lc-py.iml b/.idea/lc-py.iml index 74d515a..f5a3ccc 100644 --- a/.idea/lc-py.iml +++ b/.idea/lc-py.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3e281b9..f137e70 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/equip/book_1_32.jpg b/equip/book_1_32.jpg index cba3b6d3ded3df68d2422c54a1143fa472a0c9ce..8bd382ffcb50675bfca064ca401963db53ed1846 100644 GIT binary patch delta 1882 zcmV-g2c`JG644Wo$OAe6GqKCb0e^DVu71fCw1;Q<(VTa$hW`NIxu3LC{3rMwqxeq8 zP?;~hZK(-nR9qPCEmPMhI-IJ8JiY+KG~yvbxF9tI|r(4Lr1rM_DE9P<$x7)O2Or{BNfbAReMdkV1_ z<;}Ex@4Iisqr-e};#)r!S)EvF$#<(?4boeq<&r?fS=)>zcJ3pt=Qvzqxz7h{7oHN< zKGkP^a}3Hhw3gB}yR!STo}KaE9lF&CCRn4!Ryb5+Xz%o@vfOcwRdbL%ezp1D9}elm zk`F`mFJ_!<&sfvHZEuQR9e>o;^2f)1A&yAnSe6yLbhZklkUXu#Hzzx!FDFo3jw{u^ z1b@L!ziE$%zZUdQ3+O&FhVJW7xKxJDZ8p*4o4ao;oAxLLn5zZ|7=w^2eV1^FFtPFr1X7h?m-SUW@$S4PnBCo z*Qm%RQ}>r4M+@6N^=2U@!}IeuU%1L?Vs>YeHTmkcjF%t zd{EUUX<_(NpkM2^NFU1)Oz}0nq*>jUGXs7xkCp9{kVyyhzy1lg@N)CvFYJloDD{Po zPk$14f;l`ztxOYaliuG**D@D9-F(H2liD%Z3iwO*Uibs{pMW0=ei<`FH6Pj&$0F}i zh{WGNhqR&RTtr)uwY-lpdS~svgqr=1vGB}#VxWdC%A)~KL0?0|H0|v%5_h|@eoI&Q zyL^w&IG+*iDsnFW0D{qeJjFOHTghB527f56kL>9O@P0;$`kr&;YgxXhLBDHnI%i_iNY?Hi)ueW2W_E6F- z)Ea+?JQMK>$IJ%HP4PaQbm?uE1Q%pp44U%t=pM`bK^YI-Rjj2{|*;FnsT!|A1)QScv*{4Z~B`>}VWXI`Gx^)?oP7ge-#u_UB?Ok*}f>)h5!Hn delta 1735 zcmV;&1~~cA6TcFW$OAn9HL=Ud0e?frO?aRD6leB<{{V(>{g3=rty)}tn_JYP8a9&3 z+hi9v8B*wY`J;$SC_b_N2irmBzcRnzy#D|Yrtw$AzXA9b+UUn;qS{HT--6p?S?*j# z5pQ*k7>xe_&uk2nUy0MQcai$08jrN7qR*Hvd|9b#{t&j-EOlqm>~z@H%70I>%57uw z6>_Yp83%i=0|gl@xyD!nhv7fkZ{nAN^#z|#@&5pgwD#T@BpUs~rZfCe?V-kfE+@9XFp-|l@^iSDm;Gg_2FWN`Jeidl^$aQ^5R`BB? zEs;#KpJU{tfFE2}Ok)~r-Z|@G=td55iqTyCdiXv2eRy2_8}Oc~@qcez@UO!^7kGzF z8k=c)h2gVFZQfZH8KM&%+g%VbQcEKer#J+a#Kh>@EJAa*1OOslb9XX~dRybk((rnrQ*@Zh#`Am)Ss_;Iw^-t^%sxQFLhJP1+I7u4K zao}AEw7n5uIh#|uE3p&(tcz91?Qlj$O?;MaimNw8jdB!M=$F86f>K;~H}+xpH*soW zo5p&)pA`IE2!HC9HY&Fe!zk_=S!`m-?+NRQ=dDdjNk8c=U*U7j%<5X2r~KcN)&BsO z%=@SIEch1Rvrp`!;4cKsKjLGfX)!ja{Y=_~*`Dq~Pb9U(lANAsuTXa`#gA4wG*>*N zzuJYSo_zfN;Zm#^f+34l+;V{+EV1Eba&-@e8dcVOhyzp`LIjcV{KK)Ij!AsUHaritrEDFz1LjYR zAMj2MQ%6~!Tlibzodu&)w^#6l$*kHb)~ZLSI5qmkKsYtGwr}G8zfZkt z5xieCTTjWKf%pFavF-1OF6M{Bo-)z=P=EHWT3ZXZmd5hjjQ#k(dKHEUu-=E=NHyTU5r5#6x*v!xTI;}mHt|P+Wr=qSE0!AmnSZ!+ zB0HjIkB%`E=rPa^w6PqO;OWat{{UKa{{YEOnt0mrR&M^Q{EwA>4*Uy;#NP#e1AHhj z+y?mB;~6}4;s~UPqI2Q>HDi`Fl}|DGs~w-q+2wK6*Xo3ld5q1+&CUgUWB&jI_V6aT zs{Yg7I@f$*uGx5pSonY8`!5CQGC11l&1W1|vQItKu2trg?{-vQy~3a!E9|OLycZ|W d@BaXSWOK^*yWfAm{souFRyk@ZD6GVP|JiGrol5`! diff --git a/equip/book_2_32.jpg b/equip/book_2_32.jpg index ff9c1071abc19eae3387ae211adf275a78b10ae0..3233bb7b050b551e6d83d348e892900f27948ffb 100644 GIT binary patch delta 1785 zcmV*J!!%o@;Z;|YUK9TS1r7L|-v|EyW_?%6 zxL9vILc>ahSRRrBWpBbT<2?ao`d7JH#WRs}Zo9UO0(vN~&ENPgFYN`cXde_j3*pT! z_S)X!%EC=hxwctlw0R}iuDgkhljOJGM%%X|k_!0vcyrW9Sjx(s7dCv?d4Ky@c#Glo zqo`Qvmzw-m>oJOXAlD>>+%g@kN~#c4kU%*(TpaUMbg%d+C&kYM_=f81!@e=rY%K1h ziX(4&(CPuU1C~B?Y@wN*$ttUnv>fdf<99c!1-F))L~*E99h45$&);e*aDHAC9=^5h zN)YUPd~ube?H1DVKF08O{C^fV<0aOkZ)dG|qfd_3PnE9*jcw*YFmb{~w2blhPp__h z)5D+eQGbX-!SQPguXul1)4p~$5?V#GF_I(%#uFGI=O7X7Uzm2&{h;yIzRUfCd^4u} zMT^3^EY~pHXxco@d#b#ja^4uFd)t(edm|0eWcBkD^dQzN4^6!iI)CV6aT_@^^sm7` zweE*w;d>ij82E$3{u=RxwX6eN(qy>U+I8DQ9Fjx>WR)AiQ<523NF*H5UmE_-zpxI8 z{{RIX@aDboYsXJ}ZE@m15Z{e07U|=7?9xrXTZq^K(NFe>LFX$Haz-exKBOqAG@Cw> zobe7Rw2#sTx026wynj+WVZVis2EPb@Z~p*}Yw_3ix$(BY6~(>ApB?jQ_7Ypm=0h#L zun+l!$NAc&3mf|~Gy+2KObomJ0e%Ur5xA}YGSrDIK zYx(oGnWrBy+Kb7pFgjjGm!4F-V@Z0NdXB04uBZHKE_Q3JyMK65P{})L7no1EoPBFc zYCxMsdJVRCQA#U9O)fvPFRn#>f%`6a65~MqjP;4M`+HO3UyoiOxA=XdJkG#1l(KnO zjKOk3fVZ278QT&Z@+;&$KH6*Bh~t6=xS7}_aW7ezkQGO{BoD^FSifdpgb|Bl zfaAEgzS6&EpMM1{_3V)nQsZ0HV-QBpnBj~mb28_V_Ktv3bL6Kfzv;7l9WQBFN5ABK zZSYs&HLt-Rgnk?FewQzuW8u9z9X>gwRY`72C=D}(0C|!&=VAveK zRw{D)e@ZLFa+UQy$o%~O0D|rOTmIbeY`zJ%)K=cdNPk;>Uh*i1Gh8&LIHHr=YlZ+2 zH#(D?0bi89aU){zGnO^=ukB0mi%_6b zqAIFY8zG~|P;2Gy6?i)H!CoPsO}makByG7FlW(6H`;r0A%ERUykU`*)&3e@7@5p#7&<@pr^%tUev-YGPY&CT&7l1j!jJ#aUu8Oj~dmNXY{g`u*_l zz#0$2e}#S@@Q#OVa~_@Hoig7`vNA|ykV6DZ8g66vj@20_l53kEG@z-jx}NS!hiXo8 z>3{m0Q|QX?^3NQca!Bt*X31-GgbX)M%|&^fzGuFC)A5h~37w{R`^H+=i#!|R%dZG( z+U42QZ)_*AhWkyLsNNTWcD8ak|ECJV64-1*2~a7T)$H@;5dD z?kg$A>~cvB({!jjBXB0V@O|}^!AF-hjl4I0YM!l>+jAh}Kk9pXSM2iH!@fXajenJw z1zB>e2;>pzUpe^y0R9P~@TbLAx}2Iem#KIT>ft$;!q?BI#+w1g+kcwbeeoAHyfLa; z$y?Cisg*RpcK-hW^Izn6FYNQ+8-IwOv^T;(4y~)rr}$pRe~5a(cHF|^XH?VTkdBi> z8d_t!Aa2>u=rGl`+sLQ=Upc_R25P=Z{{Vtz=t*m?{9@E6nrrP^*Tk^+ckT0p^X0R% zvxn^H+f`TP60pcokQY4#eSc?eB#Jg>Z{BU(Gr_JrT=}Y9Y>z_)OWD&)sgN!NqjKbf b>nAi=Ec1MU zf%Qc$i7@-3zPB2_rSJa4}3SLuAOlxvBe`dB35>-QQZ!4A;P03&=L0I) zR~ZBH9G?oY7|L{|weI~EzoGZJ&M)fNDwVpWr>oI^XUw{n?UUl)hMJ|un}1`hc(Fdp z!6uT^UVBhnfb2GeVsX0%Ez}XlD;@s;;HIAz{3+r{?z}JKFA-VW$8KSkEmCN;Q9H8& z#H{GZ0_{+xR5#zr`LH}+Qr0HDnrW^i^R8}P=9)qP^CWUv*nz;y5_sd9=5-xGBrK`h zt}FGbm^?hRloP*_KNpT|iht(!CfB2C---5bhW`NIwx1ZF^6m8&@T~Dn!6dsnNLk=h zfL%hkOs`xOBig;!z+doE&xl?j&}6%{yzozmA+=>mrh*Xr8G$Mr%8&&lD-Z|-fOz27 z<-NVe^S8Q+`V;m*g{1Jlr)8(cw_3KZsK&lRF%Iq!M{13Zet9KuJAeGg9qWbUxEB8a zg&(-|Xy@6Ae7@FC=6T%GiZOc*X@VmABXqSNjHE#3HVya!;3UhV99=sjrr#c(hWy{ zbFm5FEfw(j#sdL|#ed3|J6=g%*Xgf~=3Jhmb-lH|Jq^M2<$FldgsRVIrr*fh4@OmL#t`03CG$Sg{{Vtr`~cMc34Y8r z`mc#{-Zc1;cHS=6SA#(BO93u z^d*WajAWYpj29kMdsFW>UtwQu{@kAt=KZdGVdA|{!@8E4cWHfmEn$<-E~{m4C+@MZ zF;d1fCx0W2&74=oT8@!%p=x(lcWSF~ZzDweTXK@5jDy^9!S7$G->Q5&r;! zT7P^pzwjUIW8vLfT2}u6grDL>_Z~Xd*~T2)>Qa561Hi`ES{1?QRP^ay9~5Gh90R7e zn@i-if8>2v2jE>yYN;)voB8a&%=#9JcEd$}T7I>2^XKEQ{1SUq(f%N7`nQ5K4+i*~ z!@9PmHmhr)}Hb+;tRXetWDw!JL6e$~oxKXrj0DymANaBre46mujv=T4VV)UTDElG&4GFkALrO z*(q{B0CGs^yglI01^8=TwY|8$O#=GG#KIfzI?5u$rashxT!YB+-x&acMSjb8`{3t< z{wah100|d|bd6qIZ4=LKzi2_z<(Ohb`l|z9GI;0y2~~gQP5%H0Kg4V3VVT*6o#J~H z)T0Vce6e#Gj%}l+W%FCqvB|HZ!GG~?605anx^Mpg0$+l^;C#+6gE2If=rvJ);4k%G ziavO61uuzy4B7Z^N0Je$d}i@ImxL`|77hlVY*yy(a6!W;np9RJA(8=}GHdk{PqDYs zH2ZryRWaJx#IQo7hf7Gb(2R|1 z=js;{Zn++0XjQziDiy~cCoFPD+R8JU@OY~ntKuO_58aCVUccmhCko~Ap@)>}d{Tdc U)AP9?Iii{tiurz1>NG$9*}3@CBLDyZ diff --git a/equip/book_3_32.jpg b/equip/book_3_32.jpg index aa3a230f3c195a17acc35c9e0e5e5e99c0f90011..5fa35ba36524ab9ea02e4ba8c6fec4a3ad10ea0f 100644 GIT binary patch delta 2408 zcmV-u377WL7uy$*$OAk8Ii0e@-LG$}2tAXzRNMPrNs_q}T7g&n%b+)sIeZ_~yiuzJx3RSfQZ$i6-N@f|G~7VR>PaD0 zRhfuYVm?=y$|@&MEN`Jx_Ko<#r+&`g3^hL$YZp_tpQlCg!5%#8$(xAbjDHi$yI^yG z23U}wk@#2f3;qiQ<4OKM>z+37-m$GoeW^@gR};f+V9=;4n`4b+Sy3`XMpck)RAv%3 zN%T+nEbsgjgIxWsH2oh<&@}yDPw+%mh_^1Xtd`<-OwGBF0<6WnrD=AZk+#)CBZ~a= z1(IU99%mUuLnHnma6Y*ry?+cX7a05NQ+QKPbN0{nIR5~HfxHXxG+SuD5v*Us8nn_B zitgSv@}vddXffr3?LdH-ourZ2kpyeN`@_MWFVTJ`czrd`4fvBy)-=|08Jf;fBCC(Q zj8{8dbAqjgQ^5e&^2I*yC5yuslE5sH$tLF8(C26>eQ}&0Zk6o6vwt`3v+)b|Veu3< z-W%8T2<@X}jqN3!w!COg5I0@8Cu%Q>R+Lbn>EHuD5^458z84vm5`tOF^?AQ6h? zsY-ned1Y%hdd2UD@1M)nt(Mu{5!EL9Q#4W^E!+t%`EcFW;d#?`NUqsgrEut&wrbKDH&|%(MGTuolA|+8s+#QJB zbHIPJu8ZRJwYTwQxY2b6MOgJHoSRk4Bk~SRM3n@b6(r;312yXx-W|8Uz0>t*+VX3A zM3(3qIhyR;$m<>^R*~6QN96*lhhcrBV+#1?(i+|AhH{wsh?R(+oopEt{W|ul^ zM8!1=8AZjUoORwgP)Io5s#tOX6^*6ovR&#?+S|t@*Ah&TA|e-NciVsza!D)z1CmG` z>+1aq>+F->N9H}enUdx~YFEiwi93NCN65w|gflMb1TsuWYk|X0@J5ZOYhMt&L*e~q z`o;^3{Vq7xRMT!AHEAFYvh86TmRybw+=}zB_{`DOKWR;O#hxgF;_4rVt7ECy z$09uO+-es>Ng|)^Cn+|>kIz;N#Qmz>vY~L_ub=Ra!v6p>T* zZDa7i{tFTNSL)xjee^oCOE#O~J6qW8w3|^gNRwNYl2n}hs+-)#j6!bZm3O+vg#1Gc zdw(E_x_tYO{qn>A0A{bykN7K3gf0F8e%D?kv$ycF>6#CW4V~tnrJ~zUq3V{R-X)!l zl9gzs7mG7_sPIb6&cO6$`CrFB2K0HgSpNXC?yY<;d8^q&t6N!J>I-$I-CIlxE8E|E zrYPT{MRYNVhna0wh^^sTQ1d`;Ir7tGS= znuL~cF$QaEpZM~ZrguhqHU(c43yycdUL+UU1CdcfbH|(YRJx30wG)v;I6PPdc zD^)1*=@G{Sa9e4}>BNHG6jfB;@l^e`Q=+&wm?Rl}O_l z3!Yl7{jEn>+dckj^Av5fzpnoPGaIw>)8Uu=6NBPc$B)}-J|KS5noosptb8*Mm*rVq z$$6#th42~(ZS9<&CdL+N2}yo=Sh0{v=QvIW;uri7zs45d6g7=w!agGScO{0Os!gr< zYR2nBmf!75J=M(L*_RHC=6^eTbd?b##O)vfO2m=IqxBZ{`b(=a8y_nSarLRZ8*aFo zL%Epb^V{i54Nus?$#-v8eOtd@TP3nuEfOj_*&l_!6n+XX!_87p3V5?Ym*DS+bp|pf zf#MZyN5Gop$@!h_XI9OdF*pwds!$9xksc2N;*DcQ{hs7lX83O}gn#^PH_KrS!Y-v@ zI~7HaNH1Ua(!rhbd2((f`9Mf>y?=jxDf}z&&&D4I-e`U*&@`VAX!pR0?C-6XXr$nb z;fD+}!we941RDH2{{Vv7{?FPk>`&vb3;0LDH(JQ>uZb-#_1JXHO7PxAp2f^!0C}*&eFe`E#=JWCRv_&8@s%Y>~I2%g;iBm zQRrIEr6hWaD(zM1a5~o}B2J|3&{Zz=BGmPfe=4+byk3~jTkxi%!ccA#ZpS@(){c1yBKJdV}8XTkfc`Bb`!KI%h^Pyg93W7(Ym delta 2399 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 RG>jSm$*Bhdyd957|Jnbd;6DHW diff --git a/equip/book_4_32.jpg b/equip/book_4_32.jpg index 60e57dcbc67261d16904f1b8cc93c9468d7acd21..d13a4622f7f418110b1f309ea2d83708957ad927 100644 GIT binary patch delta 2719 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 diff --git a/equip/book_5_32.jpg b/equip/book_5_32.jpg index 1fb9a10fbbacfa58d13711cc41d5e72d4fd84106..24868a8077140cf4f698e5ae03091c3619836392 100644 GIT binary patch delta 2344 zcmV+@3D@?57n>K5$OAb5GO^3a0e?`nlFsTDX5O*^hTPn#_OBWJt-dB)cvr)#V`A#p z7g3jzK{G?-$Ic5nx)fd+nZX!XoD#X*zKqf_x{^Rwl6&>9mwrC@xBFkmx`n)#O4b(h zwZ!H|bz5j6MMD!6BZivY-9rMBs!b6D$%Fad8)NEVGPzESnv~j#Yju0J*MFUpw%XfM z+u{5guZv1*>N>UgekUKOcs@@L_*YNWG@Ds1Y;{Ri-%qr+64?xFT$rt6g^Y-D*b_ap znIG!PkjF#9e-FG>f2p<7_&H#`jv~iXHgoB>2%$+JHcCD(X6~V zCx)Zabq!NeW?PeH@r<&jt{jIPdsQJ5x9=)?TpPw`{JdSAwG66o4)so`%9 z={l6M`IdG%WxC&M*FgavHN(c9U9#inc8)mX;hEG87K{=A@s`Mb!N* zQRa=NwDaxgdKbkn+UHjIO{hmEkEloEtyW8N>TNtrdiI)UP@;I%e1EB25zJ!_Hjw^V zDo-c-KYzhTzASu9_>E_!Up9+)@@g=}EJ6t4SBT87aHi)@)IxiK5bz2X7SL-6hkzl9$LJaMad zUefY=jRpw3F`~@^FMpY;>zB=LsW!$vrJBeg1dlFRFl0Js$)|2+ z^j+@S*K04(<;P{XC}G^CPA*SG?QQf-`nFH_DxblKq-AYq#LUWYS|15&*Ach6$sM~! z>*&bLtT_aN4HfR+3qNN+1pF`fW8u#X+vzrUFnD)Mw$me;b${P1s|-sRW^U|4bk_`^TR3Q@)F#|SHnJhxA|uRFNmm=YI$?3fRyEoPTnsBV!TDbwW4^JAh7;`5)%m$v%huMnt3L08a`dQ6 z6EC%*^k49QBi%k9Tj~=>n>Vvj_;aYo@LR$* zw>q>_e{Ek%vrB5I9^_pZ+hwG2lDnpYBEg1LQbxIEXyXj)<=-BDG3wqjzLUwfj%`~~ zG3k13m4Cc|N9M^U*q})cH|9xl(qVkYZ0%L@(LXz-PHwH1&Fkj>0LdRxqUS3uioOol zAy4fsZ&13o(qX(~406ZjM;(Q_5^|<6#x({PWnwVDV*{0!2kdVQd>xZl@!#y{@Y_<- zZS?!ARlNAe;_DE6qhTVCD^0ffFsvZBx=7V=jeojwo&w^&Q~jR47q9IH`$70u!PpdzblmJ3;4zU!!nVUC&k5>-sPA(D}Y9#i&D(bYF|n zet#E#Bj`r7vR3~9kA|X<&2IkyH17s5uxML&nybz1~zckH};4OA91M0qWSm{k`rp6l7+`GPK zQ!!UovMZAx!Sh z1cw>vUXAeo07ccjd+?So7I>?}{w4m&zH+vgwtgYfENrGuFs3Vsl4AUWm0-AUyT?C> z=QQhAtno9nQ+-~kzq?=2Xnx^@g$g)m;o$C)OHQYuKg8=RtJyCvFD+f6hwSYk+J6X6 z3m^amRV)>Xpisp_FlYIz&h(EF+WbuTn{j;%>mHlo`*!k+z|#*tWRf8!)j0+Te$jLv z7(-?c9A}sDC&KRz-fDkgvGHZpGPFhC7k2uDa5j1uDQ^~WoB=cbJ!`VD_-$w5n++>O z@O{+!t>&j9TElT2$P!-OOcfqQm485i`m9Y9Zz9JJo#rw-p_|Q)9-KYpE6J;EWS4h+ zKIV3FB&?H1(4VqTjFa|i_-pZV<3+XA&YL%YydOMzXofQCn#QwrANF;=)&Brn5+$XO zA+iK|h&TaQkI{eFPfy1A9-*`{3!ixBKf6&ANE zEODmhCuBZQ^u>6mj{gAQlHU-tX=c?tKdE?Y#g~@wv~k_pT+iW+a3SEw6Qi;mf0S%n|6x4{{HDPPG2)}`U?Hp5o` z074fw^4?ubJaTSd^boeTk&USM1AOG2$O2+vB delta 2318 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 delta 2848 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 diff --git a/equipment_main.py b/equipment_main.py index dd7fb51..3079af5 100644 --- a/equipment_main.py +++ b/equipment_main.py @@ -97,6 +97,8 @@ def run(): needles.append(cv.imread("equip/chest_2_32.jpg", cv.IMREAD_UNCHANGED)) needles.append(cv.imread("equip/book_1_32.jpg", cv.IMREAD_UNCHANGED)) needles.append(cv.imread("equip/book_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_4_32.jpg", cv.IMREAD_UNCHANGED)) needles.append(cv.imread("equip/book_5_32.jpg", cv.IMREAD_UNCHANGED)) #needles.append(cv.imread("equip/key_1_32.jpg", cv.IMREAD_UNCHANGED)) @@ -133,17 +135,17 @@ def run(): needles.append(cv.imread("equip/bag_6_32.jpg", cv.IMREAD_UNCHANGED)) # needles.append(cv.imread("equip/bag_7_32.jpg", cv.IMREAD_UNCHANGED)) - needles.append(cv.imread("equip/book_3_32.jpg", cv.IMREAD_UNCHANGED)) - needles.append(cv.imread("equip/book_4_32.jpg", cv.IMREAD_UNCHANGED)) - - needles.append(cv.imread("equip/book_6_32.jpg", cv.IMREAD_UNCHANGED)) - needles.append(cv.imread("equip/book_7_32.jpg", cv.IMREAD_UNCHANGED)) + #needles.append(cv.imread("equip/book_6_32.jpg", cv.IMREAD_UNCHANGED)) + #needles.append(cv.imread("equip/book_7_32.jpg", cv.IMREAD_UNCHANGED)) hsv = [] hsv.append(HsvFilter(14, 0, 0, 179, 255, 255, 0, 0, 0, 0)) hsv.append(HsvFilter(0, 128, 0, 179, 255, 255, 0, 0, 0, 0)) hsv.append(HsvFilter(49, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + hsv.append(HsvFilter(0, 0, 0, 179, 255, 196, 0, 0, 0, 0)) + hsv.append(HsvFilter(0, 156, 0, 179, 255, 255, 0, 0, 0, 0)) hsv.append(HsvFilter(0, 95, 137, 179, 255, 255, 0, 0, 0, 0)) + for op in range(1, 50, 1): hsv.append(HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)) @@ -155,9 +157,9 @@ def run(): processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsv[rer]) rectangles = vision_stun.find(processed_screenshot, processed_needle, 0.8, 5) # draw the detection results onto the original image - #output_image = vision_stun.draw_rectangles(processed_screenshot, rectangles) - #cv.imshow("output_image", output_image) - #cv.waitKey(150) + output_image = vision_stun.draw_rectangles(processed_screenshot, rectangles) + cv.imshow("output_image", output_image) + cv.waitKey(150) if len(rectangles) is not 5: break diff --git a/equipment_main2.py b/equipment_main2.py new file mode 100644 index 0000000..4832265 --- /dev/null +++ b/equipment_main2.py @@ -0,0 +1,208 @@ +import random +from time import time +from window_capture import WindowCapture +from stun_vision import StunVision +import cv2 as cv +import pytesseract +from hsvfilter import HsvFilter +from config_file import UserConfigs +# import pyautogui +import pydirectinput +import keyboard +from tresh_util import super_tresh_main, super_tresh_needle + + +def run(): + # initialize the user-class + config = UserConfigs() + + # initialize the StunWindowCapture class + try: + capture_window = WindowCapture( + None, "stun", config) + video_mode = False + except: + # StunWindowCapture.list_window_names() + # print("Game not running, switching to video mode") + # capture_window = cv.VideoCapture("snip_slam.mp4") + video_mode = True + + # initialize the StunVision class + vision_stun = StunVision() + # initialize the StunOverlay class + hsv_filter = HsvFilter(0, 0, 124, 15, 255, 168, 0, 255, 0, 0) + + loop_time = time() + event_time = 0.0 + pointstore = [] + max_results = 0 + pause = True + while True: + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + elif keyboard.is_pressed('o') == True: + pause = False + print('o pressed') + if pause: + # cv.waitKey(500) + print("pausing") + continue + + if video_mode: + break + else: + try: + # get an updated image of the game + screenshot = capture_window.get_screenshot() + # screenshot = cv.imread("buffbar.jpg") + except: + capture_window.release() + print("Game window not available - shutting down application") + break + # cv.imshow("screenshot", screenshot) + # cv.waitKey(150) + # continue + + spawn_1 = vision_stun.find(screenshot, cv.imread("equip/amu_e2_32.jpg", cv.IMREAD_UNCHANGED), 0.4, 1) + if len(spawn_1) == 1: + spawn_button_active = True + points = vision_stun.get_click_points(spawn_1) + for i in range(0, 15, 1): + pydirectinput.moveTo(points[0][0], points[0][1]) + pydirectinput.mouseDown() + w = random.randint(1, 50) + cv.waitKey(30 + w) + pydirectinput.mouseUp() + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + else: + spawn_0 = vision_stun.find(screenshot, cv.imread("equip/amu_e_32.jpg", cv.IMREAD_UNCHANGED), 0.7, 1) + points = vision_stun.get_click_points(spawn_0) + for point in points: + pydirectinput.moveTo(point[0], point[1]) + pydirectinput.mouseDown() + cv.waitKey(500) + pydirectinput.mouseUp() + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + continue + + needles = [] + + + needles.append(cv.imread("equip/book_1_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_5_32.jpg", cv.IMREAD_UNCHANGED)) + + needles.append(cv.imread("equip/amu_1_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_4_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_5_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_6_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/amu_7_32.jpg", cv.IMREAD_UNCHANGED)) + + needles.append(cv.imread("equip/bag_1_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_2_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_4_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_5_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/bag_6_32.jpg", cv.IMREAD_UNCHANGED)) + # needles.append(cv.imread("equip/bag_7_32.jpg", cv.IMREAD_UNCHANGED)) + + needles.append(cv.imread("equip/book_3_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_4_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_6_32.jpg", cv.IMREAD_UNCHANGED)) + needles.append(cv.imread("equip/book_7_32.jpg", cv.IMREAD_UNCHANGED)) + + hsv = [] + hsv.append(HsvFilter(0, 128, 0, 179, 255, 255, 0, 0, 0, 0)) + hsv.append(HsvFilter(49, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + hsv.append(HsvFilter(0, 95, 137, 179, 255, 255, 0, 0, 0, 0)) + #hsv.append(HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + #hsv.append(HsvFilter(0, 40, 0, 179, 255, 255, 0, 0, 0, 0)) + #hsv.append(HsvFilter(0, 0, 255, 179, 255, 255, 0, 0, 103, 0)) + for op in range(1, 50, 1): + hsv.append(HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)) + + for rer in range(0, len(needles), 1): + while True: + # do object detection + screenshot = capture_window.get_screenshot() + processed_screenshot = vision_stun.apply_hsv_filter(screenshot, hsv[rer]) + processed_needle = vision_stun.apply_hsv_filter(needles[rer], hsv[rer]) + rectangles = vision_stun.find(processed_screenshot, processed_needle, 0.8, 5) + # draw the detection results onto the original image + #output_image = vision_stun.draw_rectangles(processed_screenshot, rectangles) + #cv.imshow("output_image", output_image) + #cv.waitKey(150) + + if len(rectangles) is not 5: + break + + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + + points = vision_stun.get_click_points(rectangles) + check_move(capture_window, vision_stun, [70, 70, rectangles[0][0] + 70, rectangles[0][1]], needles[rer], + hsv[rer], + points[1], [points[0][0] + 70, points[0][1]]) + check_move(capture_window, vision_stun, [70, 70, rectangles[0][0], rectangles[0][1] + 70], needles[rer], + hsv[rer], + points[2], [points[0][0], points[0][1] + 70]) + check_move(capture_window, vision_stun, [70, 70, rectangles[0][0] + 70, rectangles[0][1] + 70], + needles[rer], hsv[rer], + points[3], [points[0][0] + 70, points[0][1] + 70]) + move(points[4], [points[0][0], points[0][1]]) + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + break + # debug the loop rate + print('FPS {}'.format(1 / (time() - loop_time))) + loop_time = time() + cv.waitKey(150) + + +def move(point_source, point_dest): + pydirectinput.moveTo(point_source[0], point_source[1]) + pydirectinput.mouseDown() + w = random.randint(1, 100) + cv.waitKey(250 + w) + pydirectinput.moveTo(point_dest[0], point_dest[1]) + pydirectinput.mouseUp() + cv.waitKey(250 + w) + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + + +def check_move(capture_win, visio, rect, needl, hsv, point_source, point_dest): + screenshot_pos = capture_win.get_screenshot_by_area(rect) + processed_screenshot = visio.apply_hsv_filter(screenshot_pos, hsv) + processed_needle = visio.apply_hsv_filter(needl, hsv) + rectangles2 = visio.find(processed_screenshot, processed_needle, 0.7, 1) + # output_by_area = vision_stun.draw_rectangles(screenshot_pos2, rectangles) + # cv.imshow("output_image_by_area", output_by_area) + # cv.waitKey(150) + if len(rectangles2) == 1: + # pos 2 filled + return + else: + # pos 2 vacant + pass + move(point_source, point_dest) + if keyboard.is_pressed('p') == True: + pause = True + print('q pressed') + + +if __name__ == "__main__": + run()