Client Systems & Python UI
Metin2 item shining source: safe effect paths, table validation and cleanup fixes
M2City Client · Editorial · Published 2026-11-05 · Branch-specific details should be checked against your own source.
Source integration for private Metin2 client maintainers: associate up to three effect paths with each item VNUM in locale/xx/shiningtable.txt. The supplied renderer handles weapons, body armor and the optional weapon/body costume branches. This is source integration, not a ready-to-run client or a pack of effect artwork.
M2City r1 corrections
The original passes the effect path directly to sprintf as its format string, with no copy bound. Replaced it with checked literal copying, including slot/null/length guards. Paths containing percent signs stay literal. Repaired the corrupted LoadShiningTable method name in the loading hook. The loader now rejects empty/malformed row shapes, nondecimal/zero/out-of-range VNUMs, oversized paths and embedded nulls before updating a row. Missing effect slots are cleared, and duplicate valid VNUM rows follow last-row-wins behavior.
Initialized both armor and weapon effect arrays, guarded negative/out-of-range effect indices and null inputs, and checked missing attaching-bone pointers before dereferencing them. Preserve normal client lifecycle: zero arrays before first use, detach effects before destroying or recycling the graphics instance.
Merge and data format
Merge all eight reviewed source/instruction files and enable ENABLE_SHINING_SYSTEM consistently in the client project. Preserve unrelated code. Ensure CItemData construction/Clear initializes its shining table before any lookup. The included integration checklist specifies both InstanceBase initialization and teardown calls.
Use tab-separated positive decimal VNUM followed by one to three effect paths, each shorter than 256 bytes. A # in the first column begins a comment. Invalid rows emit a line-number error and make the loader return false; valid earlier rows remain applied. This is not an atomic table reload. Runtime table reload/removal is not implemented; restart with freshly loaded item data after edits.
The example effect1.mse is illustrative and is not supplied. Use existing, authorized effect assets and verify their dependencies. Adapt MakeItemData, GetAttachingBoneName, RegisterEffect and AttachEffectByName signatures to your actual branch. Verify equipment changes, costumes, mounts, invisibility and device reset behavior in that engine. No server-side purchasing, database or player selection UI is included.
Validation and provenance
All eight original text/source fragments were read. The exact revised setter, VNUM parser, table loader and renderer methods compiled with clang++ C++11 against fake pack/item/graphics interfaces in four feature configurations: base; costume; costume plus weapon costume; and those plus wolfman. Tests covered malformed rows, VNUM overflow, literal percent paths, 255/256-byte limits, null/missing bones, negative slots, duplicate rows and idempotent cleanup. These are isolated tests, not a full Metin2 build or an actual effect render/gameplay test.
Exact upstream author/release could not be independently established from the supplied name. Original archive and notices retained; corrections and review are M2City's contribution. The supplying owner confirmed public redistribution; no blanket open-source licence is asserted.
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: All eight source/instruction files reviewed. Exact revised native setter, parser/loader and renderer methods compiled in four feature configurations against fake interfaces: malformed rows/VNUM overflow, percent paths, 255/256-byte bounds, null/missing bones, negative slots, duplicate rows and repeated cleanup. No full Metin2 build, effect assets or actual renderer/gameplay test.
Source: Owner-supplied archive, reviewed files and retained notices; exact upstream release not established
SHA-256: fd19cbd37beac726e22b2d239150b96f5c2d1c70bb9fb3d2a925c08709b259bb
Download package
3 download options · Sign in to download
metin2-item-shining-source-m2city-r1.zipM2City downloadmetin2-item-shining-source-m2city-r1.zipGoogle Drive mirrormetin2-item-shining-source-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