Înapoi la blogToate tutorialele Metin2
Tutoriale Metin2 · Lecția 32 din 99

Cum modifici valorile unui item în item_proto: coloanele explicate pe înțelesul tuturor

2 noiembrie 2026 8 min de citit

Vrei ca licoarea roșie să vindece mai mult, ca o sabie să ceară alt nivel sau ca un item să nu mai poată fi vândut la NPC. Toate aceste lucruri stau într-un singur fișier: **item_proto**. Arată ca un tabel uriaș, cu zeci de coloane și mii de rânduri, și sperie la prima vedere. În lecția asta îl descifrăm coloană cu coloană și facem împreună o modificare mică, ușor de verificat.

Pe scurt: fiecare rând din item_proto.txt descrie un item (după VNUM). Găsești rândul, schimbi o singură valoare păstrând TAB-urile, repornești serverul de test și verifici în joc. Clientul are propria copie a fișierului, deci unele schimbări trebuie făcute și acolo.

Cuvinte pe care le vei întâlni

CuvântCe înseamnă
item_proto„Fișa tehnică” a tuturor itemelor: tip, preț, nivel cerut, valori, bonusuri.
RândUn item. Primul rând al fișierului e antetul (numele coloanelor).
FlagO „bifă” cu nume fix, de exemplu ITEM_STACKABLE (se adună în teanc).
Anti-flagO interdicție, de exemplu ANTI_SELL (nu se poate vinde la NPC).
ApplyUn bonus fix al itemului, de exemplu viteză de atac.
ValueȘase numere (VALUE0…VALUE5) al căror sens depinde de tipul itemului.

Unde e fișierul și care copie contează

În pachetul pe care l-am verificat, serverul citește share/conf/item_proto.txt. În folderul db există tot un item_proto.txt, dar acolo e doar o scurtătură (link) spre fișierul din share/conf. Procesul db îl citește la pornire, împreună cu item_names.txt (numele afișate).

Atenție, diferă între pachete: în pachetul verificat există și un tabel item_proto în baza de date player, dar serverul doar *scrie* acolo o copie la pornire. Dacă îl modifici în SQL, schimbarea dispare. Alte pachete fac invers: citesc itemele din SQL, iar fișierul TXT lipsește. Verifică la tine ce există, cum ai învățat în lecția despre structura serverfiles.

Pasul 1: găsește rândul itemului

Ai nevoie de VNUM-ul itemului (dacă nu știi ce e, citește lecția Ce este VNUM). Pe server, din folderul share/conf:

sh
grep -P "^27001\t" item_proto.txt

^27001\t înseamnă „rândul care începe cu 27001 urmat de TAB”. Fără \t ai găsi și 270010 sau alte numere care încep la fel.

Pe Windows: descarci fișierul cu WinSCP, îl deschizi în Notepad++ și cauți cu Ctrl+F. Primul rând (antetul) poate apărea cu semne ciudate: în pachetul verificat e scris parțial în coreeană. E normal, nu-l „repara”.

Pasul 2: înțelege coloanele

În pachetul verificat, fiecare rând are 33 de coloane, despărțite prin TAB. Le-am verificat în codul care citește fișierul (db/src/ProtoReader.cpp). Iată-le în ordine, cu exemplul Sabie+9 (VNUM 19):

ColoanaCe înseamnăLa Sabie+9
VNUMNumărul itemului19
ITEM_NAME(K)Nume intern (cel afișat vine din item_names)text coreean
ITEM_TYPETipul: armă, armură, consumabil, material…ITEM_WEAPON
SUB_TYPESubtipul: sabie, pumnal, licoare…WEAPON_SWORD
SIZECâte căsuțe ocupă în inventar, pe verticală (1–3)2
ANTI_FLAGInterdicții (cine nu-l poate folosi, ce nu se poate face cu el)ANTI_MUDANG
FLAGProprietăți (stivuire, upgrade etc.)ITEM_TUNABLE
ITEM_WEARUnde se echipeazăWEAR_WEAPON
IMMUNEImunități (paralizie, otravă…)NONE
A 10-a coloană (preț)Prețul când îl cumperi de la un magazin NPC100
A 11-a coloană (preț)Baza prețului când îl vinzi la NPC750
REFINEVNUM-ul următorului nivel de upgrade (0 = nu se mai poate)0
REFINESETRețeta de upgrade din tabelul refine_proto0
MAGIC_PCTȘansa (%) să apară cu bonusuri aleatorii când e dropat15
LIMIT_TYPE0 / LIMIT_VALUE0Prima condiție (de obicei nivelul minim)LEVEL / 0
LIMIT_TYPE1 / LIMIT_VALUE1A doua condițieLIMIT_NONE / 0
ADDON_TYPE0…2 / ADDON_VALUE0…2Cele 3 bonusuri fixe (apply)viteză atac 22
VALUE0…VALUE5Valorile itemului, sensul depinde de tip0 15 19 13 15 63
SpecularLuciul modelului, folosit de client100
SOCKETCâte locașuri pentru pietre are1
ATTU_ADDONBonus special adăugat automat la creare (la unele arme)0

