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

Cum testezi trade-ul, depozitul și inventarul după un update Metin2

2 noiembrie 2026 6 min de citit

Itemele sunt „banii” serverului tău. Când un update atinge ceva legat de ele (un item nou, o fereastră nouă, binare noi de `game`), cele mai sensibile locuri sunt trade-ul, depozitul și inventarul. O greșeală aici are două forme, ambele grave: un item **dispare** (jucător supărat) sau un item **apare de două ori** (dupe, care strică economia). În această lecție îți faci o listă de teste pe care o rulezi după fiecare update de acest fel, întâi pe serverul de test, apoi rapid pe live.

Pe scurt: folosești două conturi de test, numeri itemele înainte, faci trade, depozit, relog, schimbare de canal și restart, apoi numeri din nou. Totalul trebuie să fie identic. Confirmi și din baza de date.

Cuvinte pe care le vei întâlni

CuvântCe înseamnă
Trade (schimb)Fereastra în care doi jucători își dau iteme și yang.
Depozit (safebox)Spațiul de depozitare al contului, comun tuturor personajelor lui.
Stivă (stack)Mai multe bucăți din același item într-o singură căsuță.
DupeUn item copiat printr-o eroare: există de două ori, deși a fost creat o dată.
RelogTe deloghezi și te loghezi din nou.

De ce aceste trei locuri

Când muți un item, serverul îl scoate dintr-un loc și îl pune în altul, apoi salvarea ajunge în baza de date mai târziu (vezi cum salvează db datele). Dacă ceva se rupe la mijloc (un canal schimbat, un restart, o fereastră nouă care nu verifică totul), itemul poate rămâne în ambele locuri sau în niciunul. Trade-ul, depozitul și inventarul sunt exact locurile unde se mută cel mai des.

Pasul 1: Pregătește-te pe serverul de test

  1. Două conturi de test: A și B, fiecare cu un personaj.
  2. Pe A, câteva iteme ușor de recunoscut: o armă (de exemplu Sabie+9, VNUM 19 în pachetele clasice), o stivă de poțiuni, puțin yang. Le creezi cu comenzile de GM pe serverul de test.
  3. Dacă update-ul a adus un item nou, include-l și pe el.
  4. O foaie cu trei coloane: înainte, după, observație.

Notează pe foaie ce are fiecare personaj: ce iteme, câte bucăți, cât yang. Verifică și în baza de date (vezi Pasul 4).

Pasul 2: Rulează testele, unul câte unul

Nr.Ce faciCe trebuie să iasă
1A îi dă lui B arma prin tradeArma e doar la B
2A îi dă lui B jumătate din stiva de poțiuniTotalul A + B e același ca înainte
3A îi dă lui B yang prin tradeYang total A + B neschimbat
4Trade cu inventarul lui B plinTrade-ul e refuzat, nimic nu dispare
5Trade anulat în ultimul momentFiecare își păstrează itemele
6B pune arma în depozit, închide, redeschideArma e în depozit
7B ia arma din depozitArma e în inventar, depozitul e gol
8Itemul nou pus în depozit și scos înapoiAcelași item, aceleași bonusuri
9Relog după testele de mai susTotul e unde l-ai lăsat
10Schimbare de canalTotul e unde l-ai lăsat
11Restart complet al serverului de testTotul e unde l-ai lăsat

Fă câte un test o dată și notează rezultatul înainte să treci la următorul. Dacă un test eșuează, te oprești: nu mai are sens să continui până nu afli de ce.

Testele 9, 10 și 11 sunt cele mai importante. Multe probleme nu se văd imediat, ci abia după ce datele trec prin salvare și se încarcă din nou. Un item care arată bine în fereastră, dar dispare după relog, e o problemă de salvare.

Pasul 3: Testează și cazurile „urâte”

Jucătorii nu fac doar ce te aștepți. Încearcă și:

  • dublu-click rapid pe butonul de acceptare la trade;
  • deschiderea depozitului și mutarea rapidă a mai multor iteme;
  • delogare imediat după trade;
  • trade cu un item care, conform setărilor lui din item_proto, nu ar trebui să se poată schimba (vezi itemul nou la trade și depozit).

Nu încerca să „spargi” serverul live. Aceste teste se fac doar pe test.

Pasul 4: Confirmă din baza de date

Ce vezi în joc trebuie să se potrivească cu ce e în baza de date. Pe serverul de test, după restartul de la testul 11 (ca datele să fie sigur salvate), rulează:

sql
SELECT window, vnum, SUM(count) AS total FROM player.item WHERE owner_id IN (4567, 4568) GROUP BY window, vnum;

Pune în paranteză ID-urile personajelor A și B (le găsești în player.player). Comanda numără, pe fiecare fereastră și pe fiecare VNUM, câte bucăți au.

Pentru depozit, adaugă ID-urile conturilor, pentru că itemele din depozit au ca proprietar contul:

sql
SELECT vnum, SUM(count) AS total FROM player.item WHERE owner_id IN (123, 124) AND window = 'SAFEBOX' GROUP BY vnum;

Yang-ul personajelor e în coloana gold din player.player:

sql
SELECT id, name, gold FROM player.player WHERE id IN (4567, 4568);

Ce ar trebui să vezi: totalurile identice cu cele de dinainte de teste. Dacă arma apare de două ori, ai un dupe. Dacă lipsește, ai o pierdere. Ambele înseamnă: update-ul nu merge pe live.

Pe serverul live nu numeri itemele jucătorilor reali, dar poți folosi aceleași comenzi pe personajele tale de test, după mentenanță.

Pasul 5: Uită-te în jurnale

  • syserr din core-uri și din db: erori noi apărute în timpul testelor?
  • Tabelul log.log: în pachetul verificat, schimburile apar cu EXCHANGE_GIVE și EXCHANGE_TAKE în coloana how. Dacă trade-ul a mers, dar nu apare în log, sistemul de jurnale e oprit sau a fost modificat.

Pasul 6: Versiunea scurtă, pe live

După mentenanță, pe serverul live, cu personajele tale de test, repetă rapid testele 1, 6, 7 și 9. Durează cinci minute și îți confirmă că ce a mers pe test merge și pe live. Abia apoi deschizi serverul (vezi planul de mentenanță).

Greșeli des întâlnite

  • Testezi doar în fereastră, fără relog sau restart. Problemele de salvare se văd doar după.
  • Testezi cu un singur cont. Trade-ul are nevoie de doi.
  • Nu numeri înainte. Fără „înainte” nu poți dovedi că lipsește sau s-a dublat ceva.
  • Cauți depozitul cu ID-ul personajului. Itemele din depozit au ca proprietar contul.
  • Treci peste un test eșuat „că e o întâmplare”. Dupe-urile încep exact așa.

Întrebări frecvente

Trebuie să fac toate testele la fiecare update?

La fiecare update care atinge iteme, ferestre de inventar sau binarele game/db, da. Pentru o schimbare doar de drop sau de text, ajunge o verificare scurtă.

Ce fac dacă descopăr un dupe pe live?

Nu șterge iteme la întâmplare. Fă backup imediat, notează ce ai observat, verifică log.log ca să vezi de unde vine și, dacă e nevoie, oprește temporar funcția afectată. Apoi repari pe serverul de test.

Trebuie să testez și magazinele personale?

Da, dacă update-ul le atinge. Aplică aceeași idee: numeri înainte, cumperi, numeri după, relog, restart.

Ce urmează

Multe update-uri au și o parte de client. Lecția următoare: cum pregătești un update de client cu autopatcher. 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