Client Systems & Python UI
Metin2 manual bonus changer: inventory confirmation and cleanup fixes
M2City Client · Editorial · Published 2026-11-05 · Branch-specific details should be checked against your own source.
Drag an ordinary bonus changer onto an unequipped inventory weapon or armour, inspect its first five attributes and click once for each reroll. The server still decides eligibility, consumption, cooldown and bonus probabilities. This is not an automatic switchbot, a serverfiles pack or support for special inventories.
M2City r1 corrections
The supplied UI decrements the displayed changer count before server confirmation, can keep stale inventory slots, uses legacy TRUE/FALSE names, closes without full widget cleanup and calls a custom SetChangerImage hook not supplied by the archive. The replacement waits for the actual inventory count decrease, suppresses repeated clicks while pending, closes after a three-second timeout without automatic retries, revalidates the selected slots and exposes explicit movement invalidation. It selects the target item before checking its type, handles unknown attribute formatters, hides its tooltip and clears callbacks, children and state on logout. Repeated LoadWindow reuses existing widgets.
The layout is centred using its full dimensions. The three SUB descriptors now point explicitly to the supplied atlas under ui/changer, avoiding overwriting the shared ui/newgui.tga path. Both original TGA textures are included in that isolated asset folder.
Integration requirements
Use the reviewed Python files and reviewed/assets tree, plus the four supplied locale keys. Create one ChangerWindow in Interface.MakeInterface; bind a weak eligibility callback using the real fork's inventory, character and trade/modal conditions. Without that callback the helper refuses to open or send. The detailed integration document explains the ordinary-inventory drag hook and the removal of the missing SetChangerImage call.
Forward completed inventory refreshes to RefreshInventory. Close the selection before every move, equip, drop, exchange or storage action; also close on inventory hide, warp and logout. Preserve existing server-side item locks and all checks. A VNUM is not a unique item identity: identical-item replacements cannot be distinguished by this legacy API. Forks with stable item IDs must wire their invalidation/identity checks as well. The helper is not a security boundary. Custom changers that consume no count or use different packet ordering need a matching response integration; they are not silently assumed compatible.
Validation and provenance
All six original text/source files and three SUB descriptors were read; both textures decoded and visually inspected. Isolated fake-widget tests cover eligibility, slot validation, actual count updates, 30 suppressed repeat clicks, timeout, movement invalidation, tooltips, unknown attributes and 100 teardown cycles. The layout and asset paths were checked. No real Metin2 renderer, packet sequence, login/logout or gameplay test is claimed; test your exact client/server branch in staging.
A related manual bonus-changer discussion is linked below. It establishes the feature context, not the exact provenance of this archive. The original author/release could not be independently established; original archive/notices retained. Redistribution confirmed by the supplying owner; no blanket open-source relicensing.
Related manual bonus-changer discussion
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: Six source/instruction files and three SUB descriptors reviewed; two textures decoded. Fake UI tests pass for eligibility, slot validation, actual count acknowledgement, 30 suppressed repeat clicks, timeout, item movement, tooltip, invalid attributes and 100 teardown cycles. No actual client render/network/gameplay validation; fork movement and server checks remain required.
Source: Owner-supplied archive, reviewed files and retained notices; exact upstream release not established
SHA-256: 17f6f776df68b54b8861de0d3f4e334e7084266817f7ea763921b98ae92a0dae
Download package
3 download options · Sign in to download
metin2-manual-bonus-changer-m2city-r1.zipM2City downloadmetin2-manual-bonus-changer-m2city-r1.zipGoogle Drive mirrormetin2-manual-bonus-changer-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