mirror of
https://github.com/LmeSzinc/StarRailCopilot.git
synced 2024-11-26 18:20:42 +00:00
Add: 适配B2B3,D2D3
- 修复超大地图时location2node出错 - 增加走路出错时, 重新定位相机 - 调整CD图的透视识别参数 - 修复开荒时每战过后重新定位相机的多余操作
This commit is contained in:
parent
7f27a7a729
commit
d75930cda2
BIN
assets/template/TEMPLATE_SIREN_Vauquelin.png
Normal file
BIN
assets/template/TEMPLATE_SIREN_Vauquelin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
43
campaign/event_20200521_cn/b2.py
Normal file
43
campaign/event_20200521_cn/b2.py
Normal file
@ -0,0 +1,43 @@
|
||||
from module.campaign.campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from campaign.event_20200521_cn.b1 import Config as ConfigBase
|
||||
|
||||
|
||||
MAP = CampaignMap()
|
||||
MAP.map_data = """
|
||||
-- -- -- -- ++ -- -- -- -- ++ ++
|
||||
-- -- -- -- -- -- ++ ++ -- -- --
|
||||
++ -- -- -- -- -- ++ ++ -- -- --
|
||||
-- -- -- -- -- -- -- -- -- -- --
|
||||
-- -- -- -- -- -- -- -- -- -- --
|
||||
++ ++ -- -- -- -- ++ ++ -- -- --
|
||||
++ -- -- -- -- -- -- -- -- -- --
|
||||
"""
|
||||
MAP.wall_data = """
|
||||
· · | · · · · · · · · · ,
|
||||
+ ,
|
||||
· · · · · · · · · · | · ,
|
||||
+ + + + + ,
|
||||
· · | · · | · | · · · · | · · ,
|
||||
+---+---+ | | + ,
|
||||
· · · | · · | · · · · | · | · ,
|
||||
+---+ +---+ +---+ +-- ,
|
||||
· · · · · · · · · · · ,
|
||||
,
|
||||
· · · · · · · · · · · ,
|
||||
,
|
||||
· · · · · · · · · · · ,
|
||||
"""
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
FLEET_BOSS = 2
|
||||
|
||||
MAP_HAS_WALL = True
|
||||
MAP_SIREN_TEMPLATE = ['Algerie', 'Vauquelin']
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
53
campaign/event_20200521_cn/b3.py
Normal file
53
campaign/event_20200521_cn/b3.py
Normal file
@ -0,0 +1,53 @@
|
||||
from module.campaign.campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from campaign.event_20200521_cn.b1 import Config as ConfigBase
|
||||
|
||||
|
||||
MAP = CampaignMap()
|
||||
MAP.map_data = """
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- -- ++
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
++ -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
++ -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- ++ ++
|
||||
-- ++ -- -- ++ ++ -- -- ++ ++ -- -- -- --
|
||||
-- ++ -- -- ++ ++ -- -- ++ ++ -- -- -- --
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- ++ ++
|
||||
++ -- -- -- -- -- -- -- -- -- -- -- ++ ++
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
"""
|
||||
MAP.camera_data = ['G8', 'G6', 'F3', 'I3']
|
||||
MAP.wall_data = """
|
||||
· · · · · | · · · · | · · · · · ,
|
||||
+-----------+ +-----------+ ,
|
||||
· · | · · · | · · · · | · · · | · · ,
|
||||
| | | | ,
|
||||
· · | · · · | · · · · | · · · | · · ,
|
||||
+---+ +---+ +----+ +---+ ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
+-----------+ +-----------+ ,
|
||||
· · · · · · | · · | · · · · · · ,
|
||||
"""
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
FLEET_BOSS = 2
|
||||
|
||||
MAP_HAS_WALL = True
|
||||
MAP_SIREN_TEMPLATE = ['LaGalissonniere', 'Vauquelin']
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
@ -31,13 +31,13 @@ class Config:
|
||||
TRUST_EDGE_LINES = False
|
||||
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (100, 235),
|
||||
'height': (100, 255 - 16),
|
||||
'width': 1,
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 80, 255),
|
||||
'height': (255 - 16, 255),
|
||||
'prominence': 2,
|
||||
'distance': 50,
|
||||
'wlen': 1000
|
||||
|
@ -1,8 +1,5 @@
|
||||
from module.campaign.campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
|
||||
|
||||
MAP = CampaignMap()
|
||||
MAP.map_data = '''
|
||||
@ -55,13 +52,13 @@ class Config:
|
||||
TRUST_EDGE_LINES = False
|
||||
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (100, 235),
|
||||
'height': (100, 255 - 16),
|
||||
'width': 1,
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 80, 255),
|
||||
'height': (255 - 16, 255),
|
||||
'prominence': 2,
|
||||
'distance': 50,
|
||||
'wlen': 1000
|
||||
@ -74,7 +71,9 @@ class Campaign(CampaignBase):
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_enemy(scale=(2, 1)):
|
||||
if self.clear_enemy(scale=(1,)):
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['light', 'main', 'carrier']):
|
||||
return True
|
||||
if self.clear_enemy(genre=['light', 'main']):
|
||||
return True
|
||||
|
@ -15,6 +15,7 @@ MAP.map_data = """
|
||||
++ ++ -- -- -- -- ++ ++ -- -- --
|
||||
++ -- -- -- -- -- -- -- -- -- --
|
||||
"""
|
||||
MAP.camera_data = ['D3', 'D5', 'F3', 'F5', 'H3', 'H5']
|
||||
MAP.wall_data = """
|
||||
· · | · · · · · · · · · ,
|
||||
+ ,
|
||||
@ -34,7 +35,7 @@ MAP.wall_data = """
|
||||
|
||||
class Config(ConfigBase):
|
||||
MAP_HAS_WALL = True
|
||||
MAP_SIREN_TEMPLATE = ['Algerie', 'LaGalissonniere']
|
||||
MAP_SIREN_TEMPLATE = ['Algerie', 'Vauquelin']
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
|
51
campaign/event_20200521_cn/d3.py
Normal file
51
campaign/event_20200521_cn/d3.py
Normal file
@ -0,0 +1,51 @@
|
||||
from module.campaign.campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from campaign.event_20200521_cn.d1 import Config as ConfigBase
|
||||
|
||||
|
||||
MAP = CampaignMap()
|
||||
MAP.map_data = """
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- -- ++
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
++ -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
++ -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- ++ ++
|
||||
-- ++ -- -- ++ ++ -- -- ++ ++ -- -- -- --
|
||||
-- ++ -- -- ++ ++ -- -- ++ ++ -- -- -- --
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- ++ ++
|
||||
++ -- -- -- -- -- -- -- -- -- -- -- ++ ++
|
||||
-- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
"""
|
||||
MAP.camera_data = ['G8', 'G6', 'F3', 'I3']
|
||||
MAP.wall_data = """
|
||||
· · · · · | · · · · | · · · · · ,
|
||||
+-----------+ +-----------+ ,
|
||||
· · | · · · | · · · · | · · · | · · ,
|
||||
| | | | ,
|
||||
· · | · · · | · · · · | · · · | · · ,
|
||||
+---+ +---+ +----+ +---+ ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
| | ,
|
||||
· · · | · · · · · · · · | · · · ,
|
||||
+-----------+ +-----------+ ,
|
||||
· · · · · · | · · | · · · · · · ,
|
||||
"""
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
MAP_HAS_WALL = True
|
||||
MAP_SIREN_TEMPLATE = ['LaGalissonniere', 'Vauquelin']
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
@ -174,7 +174,7 @@ def node2location(node):
|
||||
Returns:
|
||||
tuple: Example: (6, 4)
|
||||
"""
|
||||
return ord(node[0]) % 32 - 1, int(node[1]) - 1
|
||||
return ord(node[0]) % 32 - 1, int(node[1:]) - 1
|
||||
|
||||
|
||||
def location2node(location):
|
||||
|
@ -181,6 +181,7 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
||||
break
|
||||
if walk_timeout.reached():
|
||||
logger.warning('Walk timeout. Retrying.')
|
||||
self.ensure_edge_insight()
|
||||
break
|
||||
|
||||
# End
|
||||
@ -210,6 +211,8 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
||||
try:
|
||||
self._goto(node, expected=expected if node == nodes[-1] else '')
|
||||
except MapWalkError:
|
||||
logger.warning('Map walk error.')
|
||||
self.ensure_edge_insight()
|
||||
nodes_ = self.map.find_path(node, step=1)
|
||||
for node_ in nodes_:
|
||||
self._goto(node_, expected=expected if node == nodes[-1] else '')
|
||||
@ -461,7 +464,6 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
||||
appear = True
|
||||
|
||||
if self.config.POOR_MAP_DATA:
|
||||
appear = True
|
||||
self.device.screenshot()
|
||||
grids = Grids(self.device.image, config=self.config)
|
||||
grids.predict()
|
||||
@ -469,7 +471,7 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
||||
for grid in grids:
|
||||
if grid.is_boss:
|
||||
logger.info('Catch camera re-positioning after boss appear')
|
||||
|
||||
appear = True
|
||||
for g in self.map:
|
||||
g.wipe_out()
|
||||
break
|
||||
|
@ -25,5 +25,6 @@ TEMPLATE_SIREN_2 = Template(file='./assets/template/TEMPLATE_SIREN_2.png')
|
||||
TEMPLATE_SIREN_3 = Template(file='./assets/template/TEMPLATE_SIREN_3.png')
|
||||
TEMPLATE_SIREN_Algerie = Template(file='./assets/template/TEMPLATE_SIREN_Algerie.png')
|
||||
TEMPLATE_SIREN_LaGalissonniere = Template(file='./assets/template/TEMPLATE_SIREN_LaGalissonniere.png')
|
||||
TEMPLATE_SIREN_Vauquelin = Template(file='./assets/template/TEMPLATE_SIREN_Vauquelin.png')
|
||||
TEMPLATE_STAGE_CLEAR = Template(file='./assets/template/TEMPLATE_STAGE_CLEAR.png')
|
||||
TEMPLATE_STAGE_PERCENT = Template(file='./assets/template/TEMPLATE_STAGE_PERCENT.png')
|
||||
|
Loading…
Reference in New Issue
Block a user