Client Systems & Python UI
Metin2 in-game FAQ panel: reusable help pages and scrolling fixes
M2City Client · Editorial · Published 2026-11-04 · Branch-specific details should be checked against your own source.
A four-category in-game help window for private-server players, maintained by the administrator through locale text files. It provides account-safety guidance, community addresses, reporting instructions and team contacts without embedding a browser or requesting account credentials.
M2City r1 corrections
The original opened new event text blocks on category changes without clearing the old ones, could divide by zero at exactly 18 lines, and used undefined lowercase none during destruction. The reviewed panel owns one event block at a time, uses a None sentinel instead of risking another window's event index zero, clamps scroll to the available lines and automatically hides the scrollbar for short pages. Open/Close reuse the window; Destroy is idempotent. The description child follows the owning window and does not intercept clicks. Category indices and failed text registration are handled explicitly.
English example labels and four concise editable pages replace old server-specific addresses and repeated filler in the reviewed overlay. These are examples to localize, not live support details for your server. The original archive is preserved for comparison and notices.
Installation
Pack reviewed/root/uiguifaq.py and reviewed/uiscript/guifaq.py. Copy locale/LOCALE/faq into your actual locale directory and define CARDS_DESC_1 through CARDS_DESC_4 in uiScriptLocale using that locale's root. Keep the text encoding consistent with your client. Merge the supplied event.SetVisibleLineCount native wrapper only when missing, preserving the existing method table; the underlying event manager method must exist.
Create a FaqButton or another explicit entry point. Initialize the owner window's self.faq to None, construct GuiFaq once, and call Open(), not only Show(). Destroy and clear it during owner destruction/logout. Recreate it when changing locale. The detailed INTEGRATION.txt supersedes the old document.h example that created a new window on every click. No server or quest change is required.
Validation
All nine supplied text/source files were read. Fake UI/event tests covered empty, 17/18/19/200-line pages, scroll extremes, all categories, invalid selection, failed registration, 100 reopen/close cycles and repeated destruction. They verified an unrelated event index zero remains untouched. Actual client layout, event rendering, locale wrapping and in-game navigation remain untested. Original author/version could not be independently established; none was invented. Redistribution was confirmed by the supplying owner.
Editorial resource — M2City
Version: Owner-supplied legacy integration; M2City r1 (2026-11-04); exact fork unspecified
Rights: Owner explicitly confirmed public redistribution. Preserve original notices; no open-source relicensing.
Validation: Fake UI/event harness passed 0/1/17/18/19/200-line pages, bounded scroll, switching all four categories, invalid selection, registration failure, 100 reopen/close cycles, owned-event isolation including unrelated index zero, and repeated Destroy. Actual client layout/render/locale integration not tested.
Source: Owner-supplied archive, reviewed files and retained notices; exact upstream release not established
SHA-256: e370921a5a8155ac4d7e2649f2d03609a150384f6df6b6f7e5e4f2be4ae12cf6
Download package
3 download options · Sign in to download
metin2-ingame-faq-panel-m2city-r1.zipM2City downloadmetin2-ingame-faq-panel-m2city-r1.zipGoogle Drive mirrormetin2-ingame-faq-panel-m2city-r1.zipMEGA mirrorMAKE THE NEXT ANSWER BETTER
What happened on your build?
Share a small example, the exact error and how you verified your fix. The discussion is open on the forum.
Need a scoped quest, UI or proto fix? · Explore more development guides · Check your proto files free