@@ -43,6 +43,9 @@ def __init__(self, *args, **kwargs):
4343
4444 self .default_config .pop ("启用自动穿引共鸣" , None )
4545 self .action_timeout = 10
46+
47+ self .skill_tick = self .create_skill_ticker ()
48+ self .random_walk_tick = self .create_random_walk_ticker ()
4649
4750 def run (self ):
4851 DNAOneTimeTask .run (self )
@@ -85,7 +88,9 @@ def init_for_next_round(self):
8588 self .init_runtime_state ()
8689
8790 def init_runtime_state (self ):
88- self .runtime_state = {"start_time" : 0 , "skill_time" : 0 , "random_walk_time" : 0 }
91+ self .runtime_state = {"start_time" : 0 }
92+ self .skill_tick .reset ()
93+ self .random_walk_tick .reset ()
8994
9095 def handle_in_mission (self ):
9196 if self .runtime_state ["start_time" ] == 0 :
@@ -98,8 +103,8 @@ def handle_in_mission(self):
98103 self .give_up_mission ()
99104 self .wait_until (lambda : not self .in_team (), time_out = 30 , settle_time = 1 )
100105
101- self .runtime_state [ "skill_time" ] = self . use_skill ( self . runtime_state [ "skill_time" ] )
102- self .runtime_state [ "random_walk_time" ] = self . random_walk ( self . runtime_state [ "random_walk_time" ] )
106+ self .skill_tick ( )
107+ self .random_walk_tick ( )
103108
104109 def handle_mission_start (self ):
105110 if self .count >= self .config .get ("刷几次" , 999 ):
@@ -123,12 +128,26 @@ def move_on_begin(self):
123128 if (walk_sec := self .config .get ("开局向前走" , 0 )) > 0 :
124129 self .send_key ("w" , down_time = walk_sec )
125130
126- def random_walk (self , last_time ):
127- duration = 1
128- interval = 3
129- if self .config .get ("随机游走" , False ):
130- if time .time () - last_time >= interval :
131+ def create_random_walk_ticker (self ):
132+ """创建一个随机游走的计时器函数。"""
133+ last_time = 0
134+
135+ def tick ():
136+ nonlocal last_time
137+ if not self .config .get ("随机游走" , False ):
138+ return
139+
140+ interval = 3
141+ duration = 1
142+ now = time .perf_counter ()
143+ if now - last_time >= interval :
144+ last_time = now
131145 direction = random .choice (["w" , "a" , "s" , "d" ])
132146 self .send_key (direction , down_time = duration )
133- return time .time ()
134- return last_time
147+
148+ def reset ():
149+ nonlocal last_time
150+ last_time = 0
151+
152+ tick .reset = reset
153+ return tick
0 commit comments