From 0bb8f3206f4048375da2a78e21189c20896eb90d Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 18 Aug 2026 18:40:02 +0900 Subject: [PATCH] feat: internal knowledeat: add knowledge base text to specific exception dialogs --- dzgui/managers/connection.py | 6 +++++- dzgui/managers/mods.py | 3 ++- dzgui/model/servers.py | 3 ++- dzgui/strings/kb.py | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 dzgui/strings/kb.py diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index c96abc2..9baf109 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -45,6 +45,7 @@ from dzgui.strings.dialogs import ( waiting_for_mods, waiting_for_directories, ) +from dzgui.strings import kb from dzgui.strings.server_mods import checkmark, resync from dzgui.util.format import format_mib from dzgui.util.strings import dialog, server_timeout @@ -193,7 +194,9 @@ class ConnectionManager: is_last = self.is_last_server() # TODO: strings - invalid_mods = [(mod[0], mod[1]) for mod in remote_mods if mod[2] == "Invalid mod"] + invalid_mods = [ + (mod[0], mod[1]) for mod in remote_mods if mod[2] == "Invalid mod" + ] prereqs = Prerequisites( name=info.server_name, @@ -298,6 +301,7 @@ class ConnectionManager: def _server_timeout(self) -> None: dialog = ExceptionDialog(self.controller, server_timeout) + dialog.set_secondary_text(kb.DZG_006) dialog.run() def _connect_steam(self, menu_only: bool) -> None: diff --git a/dzgui/managers/mods.py b/dzgui/managers/mods.py index da31385..522c340 100644 --- a/dzgui/managers/mods.py +++ b/dzgui/managers/mods.py @@ -20,7 +20,7 @@ from dzgui.const.constants import ( from dzgui.const.enum import Preferences from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager from dzgui.model.model_factory import FastInsertListStore, ModelFactory -from dzgui.strings import dialogs +from dzgui.strings import dialogs, kb from dzgui.util.format import format_mods from dzgui.util.strings import server_timeout from dzgui.util.symlink import rebuild_symlinks @@ -215,6 +215,7 @@ class ModManager: def _server_timeout(self) -> None: dialog = ExceptionDialog(self.controller, server_timeout) + dialog.set_seconary_text(kb.DZG_006) dialog.run() def select_colorized(self) -> None: diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index bc5d616..cfb2c0a 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -14,7 +14,7 @@ from dzgui.const.constants import ( ) from dzgui.const.enum import FilterMode, Preferences, ServerTab from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager -from dzgui.strings import dialogs +from dzgui.strings import dialogs, kb from dzgui.util.strings import server_timeout, dialog from dzgui.views.dialogs.generic import ExceptionDialog @@ -420,6 +420,7 @@ class ServerModelManager: # customize statusbar and dialog accordingly if show_dialog: dialog = ExceptionDialog(self.controller, server_timeout) + dialog.set_secondary_text(kb.DZG_006) dialog.run() def _push_data(self, data: list[Any]) -> None: diff --git a/dzgui/strings/kb.py b/dzgui/strings/kb.py new file mode 100644 index 0000000..42f300b --- /dev/null +++ b/dzgui/strings/kb.py @@ -0,0 +1,15 @@ +DZG_006 = """The leading cause of specific servers periodically timing out is local network configuration. + +Many third-party DayZ servers use a server rental/hosting provider with DDoS protection. + +This can cause responses from servers to originate from a server other than the one originally queried. + +Consumer-grade routers are likely to drop this traffic as invalid due to how they handle NAT (network address translation). + +By contrast, wireless routers and enterprise-grade routers may be less likely to have this issue. + +If you find that a specific server is unresponsive for you when it shouldn't be, add a port forwarding rule to your router's settings for the server's query port. + +In addition, packets received from server responses are expected to be a standard size: MTU (maximum transmission unit) of 1500. + +Deviation from this may cause your router to discard incoming responses from the server."""