Skip to content

Commit ad06bc7

Browse files
committed
BUGFIX:
- Scheduler: restart did not happen reliably on empty servers
1 parent f62f60c commit ad06bc7

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

plugins/mission/listener.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,7 @@ async def _stop_player(self, server: Server, player: Player):
637637
# if the last player left, the server is considered idle
638638
if not server.is_populated():
639639
server.idle_since = datetime.now(tz=timezone.utc)
640+
await self.bot.bus.send_to_node({"command": "onServerEmpty", "server_name": server.name})
640641
if player.member:
641642
autorole = server.locals.get('autorole', self.bot.locals.get('autorole', {}).get('online'))
642643
if autorole:

plugins/scheduler/listener.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -167,25 +167,13 @@ async def onPlayerStart(self, server: Server, data: dict) -> None:
167167
asyncio.create_task(player.sendChatMessage(
168168
"Server will restart {}".format(restart_time)))
169169

170-
@event(name="onSimulationPause")
171-
async def onSimulationPause(self, server: Server, _: dict) -> None:
172-
if server.on_empty:
173-
# noinspection PyAsyncCall
174-
asyncio.create_task(self.process(server, server.on_empty.copy()))
175-
server.on_empty.clear()
176-
177170
@event(name="onSimulationResume")
178171
async def onSimulationResume(self, server: Server, _: dict) -> None:
179172
self.set_restart_time(server)
180173

181174
@event(name="onGameEvent")
182175
async def onGameEvent(self, server: Server, data: dict) -> None:
183-
if data['eventName'] == 'disconnect':
184-
if not server.is_populated() and server.on_empty:
185-
# noinspection PyAsyncCall
186-
asyncio.create_task(self.process(server, server.on_empty.copy()))
187-
server.on_empty.clear()
188-
elif data['eventName'] == 'mission_end':
176+
if data['eventName'] == 'mission_end':
189177
# noinspection PyAsyncCall
190178
asyncio.create_task(self.bot.bus.send_to_node({"command": "onMissionEnd", "server_name": server.name}))
191179
if server.on_mission_end:
@@ -237,6 +225,12 @@ def set_restart_time(self, server: Server) -> None:
237225
async def getMissionUpdate(self, server: Server, _: dict) -> None:
238226
self.set_restart_time(server)
239227

228+
@event(name="onServerEmpty")
229+
async def onServerEmpty(self, server: Server, _: dict) -> None:
230+
# noinspection PyAsyncCall
231+
asyncio.create_task(self.process(server, server.on_empty.copy()))
232+
server.on_empty.clear()
233+
240234
@chat_command(name="maintenance", aliases=["maint"], roles=['DCS Admin'], help="enable maintenance mode")
241235
async def maintenance(self, server: Server, player: Player, _: list[str]):
242236
if not server.maintenance:

0 commit comments

Comments
 (0)