Câteva lămuriri care contează:

  • ANTI_MUDANG înseamnă „șamanul nu o poate folosi”. Celelalte clase: ANTI_MUSA (războinic), ANTI_ASSASSIN (ninja), ANTI_SURA (sura). Le găsești detaliate în lecția despre armele de început.
  • Mai multe flag-uri se scriu în aceeași celulă, despărțite prin bară verticală, de exemplu ITEM_STACKABLE | ITEM_SLOW_QUERY.
  • Prețul de vânzare la NPC nu e chiar coloana a 11-a: în sursa verificată, serverul împarte valoarea la 5 și mai scade o taxă de 3%. La Sabie+9, jucătorul primește în jur de 146 yang.

Ce înseamnă VALUE0…VALUE5 (exemple verificate)

Sensul valorilor se schimbă după tip. Am verificat în sursa game câteva cazuri:

Tip de itemVALUE-uri importante
ArmăVALUE1–VALUE2 = atac magic min–max, VALUE3–VALUE4 = atac min–max, VALUE5 = bonusul de upgrade
Armură (corp, cap, picioare, scut)VALUE1 = apărare, VALUE5 = apărare în plus de la upgrade
Licoare (USE_POTION)VALUE0 = HP refăcut, VALUE1 = MP refăcut

La Sabie+9: atac 13–15, atac magic 15–19, iar VALUE5 = 63 se adaugă la atac. De aceea Sabie+0 are VALUE5 = 0, iar fiecare +1 adaugă 7.

Pasul 3: fă o singură modificare mică

Exercițiul nostru: Licoarea roșie (S), VNUM 27001, reface 300 HP. O facem să refacă 400. Rândul original, în pachetul verificat (cu TAB-uri între coloane; numele intern e în coreeană):

text
27001	(nume)	ITEM_USE	USE_POTION	1	NONE	ITEM_STACKABLE | ITEM_SLOW_QUERY	NONE	NONE	32	30	0	0	0	LIMIT_NONE	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	300	0	0	0	0	0	0	0	0

Bucată cu bucată: tip consumabil, subtip licoare, ocupă o căsuță, fără interdicții, se stivuiește, costă 32 yang la magazin. 300 este VALUE0, adică HP-ul refăcut.

  1. Fă o copie: cp item_proto.txt item_proto.txt.bak-2026-11-02.
  2. În Notepad++ (cu View → Show Symbol → Show All Characters pornit, ca să vezi TAB-urile), schimbă doar 300 în 400.
  3. Salvează cu aceeași codificare și același sfârșit de rând (vezi lecția Fișiere TXT: taburi și encoding).
  4. Compară: diff -u item_proto.txt.bak-2026-11-02 item_proto.txt. Trebuie să vezi un singur rând schimbat.

Pasul 4: încarcă modificarea

Cel mai sigur: repornești serverul de test (lecția Oprire și restart). În sursa verificată există și comanda GM /reload p, care cere procesului db să recitească fișierele proto. E utilă pe serverul de test, dar repornirea completă îți dă cea mai clară imagine.

Ce ar trebui să vezi: serverul pornește normal, iar în syserr nu apare nimic nou. Cu un personaj rănit, licoarea reface acum mai mult HP.

De ce trebuie atins și clientul

Clientul are propria copie, compilată, a item_proto. Din ea afișează tooltip-ul (textul când ții mouse-ul pe item). Dacă schimbi doar serverul:

  • efectul real se schimbă (serverul decide);
  • textul din tooltip poate arăta în continuare valoarea veche.

Pentru valori afișate (atac, apărare, nivel cerut, preț) refaci și item_proto-ul clientului. Pașii sunt în lecția următoare.

Ce veziCe înseamnăCe faci
db se oprește, în syserr scrie „ItemProto Reading Failed”Un tip, subtip, limită sau apply scris greșitCompară cu backupul, corectează cuvântul
Modificarea nu are efectAi editat altă copie sau nu ai repornitVerifică calea și repornește
Efectul e nou, tooltip-ul vechiClientul are item_proto vechiActualizează și clientul
Un flag nou nu are efectNume de flag scris greșitVerifică litera cu literă

Greșeli des întâlnite

  • Spații în loc de TAB. Rândul se citește greșit și coloanele „alunecă”.
  • Flag scris greșit. În sursa verificată, un flag sau anti-flag necunoscut e ignorat fără nicio eroare. Itemul pare normal, dar interdicția lipsește. Copiază numele dintr-un rând existent.
  • Diacritice sau ghilimele în coloana de nume intern. Pune numele frumos doar în item_names.txt; coloana a doua las-o simplă, fără diacritice și fără ghilimele.
  • Ștergi rândul de antet. Serverul sare peste primul rând; dacă îl ștergi, pierzi primul item.
  • Copiezi coloane de pe forum. Alte pachete au 34–36 de coloane (de exemplu un al patrulea apply). Numără coloanele la tine.

Întrebări frecvente

Pot edita item_proto cu Excel?

Nu e recomandat. Excel poate schimba numerele, codificarea și TAB-urile fără să observi. Folosește Notepad++.

Am schimbat valoarea, dar itemele vechi ale jucătorilor?

Valorile din item_proto se aplică tuturor itemelor cu acel VNUM, inclusiv celor deja existente. Bonusurile aleatorii de pe un item sunt însă salvate separat, pe item.

De ce sunt două coloane de preț?

Una e prețul de cumpărare de la magazinul NPC, cealaltă e baza pentru vânzarea la NPC. Detalii despre magazine în lecția Iteme într-un magazin NPC.

Ce urmează

Lecția următoare: Cum creezi un item nou (server + client). Toate lecțiile sunt în lista tutorialelor Metin2.

Server Metin2 gata de joc

Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.

DiscordWhatsApp