Skip to content

Commit

Permalink
#207 战斗后第一次识别坐标宽松对待
Browse files Browse the repository at this point in the history
  • Loading branch information
DoctorReid committed Apr 3, 2024
1 parent 897df5c commit e8451be
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 120 deletions.
8 changes: 3 additions & 5 deletions config/world_patrol/P01_KJZHT/R03_SRCD_R02_KZZXW.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ floor: 1
tp: '控制中心外'
route:
- op: 'move'
data: [386, 328, 2]
data: [386, 328]
- op: 'patrol'
- op: 'move'
data: [397, 287]
Expand All @@ -32,12 +32,10 @@ route:
- op: 'move'
data: [557, 548]
- op: 'move'
data: [573, 550]
data: [573, 550, 2]
- op: 'disposable'
- op: 'move'
data: [573, 540]
- op: 'move'
data: [572, 515]
data: [570, 515]
- op: 'move'
data: [610, 514]
- op: 'patrol'
Expand Down
4 changes: 3 additions & 1 deletion config/world_patrol/P01_KJZHT/R04_ZYCD_R02_CHZL.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ floor: 2
tp: '存护之蕾·拟造花萼(赤)'
route:
- op: 'move'
data: [480, 328, 1]
data: [480, 328]
- op: 'disposable'
- op: 'move'
data: [454, 343]
Expand All @@ -18,6 +18,8 @@ route:
data: '配控装置'
- op: 'wait'
data: ['in_world', '20']
- op: 'update_pos'
data: [485, 388, 1]
- op: 'move'
data: [465, 382]
- op: 'move'
Expand Down
60 changes: 8 additions & 52 deletions config/world_patrol/P02_YLL6/R02_CJXY_R01_HYZL.yml
Original file line number Diff line number Diff line change
@@ -1,67 +1,23 @@
author: ['DoctorReid', 'nyehueh']
author: ['DoctorReid']
planet: '雅利洛-VI'
region: '城郊雪原'
floor: 0
tp: '回忆之蕾·拟造花萼(金)'
route:
- op: 'move'
data: [1097, 456]
- op: 'patrol'
- op: 'patrol'
- op: 'move'
data: [1021, 591]
data: [1067, 477]
- op: 'move'
data: [938, 505]
data: [1013, 583]
- op: 'move'
data: [922, 502]
data: [933, 485]
- op: 'patrol'
- op: 'move'
data: [933, 467]
- op: 'patrol'
- op: 'move'
data: [947, 443]
- op: 'patrol'
- op: 'move'
data: [960, 417]
- op: 'patrol'
- op: 'move'
data: [1014, 421]
- op: 'disposable'
- op: 'move'
data: [998, 351]
- op: 'move'
data: [1031, 275]
- op: 'disposable'
data: [1025, 287]
- op: 'move'
data: [963, 311]
- op: 'disposable'
data: [843, 281]
- op: 'move'
data: [874, 246]
- op: 'disposable'
- op: 'move'
data: [768, 323]
- op: 'disposable'
- op: 'move'
data: [707, 320]
- op: 'patrol'
- op: 'move'
data: [708, 302]
- op: 'patrol'
data: [711, 316]
- op: 'patrol'
- op: 'move'
data: [696, 310]
data: [674, 236]
- op: 'patrol'
- op: 'move'
data: [706, 217]
- op: 'disposable'
- op: 'move'
data: [666, 224]
- op: 'patrol'
- op: 'move'
data: [612, 299]
- op: 'disposable'
- op: 'move'
data: [580, 190]
- op: 'move'
data: [552, 221]
- op: 'disposable'
63 changes: 10 additions & 53 deletions config/world_patrol/P02_YLL6/R03_BYTL_R01_GDJZ.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
author: ['DoctorReid', 'nyehueh']
author: ['DoctorReid']
planet: '雅利洛-VI'
region: '边缘通路'
floor: 0
Expand All @@ -7,73 +7,30 @@ route:
- op: 'move'
data: [750, 261]
- op: 'move'
data: [716, 285]
data: [716, 287]
- op: 'move'
data: [683, 326]
- op: 'patrol'
- op: 'move'
data: [690, 354]
- op: 'patrol'
- op: 'move'
data: [698, 491]
- op: 'patrol'
- op: 'move'
data: [694, 513]
data: [693, 510]
- op: 'move'
data: [657, 516]
data: [665, 516]
- op: 'move'
data: [655, 624]
data: [662, 635]
- op: 'patrol'
- op: 'move'
data: [673, 638]
- op: 'move'
data: [742, 641]
- op: 'move'
data: [780, 635]
- op: 'disposable'
- op: 'move'
data: [764, 601]
- op: 'disposable'
- op: 'move'
data: [820, 595]
- op: 'disposable'
- op: 'move'
data: [783, 592]
- op: 'move'
data: [779, 634]
- op: 'move'
data: [740, 639]
- op: 'move'
data: [737, 770]
- op: 'patrol'
data: [746, 637]
- op: 'move'
data: [752, 790]
data: [746, 680]
- op: 'patrol'
- op: 'move'
data: [743, 677]
data: [746, 835]
- op: 'patrol'
- op: 'move'
data: [743, 712]
- op: 'patrol'
- op: 'move'
data: [738, 789]
- op: 'disposable'
- op: 'patrol'
- op: 'move'
data: [744, 838]
- op: 'patrol'
- op: 'patrol'
- op: 'move'
data: [682, 848]
- op: 'disposable'
- op: 'move'
data: [578, 848]
- op: 'disposable'
- op: 'move'
data: [681, 846]
- op: 'move'
data: [685, 880]
- op: 'disposable'
data: [686, 851]
- op: 'move'
data: [683, 951]
data: [686, 955]
- op: 'patrol'
4 changes: 3 additions & 1 deletion src/sr/cal_pos.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ def __init__(self,
last_pos: Optional[Point] = None,
max_distance: Optional[float] = None,
line_p1: Optional[Point] = None,
line_p2: Optional[Point] = None):
line_p2: Optional[Point] = None,
max_line_distance: float = 20):
"""
校验位置需要用的信息
"""
Expand All @@ -59,6 +60,7 @@ def __init__(self,

self.line_p1: Point = line_p1 # 当前移动直线的点1
self.line_p2: Point = line_p2 # 当前移动直线的点2
self.max_line_distance: float = max_line_distance # 距离直线允许的最大的距离

@property
def yml_str(self) -> str:
Expand Down
18 changes: 13 additions & 5 deletions src/sr/operation/unit/move.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ def __init__(self, ctx: Context,
self.last_battle_time = time.time()
self.last_no_pos_time = 0 # 上一次算不到坐标的时间 目前算坐标太快了 可能地图还在缩放中途就已经失败 所以稍微隔点时间再记录算不到坐标
self.stop_move_time: Optional[float] = None # 停止移动的时间
self.first_cal_after_battle: bool = False # 是否战斗后第一次识别坐标

self.run_mode = game_config_const.RUN_MODE_OFF if no_run else self.ctx.game_config.run_mode
self.no_battle: bool = no_battle # 本次移动是否没有战斗
Expand Down Expand Up @@ -298,7 +299,8 @@ def be_attacked(self, screen: MatLike) -> Optional[OperationOneRoundResult]:
return Operation.round_fail(status=fight_result.status, data=fight_result.data)
self.last_battle_time = time.time()
self.last_rec_time += fight_end_time - fight_start_time # 战斗可能很久 更改记录时间
self.move_after_battle()
self.first_cal_after_battle = True
# self.move_after_battle()
return Operation.round_wait()
return None

Expand Down Expand Up @@ -333,7 +335,8 @@ def check_enemy_and_attack(self, mm: MatLike) -> Optional[OperationOneRoundResul
self.last_auto_fight_fail = (op_result.status == EnterAutoFight.STATUS_ENEMY_NOT_FOUND)
self.last_battle_time = fight_end_time
self.last_rec_time += fight_end_time - fight_start_time # 战斗可能很久 更改记录时间
self.move_after_battle()
self.first_cal_after_battle = True
# self.move_after_battle()

return Operation.round_wait()

Expand All @@ -354,6 +357,9 @@ def cal_pos(self, mm: MatLike, now_time: float) -> Tuple[Optional[Point], MiniMa
move_time = 1
else:
move_time = 1
if self.first_cal_after_battle:
move_time += 1 # 扩大范围 兼容攻击时产生的位移

log.debug('上次记录时间 %.2f 停止移动时间 %.2f 当前时间 %.2f',
self.last_rec_time,
0 if self.stop_move_time is None else self.stop_move_time,
Expand All @@ -372,7 +378,8 @@ def cal_pos(self, mm: MatLike, now_time: float) -> Tuple[Optional[Point], MiniMa
return self.start_pos, mm_info

verify = VerifyPosInfo(last_pos=last_pos, max_distance=move_distance,
line_p1=self.start_pos, line_p2=self.target)
line_p1=self.start_pos, line_p2=self.target,
max_line_distance=40 if self.first_cal_after_battle else 20)
try:
real_move_time = self.ctx.controller.get_move_time()
next_pos = cal_pos.cal_character_pos(self.ctx.im, self.lm_info, mm_info,
Expand Down Expand Up @@ -412,13 +419,13 @@ def check_no_pos(self, next_pos: Point, now_time: float) -> Optional[OperationOn
"""
if next_pos is None:
if now_time - self.last_no_pos_time > 0.5:
self.ctx.controller.enter_running(False)
self.ctx.controller.enter_running(False) # 不疾跑避免跑远了
self.no_pos_times += 1
self.last_no_pos_time = now_time
if self.no_pos_times >= 3: # 不要再乱走了
self.ctx.controller.stop_moving_forward()
if self.stop_move_time is None:
self.stop_move_time = now_time + (1 if self.run_mode != game_config_const.RUN_MODE_OFF else 0)
self.stop_move_time = now_time + 1 # 加1秒代表惯性
if self.no_pos_times >= 10:
return Operation.round_fail(MoveDirectly.STATUS_NO_POS)
return Operation.round_wait()
Expand Down Expand Up @@ -459,6 +466,7 @@ def move(self, next_pos: Point, now_time: float, mm_info: MiniMapInfo):
def move_after_battle(self):
"""
战斗后 继续使用上一个坐标进行移动
加入秘技和近战后 攻击会产生位移 直接使用上一个坐标容易卡死
:return:
"""
if len(self.pos) == 0:
Expand Down
6 changes: 4 additions & 2 deletions src/sr/sim_uni/op/move_in_sim_uni.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,8 @@ def be_attacked(self, screen: MatLike) -> Optional[OperationOneRoundResult]:
return Operation.round_fail(status=fight_result.status, data=fight_result.data)
self.last_battle_time = fight_end_time
self.last_rec_time += fight_end_time - fight_start_time # 战斗可能很久 更改记录时间
self.move_after_battle()
self.first_cal_after_battle = True
# self.move_after_battle()
return Operation.round_wait()
return None

Expand Down Expand Up @@ -164,7 +165,8 @@ def check_enemy_and_attack(self, mm: MatLike) -> Optional[OperationOneRoundResul
self.last_auto_fight_fail = (op_result.status == SimUniEnterFight.STATUS_ENEMY_NOT_FOUND)
self.last_battle_time = fight_end_time
self.last_rec_time += fight_end_time - fight_start_time # 战斗可能很久 更改记录时间
self.move_after_battle()
self.first_cal_after_battle = True
# self.move_after_battle()

return Operation.round_wait()

Expand Down
2 changes: 1 addition & 1 deletion version.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version: "v1.2.1"
version: "v1.2.2"

0 comments on commit e8451be

Please sign in to comment.