From 032b2c1931a5fc9deca6b48bcdc73558931b9d52 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:17:12 +0800 Subject: [PATCH] Fix: Limit match area of SHOP_REFRESH to handle spamming bulin character at bottom-right of shop page, at April 1st --- assets/cn/shop/SHOP_REFRESH_CHECK.png | Bin 0 -> 4071 bytes assets/en/shop/SHOP_REFRESH.png | Bin 5858 -> 0 bytes module/shop/assets.py | 3 ++- module/shop/ui.py | 4 +++- 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 assets/cn/shop/SHOP_REFRESH_CHECK.png delete mode 100644 assets/en/shop/SHOP_REFRESH.png diff --git a/assets/cn/shop/SHOP_REFRESH_CHECK.png b/assets/cn/shop/SHOP_REFRESH_CHECK.png new file mode 100644 index 0000000000000000000000000000000000000000..b834760ade7a151aa72e245e2f9bc4e0df272403 GIT binary patch literal 4071 zcmeH}`#;lr7{I@g%S&`Y<&tg5rIaNqYHro6=t50RM{b!*GCFBCad3!Kt_fj75y$3U zk=sU+Bo+(JZJQ2S+hXLlVP|#ziGJAg%jfgM^Lf4A&-;0Op4W5F>D);bB`qZY095Qx z!7l)Soa8F=QBg*6*n%C_0l=mTd-ySD{1AWCEs%)SQJ9${WKk;kh~e`!xBx#*a$I#k z#`K_4f^uwP*s;X@@T3F#pon@CsNl7R9Mm_#U8DKNmEDTy1Z9<-{&%W+Hr5{S3^pzc zBpP!auGLWpc_AQ2S}C{TY(1Z`9MMMz$&1RLn#>xD5Q&Il8&wH_G^7Tk2BZe02BZe0 z2BZe027UtrEC;pSlHE)_rB(rVhSFYw%IxoM3_pwH_6dhbv+rx*x}a`ovOW?_(9zzZ z85OX|9zA&*kzQ(&c!$F&S+JZv)Lz7TlOd_(KJuXAcenls@f2#HXAku&>Y2dhtlhPR zHkH#;R61iAEW^abiy_H>alaDa3g4i?uvv{VHQF>~4Qz)wp0Cswh zm8;Ue&GwahxU4cV^`{2GVa48J0p*s#83QDv>&S#YH+Or4sCJ<54Vo4h1uN;c znuRC7+*d9hdwVg8QJksHVp3HlE3?35akXPy@U^zGjM|L7tT(uXv00e*upEsPwxyNA zpgTg6@1{h~4P5NfQmyunWDnA)Yb`{wK`b2N;DmqbAgRyJXU@2L`A6>j3I!Lr@QF<4 zEUFH#Ez$TiEP?u=#A9>xIv`qRCe$$s#q?ZgOGC;sZoqDY^28&S2Xg|aEuZ;c(fnX6 zVcF6Nj&;7Q$++2J7&Tufd!q15?-_iybE+$ul)$X>YR?)pM@@y^$=jlrXp4*vjFGJV zc7FbPE6a49`qW%nb(RhDpPGH=T`z(j%Fqj<1hFTv-RAD$ zFM(gF>d_|*g^qceYy1k?68U(u?9P$g^{Tly?nja`!z`EWcibtfI$;?dD##w`-=Z3&*q^r7sEC4(o ze76L*x6JHrL5ATi=iS907u-Y(;>9Xv3J=)Oq7ID}{q$k#g|}Yy&B%IdLt&Bl%%vY$ z1JL}D&qm-sOX$ImUEd+bO+ZPPP>*&)e%3g z{^r7hsQQ}rLbMRCdDpuhHW+IM3p;YB`M1lj&+uM3{LcgfXge?<3z#r>`^KjJ(WvDY zn;+b*wlxE1qH`e1Qz(?>T5OVeWZBM#+)dPBbBm*S7wp%20)S_z zLNw&-SDvUdy^?pkc`p&BfM@g{qK31Q%W>ru}%}I!u(tJpRq*0F3jbX>!F0Kg- z-H-ej8H4&1+5SS&on=jnDRpG?t>{oNr?lLN`LW4_8i{kI`(1*5|EA5e7^08bIOio) z1_ZvE5VmJLySGw&`HPxb%Gx}uXH+y-t*MmeoeBU231!Rd9n8}?R18p?~g?BG2HawiouBy(eMKMvbeHN9ko=^D<_BJFjEJ*|cQ zD|T0S@;v2MRb%0E!;Etz4H*+jk5VP0s+riVb5it2)&TQmakU_)e!ky_F^>+oSy)zg xPI-kr(KbyHd!c6=TRE?E?nwUaZxFj}#p`;=b*ihkVa-2r?Cs9MD~@}{{0EP%=)C{{ literal 0 HcmV?d00001 diff --git a/assets/en/shop/SHOP_REFRESH.png b/assets/en/shop/SHOP_REFRESH.png deleted file mode 100644 index 3e485eb714a36eab1e777f67a3622765b48af240..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5858 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 diff --git a/module/shop/assets.py b/module/shop/assets.py index 2081fdcce..60ea50528 100644 --- a/module/shop/assets.py +++ b/module/shop/assets.py @@ -23,7 +23,8 @@ SHOP_GOLD_COINS = Button(area={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51 SHOP_OCR_BALANCE = Button(area={'cn': (972, 164, 1052, 189), 'en': (972, 164, 1052, 189), 'jp': (972, 164, 1052, 189), 'tw': (972, 164, 1052, 189)}, color={'cn': (193, 204, 210), 'en': (193, 204, 210), 'jp': (193, 204, 210), 'tw': (193, 204, 210)}, button={'cn': (972, 164, 1052, 189), 'en': (972, 164, 1052, 189), 'jp': (972, 164, 1052, 189), 'tw': (972, 164, 1052, 189)}, file={'cn': './assets/cn/shop/SHOP_OCR_BALANCE.png', 'en': './assets/en/shop/SHOP_OCR_BALANCE.png', 'jp': './assets/cn/shop/SHOP_OCR_BALANCE.png', 'tw': './assets/cn/shop/SHOP_OCR_BALANCE.png'}) SHOP_OCR_OIL = Button(area={'cn': (700, 23, 785, 47), 'en': (863, 24, 955, 46), 'jp': (700, 23, 785, 47), 'tw': (700, 23, 785, 47)}, color={'cn': (150, 185, 194), 'en': (150, 183, 189), 'jp': (150, 185, 194), 'tw': (150, 185, 194)}, button={'cn': (700, 23, 785, 47), 'en': (863, 24, 955, 46), 'jp': (700, 23, 785, 47), 'tw': (700, 23, 785, 47)}, file={'cn': './assets/cn/shop/SHOP_OCR_OIL.png', 'en': './assets/en/shop/SHOP_OCR_OIL.png', 'jp': './assets/cn/shop/SHOP_OCR_OIL.png', 'tw': './assets/tw/shop/SHOP_OCR_OIL.png'}) SHOP_OCR_OIL_CHECK = Button(area={'cn': (666, 30, 682, 43), 'en': (834, 25, 854, 45), 'jp': (666, 30, 682, 43), 'tw': (666, 30, 682, 43)}, color={'cn': (73, 73, 73), 'en': (71, 75, 75), 'jp': (73, 73, 73), 'tw': (73, 73, 73)}, button={'cn': (666, 30, 682, 43), 'en': (834, 25, 854, 45), 'jp': (666, 30, 682, 43), 'tw': (666, 30, 682, 43)}, file={'cn': './assets/cn/shop/SHOP_OCR_OIL_CHECK.png', 'en': './assets/en/shop/SHOP_OCR_OIL_CHECK.png', 'jp': './assets/cn/shop/SHOP_OCR_OIL_CHECK.png', 'tw': './assets/tw/shop/SHOP_OCR_OIL_CHECK.png'}) -SHOP_REFRESH = Button(area={'cn': (1001, 653, 1070, 690), 'en': (1001, 653, 1070, 690), 'jp': (1001, 653, 1070, 690), 'tw': (1001, 653, 1070, 690)}, color={'cn': (65, 150, 212), 'en': (65, 150, 212), 'jp': (65, 150, 212), 'tw': (65, 150, 212)}, button={'cn': (1001, 653, 1070, 690), 'en': (1001, 653, 1070, 690), 'jp': (1001, 653, 1070, 690), 'tw': (1001, 653, 1070, 690)}, file={'cn': './assets/cn/shop/SHOP_REFRESH.png', 'en': './assets/en/shop/SHOP_REFRESH.png', 'jp': './assets/cn/shop/SHOP_REFRESH.png', 'tw': './assets/cn/shop/SHOP_REFRESH.png'}) +SHOP_REFRESH = Button(area={'cn': (1001, 653, 1070, 690), 'en': (1001, 653, 1070, 690), 'jp': (1001, 653, 1070, 690), 'tw': (1001, 653, 1070, 690)}, color={'cn': (65, 150, 212), 'en': (65, 150, 212), 'jp': (65, 150, 212), 'tw': (65, 150, 212)}, button={'cn': (1001, 653, 1070, 690), 'en': (1001, 653, 1070, 690), 'jp': (1001, 653, 1070, 690), 'tw': (1001, 653, 1070, 690)}, file={'cn': './assets/cn/shop/SHOP_REFRESH.png', 'en': './assets/cn/shop/SHOP_REFRESH.png', 'jp': './assets/cn/shop/SHOP_REFRESH.png', 'tw': './assets/cn/shop/SHOP_REFRESH.png'}) +SHOP_REFRESH_CHECK = Button(area={'cn': (1024, 660, 1048, 684), 'en': (1024, 660, 1048, 684), 'jp': (1024, 660, 1048, 684), 'tw': (1024, 660, 1048, 684)}, color={'cn': (131, 170, 197), 'en': (131, 170, 197), 'jp': (131, 170, 197), 'tw': (131, 170, 197)}, button={'cn': (1024, 660, 1048, 684), 'en': (1024, 660, 1048, 684), 'jp': (1024, 660, 1048, 684), 'tw': (1024, 660, 1048, 684)}, file={'cn': './assets/cn/shop/SHOP_REFRESH_CHECK.png', 'en': './assets/cn/shop/SHOP_REFRESH_CHECK.png', 'jp': './assets/cn/shop/SHOP_REFRESH_CHECK.png', 'tw': './assets/cn/shop/SHOP_REFRESH_CHECK.png'}) SHOP_SELECT_PR1 = Button(area={'cn': (182, 212, 308, 339), 'en': (182, 212, 308, 339), 'jp': (182, 212, 308, 339), 'tw': (182, 212, 308, 339)}, color={'cn': (157, 158, 143), 'en': (157, 158, 143), 'jp': (157, 158, 143), 'tw': (157, 158, 143)}, button={'cn': (182, 212, 308, 339), 'en': (182, 212, 308, 339), 'jp': (182, 212, 308, 339), 'tw': (182, 212, 308, 339)}, file={'cn': './assets/cn/shop/SHOP_SELECT_PR1.png', 'en': './assets/en/shop/SHOP_SELECT_PR1.png', 'jp': './assets/jp/shop/SHOP_SELECT_PR1.png', 'tw': './assets/tw/shop/SHOP_SELECT_PR1.png'}) SHOP_SELECT_PR2 = Button(area={'cn': (182, 212, 310, 340), 'en': (182, 212, 310, 340), 'jp': (182, 212, 310, 340), 'tw': (182, 212, 310, 340)}, color={'cn': (160, 159, 145), 'en': (160, 159, 145), 'jp': (160, 159, 145), 'tw': (160, 159, 145)}, button={'cn': (182, 212, 310, 340), 'en': (182, 212, 310, 340), 'jp': (182, 212, 310, 340), 'tw': (182, 212, 310, 340)}, file={'cn': './assets/cn/shop/SHOP_SELECT_PR2.png', 'en': './assets/en/shop/SHOP_SELECT_PR2.png', 'jp': './assets/jp/shop/SHOP_SELECT_PR2.png', 'tw': './assets/tw/shop/SHOP_SELECT_PR2.png'}) SHOP_SELECT_PR3 = Button(area={'cn': (180, 212, 309, 340), 'en': (180, 212, 309, 340), 'jp': (180, 212, 309, 340), 'tw': (180, 212, 309, 340)}, color={'cn': (156, 156, 142), 'en': (156, 156, 142), 'jp': (156, 156, 142), 'tw': (156, 156, 142)}, button={'cn': (180, 212, 309, 340), 'en': (180, 212, 309, 340), 'jp': (180, 212, 309, 340), 'tw': (180, 212, 309, 340)}, file={'cn': './assets/cn/shop/SHOP_SELECT_PR3.png', 'en': './assets/en/shop/SHOP_SELECT_PR3.png', 'jp': './assets/jp/shop/SHOP_SELECT_PR3.png', 'tw': './assets/tw/shop/SHOP_SELECT_PR3.png'}) diff --git a/module/shop/ui.py b/module/shop/ui.py index dc4bf9022..93b011bbd 100644 --- a/module/shop/ui.py +++ b/module/shop/ui.py @@ -83,7 +83,9 @@ class ShopUI(UI): for _ in self.loop(): if self.appear(POPUP_CONFIRM, offset=(30, 30)): break - if self.appear(SHOP_REFRESH, offset=(30, 30), interval=3): + # SHOP_REFRESH_CHECK is the refresh icon + # SHOP_REFRESH is refresh icon with surrounded background + if self.appear(SHOP_REFRESH_CHECK, offset=(30, 30), interval=3): # SHOP_REFRESH has two kinds of color when active if self.image_color_count(SHOP_REFRESH.button, color=(49, 142, 207), threshold=221, count=50): self.device.click(SHOP_REFRESH)