Client Systems & Python UI
Metin2 skill chat hyperlinks: validated tooltips and native registration fix
M2City Client · Editorial · Published 2026-11-05 · Branch-specific details should be checked against your own source.
Alt-click a learned skill to paste a skill hyperlink into chat. Clicking the link opens a tooltip with the skill name, grade, level requirements and the sender's effect-description text. This is a client integration, not a server-authoritative inspection of another character's skills.
M2City r1 corrections
Added the GetSkillLink native method-table registration omitted by the original instructions. Preserved SkillToolTip's default width when adding the pickable option. The native function validates the skill slot/level/grade, handles a missing affect description, bounds output and strips control/link delimiters from names/descriptions. Unlearned skills return an empty link; the Python UI only pastes a nonempty result.
The receiving tooltip now rejects malformed, oversized, unknown-skill and out-of-range data before calling rendering methods. It rejects embedded markup/control characters, clears previous lines before displaying a new link and hides stale content after invalid input. Interface cleanup hides the tooltip and resets its reference.
Merge requirements
Apply the six reviewed source/Python instruction files together: feature definition/export, native function and method registration, interface lifecycle, Alt-click and tooltip class. Preserve the rest of each existing class constructor. Confirm CPythonPlayer::SKILL_MAX_NUM denotes your skill slot capacity and ToolTip accepts isPickable; adapt those names/signatures to the actual fork if necessary. The reviewed limits assume legacy skill levels 1–40 and grades 0–3. Custom skill systems must change the matching limits on both sides.
Descriptions originate in chat and are display-only. Do not use them to grant buffs, calculate damage, validate purchases or enforce permissions. No server packet or authoritative character-state system is supplied. Existing client chat-size limits may prevent a very long skill link from being sent; verify locale lengths in staging.
Validation and attribution
All six supplied text fragments were read. The revised native function compiled against fake player/skill/Python interfaces and passed boundary, null, delimiter and long-text cases. Fake-tooltip tests covered malformed links, unknown skills, repeated display cleanup and 100 refreshes. These are isolated tests, not a complete Metin2 client build or in-game test. No matching public upstream release or original author was independently established; no authorship was invented. Original archive is preserved; apply reviewed/ and retain any upstream notices.
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: Revised native hyperlink function compiled with fake player/skill/Python interfaces; valid, empty, invalid slot, level/grade, null description, delimiter removal and long text cases passed. Fake Python tooltip rejected malformed/unknown/control/oversized links and cleared repeated display state (100 repeats). Full game/client/locale not built.
Source: Owner-supplied archive, reviewed files and retained notices; exact upstream release not established
SHA-256: 2e9c35ada550aaef72d56573d0ca386a5693fb1e89262390890921d26ab1e96f
Download package
3 download options · Sign in to download
metin2-skill-chat-hyperlinks-m2city-r1.zipM2City downloadmetin2-skill-chat-hyperlinks-m2city-r1.zipGoogle Drive mirrormetin2-skill-chat-hyperlinks-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