mirror of
https://github.com/LmeSzinc/StarRailCopilot.git
synced 2024-12-03 12:23:53 +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
|
TRUST_EDGE_LINES = False
|
||||||
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
||||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||||
'height': (100, 235),
|
'height': (100, 255 - 16),
|
||||||
'width': 1,
|
'width': 1,
|
||||||
'prominence': 10,
|
'prominence': 10,
|
||||||
'distance': 35,
|
'distance': 35,
|
||||||
}
|
}
|
||||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||||
'height': (255 - 80, 255),
|
'height': (255 - 16, 255),
|
||||||
'prominence': 2,
|
'prominence': 2,
|
||||||
'distance': 50,
|
'distance': 50,
|
||||||
'wlen': 1000
|
'wlen': 1000
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
from module.campaign.campaign_base import CampaignBase
|
from module.campaign.campaign_base import CampaignBase
|
||||||
from module.map.map_base import CampaignMap
|
from module.map.map_base import CampaignMap
|
||||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
|
||||||
from module.logger import logger
|
|
||||||
|
|
||||||
|
|
||||||
MAP = CampaignMap()
|
MAP = CampaignMap()
|
||||||
MAP.map_data = '''
|
MAP.map_data = '''
|
||||||
@ -55,13 +52,13 @@ class Config:
|
|||||||
TRUST_EDGE_LINES = False
|
TRUST_EDGE_LINES = False
|
||||||
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
||||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||||
'height': (100, 235),
|
'height': (100, 255 - 16),
|
||||||
'width': 1,
|
'width': 1,
|
||||||
'prominence': 10,
|
'prominence': 10,
|
||||||
'distance': 35,
|
'distance': 35,
|
||||||
}
|
}
|
||||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||||
'height': (255 - 80, 255),
|
'height': (255 - 16, 255),
|
||||||
'prominence': 2,
|
'prominence': 2,
|
||||||
'distance': 50,
|
'distance': 50,
|
||||||
'wlen': 1000
|
'wlen': 1000
|
||||||
@ -74,7 +71,9 @@ class Campaign(CampaignBase):
|
|||||||
def battle_0(self):
|
def battle_0(self):
|
||||||
if self.clear_siren():
|
if self.clear_siren():
|
||||||
return True
|
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
|
return True
|
||||||
if self.clear_enemy(genre=['light', 'main']):
|
if self.clear_enemy(genre=['light', 'main']):
|
||||||
return True
|
return True
|
||||||
|
@ -15,6 +15,7 @@ MAP.map_data = """
|
|||||||
++ ++ -- -- -- -- ++ ++ -- -- --
|
++ ++ -- -- -- -- ++ ++ -- -- --
|
||||||
++ -- -- -- -- -- -- -- -- -- --
|
++ -- -- -- -- -- -- -- -- -- --
|
||||||
"""
|
"""
|
||||||
|
MAP.camera_data = ['D3', 'D5', 'F3', 'F5', 'H3', 'H5']
|
||||||
MAP.wall_data = """
|
MAP.wall_data = """
|
||||||
· · | · · · · · · · · · ,
|
· · | · · · · · · · · · ,
|
||||||
+ ,
|
+ ,
|
||||||
@ -34,7 +35,7 @@ MAP.wall_data = """
|
|||||||
|
|
||||||
class Config(ConfigBase):
|
class Config(ConfigBase):
|
||||||
MAP_HAS_WALL = True
|
MAP_HAS_WALL = True
|
||||||
MAP_SIREN_TEMPLATE = ['Algerie', 'LaGalissonniere']
|
MAP_SIREN_TEMPLATE = ['Algerie', 'Vauquelin']
|
||||||
|
|
||||||
|
|
||||||
class Campaign(CampaignBase):
|
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:
|
Returns:
|
||||||
tuple: Example: (6, 4)
|
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):
|
def location2node(location):
|
||||||
|
@ -181,6 +181,7 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
|||||||
break
|
break
|
||||||
if walk_timeout.reached():
|
if walk_timeout.reached():
|
||||||
logger.warning('Walk timeout. Retrying.')
|
logger.warning('Walk timeout. Retrying.')
|
||||||
|
self.ensure_edge_insight()
|
||||||
break
|
break
|
||||||
|
|
||||||
# End
|
# End
|
||||||
@ -210,6 +211,8 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
|||||||
try:
|
try:
|
||||||
self._goto(node, expected=expected if node == nodes[-1] else '')
|
self._goto(node, expected=expected if node == nodes[-1] else '')
|
||||||
except MapWalkError:
|
except MapWalkError:
|
||||||
|
logger.warning('Map walk error.')
|
||||||
|
self.ensure_edge_insight()
|
||||||
nodes_ = self.map.find_path(node, step=1)
|
nodes_ = self.map.find_path(node, step=1)
|
||||||
for node_ in nodes_:
|
for node_ in nodes_:
|
||||||
self._goto(node_, expected=expected if node == nodes[-1] else '')
|
self._goto(node_, expected=expected if node == nodes[-1] else '')
|
||||||
@ -461,7 +464,6 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
|||||||
appear = True
|
appear = True
|
||||||
|
|
||||||
if self.config.POOR_MAP_DATA:
|
if self.config.POOR_MAP_DATA:
|
||||||
appear = True
|
|
||||||
self.device.screenshot()
|
self.device.screenshot()
|
||||||
grids = Grids(self.device.image, config=self.config)
|
grids = Grids(self.device.image, config=self.config)
|
||||||
grids.predict()
|
grids.predict()
|
||||||
@ -469,7 +471,7 @@ class Fleet(Camera, MapOperation, AmbushHandler):
|
|||||||
for grid in grids:
|
for grid in grids:
|
||||||
if grid.is_boss:
|
if grid.is_boss:
|
||||||
logger.info('Catch camera re-positioning after boss appear')
|
logger.info('Catch camera re-positioning after boss appear')
|
||||||
|
appear = True
|
||||||
for g in self.map:
|
for g in self.map:
|
||||||
g.wipe_out()
|
g.wipe_out()
|
||||||
break
|
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_3 = Template(file='./assets/template/TEMPLATE_SIREN_3.png')
|
||||||
TEMPLATE_SIREN_Algerie = Template(file='./assets/template/TEMPLATE_SIREN_Algerie.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_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_CLEAR = Template(file='./assets/template/TEMPLATE_STAGE_CLEAR.png')
|
||||||
TEMPLATE_STAGE_PERCENT = Template(file='./assets/template/TEMPLATE_STAGE_PERCENT.png')
|
TEMPLATE_STAGE_PERCENT = Template(file='./assets/template/TEMPLATE_STAGE_PERCENT.png')
|
||||||
|
Loading…
Reference in New Issue
Block a user