Până acum am modificat cufere care existau deja. Dar pentru un eveniment, un boss nou sau o recompensă de vot ai nevoie de un cufăr al tău, cu nume și premii proprii. Un cufăr nou nu e doar o grupă de premii: trebuie să existe ca item pe server, să știe că se deschide și să fie cunoscut de client. Lecția îți arată toate piesele, în ordinea corectă.
item_proto rândul unui cufăr care merge (tip ITEM_GIFTBOX), îi faci grupa în special_item_group.txt cu același VNUM și adaugi itemul în client (nume, iconiță, proto). Apoi testezi pe serverul de test.Cuvinte pe care le vei întâlni
| Cuvânt | Ce înseamnă |
|---|---|
| item_proto | „Fișa tehnică” a fiecărui item: tip, mărime, flag-uri, valori. |
| ITEM_GIFTBOX | Tipul de item „cutie cadou”. Când îl deschizi, serverul caută grupa cu același VNUM. |
| Flag | O bifă pe item: se poate vinde, arunca, stivui etc. |
| Iconiță | Imaginea mică din inventar, un fișier .tga din client. |
Cele patru piese ale unui cufăr
| Piesă | Unde | De ce |
|---|---|---|
1. Rândul din item_proto (server) | share/conf/item_proto.txt în pachetul verificat | Serverul trebuie să știe că itemul există și că e cufăr |
| 2. Grupa de premii | special_item_group.txt | Ce dă cufărul |
| 3. Datele din client | item_proto din client, item_list.txt, itemdesc.txt | Ca jucătorul să vadă nume, iconiță, descriere |
| 4. Sursa cufărului | mob_drop_item.txt, magazin sau quest | Cum ajunge cufărul la jucători |
Dacă lipsește oricare dintre primele trei, cufărul nu merge sau apare greșit.
Pasul 1: Alege un VNUM liber
Un VNUM folosit deja ar suprascrie alt item. Caută în lista ta înainte. Exemplu: verifici dacă 60100 e liber:
grep -w "^60100" /usr/home/game/share/conf/item_proto.txt
grep -w "^60100" /usr/home/game/share/conf/item_names.txtDacă nu apare nimic, numărul e liber. În pachetul verificat, 60100 e liber; la tine poate fi ocupat de un sistem adăugat de altcineva. Notează-ți VNUM-ul ales: îl vei folosi în toate cele patru piese. Detalii despre VNUM în lecția Ce este VNUM.
Pasul 2: Creează itemul pe server
În pachetul verificat, item_proto e un fișier text în share/conf. În alte pachete, itemele stau într-un tabel item_proto din baza de date. Lecția Cum creezi un item nou (server și client) explică pe larg ambele variante.
Cel mai sigur: copiezi rândul unui cufăr care deja funcționează și schimbi doar VNUM-ul și numele. În pachetul verificat există zeci de iteme de tip ITEM_GIFTBOX, de exemplu 30093 („Tolbă norocoasă”). Primele coloane ale rândului arată așa (restul sunt zerouri și valori NONE):
30093 NumeOriginal ITEM_GIFTBOX 0 1 ANTI_DROP | ANTI_SELL | ANTI_STACK ITEM_STACKABLE NONE| Coloană | Ce înseamnă |
|---|---|
30093 | VNUM. Îl schimbi în 60100. |
NumeOriginal | Numele intern (în original e scris cu litere coreene). Pune un nume unic, de exemplu CufarEveniment. |
ITEM_GIFTBOX | Tipul: cutie care se deschide. Nu-l schimba. |
0 | Subtipul. |
1 | Mărimea în inventar (1 căsuță). |
ANTI_DROP … | Ce nu se poate face cu itemul: aruncat, vândut, stivuit. Alegi ce vrei. |
ITEM_STACKABLE | Se poate stivui. |
Nu șterge și nu muta coloane: rândul trebuie să aibă exact același număr de coloane ca restul fișierului. Adaugă și numele în item_names.txt (și în varianta pe limbă, de exemplu item_names_ro.txt):
60100 Cufar de EvenimentDe ce ITEM_GIFTBOX? Am verificat în sursa jocului: la deschiderea unui item de acest tip, serverul caută automat grupa din special_item_group.txt cu același VNUM și scade un cufăr din stivă. Alte tipuri de cufăr (de exemplu 50011 din pachetul verificat) sunt deschise de cod scris special pentru ele și nu merg dacă doar le copiezi.
Pasul 3: Fă grupa de premii
În special_item_group.txt adaugi la final o grupă cu Vnum 60100:
Group CufarEveniment
{
Vnum 60100
1 27003 20 50
2 25040 2 30
3 70024 1 15
4 1 100000 5
}Ponderile 50 + 30 + 15 + 5 = 100, deci șansele sunt 50%, 30%, 15% și 5%. Rândul 4 cu itemul 1 dă yang (100.000), așa cum funcționează în pachetul verificat. Pentru mai multe premii deodată folosești Type Pct, explicat în lecția Drop din cufere.
Pasul 4: Adaugă cufărul în client
Fără client, jucătorul vede un item fără nume și fără iconiță, sau nu îl vede deloc. În clientul pachetului verificat, în arhiva de limbă (de exemplu locale/ro), sunt:
item_proto: o variantă compilată a fișei itemului, generată cu unealta pachetului (în pachetul verificat,dump_proto) din aceleași date ca pe server;item_list.txt: legătura dintre VNUM și iconiță;itemdesc.txt: numele și descrierea afișate.
Rânduri reale pentru cufărul 50011, adaptate pentru cufărul nou:
60100 ETC icon/item/50011.tga60100 Cufar de Eveniment Un cufar primit la evenimentele serverului.Am scris fără diacritice, ca în fișierele pachetului verificat: dacă vrei diacritice, păstrează codificarea originală a fișierului (vezi Fișiere TXT: taburi și encoding). Primul rând merge în item_list.txt și refolosește iconița cufărului 50011 (nu ai nevoie de grafică nouă). Al doilea merge în itemdesc.txt. Ambele au TAB între coloane. După modificare, arhiva clientului trebuie reîmpachetată și trimisă jucătorilor (de obicei prin autopatcher). Pașii exacți depind de clientul tău.
Pasul 5: Testează, în ordine
- Repornește serverul de test (Oprire și restart) și verifică
syserr. - Pornește clientul modificat și intră cu un cont GM pe serverul de test.
- Creează cufărul:
/item 60100 5. Verifică numele și iconița. - Deschide-le pe rând. Primești premiile din grupă și cufărul scade din stivă.
- Test cu inventarul plin: umple inventarul și deschide un cufăr. În sursa verificată, premiul cade pe jos lângă tine, rezervat ție un timp scurt, apoi dispare. Spune-le jucătorilor să-și facă loc înainte.
Ce ar trebui să vezi: nume corect, iconiță, premii doar din listă și niciun mesaj nou în syserr.
Pasul 6: Pune cufărul în joc
Abia acum decizi cum ajunge la jucători: drop din monștri (lecția Monstru care lasă cufăr), magazin sau quest.
Greșeli des întâlnite
| Ce vezi | Cauza probabilă | Ce faci |
|---|---|---|
| Dublu-click nu face nimic | Tipul nu e ITEM_GIFTBOX sau lipsește grupa | Verifică tipul și caută cannot find special item group în syserr |
| Item fără nume sau iconiță | Clientul nu are datele itemului | Adaugă-l în item_proto, item_list.txt, itemdesc.txt din client |
| Alt item s-a stricat | VNUM-ul ales era ocupat | Pune backupul, alege alt VNUM |
| Serverul nu pornește | Rând item_proto cu coloane lipsă sau premiu inexistent | Compară cu rândul copiat, citește syserr |
Întrebări frecvente
Pot folosi o iconiță proprie?
Da, dar trebuie adăugată în client, în folderul de iconițe, și scrisă calea ei în item_list.txt. Pentru început, refolosește o iconiță existentă.
Pot să-i schimb premiile mai târziu?
Da, doar din special_item_group.txt și cu restart. Clientul nu trebuie actualizat pentru asta.
Pot crea cufărul doar pe server?
Tehnic se deschide, dar jucătorii îl vor vedea greșit. Serverul și clientul trebuie să aibă aceleași date.
Ce urmează
Ai văzut deja Type drop și Type Pct. E momentul să le înțelegi pe toate: Tipurile de drop: drop, limit, kill. 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ă.