How to Add a Custom Weapon to Your Metin2 Private Server
Adding a custom weapon involves two separate sides: the client (unpacking packs, placing model/texture/icon files, regenerating item_proto client) and the server (editing item_names.txt and item_proto.txt). Both must be done correctly for the weapon to appear and work in-game.
To edit item_proto without touching raw text, use the free Metin2 Item Proto Editor — spreadsheet view with TXT and SQL export.
What You Need
- WinSCP access to your server
- A client unpacker: EterManager, Eternexus, or EterPack Archiver
- A
.tgafile for the item icon (or reuse an existing one) - A
.gr2file for the 3D weapon model + Granny Viewer to inspect it - One or more
.dds/.tgatexture files for the model
Part I — Client Side
Step 1 — Unpack the Required Packs
Using your unpacker, extract these client packs:
locale_xx(xx = your server's country code)iconitem(for weapons)
Step 2 — Place the Item Icon
Copy your icon file in .tga format into:
icon/item/
If no icon is provided, the client falls back to icon/item/27995.tga by default.
Step 3 — Place the .gr2 Model File
Place your .gr2 weapon model in the correct subfolder under item/weapon/. The path depends on the weapon subtype:
| Subtype | Path |
|---|---|
| Sword (1H) | d:/ymir work/item/weapon/sword/ |
| Two-Handed | d:/ymir work/item/weapon/twohand/ |
| Dagger | d:/ymir work/item/weapon/dagger/ |
| Bow | d:/ymir work/item/weapon/bow/ |
| Bell | d:/ymir work/item/weapon/bell/ |
| Fan | d:/ymir work/item/weapon/fan/ |
| Arrow | d:/ymir work/item/weapon/arrow/ |
Step 4 — Find and Place the Texture
Open your .gr2 file in Granny Viewer and go to the TextureList tab. It will show you the exact path and filename the model expects for its texture. Place your .dds or .tga texture file at exactly that path — same folder, same filename.
Step 5 — Link VNUM to Model and Icon in item_list.txt
Open item_list.txt in the locale_xx pack and add a new line:
WEAPON[TAB]icon/item/00010.tga[TAB]d:/ymir work/item/weapon/00010.gr2
Column breakdown:
- WEAPON — a label for your own reference (any text)
- icon/item/00010.tga — path to your icon file
- d:/ymir work/item/weapon/00010.gr2 — path to your .gr2 model (can be empty for items without a 3D model; defaults to
ymir work/item/etc/item_bag.gr2)
Replace the tab character ([TAB]) with an actual tab (the key above Caps Lock).
Step 6 — Regenerate the Client item_proto
Use the Dump Proto tool to generate a new client-side item_proto from your server's item_names.txt and item_proto.txt. Place the output in the locale_xx pack, replacing the old file.
Note: Complete Part II (server side) before doing this step — Dump Proto reads the server files.
Step 7 — Repack
Repack all modified packs (locale_xx, icon, item) and distribute the updated client.
Part II — Server Side
Step 1 — Choose a VNUM
Connect via WinSCP and open /usr/metin2/db/item_names.txt to find an unused VNUM. Important rules:
- VNUM must be unique across all items
- Weapons and armor VNUMs must be less than 65536
- The same VNUM must be used in item_names.txt, item_proto.txt, and item_list.txt
Step 2 — Add the Display Name (item_names.txt)
In item_names.txt, add:
50001[TAB]Dragon Sword
Format: VNUM TAB DisplayName. This is what players see in-game.
Step 3 — Configure item_proto.txt
Open item_proto.txt (in /usr/metin2/db/) and add a new row. Use the Item Proto Editor to edit visually. Key columns:
| Column | Value | Notes |
|---|---|---|
ITEM (vnum) | 50001 | Your chosen VNUM |
ITEM_NAME(KR) (name) | DragonSword | Internal name used by drop files etc. |
ITEM_TYPE (type) | ITEM_WEAPON | Must be ITEM_WEAPON for weapons |
SUB_TYPE (subtype) | WEAPON_SWORD | See subtype table below |
SIZE (size) | 1 | Inventory squares (1=dagger, 2=bow, 3=two-hand) |
ANTI_FLAG (antiflag) | 0 | Restrictions — see flags below |
FLAG (flag) | 0 | Special behaviors |
ITEM_WEAR (wearflag) | WEAR_WEAPON | Must be WEAR_WEAPON |
GOLD (gold) | 50000 | NPC buy price (player pays this) |
SHOP_BUY_PRICE (buy_price) | 5000 | NPC sell price (player receives ~32% of this) |
LIMIT_TYPE0 | LEVEL | Equip requirement type |
LIMIT_VALUE0 | 50 | Minimum level to equip |
ADDON_TYPE0 (applytype0) | ATT_GRADE_BONUS | First base stat bonus |
ADDON_VALUE0 (applyvalue0) | 120 | Value of first bonus |
value3 | 100 | Minimum physical attack |
value4 | 150 | Maximum physical attack |
SPECULAR (specular) | 50 | Model brightness (0–100; use >0 if model has alpha channel) |
Weapon Subtypes (SUB_TYPE column)
| SUB_TYPE value | Weapon type |
|---|---|
WEAPON_SWORD | One-handed sword |
WEAPON_DAGGER | Daggers (dual wield) |
WEAPON_BOW | Bow |
WEAPON_TWO_HANDED | Two-handed sword |
WEAPON_BELL | Bell (Shaman) |
WEAPON_FAN | Fan (Shaman) |
WEAPON_ARROW | Arrow (ammo for bow) |
WEAPON_CLAW | Claws (Lycan/Wolfman) |
Weapon Value Fields
| Field | Meaning |
|---|---|
value1 | Minimum magic attack (= value + value5) |
value2 | Maximum magic attack (= value + value5) |
value3 | Minimum physical attack (= value + value5) |
value4 | Maximum physical attack (= value + value5) |
value5 | Flat bonus added to all attack values above |
Antiflag Reference (ANTI_FLAG column)
Antiflags restrict who can use the item. Combine multiple with |:
| Antiflag | Effect |
|---|---|
ANTI_FEMALE | Unusable by female characters |
ANTI_MALE | Unusable by male characters |
ANTI_MUSA | Unusable by Warrior |
ANTI_ASSASSIN | Unusable by Ninja |
ANTI_SURA | Unusable by Sura |
ANTI_MUDANG | Unusable by Shaman |
ANTI_WOLFMAN | Unusable by Lycan |
ANTI_DROP | Cannot be thrown on the ground |
ANTI_SELL | Cannot be sold to merchants |
ANTI_GIVE | Cannot trade, personal store, or drop to another player |
ANTI_MYSHOP | Cannot be listed in a personal store |
ANTI_SAFEBOX | Cannot be moved to the warehouse |
Step 4 — Test In-Game
- Restart the game server (or reload item_proto)
- Spawn the item with
/i 50001 - Equip it — verify stats, model renders, no client crash
- Check server logs for "Unknown item" or missing model errors
Common Errors
- Item name shows as "Unknown" — item_names.txt entry missing or VNUM mismatch
- Client crashes on equip — .gr2 path wrong in item_list.txt or file not in pack
- Invisible weapon in hand — texture path from Granny Viewer not matched exactly
- Cannot equip — wearflag not set to WEAR_WEAPON, or level limit not met
- VNUM > 65535 — weapons/armor must be under 65536
- Specular = 0 on model with alpha — makes parts invisible; set specular > 0
Related Tools
- Item Proto Editor — edit item_proto columns in a spreadsheet view, export TXT or SQL
- TXT ↔ SQL Converter — convert item_proto between plain text and SQL INSERT format
- Drop Table Calculator — calculate PCT drop rates if you want the weapon to drop from mobs