mirror of
https://github.com/W1NDes/M-AzurLaneAutoScript.git
synced 2026-05-14 04:08:09 +08:00
feat(Oilkeep): 添加石油平衡功能
- 实现每日领取储藏室石油的功能
This commit is contained in:
parent
dcb7912e93
commit
628814c4b6
6
alas.py
6
alas.py
@ -297,7 +297,11 @@ class AzurLaneAutoScript:
|
||||
def reward(self):
|
||||
from module.reward.reward import Reward
|
||||
Reward(config=self.config, device=self.device).run()
|
||||
|
||||
|
||||
def oilkeep(self):
|
||||
from module.oilkeep.oilkeep import Oilkeep
|
||||
Oilkeep(config=self.config, device=self.device).run()
|
||||
|
||||
def shop_frequent(self):
|
||||
from module.shop.shop_reward import RewardShop
|
||||
RewardShop(config=self.config, device=self.device).run_frequent()
|
||||
|
||||
BIN
assets/cn/oilkeep/MAIL_OIL.png
Normal file
BIN
assets/cn/oilkeep/MAIL_OIL.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
BIN
assets/cn/oilkeep/MAIL_OIL_ADD.png
Normal file
BIN
assets/cn/oilkeep/MAIL_OIL_ADD.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
BIN
assets/cn/oilkeep/MAIL_OIL_GET.png
Normal file
BIN
assets/cn/oilkeep/MAIL_OIL_GET.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.9 KiB |
BIN
assets/cn/oilkeep/MAIL_OIL_GET_ENSURE.png
Normal file
BIN
assets/cn/oilkeep/MAIL_OIL_GET_ENSURE.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
@ -1687,6 +1687,22 @@
|
||||
"Storage": {}
|
||||
}
|
||||
},
|
||||
"Oilkeep": {
|
||||
"Scheduler": {
|
||||
"Enable": false,
|
||||
"NextRun": "2020-01-01 00:00:00",
|
||||
"Command": "Oilkeep",
|
||||
"SuccessInterval": 30,
|
||||
"FailureInterval": 30,
|
||||
"ServerUpdate": "00:00, 6:00, 12:00, 18:00"
|
||||
},
|
||||
"Oilkeep": {
|
||||
"OilkeepLevel": "8000"
|
||||
},
|
||||
"Storage": {
|
||||
"Storage": {}
|
||||
}
|
||||
},
|
||||
"Minigame": {
|
||||
"Scheduler": {
|
||||
"Enable": false,
|
||||
|
||||
@ -17,8 +17,8 @@ OCR_COIN_LIMIT = Button(area={'cn': (807, 0, 944, 19), 'en': (807, 0, 944, 19),
|
||||
OCR_EVENT_PT = Button(area={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, color={'cn': (121, 110, 59), 'en': (88, 78, 51), 'jp': (121, 110, 59), 'tw': (121, 110, 59)}, button={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, file={'cn': './assets/cn/campaign/OCR_EVENT_PT.png', 'en': './assets/en/campaign/OCR_EVENT_PT.png', 'jp': './assets/jp/campaign/OCR_EVENT_PT.png', 'tw': './assets/tw/campaign/OCR_EVENT_PT.png'})
|
||||
OCR_GEM = Button(area={'cn': (1024, 23, 1137, 51), 'en': (1024, 23, 1137, 51), 'jp': (1024, 23, 1137, 51), 'tw': (1024, 23, 1137, 51)}, color={'cn': (102, 102, 100), 'en': (102, 102, 100), 'jp': (102, 102, 100), 'tw': (102, 102, 100)}, button={'cn': (1024, 23, 1137, 51), 'en': (1024, 23, 1137, 51), 'jp': (1024, 23, 1137, 51), 'tw': (1024, 23, 1137, 51)}, file={'cn': './assets/cn/campaign/OCR_GEM.png', 'en': './assets/cn/campaign/OCR_GEM.png', 'jp': './assets/cn/campaign/OCR_GEM.png', 'tw': './assets/cn/campaign/OCR_GEM.png'})
|
||||
OCR_OIL = Button(area={'cn': (614, 23, 714, 51), 'en': (614, 23, 714, 51), 'jp': (614, 23, 714, 51), 'tw': (614, 23, 714, 51)}, color={'cn': (64, 65, 79), 'en': (64, 65, 79), 'jp': (64, 65, 79), 'tw': (64, 65, 79)}, button={'cn': (614, 23, 714, 51), 'en': (614, 23, 714, 51), 'jp': (614, 23, 714, 51), 'tw': (614, 23, 714, 51)}, file={'cn': './assets/cn/campaign/OCR_OIL.png', 'en': './assets/en/campaign/OCR_OIL.png', 'jp': './assets/jp/campaign/OCR_OIL.png', 'tw': './assets/tw/campaign/OCR_OIL.png'})
|
||||
OCR_OIL_LIMIT = Button(area={'cn': (608, 0, 736, 19), 'en': (608, 0, 736, 19), 'jp': (608, 0, 736, 19), 'tw': (608, 0, 736, 19)}, color={'cn': (202, 202, 202), 'en': (202, 202, 202), 'jp': (202, 202, 202), 'tw': (202, 202, 202)}, button={'cn': (608, 0, 736, 19), 'en': (608, 0, 736, 19), 'jp': (608, 0, 736, 19), 'tw': (608, 0, 736, 19)}, file={'cn': './assets/cn/campaign/OCR_OIL_LIMIT.png', 'en': './assets/en/campaign/OCR_OIL_LIMIT.png', 'jp': './assets/jp/campaign/OCR_OIL_LIMIT.png', 'tw': './assets/tw/campaign/OCR_OIL_LIMIT.png'})
|
||||
OCR_OIL_CHECK = Button(area={'cn': (573, 30, 592, 49), 'en': (573, 30, 592, 49), 'jp': (573, 30, 592, 49), 'tw': (573, 30, 592, 49)}, color={'cn': (82, 82, 82), 'en': (82, 82, 82), 'jp': (82, 82, 82), 'tw': (82, 82, 82)}, button={'cn': (573, 30, 592, 49), 'en': (573, 30, 592, 49), 'jp': (573, 30, 592, 49), 'tw': (573, 30, 592, 49)}, file={'cn': './assets/cn/campaign/OCR_OIL_CHECK.png', 'en': './assets/en/campaign/OCR_OIL_CHECK.png', 'jp': './assets/jp/campaign/OCR_OIL_CHECK.png', 'tw': './assets/tw/campaign/OCR_OIL_CHECK.png'})
|
||||
OCR_OIL_LIMIT = Button(area={'cn': (608, 0, 736, 19), 'en': (608, 0, 736, 19), 'jp': (608, 0, 736, 19), 'tw': (608, 0, 736, 19)}, color={'cn': (202, 202, 202), 'en': (202, 202, 202), 'jp': (202, 202, 202), 'tw': (202, 202, 202)}, button={'cn': (608, 0, 736, 19), 'en': (608, 0, 736, 19), 'jp': (608, 0, 736, 19), 'tw': (608, 0, 736, 19)}, file={'cn': './assets/cn/campaign/OCR_OIL_LIMIT.png', 'en': './assets/en/campaign/OCR_OIL_LIMIT.png', 'jp': './assets/jp/campaign/OCR_OIL_LIMIT.png', 'tw': './assets/tw/campaign/OCR_OIL_LIMIT.png'})
|
||||
SWITCH_1_HARD = Button(area={'cn': (82, 641, 148, 675), 'en': (87, 642, 148, 676), 'jp': (24, 645, 150, 697), 'tw': (82, 641, 148, 675)}, color={'cn': (233, 141, 128), 'en': (234, 139, 124), 'jp': (219, 116, 106), 'tw': (236, 159, 148)}, button={'cn': (82, 641, 148, 675), 'en': (87, 642, 148, 676), 'jp': (24, 645, 150, 697), 'tw': (82, 641, 148, 675)}, file={'cn': './assets/cn/campaign/SWITCH_1_HARD.png', 'en': './assets/en/campaign/SWITCH_1_HARD.png', 'jp': './assets/jp/campaign/SWITCH_1_HARD.png', 'tw': './assets/tw/campaign/SWITCH_1_HARD.png'})
|
||||
SWITCH_1_NORMAL = Button(area={'cn': (80, 641, 148, 675), 'en': (79, 638, 147, 675), 'jp': (24, 644, 150, 697), 'tw': (79, 641, 148, 675)}, color={'cn': (157, 180, 227), 'en': (157, 180, 227), 'jp': (143, 169, 222), 'tw': (156, 179, 227)}, button={'cn': (80, 641, 148, 675), 'en': (79, 638, 147, 675), 'jp': (24, 644, 150, 697), 'tw': (79, 641, 148, 675)}, file={'cn': './assets/cn/campaign/SWITCH_1_NORMAL.png', 'en': './assets/en/campaign/SWITCH_1_NORMAL.png', 'jp': './assets/jp/campaign/SWITCH_1_NORMAL.png', 'tw': './assets/tw/campaign/SWITCH_1_NORMAL.png'})
|
||||
SWITCH_20241219_COMBAT = Button(area={'cn': (39, 659, 71, 691), 'en': (39, 659, 71, 691), 'jp': (39, 659, 71, 691), 'tw': (39, 659, 71, 691)}, color={'cn': (133, 96, 49), 'en': (133, 96, 49), 'jp': (133, 96, 49), 'tw': (133, 96, 49)}, button={'cn': (39, 659, 71, 691), 'en': (39, 659, 71, 691), 'jp': (39, 659, 71, 691), 'tw': (39, 659, 71, 691)}, file={'cn': './assets/cn/campaign/SWITCH_20241219_COMBAT.png', 'en': './assets/cn/campaign/SWITCH_20241219_COMBAT.png', 'jp': './assets/cn/campaign/SWITCH_20241219_COMBAT.png', 'tw': './assets/cn/campaign/SWITCH_20241219_COMBAT.png'})
|
||||
|
||||
@ -8877,6 +8877,57 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Oilkeep": {
|
||||
"Scheduler": {
|
||||
"Enable": {
|
||||
"type": "checkbox",
|
||||
"value": false,
|
||||
"option": [
|
||||
true,
|
||||
false
|
||||
]
|
||||
},
|
||||
"NextRun": {
|
||||
"type": "datetime",
|
||||
"value": "2020-01-01 00:00:00",
|
||||
"validate": "datetime"
|
||||
},
|
||||
"Command": {
|
||||
"type": "input",
|
||||
"value": "Oilkeep",
|
||||
"display": "hide"
|
||||
},
|
||||
"SuccessInterval": {
|
||||
"type": "input",
|
||||
"value": 30,
|
||||
"display": "hide"
|
||||
},
|
||||
"FailureInterval": {
|
||||
"type": "input",
|
||||
"value": 30,
|
||||
"display": "hide"
|
||||
},
|
||||
"ServerUpdate": {
|
||||
"type": "input",
|
||||
"value": "00:00, 6:00, 12:00, 18:00",
|
||||
"display": "hide"
|
||||
}
|
||||
},
|
||||
"Oilkeep": {
|
||||
"OilkeepLevel": {
|
||||
"type": "input",
|
||||
"value": "8000"
|
||||
}
|
||||
},
|
||||
"Storage": {
|
||||
"Storage": {
|
||||
"type": "storage",
|
||||
"value": {},
|
||||
"valuetype": "ignore",
|
||||
"display": "disabled"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Minigame": {
|
||||
"Scheduler": {
|
||||
"Enable": {
|
||||
|
||||
@ -628,6 +628,9 @@ SupplyPack:
|
||||
option: [ 0, 1, 2, 3, 4, 5, 6 ]
|
||||
Minigame:
|
||||
Collect: false
|
||||
|
||||
Oilkeep:
|
||||
OilkeepLevel: 8000
|
||||
# ==================== Daily ====================
|
||||
|
||||
Daily:
|
||||
|
||||
@ -55,7 +55,8 @@
|
||||
"Dorm",
|
||||
"Meowfficer",
|
||||
"Guild",
|
||||
"Reward"
|
||||
"Reward",
|
||||
"Oilkeep"
|
||||
]
|
||||
},
|
||||
"DailyMission": {
|
||||
|
||||
@ -226,6 +226,9 @@ Reward:
|
||||
Reward:
|
||||
- Scheduler
|
||||
- Reward
|
||||
Oilkeep:
|
||||
- Scheduler
|
||||
- Oilkeep
|
||||
|
||||
# ==================== DailyMission ====================
|
||||
|
||||
|
||||
@ -387,7 +387,10 @@ class GeneratedConfig:
|
||||
# Group `SupplyPack`
|
||||
SupplyPack_Collect = True
|
||||
SupplyPack_DayOfWeek = 0 # 0, 1, 2, 3, 4, 5, 6
|
||||
|
||||
|
||||
# Group `Oilkeep`
|
||||
Oilkeep_OilkeepLevel = 8000
|
||||
|
||||
# Group `Minigame`
|
||||
Minigame_Collect = False
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ class ManualConfig:
|
||||
> Exercise
|
||||
> Dorm > Meowfficer > Guild > Gacha
|
||||
> Reward
|
||||
> ShopFrequent > ShopOnce > Shipyard > Freebies > Minigame
|
||||
> ShopFrequent > ShopOnce > Shipyard > Freebies > Oilkeep > Minigame
|
||||
> OpsiExplore
|
||||
> OpsiAshBeacon
|
||||
> OpsiDaily > OpsiShop > OpsiVoucher
|
||||
|
||||
@ -154,6 +154,10 @@
|
||||
"name": "每日任务",
|
||||
"help": ""
|
||||
},
|
||||
"Oilkeep": {
|
||||
"name": "石油平衡",
|
||||
"help": ""
|
||||
},
|
||||
"Hard": {
|
||||
"name": "困难图",
|
||||
"help": ""
|
||||
@ -2349,6 +2353,16 @@
|
||||
"6": "6"
|
||||
}
|
||||
},
|
||||
"Oilkeep": {
|
||||
"_info": {
|
||||
"name": "石油平衡",
|
||||
"help": "每天领取4次储藏室的石油以稳定石油量"
|
||||
},
|
||||
"OilkeepLevel": {
|
||||
"name": "石油平衡值",
|
||||
"help": "默认为8000,即石油量小于7900的时候会领取石油至7900"
|
||||
}
|
||||
},
|
||||
"Hard": {
|
||||
"_info": {
|
||||
"name": "困难图",
|
||||
|
||||
@ -45,7 +45,7 @@ INFO_BAR_AREA = Button(area={'cn': (200, 173, 1080, 348), 'en': (200, 173, 1080,
|
||||
INFO_BAR_DETECT = Button(area={'cn': (194, 299, 1086, 348), 'en': (194, 299, 1086, 348), 'jp': (194, 299, 1086, 348), 'tw': (194, 299, 1086, 348)}, color={'cn': (48, 53, 65), 'en': (48, 53, 65), 'jp': (48, 53, 65), 'tw': (48, 53, 65)}, button={'cn': (194, 299, 1086, 348), 'en': (194, 299, 1086, 348), 'jp': (194, 299, 1086, 348), 'tw': (194, 299, 1086, 348)}, file={'cn': './assets/cn/handler/INFO_BAR_DETECT.png', 'en': './assets/en/handler/INFO_BAR_DETECT.png', 'jp': './assets/jp/handler/INFO_BAR_DETECT.png', 'tw': './assets/tw/handler/INFO_BAR_DETECT.png'})
|
||||
IN_MAP = Button(area={'cn': (749, 654, 921, 707), 'en': (757, 654, 917, 699), 'jp': (748, 653, 919, 705), 'tw': (749, 654, 921, 707)}, color={'cn': (213, 124, 124), 'en': (215, 132, 132), 'jp': (212, 124, 124), 'tw': (213, 124, 124)}, button={'cn': (749, 654, 921, 707), 'en': (757, 654, 917, 699), 'jp': (748, 653, 919, 705), 'tw': (749, 654, 921, 707)}, file={'cn': './assets/cn/handler/IN_MAP.png', 'en': './assets/en/handler/IN_MAP.png', 'jp': './assets/jp/handler/IN_MAP.png', 'tw': './assets/tw/handler/IN_MAP.png'})
|
||||
IN_STAGE = Button(area={'cn': (122, 16, 172, 39), 'en': (120, 18, 208, 40), 'jp': (121, 15, 174, 40), 'tw': (122, 16, 172, 39)}, color={'cn': (149, 167, 207), 'en': (104, 118, 157), 'jp': (151, 167, 205), 'tw': (149, 167, 207)}, button={'cn': (122, 16, 172, 39), 'en': (120, 18, 208, 40), 'jp': (121, 15, 174, 40), 'tw': (122, 16, 172, 39)}, file={'cn': './assets/cn/handler/IN_STAGE.png', 'en': './assets/en/handler/IN_STAGE.png', 'jp': './assets/jp/handler/IN_STAGE.png', 'tw': './assets/tw/handler/IN_STAGE.png'})
|
||||
LOGIN_ANNOUNCE = Button(area={'cn': (1160, 45, 1227, 90), 'en': (1159, 44, 1228, 91), 'jp': (1160, 46, 1224, 86), 'tw': (1160, 45, 1227, 90)}, color={'cn': (174, 61, 56), 'en': (193, 79, 73), 'jp': (191, 79, 74), 'tw': (174, 61, 56)}, button={'cn': (1160, 61, 1190, 90), 'en': (1160, 61, 1190, 90), 'jp': (1160, 61, 1190, 90), 'tw': (1160, 61, 1190, 90)}, file={'cn': './assets/cn/handler/LOGIN_ANNOUNCE.png', 'en': './assets/en/handler/LOGIN_ANNOUNCE.png', 'jp': './assets/jp/handler/LOGIN_ANNOUNCE.png', 'tw': './assets/tw/handler/LOGIN_ANNOUNCE.png'})
|
||||
LOGIN_ANNOUNCE = Button(area={'cn': (1192, 81, 1224, 113), 'en': (1159, 44, 1228, 91), 'jp': (1160, 46, 1224, 86), 'tw': (1160, 45, 1227, 90)}, color={'cn': (182, 196, 199), 'en': (193, 79, 73), 'jp': (191, 79, 74), 'tw': (174, 61, 56)}, button={'cn': (1192, 81, 1224, 113), 'en': (1160, 61, 1190, 90), 'jp': (1160, 61, 1190, 90), 'tw': (1160, 61, 1190, 90)}, file={'cn': './assets/cn/handler/LOGIN_ANNOUNCE.png', 'en': './assets/en/handler/LOGIN_ANNOUNCE.png', 'jp': './assets/jp/handler/LOGIN_ANNOUNCE.png', 'tw': './assets/tw/handler/LOGIN_ANNOUNCE.png'})
|
||||
LOGIN_ANNOUNCE_2 = Button(area={'cn': (1193, 83, 1215, 105), 'en': (1193, 83, 1215, 105), 'jp': (1193, 83, 1215, 105), 'tw': (1193, 83, 1215, 105)}, color={'cn': (158, 170, 175), 'en': (158, 170, 175), 'jp': (158, 170, 175), 'tw': (158, 170, 175)}, button={'cn': (1171, 83, 1193, 105), 'en': (1171, 83, 1193, 105), 'jp': (1171, 83, 1193, 105), 'tw': (1171, 83, 1193, 105)}, file={'cn': './assets/cn/handler/LOGIN_ANNOUNCE_2.png', 'en': './assets/en/handler/LOGIN_ANNOUNCE_2.png', 'jp': './assets/jp/handler/LOGIN_ANNOUNCE_2.png', 'tw': './assets/tw/handler/LOGIN_ANNOUNCE_2.png'})
|
||||
LOGIN_CHECK = Button(area={'cn': (1214, 653, 1268, 709), 'en': (1214, 653, 1268, 709), 'jp': (1214, 653, 1268, 709), 'tw': (1214, 653, 1268, 709)}, color={'cn': (203, 215, 230), 'en': (203, 215, 230), 'jp': (203, 215, 230), 'tw': (203, 215, 230)}, button={'cn': (416, 294, 534, 400), 'en': (1078, 591, 1168, 635), 'jp': (416, 294, 534, 400), 'tw': (416, 294, 534, 400)}, file={'cn': './assets/cn/handler/LOGIN_CHECK.png', 'en': './assets/en/handler/LOGIN_CHECK.png', 'jp': './assets/jp/handler/LOGIN_CHECK.png', 'tw': './assets/tw/handler/LOGIN_CHECK.png'})
|
||||
LOGIN_GAME_UPDATE = Button(area={'cn': (700, 471, 873, 529), 'en': (726, 474, 850, 519), 'jp': (704, 475, 867, 525), 'tw': (706, 477, 866, 528)}, color={'cn': (238, 170, 78), 'en': (241, 169, 73), 'jp': (234, 167, 77), 'tw': (235, 169, 80)}, button={'cn': (700, 471, 873, 529), 'en': (726, 474, 850, 519), 'jp': (704, 475, 867, 525), 'tw': (706, 477, 866, 528)}, file={'cn': './assets/cn/handler/LOGIN_GAME_UPDATE.png', 'en': './assets/en/handler/LOGIN_GAME_UPDATE.png', 'jp': './assets/jp/handler/LOGIN_GAME_UPDATE.png', 'tw': './assets/tw/handler/LOGIN_GAME_UPDATE.png'})
|
||||
@ -71,7 +71,6 @@ MOB_MOVE_CANCEL = Button(area={'cn': (1162, 646, 1220, 674), 'en': (1112, 646, 1
|
||||
MOB_MOVE_ENTER = Button(area={'cn': (1102, 504, 1157, 578), 'en': (1102, 504, 1157, 578), 'jp': (1102, 504, 1157, 578), 'tw': (1102, 504, 1157, 578)}, color={'cn': (122, 124, 131), 'en': (122, 124, 131), 'jp': (122, 124, 131), 'tw': (122, 124, 131)}, button={'cn': (1102, 504, 1157, 578), 'en': (1102, 504, 1157, 578), 'jp': (1102, 504, 1157, 578), 'tw': (1102, 504, 1157, 578)}, file={'cn': './assets/cn/handler/MOB_MOVE_ENTER.png', 'en': './assets/en/handler/MOB_MOVE_ENTER.png', 'jp': './assets/jp/handler/MOB_MOVE_ENTER.png', 'tw': './assets/tw/handler/MOB_MOVE_ENTER.png'})
|
||||
MONTHLY_PASS_NOTICE = Button(area={'cn': (554, 505, 726, 561), 'en': (716, 488, 869, 533), 'jp': (554, 505, 726, 561), 'tw': (554, 505, 726, 561)}, color={'cn': (109, 153, 208), 'en': (89, 138, 201), 'jp': (109, 153, 208), 'tw': (109, 153, 208)}, button={'cn': (872, 152, 939, 196), 'en': (863, 173, 929, 217), 'jp': (872, 152, 939, 196), 'tw': (872, 152, 939, 196)}, file={'cn': './assets/cn/handler/MONTHLY_PASS_NOTICE.png', 'en': './assets/en/handler/MONTHLY_PASS_NOTICE.png', 'jp': './assets/cn/handler/MONTHLY_PASS_NOTICE.png', 'tw': './assets/cn/handler/MONTHLY_PASS_NOTICE.png'})
|
||||
MYSTERY_ITEM = Button(area={'cn': (589, 294, 691, 427), 'en': (589, 294, 691, 427), 'jp': (589, 294, 691, 427), 'tw': (589, 294, 691, 427)}, color={'cn': (144, 127, 83), 'en': (144, 127, 83), 'jp': (144, 127, 83), 'tw': (144, 127, 83)}, button={'cn': (588, 478, 698, 496), 'en': (588, 478, 698, 496), 'jp': (588, 478, 698, 496), 'tw': (588, 478, 698, 496)}, file={'cn': './assets/cn/handler/MYSTERY_ITEM.png', 'en': './assets/en/handler/MYSTERY_ITEM.png', 'jp': './assets/jp/handler/MYSTERY_ITEM.png', 'tw': './assets/tw/handler/MYSTERY_ITEM.png'})
|
||||
otherlogin = Button(area={'cn': (568, 333, 715, 356), 'en': (370, 340, 905, 354), 'jp': (472, 334, 640, 357), 'tw': (568, 333, 715, 356)}, color={'cn': (144, 149, 154), 'en': (180, 183, 186), 'jp': (151, 155, 159), 'tw': (144, 149, 154)}, button={'cn': (568, 333, 715, 356), 'en': (370, 340, 905, 354), 'jp': (472, 334, 640, 357), 'tw': (568, 333, 715, 356)}, file={'cn': './assets/cn/handler/otherlogin.png', 'en': './assets/en/handler/otherlogin.png', 'jp': './assets/jp/handler/otherlogin.png', 'tw': './assets/cn/handler/otherlogin.png'})
|
||||
POPUP_CANCEL = Button(area={'cn': (453, 506, 525, 536), 'en': (407, 485, 574, 535), 'jp': (455, 515, 521, 546), 'tw': (454, 495, 525, 526)}, color={'cn': (196, 198, 199), 'en': (168, 169, 171), 'jp': (181, 183, 184), 'tw': (195, 196, 197)}, button={'cn': (453, 506, 525, 536), 'en': (407, 485, 574, 535), 'jp': (455, 515, 521, 546), 'tw': (454, 495, 525, 526)}, file={'cn': './assets/cn/handler/POPUP_CANCEL.png', 'en': './assets/en/handler/POPUP_CANCEL.gif', 'jp': './assets/jp/handler/POPUP_CANCEL.png', 'tw': './assets/tw/handler/POPUP_CANCEL.png'})
|
||||
POPUP_CONFIRM = Button(area={'cn': (754, 502, 825, 532), 'en': (707, 487, 874, 537), 'jp': (754, 518, 826, 547), 'tw': (754, 495, 825, 525)}, color={'cn': (153, 183, 222), 'en': (105, 151, 207), 'jp': (139, 172, 215), 'tw': (147, 178, 218)}, button={'cn': (754, 502, 825, 532), 'en': (707, 487, 874, 537), 'jp': (754, 518, 826, 547), 'tw': (754, 495, 825, 525)}, file={'cn': './assets/cn/handler/POPUP_CONFIRM.png', 'en': './assets/en/handler/POPUP_CONFIRM.gif', 'jp': './assets/jp/handler/POPUP_CONFIRM.png', 'tw': './assets/tw/handler/POPUP_CONFIRM.png'})
|
||||
STORY_CLOSE = Button(area={'cn': (1227, 28, 1252, 53), 'en': (1227, 28, 1252, 53), 'jp': (1227, 28, 1252, 53), 'tw': (1227, 28, 1252, 53)}, color={'cn': (87, 90, 104), 'en': (87, 90, 104), 'jp': (87, 90, 104), 'tw': (87, 90, 104)}, button={'cn': (1227, 28, 1252, 53), 'en': (1227, 28, 1252, 53), 'jp': (1227, 28, 1252, 53), 'tw': (1227, 28, 1252, 53)}, file={'cn': './assets/cn/handler/STORY_CLOSE.png', 'en': './assets/en/handler/STORY_CLOSE.png', 'jp': './assets/jp/handler/STORY_CLOSE.png', 'tw': './assets/tw/handler/STORY_CLOSE.png'})
|
||||
@ -93,3 +92,4 @@ USER_AGREEMENT_CONFIRM = Button(area={'cn': (709, 526, 742, 542), 'en': (709, 52
|
||||
USE_DATA_KEY = Button(area={'cn': (688, 316, 781, 338), 'en': (759, 323, 889, 342), 'jp': (627, 300, 743, 321), 'tw': (688, 316, 782, 338)}, color={'cn': (165, 154, 99), 'en': (170, 160, 94), 'jp': (127, 128, 116), 'tw': (159, 150, 97)}, button={'cn': (688, 316, 781, 338), 'en': (759, 323, 889, 342), 'jp': (627, 300, 743, 321), 'tw': (688, 316, 782, 338)}, file={'cn': './assets/cn/handler/USE_DATA_KEY.png', 'en': './assets/en/handler/USE_DATA_KEY.png', 'jp': './assets/jp/handler/USE_DATA_KEY.png', 'tw': './assets/tw/handler/USE_DATA_KEY.png'})
|
||||
USE_DATA_KEY_NOTIFIED = Button(area={'cn': (770, 434, 793, 456), 'en': (820, 440, 837, 456), 'jp': (686, 430, 709, 456), 'tw': (782, 440, 799, 456)}, color={'cn': (41, 44, 49), 'en': (33, 40, 41), 'jp': (33, 44, 49), 'tw': (34, 40, 48)}, button={'cn': (770, 434, 793, 456), 'en': (820, 440, 837, 456), 'jp': (686, 430, 709, 456), 'tw': (782, 440, 799, 456)}, file={'cn': './assets/cn/handler/USE_DATA_KEY_NOTIFIED.png', 'en': './assets/en/handler/USE_DATA_KEY_NOTIFIED.png', 'jp': './assets/jp/handler/USE_DATA_KEY_NOTIFIED.png', 'tw': './assets/tw/handler/USE_DATA_KEY_NOTIFIED.png'})
|
||||
VOTE_CANCEL = Button(area={'cn': (404, 483, 576, 539), 'en': (413, 489, 566, 532), 'jp': (407, 483, 577, 538), 'tw': (404, 483, 576, 539)}, color={'cn': (167, 169, 171), 'en': (169, 170, 172), 'jp': (163, 164, 166), 'tw': (167, 169, 171)}, button={'cn': (404, 483, 576, 539), 'en': (413, 489, 566, 532), 'jp': (407, 483, 577, 538), 'tw': (404, 483, 576, 539)}, file={'cn': './assets/cn/handler/VOTE_CANCEL.png', 'en': './assets/en/handler/VOTE_CANCEL.png', 'jp': './assets/jp/handler/VOTE_CANCEL.png', 'tw': './assets/cn/handler/VOTE_CANCEL.png'})
|
||||
otherlogin = Button(area={'cn': (568, 333, 715, 356), 'en': (370, 340, 905, 354), 'jp': (472, 334, 640, 357), 'tw': (568, 333, 715, 356)}, color={'cn': (144, 149, 154), 'en': (180, 183, 186), 'jp': (151, 155, 159), 'tw': (144, 149, 154)}, button={'cn': (568, 333, 715, 356), 'en': (370, 340, 905, 354), 'jp': (472, 334, 640, 357), 'tw': (568, 333, 715, 356)}, file={'cn': './assets/cn/handler/otherlogin.png', 'en': './assets/en/handler/otherlogin.png', 'jp': './assets/jp/handler/otherlogin.png', 'tw': './assets/cn/handler/otherlogin.png'})
|
||||
|
||||
10
module/oilkeep/assets.py
Normal file
10
module/oilkeep/assets.py
Normal file
@ -0,0 +1,10 @@
|
||||
from module.base.button import Button
|
||||
from module.base.template import Template
|
||||
|
||||
# This file was automatically generated by dev_tools/button_extract.py.
|
||||
# Don't modify it manually.
|
||||
|
||||
MAIL_OIL = Button(area={'cn': (21, 231, 112, 261), 'en': (21, 231, 112, 261), 'jp': (21, 231, 112, 261), 'tw': (21, 231, 112, 261)}, color={'cn': (77, 82, 99), 'en': (77, 82, 99), 'jp': (77, 82, 99), 'tw': (77, 82, 99)}, button={'cn': (21, 231, 112, 261), 'en': (21, 231, 112, 261), 'jp': (21, 231, 112, 261), 'tw': (21, 231, 112, 261)}, file={'cn': './assets/cn/oilkeep/MAIL_OIL.png', 'en': './assets/cn/oilkeep/MAIL_OIL.png', 'jp': './assets/cn/oilkeep/MAIL_OIL.png', 'tw': './assets/cn/oilkeep/MAIL_OIL.png'})
|
||||
MAIL_OIL_ADD = Button(area={'cn': (542, 452, 591, 496), 'en': (542, 452, 591, 496), 'jp': (542, 452, 591, 496), 'tw': (542, 452, 591, 496)}, color={'cn': (68, 154, 196), 'en': (68, 154, 196), 'jp': (68, 154, 196), 'tw': (68, 154, 196)}, button={'cn': (542, 452, 591, 496), 'en': (542, 452, 591, 496), 'jp': (542, 452, 591, 496), 'tw': (542, 452, 591, 496)}, file={'cn': './assets/cn/oilkeep/MAIL_OIL_ADD.png', 'en': './assets/cn/oilkeep/MAIL_OIL_ADD.png', 'jp': './assets/cn/oilkeep/MAIL_OIL_ADD.png', 'tw': './assets/cn/oilkeep/MAIL_OIL_ADD.png'})
|
||||
MAIL_OIL_GET = Button(area={'cn': (1029, 591, 1158, 652), 'en': (1029, 591, 1158, 652), 'jp': (1029, 591, 1158, 652), 'tw': (1029, 591, 1158, 652)}, color={'cn': (66, 171, 222), 'en': (66, 171, 222), 'jp': (66, 171, 222), 'tw': (66, 171, 222)}, button={'cn': (1029, 591, 1158, 652), 'en': (1029, 591, 1158, 652), 'jp': (1029, 591, 1158, 652), 'tw': (1029, 591, 1158, 652)}, file={'cn': './assets/cn/oilkeep/MAIL_OIL_GET.png', 'en': './assets/cn/oilkeep/MAIL_OIL_GET.png', 'jp': './assets/cn/oilkeep/MAIL_OIL_GET.png', 'tw': './assets/cn/oilkeep/MAIL_OIL_GET.png'})
|
||||
MAIL_OIL_GET_ENSURE = Button(area={'cn': (732, 464, 800, 537), 'en': (732, 464, 800, 537), 'jp': (732, 464, 800, 537), 'tw': (732, 464, 800, 537)}, color={'cn': (108, 204, 251), 'en': (108, 204, 251), 'jp': (108, 204, 251), 'tw': (108, 204, 251)}, button={'cn': (732, 464, 800, 537), 'en': (732, 464, 800, 537), 'jp': (732, 464, 800, 537), 'tw': (732, 464, 800, 537)}, file={'cn': './assets/cn/oilkeep/MAIL_OIL_GET_ENSURE.png', 'en': './assets/cn/oilkeep/MAIL_OIL_GET_ENSURE.png', 'jp': './assets/cn/oilkeep/MAIL_OIL_GET_ENSURE.png', 'tw': './assets/cn/oilkeep/MAIL_OIL_GET_ENSURE.png'})
|
||||
187
module/oilkeep/oilkeep.py
Normal file
187
module/oilkeep/oilkeep.py
Normal file
@ -0,0 +1,187 @@
|
||||
|
||||
from module.logger import logger
|
||||
from module.oilkeep.assets import *
|
||||
from module.ui.ui import UI
|
||||
from module.base.timer import Timer
|
||||
from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2
|
||||
from module.freebies.assets import *
|
||||
from module.logger import logger
|
||||
from module.ui.page import GOTO_MAIN_WHITE, MAIN_GOTO_CAMPAIGN_WHITE, page_mail, page_main, page_main_white
|
||||
from module.ui.ui import UI
|
||||
from module.campaign.assets import OCR_OIL, OCR_OIL_LIMIT, OCR_OIL_CHECK
|
||||
from module.log_res.log_res import LogRes
|
||||
from module.base.utils import color_similar, get_color
|
||||
from module.ocr.ocr import Digit
|
||||
class Oilkeep(UI):
|
||||
def _mail_enter_and_get_oil(self,oilLine,nowOil, skip_first_screenshot=True):
|
||||
"""
|
||||
Returns:
|
||||
int: If having mails
|
||||
|
||||
Page:
|
||||
in: page_main_white or MAIL_MANAGE
|
||||
out: MAIL_BATCH_CLAIM
|
||||
"""
|
||||
logger.info('Mail enter')
|
||||
self.interval_clear([
|
||||
MAIL_MANAGE
|
||||
])
|
||||
timeout = Timer(0.6, count=1)
|
||||
has_mail = False
|
||||
mail_oil_add_count = 0
|
||||
oil_add_need = 0
|
||||
if nowOil < oilLine:
|
||||
oil_add_need = (oilLine - nowOil) // 100
|
||||
logger.info(f'Need oil add count: {oil_add_need} ')
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if self.appear(MAIL_BATCH_CLAIM, offset=(20, 20)):
|
||||
logger.info('Mail entered')
|
||||
return True
|
||||
# if self.appear(MAIL_WHITE_EMPTY, offset=(20, 20)):
|
||||
# logger.info('Mail empty')
|
||||
# return False
|
||||
# if not has_mail and self.appear(GOTO_MAIN_WHITE, offset=(20, 20)):
|
||||
# timeout.start()
|
||||
# if timeout.reached():
|
||||
# logger.info('Mail empty, wait GOTO_MAIN_WHITE timeout')
|
||||
# return False
|
||||
|
||||
# Click
|
||||
if self.appear_then_click(MAIL_OIL, offset=(30, 30), interval=3):
|
||||
logger.info('MAIL_OIL entered')
|
||||
continue
|
||||
if mail_oil_add_count <= oil_add_need-1 and self.appear_then_click(MAIL_OIL_ADD, offset=(30, 30), interval=3):
|
||||
mail_oil_add_count += 1
|
||||
logger.info('MAIL_OIL_ADD')
|
||||
continue
|
||||
if mail_oil_add_count >= oil_add_need:
|
||||
if self.appear_then_click(MAIL_OIL_GET, offset=(30, 30), interval=3):
|
||||
logger.info('MAIL_OIL_GET')
|
||||
|
||||
if self.appear_then_click(MAIL_OIL_GET_ENSURE, offset=(30, 30), interval=3):
|
||||
logger.info('MAIL_OIL_GET_ENSURE')
|
||||
break
|
||||
if self.ui_main_appear_then_click(page_mail, offset=(30, 30), interval=3):
|
||||
continue
|
||||
return False
|
||||
|
||||
def _mail_quit(self, skip_first_screenshot=True):
|
||||
"""
|
||||
Page:
|
||||
in: Any page in page_mail
|
||||
out: page_main_white
|
||||
"""
|
||||
logger.info('Mail quit')
|
||||
self.interval_clear([
|
||||
MAIL_BATCH_CLAIM,
|
||||
GOTO_MAIN_WHITE,
|
||||
GET_ITEMS_1,
|
||||
GET_ITEMS_2,
|
||||
])
|
||||
self.popup_interval_clear()
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if self.ui_page_appear(page_main):
|
||||
logger.info('Mail quit to page_main')
|
||||
break
|
||||
|
||||
# Click
|
||||
if self.handle_popup_confirm('MAIL_QUIT'):
|
||||
continue
|
||||
if self.appear(MAIL_BATCH_CLAIM, offset=(30, 30), interval=3):
|
||||
logger.info(f'{MAIL_BATCH_CLAIM} -> {MAIL_MANAGE}')
|
||||
self.device.click(MAIL_MANAGE)
|
||||
continue
|
||||
if self.appear_then_click(GOTO_MAIN_WHITE, offset=(30, 30), interval=3):
|
||||
continue
|
||||
|
||||
def _get_num(self, _button, name):
|
||||
# Update offset
|
||||
_ = self.appear(OCR_OIL_CHECK)
|
||||
|
||||
color = get_color(self.device.image, OCR_OIL_CHECK.button)
|
||||
if color_similar(color, OCR_OIL_CHECK.color):
|
||||
# Original color
|
||||
ocr = Digit(_button, name=name, letter=(247, 247, 247), threshold=128)
|
||||
elif color_similar(color, (59, 59, 64)):
|
||||
# With black overlay
|
||||
ocr = Digit(_button, name=name, letter=(165, 165, 165), threshold=128)
|
||||
else:
|
||||
logger.warning(f'Unexpected OCR_OIL_CHECK color')
|
||||
ocr = Digit(_button, name=name, letter=(247, 247, 247), threshold=128)
|
||||
|
||||
return ocr.ocr(self.device.image)
|
||||
|
||||
def get_oil(self, skip_first_screenshot=True, update=False):
|
||||
"""
|
||||
Returns:
|
||||
int: Oil amount
|
||||
"""
|
||||
_oil = {}
|
||||
timeout = Timer(1, count=2).start()
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
if not self.appear(OCR_OIL_CHECK, offset=(10, 2)):
|
||||
logger.info('No oil icon')
|
||||
self.device.sleep(2)
|
||||
|
||||
if timeout.reached():
|
||||
logger.warning('Get oil timeout')
|
||||
break
|
||||
|
||||
_oil = {
|
||||
'Value': self._get_num(OCR_OIL, 'OCR_OIL'),
|
||||
'Limit': self._get_num(OCR_OIL_LIMIT, 'OCR_OIL_LIMIT')
|
||||
}
|
||||
if _oil['Value'] >= 100:
|
||||
break
|
||||
LogRes(self.config).Oil = _oil
|
||||
if update:
|
||||
self.config.update()
|
||||
|
||||
return _oil['Value']
|
||||
def update_oil(self):
|
||||
self.ui_ensure(page_main)
|
||||
if self.appear_then_click(MAIN_GOTO_CAMPAIGN_WHITE, offset=(30, 30), interval=3):
|
||||
logger.info('MAIN_GOTO_CAMPAIGN_WHITE')
|
||||
oilOcr = self.get_oil()
|
||||
logger.info(f'Oil now: {oilOcr}')
|
||||
self.ui_ensure(page_main)
|
||||
return oilOcr
|
||||
|
||||
def pageCheck(self):
|
||||
self.ui_ensure(page_main)
|
||||
if self.appear(page_main_white.check_button, offset=(30, 30)):
|
||||
logger.info('pageCheck: At page_main_white')
|
||||
return True
|
||||
elif self.appear(page_main.check_button, offset=(5, 5)):
|
||||
logger.warning('At page_main, cannot enter mail page from old UI')
|
||||
return False
|
||||
else:
|
||||
logger.warning('Unknown page_main, cannot enter mail page')
|
||||
return False
|
||||
|
||||
def run(self):
|
||||
logger.hr('Oil Keep', level=1)
|
||||
OilkeepLine = self.config.Oilkeep_OilkeepLevel
|
||||
oilOcrNow = self.update_oil()
|
||||
if self.pageCheck() is True and oilOcrNow != 0 and oilOcrNow < OilkeepLine -100:
|
||||
self._mail_enter_and_get_oil(OilkeepLine, oilOcrNow)
|
||||
self._mail_quit()
|
||||
self.update_oil()
|
||||
self.config.task_delay(server_update=True)
|
||||
Loading…
x
Reference in New Issue
Block a user