1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-19 01:23:34 +08:00
This commit is contained in:
sui-feng-cb
2026-01-18 22:34:08 +08:00
16 changed files with 147 additions and 39 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -4,17 +4,17 @@ from module.base.template import Template
# This file was automatically generated by dev_tools/button_extract.py. # This file was automatically generated by dev_tools/button_extract.py.
# Don't modify it manually. # Don't modify it manually.
GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (178, 180, 180), 'en': (178, 180, 180), 'jp': (178, 180, 180), 'tw': (178, 180, 180)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/cn/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'}) GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (149, 151, 152), 'en': (149, 151, 152), 'jp': (149, 151, 152), 'tw': (149, 151, 152)}, button={'cn': (0, 263, 129, 555), 'en': (588, 260, 692, 289), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/en/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'})
ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (72, 72, 78), 'en': (72, 72, 78), 'jp': (72, 72, 78), 'tw': (72, 72, 78)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'}) ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (78, 78, 84), 'en': (78, 78, 84), 'jp': (78, 78, 84), 'tw': (78, 78, 84)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/en/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'})
ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, color={'cn': (50, 52, 56), 'en': (50, 52, 56), 'jp': (50, 52, 56), 'tw': (50, 52, 56)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'en': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'jp': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'tw': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png'}) ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, color={'cn': (50, 52, 56), 'en': (50, 52, 56), 'jp': (50, 52, 56), 'tw': (50, 52, 56)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'en': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'jp': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'tw': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png'})
ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, color={'cn': (187, 224, 135), 'en': (187, 224, 135), 'jp': (187, 224, 135), 'tw': (187, 224, 135)}, button={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT.png'}) ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, color={'cn': (187, 224, 135), 'en': (187, 224, 135), 'jp': (187, 224, 135), 'tw': (187, 224, 135)}, button={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT.png'})
ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (77, 83, 96), 'en': (77, 83, 96), 'jp': (77, 83, 96), 'tw': (77, 83, 96)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'}) ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (90, 96, 108), 'en': (90, 96, 108), 'jp': (90, 96, 108), 'tw': (90, 96, 108)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/en/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'})
ISLAND_MANAGEMENT_LOCKED = Button(area={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, color={'cn': (197, 206, 195), 'en': (197, 206, 195), 'jp': (197, 206, 195), 'tw': (197, 206, 195)}, button={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png'}) ISLAND_MANAGEMENT_LOCKED = Button(area={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, color={'cn': (197, 206, 195), 'en': (197, 206, 195), 'jp': (197, 206, 195), 'tw': (197, 206, 195)}, button={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png'})
ISLAND_PRODUCT_ITEMS = Button(area={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, color={'cn': (189, 200, 198), 'en': (189, 200, 198), 'jp': (189, 200, 198), 'tw': (189, 200, 198)}, button={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, file={'cn': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'en': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'jp': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'tw': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png'}) ISLAND_PRODUCT_ITEMS = Button(area={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, color={'cn': (189, 200, 198), 'en': (189, 200, 198), 'jp': (189, 200, 198), 'tw': (189, 200, 198)}, button={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, file={'cn': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'en': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'jp': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'tw': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png'})
ISLAND_PROJECT_SWIPE = Button(area={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, color={'cn': (215, 218, 213), 'en': (215, 218, 213), 'jp': (215, 218, 213), 'tw': (215, 218, 213)}, button={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, file={'cn': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'en': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'jp': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'tw': './assets/cn/island/ISLAND_PROJECT_SWIPE.png'}) ISLAND_PROJECT_SWIPE = Button(area={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, color={'cn': (215, 218, 213), 'en': (215, 218, 213), 'jp': (215, 218, 213), 'tw': (215, 218, 213)}, button={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, file={'cn': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'en': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'jp': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'tw': './assets/cn/island/ISLAND_PROJECT_SWIPE.png'})
ISLAND_TRANSPORT = Button(area={'cn': (905, 335, 986, 358), 'en': (905, 335, 986, 358), 'jp': (905, 335, 986, 358), 'tw': (905, 335, 986, 358)}, color={'cn': (228, 192, 122), 'en': (228, 192, 122), 'jp': (228, 192, 122), 'tw': (228, 192, 122)}, button={'cn': (898, 328, 1031, 459), 'en': (898, 328, 1031, 459), 'jp': (898, 328, 1031, 459), 'tw': (898, 328, 1031, 459)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT.png', 'en': './assets/cn/island/ISLAND_TRANSPORT.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT.png'}) ISLAND_TRANSPORT = Button(area={'cn': (905, 335, 986, 358), 'en': (905, 335, 986, 358), 'jp': (905, 335, 986, 358), 'tw': (905, 335, 986, 358)}, color={'cn': (234, 192, 102), 'en': (234, 192, 102), 'jp': (234, 192, 102), 'tw': (234, 192, 102)}, button={'cn': (898, 328, 1031, 459), 'en': (905, 335, 986, 358), 'jp': (898, 328, 1031, 459), 'tw': (898, 328, 1031, 459)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT.png', 'en': './assets/en/island/ISLAND_TRANSPORT.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT.png'})
ISLAND_TRANSPORT_CHECK = Button(area={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, color={'cn': (142, 143, 143), 'en': (142, 143, 143), 'jp': (142, 143, 143), 'tw': (142, 143, 143)}, button={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'en': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png'}) ISLAND_TRANSPORT_CHECK = Button(area={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, color={'cn': (22, 0, 0), 'en': (22, 0, 0), 'jp': (22, 0, 0), 'tw': (22, 0, 0)}, button={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'en': './assets/en/island/ISLAND_TRANSPORT_CHECK.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png'})
OCR_PRODUCTION_TIME = Button(area={'cn': (714, 611, 808, 631), 'en': (714, 611, 808, 631), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, color={'cn': (120, 210, 255), 'en': (120, 210, 255), 'jp': (120, 210, 255), 'tw': (120, 210, 255)}, button={'cn': (714, 611, 808, 631), 'en': (714, 611, 808, 631), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'en': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME.png'}) OCR_PRODUCTION_TIME = Button(area={'cn': (714, 611, 808, 631), 'en': (637, 603, 733, 623), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, color={'cn': (120, 210, 255), 'en': (132, 214, 255), 'jp': (120, 210, 255), 'tw': (120, 210, 255)}, button={'cn': (714, 611, 808, 631), 'en': (637, 603, 733, 623), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'en': './assets/en/island/OCR_PRODUCTION_TIME.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME.png'})
OCR_PRODUCTION_TIME_REMAIN = Button(area={'cn': (621, 427, 666, 439), 'en': (621, 427, 666, 439), 'jp': (621, 427, 666, 439), 'tw': (621, 427, 666, 439)}, color={'cn': (196, 203, 205), 'en': (196, 203, 205), 'jp': (196, 203, 205), 'tw': (196, 203, 205)}, button={'cn': (621, 427, 666, 439), 'en': (621, 427, 666, 439), 'jp': (621, 427, 666, 439), 'tw': (621, 427, 666, 439)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'en': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png'}) OCR_PRODUCTION_TIME_REMAIN = Button(area={'cn': (621, 427, 666, 439), 'en': (621, 427, 666, 439), 'jp': (621, 427, 666, 439), 'tw': (621, 427, 666, 439)}, color={'cn': (196, 203, 205), 'en': (196, 203, 205), 'jp': (196, 203, 205), 'tw': (196, 203, 205)}, button={'cn': (621, 427, 666, 439), 'en': (621, 427, 666, 439), 'jp': (621, 427, 666, 439), 'tw': (621, 427, 666, 439)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'en': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png'})
OCR_TRANSPORT_REFRESH = Button(area={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, color={'cn': (176, 177, 175), 'en': (176, 177, 175), 'jp': (176, 177, 175), 'tw': (176, 177, 175)}, button={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'en': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'jp': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'tw': './assets/cn/island/OCR_TRANSPORT_REFRESH.png'}) OCR_TRANSPORT_REFRESH = Button(area={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, color={'cn': (176, 177, 175), 'en': (176, 177, 175), 'jp': (176, 177, 175), 'tw': (176, 177, 175)}, button={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'en': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'jp': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'tw': './assets/cn/island/OCR_TRANSPORT_REFRESH.png'})
OCR_TRANSPORT_TIME = Button(area={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, color={'cn': (119, 119, 120), 'en': (119, 119, 120), 'jp': (119, 119, 120), 'tw': (119, 119, 120)}, button={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME.png'}) OCR_TRANSPORT_TIME = Button(area={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, color={'cn': (119, 119, 120), 'en': (119, 119, 120), 'jp': (119, 119, 120), 'tw': (119, 119, 120)}, button={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME.png'})
@@ -30,12 +30,12 @@ PROJECT_MANJUU_CHECK = Button(area={'cn': (1162, 182, 1214, 205), 'en': (1162, 1
PROJECT_NEW_JERSEY_CHECK = Button(area={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, color={'cn': (138, 136, 159), 'en': (138, 136, 159), 'jp': (138, 136, 159), 'tw': (138, 136, 159)}, button={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, file={'cn': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'en': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'jp': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'tw': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png'}) PROJECT_NEW_JERSEY_CHECK = Button(area={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, color={'cn': (138, 136, 159), 'en': (138, 136, 159), 'jp': (138, 136, 159), 'tw': (138, 136, 159)}, button={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, file={'cn': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'en': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'jp': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'tw': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png'})
PROJECT_SARATOGA_CHECK = Button(area={'cn': (1162, 166, 1223, 219), 'en': (1162, 166, 1223, 219), 'jp': (1162, 166, 1223, 219), 'tw': (1162, 166, 1223, 219)}, color={'cn': (212, 177, 178), 'en': (212, 177, 178), 'jp': (212, 177, 178), 'tw': (212, 177, 178)}, button={'cn': (1162, 166, 1223, 219), 'en': (1162, 166, 1223, 219), 'jp': (1162, 166, 1223, 219), 'tw': (1162, 166, 1223, 219)}, file={'cn': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'en': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'jp': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'tw': './assets/cn/island/PROJECT_SARATOGA_CHECK.png'}) PROJECT_SARATOGA_CHECK = Button(area={'cn': (1162, 166, 1223, 219), 'en': (1162, 166, 1223, 219), 'jp': (1162, 166, 1223, 219), 'tw': (1162, 166, 1223, 219)}, color={'cn': (212, 177, 178), 'en': (212, 177, 178), 'jp': (212, 177, 178), 'tw': (212, 177, 178)}, button={'cn': (1162, 166, 1223, 219), 'en': (1162, 166, 1223, 219), 'jp': (1162, 166, 1223, 219), 'tw': (1162, 166, 1223, 219)}, file={'cn': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'en': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'jp': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'tw': './assets/cn/island/PROJECT_SARATOGA_CHECK.png'})
PROJECT_SHIMAKAZE_CHECK = Button(area={'cn': (1163, 168, 1212, 218), 'en': (1163, 168, 1212, 218), 'jp': (1163, 168, 1212, 218), 'tw': (1163, 168, 1212, 218)}, color={'cn': (218, 199, 196), 'en': (218, 199, 196), 'jp': (218, 199, 196), 'tw': (218, 199, 196)}, button={'cn': (1163, 168, 1212, 218), 'en': (1163, 168, 1212, 218), 'jp': (1163, 168, 1212, 218), 'tw': (1163, 168, 1212, 218)}, file={'cn': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'en': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'jp': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'tw': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png'}) PROJECT_SHIMAKAZE_CHECK = Button(area={'cn': (1163, 168, 1212, 218), 'en': (1163, 168, 1212, 218), 'jp': (1163, 168, 1212, 218), 'tw': (1163, 168, 1212, 218)}, color={'cn': (218, 199, 196), 'en': (218, 199, 196), 'jp': (218, 199, 196), 'tw': (218, 199, 196)}, button={'cn': (1163, 168, 1212, 218), 'en': (1163, 168, 1212, 218), 'jp': (1163, 168, 1212, 218), 'tw': (1163, 168, 1212, 218)}, file={'cn': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'en': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'jp': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'tw': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png'})
PROJECT_START = Button(area={'cn': (686, 610, 706, 630), 'en': (686, 610, 706, 630), 'jp': (686, 610, 706, 630), 'tw': (686, 610, 706, 630)}, color={'cn': (129, 213, 255), 'en': (129, 213, 255), 'jp': (129, 213, 255), 'tw': (129, 213, 255)}, button={'cn': (494, 599, 1087, 642), 'en': (494, 599, 1087, 642), 'jp': (494, 599, 1087, 642), 'tw': (494, 599, 1087, 642)}, file={'cn': './assets/cn/island/PROJECT_START.png', 'en': './assets/cn/island/PROJECT_START.png', 'jp': './assets/cn/island/PROJECT_START.png', 'tw': './assets/cn/island/PROJECT_START.png'}) PROJECT_START = Button(area={'cn': (609, 610, 629, 630), 'en': (609, 610, 629, 630), 'jp': (609, 610, 629, 630), 'tw': (609, 610, 629, 630)}, color={'cn': (128, 212, 254), 'en': (128, 212, 254), 'jp': (128, 212, 254), 'tw': (128, 212, 254)}, button={'cn': (494, 599, 1087, 642), 'en': (609, 610, 629, 630), 'jp': (494, 599, 1087, 642), 'tw': (494, 599, 1087, 642)}, file={'cn': './assets/cn/island/PROJECT_START.png', 'en': './assets/en/island/PROJECT_START.png', 'jp': './assets/cn/island/PROJECT_START.png', 'tw': './assets/cn/island/PROJECT_START.png'})
PROJECT_TASHKENT_CHECK = Button(area={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, color={'cn': (176, 146, 173), 'en': (176, 146, 173), 'jp': (176, 146, 173), 'tw': (176, 146, 173)}, button={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, file={'cn': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'en': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'jp': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'tw': './assets/cn/island/PROJECT_TASHKENT_CHECK.png'}) PROJECT_TASHKENT_CHECK = Button(area={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, color={'cn': (176, 146, 173), 'en': (176, 146, 173), 'jp': (176, 146, 173), 'tw': (176, 146, 173)}, button={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, file={'cn': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'en': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'jp': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'tw': './assets/cn/island/PROJECT_TASHKENT_CHECK.png'})
PROJECT_UNICORN_CHECK = Button(area={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, color={'cn': (199, 184, 218), 'en': (199, 184, 218), 'jp': (199, 184, 218), 'tw': (199, 184, 218)}, button={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, file={'cn': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'en': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'jp': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'tw': './assets/cn/island/PROJECT_UNICORN_CHECK.png'}) PROJECT_UNICORN_CHECK = Button(area={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, color={'cn': (199, 184, 218), 'en': (199, 184, 218), 'jp': (199, 184, 218), 'tw': (199, 184, 218)}, button={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, file={'cn': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'en': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'jp': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'tw': './assets/cn/island/PROJECT_UNICORN_CHECK.png'})
PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'}) PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'})
ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (109, 206, 255), 'en': (109, 206, 255), 'jp': (109, 206, 255), 'tw': (109, 206, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (948, 585, 1239, 632), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'}) ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (125, 211, 255), 'en': (125, 211, 255), 'jp': (125, 211, 255), 'tw': (125, 211, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (1068, 597, 1118, 621), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/en/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'})
ROLE_SELECT_ENTER = Button(area={'cn': (579, 314, 700, 350), 'en': (579, 314, 700, 350), 'jp': (579, 314, 700, 350), 'tw': (579, 314, 700, 350)}, color={'cn': (239, 238, 237), 'en': (239, 238, 237), 'jp': (239, 238, 237), 'tw': (239, 238, 237)}, button={'cn': (534, 206, 747, 483), 'en': (534, 206, 747, 483), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/cn/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'}) ROLE_SELECT_ENTER = Button(area={'cn': (578, 313, 701, 351), 'en': (578, 313, 701, 351), 'jp': (578, 313, 701, 351), 'tw': (578, 313, 701, 351)}, color={'cn': (237, 237, 236), 'en': (237, 237, 236), 'jp': (237, 237, 236), 'tw': (237, 237, 236)}, button={'cn': (534, 206, 747, 483), 'en': (578, 313, 701, 351), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/en/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'})
TEMPLATE_AKASHI = Template(file={'cn': './assets/cn/island/TEMPLATE_AKASHI.png', 'en': './assets/cn/island/TEMPLATE_AKASHI.png', 'jp': './assets/cn/island/TEMPLATE_AKASHI.png', 'tw': './assets/cn/island/TEMPLATE_AKASHI.png'}) TEMPLATE_AKASHI = Template(file={'cn': './assets/cn/island/TEMPLATE_AKASHI.png', 'en': './assets/cn/island/TEMPLATE_AKASHI.png', 'jp': './assets/cn/island/TEMPLATE_AKASHI.png', 'tw': './assets/cn/island/TEMPLATE_AKASHI.png'})
TEMPLATE_AMAGI_CHAN = Template(file={'cn': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'en': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'jp': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'tw': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png'}) TEMPLATE_AMAGI_CHAN = Template(file={'cn': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'en': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'jp': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'tw': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png'})
TEMPLATE_CARROT = Template(file={'cn': './assets/cn/island/TEMPLATE_CARROT.png', 'en': './assets/cn/island/TEMPLATE_CARROT.png', 'jp': './assets/cn/island/TEMPLATE_CARROT.png', 'tw': './assets/cn/island/TEMPLATE_CARROT.png'}) TEMPLATE_CARROT = Template(file={'cn': './assets/cn/island/TEMPLATE_CARROT.png', 'en': './assets/cn/island/TEMPLATE_CARROT.png', 'jp': './assets/cn/island/TEMPLATE_CARROT.png', 'tw': './assets/cn/island/TEMPLATE_CARROT.png'})

View File

@@ -19,7 +19,7 @@ class Island(IslandProjectRun, IslandTransportRun):
list[str]: a list of name for island receive list[str]: a list of name for island receive
""" """
if any(config): if any(config):
return [name for add, name in zip(config, list(name_to_slot_cn.keys())) if add] return [name for add, name in zip(config, list(name_to_slot.keys())) if add]
else: else:
return [] return []
@@ -56,7 +56,7 @@ class Island(IslandProjectRun, IslandTransportRun):
self.config.task_delay(success=False) self.config.task_delay(success=False)
def run(self): def run(self):
if server.server in ['cn']: if server.server in ['cn', 'en']:
transport = False transport = False
project_config = [self.config.__getattribute__(f'Island{i}_Receive') for i in range(1, 16)] project_config = [self.config.__getattribute__(f'Island{i}_Receive') for i in range(1, 16)]
project = any(project_config) project = any(project_config)

View File

@@ -4,6 +4,7 @@ import re
import numpy as np import numpy as np
from scipy import signal from scipy import signal
import module.config.server as server
from module.base.button import Button, ButtonGrid from module.base.button import Button, ButtonGrid
from module.base.timer import Timer from module.base.timer import Timer
from module.base.utils import color_similarity_2d, crop, random_rectangle_vector, rgb2gray from module.base.utils import color_similarity_2d, crop, random_rectangle_vector, rgb2gray
@@ -15,12 +16,14 @@ from module.logger import logger
from module.map.map_grids import SelectedGrids from module.map.map_grids import SelectedGrids
from module.ocr.ocr import Duration, Ocr from module.ocr.ocr import Duration, Ocr
class ProjectNameOcr(Ocr): class ProjectNameOcr(Ocr):
def after_process(self, result): def after_process(self, result):
result = super().after_process(result) result = super().after_process(result)
result = result.replace('', '') if server.server == 'cn':
result = re.sub(r'[^\u4e00-\u9fff]', '', result) result = result.replace('', '')
result = re.sub(r'[^\u4e00-\u9fff]', '', result)
elif server.server == 'en':
result = re.sub(r"[\s'-]+", "", result).lower()
return result return result
@@ -66,7 +69,9 @@ class IslandProject:
return return
# name # name
area = (self.x1 - 446, self.y1, self.x1 - 326, self.y2) dx = {'cn':326, 'en':137}[server.server]
dy = {'cn':0, 'en':2}[server.server]
area = (self.x1 - 446, self.y1, self.x1 - dx, self.y2+dy)
button = Button(area=area, color=(), button=area, name='PROJECT_NAME') button = Button(area=area, color=(), button=area, name='PROJECT_NAME')
ocr = ProjectNameOcr(button, lang='cnocr') ocr = ProjectNameOcr(button, lang='cnocr')
self.name = ocr.ocr(self.image) self.name = ocr.ocr(self.image)
@@ -75,7 +80,7 @@ class IslandProject:
return return
# id # id
keys = list(name_to_slot_cn.keys()) keys = list(name_to_slot.keys())
if self.name in keys: if self.name in keys:
self.id = keys.index(self.name) + 1 self.id = keys.index(self.name) + 1
else: else:
@@ -83,7 +88,7 @@ class IslandProject:
return return
# max slot # max slot
self.max_slot = name_to_slot_cn.get(self.name, 2) self.max_slot = name_to_slot.get(self.name, 2)
# available slot # available slot
area = (self.x1 - 383, self.y1 + 60, self.x1 - 39, self.y1 + 118) area = (self.x1 - 383, self.y1 + 60, self.x1 - 39, self.y1 + 118)
@@ -173,12 +178,16 @@ class IslandProduct:
class ItemNameOcr(Ocr): class ItemNameOcr(Ocr):
def after_process(self, result): def after_process(self, result):
result = super().after_process(result) result = super().after_process(result)
result = result.replace('', '').replace('', '').replace('', '').replace('', '') if server.server == 'cn':
result = re.sub(r'[^\u4e00-\u9fff]', '', result) result = result.replace('', '').replace('', '').replace('', '').replace('', '')
if '冰咖' in result: result = re.sub(r'[^\u4e00-\u9fff]', '', result)
result = '冰咖' if '冰咖' in result:
if '莓果香橙' in result: result = '冰咖啡'
result = '莓果香橙甜点组' if '莓果香橙' in result:
result = '莓果香橙甜点组'
elif server.server == 'en':
result = re.sub(r"[\s'-]+", "", result)
result = result.lower()
return result return result
@@ -192,7 +201,7 @@ class ProductItem:
# All buttons on this page to click # All buttons on this page to click
item_buttons: ButtonGrid item_buttons: ButtonGrid
def __init__(self, image, y, get_button=True): def __init__(self, image, y, parent_project_id, get_button=True):
""" """
Args: Args:
image: image:
@@ -205,6 +214,7 @@ class ProductItem:
self.name = None self.name = None
self.button = None self.button = None
self.items = [] self.items = []
self.parent_project_id = parent_project_id
self.parse_item(get_button=get_button) self.parse_item(get_button=get_button)
def parse_item(self, get_button): def parse_item(self, get_button):
@@ -230,7 +240,7 @@ class ProductItem:
self.item_buttons = ButtonGrid(origin=(x1, origin_y), delta=(0, delta), self.item_buttons = ButtonGrid(origin=(x1, origin_y), delta=(0, delta),
button_shape=(x2 - x1, y2 - y1), button_shape=(x2 - x1, y2 - y1),
grid_shape=(1, shape_y), name='ITEMS') grid_shape=(1, shape_y), name='ITEMS')
self.items = [ProductItem(self.image, (item.area[1], item.area[3]), get_button=False) self.items = [ProductItem(self.image, (item.area[1], item.area[3]), self.parent_project_id, get_button=False)
for item in self.item_buttons.buttons] for item in self.item_buttons.buttons]
else: else:
self.ocr_name(y1, y2) self.ocr_name(y1, y2)
@@ -267,8 +277,27 @@ class ProductItem:
button = Button(area=area, color=(), button=area, name='ITEM_NAME') button = Button(area=area, color=(), button=area, name='ITEM_NAME')
ocr = ItemNameOcr(button, lang='cnocr', letter=(70, 70, 70)) ocr = ItemNameOcr(button, lang='cnocr', letter=(70, 70, 70))
self.name = ocr.ocr(self.image) self.name = ocr.ocr(self.image)
if not self.name or self.name not in deep_values(items_data_cn, depth=2): if server.server == 'cn' and (not self.name or self.name not in deep_values(items_data, depth=2)):
self.valid = False self.valid = False
elif server.server == 'en':
self.valid = False
if not self.name:
return
for value in list(items_data[self.parent_project_id].values()):
can_scroll = len(value) > 13
vmatcher = re.sub(r"[\s'-]+", "", value).lower()
if self.name == vmatcher:
logger.info(f'Product with valid name: {self.name} (exact matched {value})')
self.name = value
self.valid = True
break
elif self.name[1:-1] in vmatcher and (len(self.name) > 12 and can_scroll):
logger.info(f'Product with valid name: {self.name} (scroll matched {value})')
self.name = value
self.valid = True
break
if not self.valid:
logger.info(f'Product with invalid name: {self.name}')
def __eq__(self, other): def __eq__(self, other):
""" """
@@ -467,7 +496,7 @@ class IslandProjectRun(IslandUI):
def get_character_check_button(character): def get_character_check_button(character):
return globals().get(f'PROJECT_{character.upper()}_CHECK', PRODUCT_MANJUU_CHECK) return globals().get(f'PROJECT_{character.upper()}_CHECK', PRODUCT_MANJUU_CHECK)
def get_current_product(self): def get_current_product(self, project_id):
""" """
Get currently selected product on self.device.image. Get currently selected product on self.device.image.
@@ -485,9 +514,9 @@ class IslandProjectRun(IslandUI):
} }
peaks, _ = signal.find_peaks(line, **parameters) peaks, _ = signal.find_peaks(line, **parameters)
peaks = np.array(peaks) + y_top peaks = np.array(peaks) + y_top
return ProductItem(self.device.image, peaks) return ProductItem(self.device.image, peaks, project_id)
def product_select(self, option, trial=2, skip_first_screenshot=True): def product_select(self, option, project_id, trial=2, skip_first_screenshot=True):
""" """
Select a product in items list. Select a product in items list.
@@ -509,7 +538,7 @@ class IslandProjectRun(IslandUI):
else: else:
self.device.screenshot() self.device.screenshot()
current = self.get_current_product() current = self.get_current_product(project_id)
if trial > 0 and not len(current.items): if trial > 0 and not len(current.items):
trial -= 1 trial -= 1
continue continue
@@ -581,7 +610,8 @@ class IslandProjectRun(IslandUI):
continue continue
button = PROJECT_START button = PROJECT_START
self.appear(button, offset=(100, 0)) timer_offset = {'cn':100, 'en':60}[server.server]
self.appear(button, offset=(timer_offset, 0))
offset = tuple(np.subtract(button.button, button._button)[:2]) offset = tuple(np.subtract(button.button, button._button)[:2])
product = IslandProduct(self.device.image, new=True, offset=offset) product = IslandProduct(self.device.image, new=True, offset=offset)
if product == last: if product == last:
@@ -641,7 +671,7 @@ class IslandProjectRun(IslandUI):
self.island_drag_next_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6) self.island_drag_next_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6)
def project_receive_and_start(self, proj, button, character, option, ensure=True): def project_receive_and_start(self, proj, button, character, option, project_id, ensure=True):
""" """
Receive and start a project is in the current page. Receive and start a project is in the current page.
@@ -657,7 +687,7 @@ class IslandProjectRun(IslandUI):
if not self.project_character_select(character): if not self.project_character_select(character):
logger.warning('Island select role failed due to game bug, retrying') logger.warning('Island select role failed due to game bug, retrying')
return False return False
if not self.product_select(option): if not self.product_select(option, project_id):
return True return True
if not self.product_select_confirm(): if not self.product_select_confirm():
self.character = 'manjuu' self.character = 'manjuu'
@@ -695,7 +725,7 @@ class IslandProjectRun(IslandUI):
if option == 0: if option == 0:
slot_option.append(None) slot_option.append(None)
continue continue
slot_option.append(deep_get(items_data_cn, [proj_id, option])) slot_option.append(deep_get(items_data, [proj_id, option]))
return slot_option return slot_option
def island_project_run(self, names, trial=2, skip_first_screenshot=True): def island_project_run(self, names, trial=2, skip_first_screenshot=True):
@@ -747,7 +777,7 @@ class IslandProjectRun(IslandUI):
# retry 3 times because of a game bug # retry 3 times because of a game bug
for _ in range(3): for _ in range(3):
ensure = not end or index != option_num - 1 ensure = not end or index != option_num - 1
if self.project_receive_and_start(proj, button, self.character, option, ensure): if self.project_receive_and_start(proj, button, self.character, option, proj.id, ensure):
break break
timeout.reset() timeout.reset()

View File

@@ -1,10 +1,12 @@
name_to_slot_cn = { import module.config.server as server
__name_to_slot_cn = {
'丰壤农田': 4, '悠然牧场': 4, '沉石矿山': 4, '翠土林场': 4, '坠香果园': 4, '青芽苗圃': 2, '丰壤农田': 4, '悠然牧场': 4, '沉石矿山': 4, '翠土林场': 4, '坠香果园': 4, '青芽苗圃': 2,
'有鱼餐馆': 2, '白熊饮品': 2, '啾啾简餐': 2, '乌鱼烤肉': 2, '木料加工设备': 2, '工业生产设备': 2, '有鱼餐馆': 2, '白熊饮品': 2, '啾啾简餐': 2, '乌鱼烤肉': 2, '木料加工设备': 2, '工业生产设备': 2,
'电子加工设备': 2, '手工制作设备': 2, '啾咖啡': 2 '电子加工设备': 2, '手工制作设备': 2, '啾咖啡': 2
} }
items_data_cn = { __items_data_cn = {
1: { 1: {
1: '小麦', 2: '玉米', 3: '牧草', 4: '咖啡豆', 5: '大米', 6: '白菜', 1: '小麦', 2: '玉米', 3: '牧草', 4: '咖啡豆', 5: '大米', 6: '白菜',
7: '土豆', 8: '大豆', 7: '土豆', 8: '大豆',
@@ -61,3 +63,79 @@ items_data_cn = {
6: '草莓奶绿', 7: '晨光活力组合', 8: '醒神套餐', 9: '果香双杯乐', 6: '草莓奶绿', 7: '晨光活力组合', 8: '醒神套餐', 9: '果香双杯乐',
}, },
} }
__name_to_slot_en = {
'faircropfields': 4, 'laidbackranch': 4, 'rockheapmine': 4, 'verdantwoods': 4, 'sweetscentorchard': 4, 'newsproutnursery': 2,
'goldenkoirestaurant': 2, 'polarbearteahouse': 2, 'manjuueatery': 2, "finnfeathergrill": 2, 'lumberprocessing': 2, 'machineryproduction': 2,
'electronicproduction': 2, 'arts&craftsproduction': 2, 'cafemanjuu': 2
}
__items_data_en = {
1: {
1: 'Wheat', 2: 'Corn', 3: 'Grass', 4: 'CoffeeBeans', 5: 'Rice', 6: 'Napa Cabbage',
7: 'Potato', 8: 'Soy Beans',
},
2: {
1: 'Eggs', 2: 'Fresh Meat', 3: 'Milk', 4: 'Wool',
},
3: {
1: 'Coal', 2: 'Copper Ore', 3: 'Bauxite Ore', 4: 'Iron Ore', 5: 'Sulfur', 6: 'Silver Ore',
},
4: {
1: 'Raw Timber', 2: 'Workable Wood', 3: 'remium Wood', 4: 'Elegant Wood', # remium Wood because it overruns on the left
},
5: {
1: 'Yoizuki Pear', 2: 'Kaki Persimmon', 3: 'Apple', 4: 'Citrus Fruit', 5: 'Banana', 6: 'Mango',
7: 'Lemon', 8: 'Avocado', 9: 'Rubber',
},
6: {
1: 'Flax', 2: 'Strawberries', 3: 'Cotton', 4: 'Tea Leaves', 5: 'Lavender', 6: 'Carrot',
7: 'Onion',
},
7: {
1: 'Dried Persimmon', 2: 'Matsutake and Chicken Soup', 3: 'Tofu', 4: 'Tofu with Minced Meat', 5: 'Omurice',
6: 'Cabbage and Tofu Soup', 7: 'Vegetable Salad', 8: 'Classic Tofu Combo', 9: 'Hearty Meal',
},
8: {
1: 'Carrot and Pear Juice', 2: 'Chrysanthemum Tea', 3: 'Apple Juice', 4: 'Banana and Mango Juice',
5: 'Honey and Lemon Water', 6: 'Strawberry Lemon Drink', 7: 'Lavender Tea', 8: 'Strawberry Honey Frappe',
9: 'Floral and Fruity', 10: 'Colorful Fruit Paradise', 11: 'Sunny Honey',
},
9: {
1: 'Corn Cup', 2: 'Apple Pie', 3: 'Orange Pie', 4: 'Sticky Rice with Mango', 5: 'Banana Crepe',
6: 'Strawberry Charlotte', 7: 'Succulently Sweet', 8: 'Orchard Duo', 9: 'Berry and Orange Dessert',
},
10: {
1: 'Coal-Roasted Skewer', 2: "Chicken and Potato Hors d'Oeuvre", 3: 'Stir-Fried Chicken', 4: 'Rolled Carrot Omelette',
5: 'Steak Bowl', 6: 'The Carne-val', 7: 'Double Energy Combo',
},
11: {
1: 'Paper', 2: 'Notebook', 3: 'Chair and Desk', 4: 'Choice Wooden Barrel', 5: 'Filing Cabinet',
},
12: {
1: 'Charcoal Brush', 2: 'Cable', 3: 'Nails', 4: 'Chemicals', 5: 'Gunpowder', 6: 'Utensils',
},
13: {
1: 'Ink Cartridge', 2: 'Clock', 3: 'Battery', 4: 'Water Filter',
},
14: {
1: 'Autumn Bouquet', 2: 'Peanut Oil', 3: 'Cloth', 4: 'Leather', 5: 'Rope', 6: 'Gloves',
7: 'Aroma Sachet', 8: 'Shoes', 9: 'Wound Dressings',
},
15: {
1: 'Omelette', 2: 'Iced Coffee', 3: 'Cheese', 4: 'Latte', 5: 'Citrus Coffee',
6: 'Strawberry Milkshake', 7: 'Morning Light Energy Combo', 8: 'The Wake-Up Call', 9: 'Fruity & Fruitier',
},
}
if server.server == 'cn':
name_to_slot = __name_to_slot_cn
items_data = __items_data_cn
elif server.server == 'en':
name_to_slot = __name_to_slot_en
items_data = __items_data_en
else:
name_to_slot = __name_to_slot_cn
items_data = __items_data_cn

View File

@@ -49,8 +49,8 @@ GUILD_CHECK = Button(area={'cn': (121, 15, 199, 39), 'en': (121, 15, 196, 39), '
IDLE = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (158, 159, 167), 'en': (158, 159, 167), 'jp': (158, 159, 167), 'tw': (158, 159, 167)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE.png', 'en': './assets/en/ui/IDLE.png', 'jp': './assets/jp/ui/IDLE.png', 'tw': './assets/tw/ui/IDLE.png'}) IDLE = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (158, 159, 167), 'en': (158, 159, 167), 'jp': (158, 159, 167), 'tw': (158, 159, 167)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE.png', 'en': './assets/en/ui/IDLE.png', 'jp': './assets/jp/ui/IDLE.png', 'tw': './assets/tw/ui/IDLE.png'})
IDLE_2 = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (173, 178, 186), 'en': (173, 178, 186), 'jp': (173, 178, 186), 'tw': (173, 178, 186)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE_2.png', 'en': './assets/cn/ui/IDLE_2.png', 'jp': './assets/cn/ui/IDLE_2.png', 'tw': './assets/cn/ui/IDLE_2.png'}) IDLE_2 = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (173, 178, 186), 'en': (173, 178, 186), 'jp': (173, 178, 186), 'tw': (173, 178, 186)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE_2.png', 'en': './assets/cn/ui/IDLE_2.png', 'jp': './assets/cn/ui/IDLE_2.png', 'tw': './assets/cn/ui/IDLE_2.png'})
IDLE_3 = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (185, 183, 182), 'en': (185, 183, 182), 'jp': (185, 183, 182), 'tw': (185, 183, 182)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE_3.png', 'en': './assets/cn/ui/IDLE_3.png', 'jp': './assets/cn/ui/IDLE_3.png', 'tw': './assets/cn/ui/IDLE_3.png'}) IDLE_3 = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (185, 183, 182), 'en': (185, 183, 182), 'jp': (185, 183, 182), 'tw': (185, 183, 182)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE_3.png', 'en': './assets/cn/ui/IDLE_3.png', 'jp': './assets/cn/ui/IDLE_3.png', 'tw': './assets/cn/ui/IDLE_3.png'})
ISLAND_CHECK = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (191, 192, 190), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_CHECK.png', 'en': './assets/cn/ui/ISLAND_CHECK.png', 'jp': './assets/cn/ui/ISLAND_CHECK.png', 'tw': './assets/cn/ui/ISLAND_CHECK.png'}) ISLAND_CHECK = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (187, 188, 188), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_CHECK.png', 'en': './assets/en/ui/ISLAND_CHECK.png', 'jp': './assets/cn/ui/ISLAND_CHECK.png', 'tw': './assets/cn/ui/ISLAND_CHECK.png'})
ISLAND_GOTO_ISLAND_PHONE = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (191, 192, 190), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'en': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png'}) ISLAND_GOTO_ISLAND_PHONE = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (24, 0, 0), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'en': './assets/en/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png'})
ISLAND_PHONE_CHECK = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'en': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'jp': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_PHONE_CHECK.png'}) ISLAND_PHONE_CHECK = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'en': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'jp': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_PHONE_CHECK.png'})
ISLAND_PHONE_GOTO_ISLAND = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (16, 8, 80, 72), 'en': (16, 8, 80, 72), 'jp': (16, 8, 80, 72), 'tw': (16, 8, 80, 72)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png'}) ISLAND_PHONE_GOTO_ISLAND = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (16, 8, 80, 72), 'en': (16, 8, 80, 72), 'jp': (16, 8, 80, 72), 'tw': (16, 8, 80, 72)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png'})
ISLAND_PHONE_GOTO_MAIN = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png'}) ISLAND_PHONE_GOTO_MAIN = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png'})