Client Systems & Python UI
Metin2 slot cooldown text: bounded timer display and slot initialization
M2City Client · Editorial · Published 2026-11-05 · Branch-specific details should be checked against your own source.
Adds remaining-time text to client inventory/skill slots that already use cooldown rendering. It supplies the EterPythonLib implementation, wndMgr bindings, app feature flag, Python wrappers and an optional example enabling text for ordinary cooldown slots. It does not modify server cooldown enforcement.
M2City r1 fixes
Replaced the eight-byte float-to-integer formatting path with a bounded formatter. Invalid/non-finite, zero, negative and expired values produce no text; very large remaining times use a bounded marker. Inverse cooldowns do not display a decreasing countdown. New TSlot fields are initialized explicitly during AppendSlot as well as reset in ClearSlot, avoiding assumptions about construction order on custom forks. Existing text-instance creation, missing-font fallback and destruction remain.
Integration
Merge all seven original instruction files using the reviewed overlay. Keep __BL_SLOT_TIME_INFO__ consistent between EterPythonLib and UserInterface; rebuild the client and pack the ui.SlotWindow wrappers together. The new helper uses C++11 std::isfinite/std::snprintf. Adapt only those equivalents when using an older compiler. Confirm the AppendSlot local variable name is Slot in your branch. Font Tahoma:16b.fnt must exist; a missing font should produce a log message and no time label, not a crash. Enable specific slots with EnableSlotTimeInfoText; deactivate with DeactivateSlotTimeInfoText. The Example makes activation global and is optional.
Validation and limits
All seven supplied text fragments were read. The revised native formatter compiled with warnings treated as errors and passed boundary, NaN/infinity, maximum-float and 100,000 countdown-value checks. Construction/reset and inverse gating were inspected in the instruction fragments. Actual DirectX rendering, font availability, item alpha restoration and window/slot reuse still require testing in the target client. The original archive remains unchanged inside the package; apply reviewed/.
Attribution
The supplied archive is named Metin2-Slot-Time-Info-main and uses __BL_SLOT_TIME_INFO__. The Metin2Dev community index lists a related Slot Time Info release by Mali; an exact upstream archive checksum was not established. This attribution is a reference, not proof of byte-identical provenance. Redistribution was confirmed by the supplying owner; retain original notices.
Metin2Dev systems index
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: Reviewed native formatter compiled with C++11 and warnings-as-errors. Zero/negative/expired times, both infinities, NaN, maximum floats, boundary formatting and 100000 countdown values passed. Slot initialization and inverse gating inspected statically; no full client or render test.
Source: Owner-supplied archive, reviewed files and retained notices; exact upstream release not established
SHA-256: 84438fd58b7b925b665f7dc96255de3baf219ddb65cc1568b8f3a88826a5dd04
Download package
3 download options · Sign in to download
metin2-slot-cooldown-text-m2city-r1.zipM2City downloadmetin2-slot-cooldown-text-m2city-r1.zipGoogle Drive mirrormetin2-slot-cooldown-text-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