Mai jos vei afla totul despre ITEM_PROTO: Ce este, cum functioneaza si ce face fiecare coloana / valoare din acest fisier.
Acesta este un tutorial detaliat care are scopul de a explica cum sa configurezi un item pe serverul tau.
Iata lista de configurari posibile:
Code:
# Vnum
# Nume local
# Type si Subtype
# Size
# Antiflag / Flag / Wearflag
# Imunitate
# Pret de vanzare la comerciant => Jucator | Jucator => Comerciant
# Vnum-ul obiectului dupa ce este rafinat (Fierar)
# Materialul necesar pentru a upgrada obiectul
# Sansa de a obtine un bonus la crearea obiectului
# Limitari
# Valoarea limitarilor
# Tipul de bonus
# Valoarea bonusului
# Valori
# Numarul de spatii libere
# Daune medii / Daune abilitati
# Specular
Acest tutorial explica de asemenea cum sa implementezi un item pe serverul tau (arma, armura, frizura, etc...).
Ce este de fapt ITEM_PROTO?
Fisierul item_proto.txt, care se află în serverul tău, la locația usr/.../server/db/item_proto.txt, conține configurația tuturor obiectelor din joc.
- In primul rand, avem numele fiecarei coloane (ITEM, ITEM_NAME, ITEM_TYPE, etc...)
- Sub acestea, avem lista tuturor obiectelor cu valoarea lor specifica fiecarei coloane.
Nota! Fiecare coloana corespunde unui parametru. Fiecare parametru este separat de un tab.
Nota #2! Pentru o mai buna lizibilitate, deschide fisierul item_proto.txt in Excel. Acest lucru iti va permite sa faci mai putine greseli si sa verifici mai usor! Click dreapta -> Open with -> Excel
- Cand serverul tau se porneste, va incarca intreg continutul acestui fisier .txt sub forma de baza de date.
- In baza ta de date (Navicat), mergi la tabelul player -> item_proto. Aici vei gasi toate obiectele tale cu configuratiile lor respective.
Nota! Nu edita direct in baza de date! In Navicat putem vedea doar mai usor itemele de pe server. Orice modificare in baza de date trebuie facuta in fisierul item_proto.txt. Daca modifici in Navicat, modificarile nu se vor salva.
- Pe langa fisierul item_proto.txt, trebuie sa generam si un fisier fara extensie item_proto, pe care sa il punem in clientul nostru (pack -> locale/ro)
- Daca modificam doar item_proto.txt fara sa facem acest pas, itemele vor avea datele corecte, dar vizual nu vor aparea!
- Criptarea se face cu ajutorul dump_proto (un program care vine la pachet deobicei cu serverfiles)
1. Vnum (Item ID / Vnum)
- Acesta este numărul (sau ID-ul) obiectului tău. (Exemplu: /i vnum_item) Unele obiecte sunt gestionate de server prin vnum. Schimbarea vnum-ului acestora va cauza erori / nu vor mai functiona cum trebuie (pentru anumite iteme, cele clasice "ymir").
Nota! VNUM-ul trebuie să fie același cu cel folosit în item_names.txt și cel folosit atunci când implementezi obiectul pe partea de client!
2. ITEM_NAME / name
Acesta nu este prea important, poti pune orice!
3. (ITEM_TYPE / type) și (SUB_TYPE / subtype)
Tipul și Subtipul sunt parametri foarte importanți, așa că trebuie să fii atent când îi configurezi!
Unele obiecte au nevoie de un type/subtype anume ca sa functioneze corect.
Exemplu: Pentru ca un item de quest sa functioneze corect, acesta trebuie sa aiba la coloana type: ITEM_QUEST
Subtype este un argument aditional. De exemplu, frizurile au type ITEM_COSTUME (pentru ca sunt costume), dar ca si subtype acestea au COSTUME_HAIR. Subtype ne ajuta sa controlam mai bine ce face un item.
Aici este lista completa cu toate type-urile/subtype-urile clasice pe care le gasesti pe orice server:
Code:
ITEM_WEAPON : Arma
WEAPON_SWORD : Sabie
WEAPON_DAGGER : Pumnale
WEAPON_BOW : Arc
WEAPON_TWO_HANDED : Arma doua maini
WEAPON_BELL : Clopot
WEAPON_FAN : Evantai
WEAPON_ARROW : Sageata
WEAPON_MOUNT_SPEAR : Nefolosit
WEAPON_CLAW : Gheare Lycan
WEAPON_WEDDING : Obiecte de nunta
ITEM_ARMOR : Echipament
ARMOR_BODY : Armura
ARMOR_HEAD : Coif
ARMOR_UNIQUE : Scut
ARMOR_WRIST : Bratara
ARMOR_FOOTS : Papuci
ARMOR_NECK : Coliere
ARMOR_EAR : Cercei
ITEM_USE : Obiect cu o singura utilizare
USE_POTION : Poțiune HP/SP (sau orice alta potiune)
USE_TALISMAN : Pergamente de teleportare
USE_TUNING : Pergamente de rafinare
USE_MOVE : /
USE_TREASURE_BOX : Cufar cu comori (de fier si de aur)
USE_MONEYBAG : /
USE_BAIT : Momeala (folosita pentru pescuit)
USE_ABILITY_UP : Potiune care ofera un bonus (ex: Dragon Blessing)
USE_AFFECT : Asemanator, dar ofera un efect
USE_CREATE_STONE : Saculet care da pietre spirituale aleatorii (vnum intre 28000 si 28013)
USE_SPECIAL : Aceste vnum-uri sunt hardcoded, nu vrei sa le modifici
USE_POTION_NODELAY : Potiuni de vindecare instantanee (sau regenerare instantanee de SP)
USE_CLEAR : Potiune care curata toate efectele negative (similar cu shamanii de vindecare)
USE_INVISIBILITY : Ofera invizibilitate completa pentru 5 minute (ca un GM/skill Camuflaj!)
USE_DETACHMENT : Folosit pentru a scoate o piatra spirit dintr-un obiect
USE_BUCKET : /
USE_POTION_CONTINUE : Folosita dupa o moarte (ex: medalie)
USE_CLEAN_SOCKET : Indeparteaza pietrele spirit sparte
USE_CHANGE_ATTRIBUTE : Schimba 1/5 bonusuri
USE_ADD_ATTRIBUTE : Adauga bonusuri 1/4 si 6/7
USE_ADD_ACCESSORY_SOCKET : Diamant (folosit pe accesorii)
USE_PUT_INTO_ACCESSORY_SOCKET : Finisaje (folosite pe accesorii)
USE_ADD_ATTRIBUTE2 : Marmura binecuvantata
USE_RECIPE : Reteta
USE_CHANGE_ATTRIBUTE2 : Schimba bonusurile 6/7
USE_BIND : Folosit pentru sistemul Soul Bind
USE_UNBIND : La fel, dar pentru a debinda un obiect
USE_TIME_CHARGE_PER : Reincarca un Dragon Soul (durata in %)
USE_TIME_CHARGE_FIX : Reincarca un Dragon Soul (durata fixa)
USE_PUT_INTO_BELT_SOCKET : Diamant pentru curele
ITEM_MATERIAL : Material
MATERIAL_DS_REFINE_NORMAL : Material folosit pentru rafinarea pietrelor Dragon
MATERIAL_DS_REFINE_BLESSED : Material folosit pentru rafinarea pietrelor Dragon
MATERIAL_DS_REFINE_HOLLY : Material folosit pentru rafinarea pietrelor Dragon (cu o greseala de scriere la "Holy")
ITEM_METIN : Pietre Spirituale
METIN_NORMAL : Piatra normala
METIN_GOLD : Piatra rara (necesita un slot specific!) (functie nefolosita)
ITEM_FISH : Peste
FISH_ALIVE : Peste viu (recompensa configurabila in fishing.txt)
FISH_DEAD : Poate fi prajit la foc de tabara
ITEM_UNIQUE : Obiect de item-shop (cu durata limitata) (echipabil)
UNIQUE_SPECIAL_RIDE : Item mount (folosibil prin misiune cu flag-ul adecvat (512))
UNIQUE_3 : Item mount
UNIQUE_7 : Acelasi interes ca obiectele 3/7 (neechipabil)
USE_SPECIAL : Sunt echipabile / dezechipabile sau Silk Bundle (vnum 71049)
ITEM_SKILLBOOK : Carte de abilitati
ITEM_QUEST : Obiect quest (folosind .use)
ITEM_POLYMORPH : Globul transformarii
ITEM_TREASURE_BOX : Cufar de deschis cu o cheie
ITEM_TREASURE_KEY : Cheie pentru deschiderea unui cufar (drop-uri configurabile in special_item_group.txt)
ITEM_SKILLFORGET : Carte uitarii
ITEM_GIFTBOX : Cufar fara cheie (de configurat in special_item_group.txt)
ITEM_PICK : Tarnacop
ITEM_HAIR : Frizuri (versiunea veche)
ITEM_BLEND : Roua (potiune configurabila in blend.txt)
ITEM_ROD : Undita
ITEM_CAMPFIRE : Foc de tabara
ITEM_ELK : Yang
ITEM_SECONDARY_COIN : Folosit pentru ShopEx sau alte scopuri, probabil folosit oficial in noul sistem elemental pentru magazinele de breasla. Momentan nefolosit.
ITEM_RING : Inele (echipabile)
ITEM_BELT : Curea
ITEM_COSTUME : Costume
0. COSTUME_BODY : Costum armura
1. COSTUME_HAIR : Costum frizura
2. COSTUME_WEAPON : Costum arma (Weapon Skin)
3. COSTUME_ACCE : Sash / Accesoriu (Esarfa)
4. COSTUME_MOUNT : Mount Costume
ITEM_DS : (Dragon Soul)
0. DS_SLOT1 : Dragon Diamant
1. DS_SLOT2 : Dragon Rubin
2. DS_SLOT3 : Dragon Jad
3. DS_SLOT4 : Dragon Safir
4. DS_SLOT5 : Dragon Granit
5. DS_SLOT6 : Dragon Onyx
ITEM_EXTRACT : Extractor DragonSoul
0. EXTRACT_DRAGON_SOUL :
1. EXTRACT_DRAGON_HEART :
Nota: Daca nu este folosit niciun subtype, punem ITEM_NONE!
4. (SIZE / size)
Reprezinta numarul de patratele (cells) pe care il va ocupa obiectul tau in inventar/depozit/negot/etc.
De exemplu punem 1 pentru pumnale, 2 pentru arcuri, 3 pentru arme doua maini.
5. (ANTI_FLAG / antiflag)
Antiflag-ul sunt restrictii pe care le putem aplica asupra utilizarii obiectului.
Lista este urmatoarea:
Code:
ANTI_FEMALE : Nu poate fi folosit de femei
ANTI_MALE : Nu poate fi folosit de barbati
ANTI_MUSA : Nu poate fi folosit de razboinici
ANTI_ASSASSIN : Nu poate fi folosit de ninja
ANTI_SURA : Nu poate fi folosit de sura
ANTI_MUDANG : Nu poate fi folosit de saman
ANTI_GET : Neconfigurat
ANTI_DROP : Imposibil de aruncat pe jos
ANTI_SELL : Imposibil de vandut la NPC
ANTI_EMPIRE_A : Neconfigurat
ANTI_EMPIRE_B : Neconfigurat
ANTI_EMPIRE_C : Neconfigurat
ANTI_SAVE : Neconfigurat
ANTI_GIVE : Nu poate fi vandut intr-un magazin personal, nu poate fi dropat de un jucator cu rang negativ, nu poate fi aruncat pe jos, nu poate fi schimbat
ANTI_PKDROP : Nu poate fi dropat de un jucator cu rang negativ
ANTI_STACK : Nu poate fi stivuit (stackat) (trebuie sa fie stackabil, vezi flag-urile)
ANTI_MYSHOP : Nu poate fi vandut intr-un magazin personal
ANTI_SAFEBOX : Nu poate fi mutat in depozit
ANTI_BIND : Nu poate fi BINDED
ANTI_WOLFMAN : Nu poate fi folosit de lycan
Nota! Poti pune mai multe antiflag-uri separandu-le cu "|"
6. (FLAG / flag)
Flag-ul creste posibilitatile de actiuni ale obiectelor tale.
Lista flaguri posibile / ce fac:
Code:
ITEM_TUNABLE : Poti scoate pietrele din arma/armura
ITEM_STACKABLE : Poti stivui obiectele (stackabil)
COUNT_PER_1GOLD : Poti vinde / cumpara obiecte pentru mai putin de un gold (pret = 1/pret)
ITEM_SLOW_QUERY : Acest obiect nu incarca baza de date (util pentru obiecte nemodificabile: potiuni, momeli etc.)
ITEM_IRREMOVABLE : Obiectul este creat in pachet (obiectul trebuie sa fie stivuibil, iar numarul de obiecte din pachet este configurat in valoarea1 a obiectului) Exemplu: Mantia Curajului (20)
CONFIRM_WHEN_USE : Odata echipat, obiectul nu poate fi dezechipat (ex: manusi de hot / inele de experienta speciale)
QUEST_USE : Legat de special_item_group.txt (obiect folosit la questuri)
QUEST_USE_MULTIPLE : Permite gestionarea obiectului de catre o misiune, mai ales pentru obiectele de tip 3/2 (sigilii de mount)
QUEST_GIVE : Permite gestionarea obiectului de catre o misiune
ITEM_QUEST : Dezactivat, nu trebuie confundat cu tipul ITEM_QUEST (18)
LOG : Lasa o urma in baza de date cand acest obiect este folosit
NONE : Nimic
7. (ITEM_WEAR / wearflag)
Wearflag-ul indica locatia slot-ului (din echipament) unde obiectul poate fi echipat.
Lista wearflag-uri completa:
Code:
WEAR_BODY : Armura
WEAR_HEAD : Coif
WEAR_FOOTS : Papuci
WEAR_WRIST : Bratara
WEAR_WEAPON : Arma
WEAR_NECK : Colier
WEAR_EAR : Cercei
WEAR_UNIQUE : Obiecte speciale (2 sloturi de jos din echipament)
WEAR_SHIELD : Scut
WEAR_ARROW : Sageti
WEAR_HAIR : Frizuri (OLD)
WEAR_COSTUME_BODY : Costum (costum de armura)
WEAR_COSTUME_HAIR : Frizuri
WEAR_COSTUME_WEAPON : Skin arma
WEAR_COSTUME_ACCE : Acce / Esarfa
WEAR_COSTUME_MOUNT : Mount costume
8. (IMMUNE / immune)
Nefolosit!
9. (GOLD / gold)
Pretul de cumparare al itemului de la NPC.
Nota! preturile de cumparare se tripleaza pentru jucatorii care apartin unui regat diferit de cel al NPC-ului.
10. (SHOP_BUY_PRICE / buy_price)
Pretul de vanzare al itemului la NPC.
Nota! Pretul de vanzare este impartit automat la 3 pentru jucatorii care apartin unui regat diferit de cel al NPC-ului. De asemenea, se aplica o taxa de 3%.
In final, jucatorii vand obiectele pentru o suma egala cu aproximativ 32.333% din valoarea stabilita.
11. (REFINE / refine_vnum)
Vnum-ul obiectului dupa ce este rafinat la fierar sau folosind un pergament.
Exemplu: 149 (Sabie batalie+9) ---> va evolua in 270(Sabie Triton +0), deci la refine_vnum la itemul 149 vom pune valoarea 270.
- Pune 0 daca nu doresti ca obiectul sa poata fi imbunatatit.
- In caz contrar, nu uita sa completezi si coloana urmatoare.
12. (REFINESET / refine_set)
Materialul necesar pentru a imbunatati un obiect.
Valoarea trebuie sa corespunda unei linii din tabelul refine_proto din baza ta de date (Navicat -> player -> refine_proto)!
- Fierarul normal (vnum 20016) si pergamentele, gestioneaza doar refine_set mai mici de 500.
- Refine_set mai mari sau egale cu valoarea 500 sunt gestionate de NPC-ul Fierar Legendar cu vnum 20091 (Seon-Pyeong) / Piatra Magica.
13. (MAGIC_PCT / magic_pct)
Procentul de sanse de a avea un bonus (sau mai multe) la crearea obiectului in joc.
Exista 2 modalitati prin care un item poate sa fie creat deja cu bonusuri random:
1 - Valoarea este egala cu 100 (MAGIC_PCT) si obiectul este creat prin depozitul item-shop-ului
2 - Obiectul are sansa de bonus setata (MAGIC_PCT) si este creat ca urmare a unui drop configurat in mob_drop_item.txt
14. (LIMIT_TYPE0, LIMIT_TYPE1 / limittype0, limittype1)
Cu ajutorul acestei coloane vom putea aplica limitari de folosire la iteme.
Exemplu: Ai nevoie de nivel 50 pentru a echipa o armura.
Lista complea de limitari posibile:
Code:
LIMIT_NONE : fara limitare
LEVEL : un nivel minim de X
STR : o forta minima de X (inclusiv bonusurile de echipament)
DEX : o dexteritate minima de X (inclusiv bonusurile de echipament)
INT : o inteligenta minima de X (inclusiv bonusurile de echipament)
CON : o vitalitate minima de X (inclusiv bonusurile de echipament)
PC_BANG : permite restrictionarea folosirii obiectelor de tip 3/8 doar de catre caractere cu IP de tip PCBang (folosit doar in Coreea)
REAL_TIME : Obiectul are o durata de viata specifica, care incepe sa scada din momentul crearii
REAL_TIME_FIRST_USE : Obiectul are o durata de viata specifica, care incepe sa scada de la prima utilizare
TIMER_BASED_ON_WEAR : Obiectul are o durata de viata specifica, care incepe sa scada doar cand este folosit.
(X este valoarea din coloana urmatoare.)
15. Valoare limitare (LIMIT_VALUE0 si LIMIT_VALUE1)
- Daca in coloana de limitare (LIMIT_TYPE0 sau LIMIT_TYPE1) ai pus de exemplu LEVEL, aici trebuie sa pui valoarea (ex: 50 daca vrei ca obiectul sa fie folosit doar de level 50+).
16. Atribute item (ADDON_TYPE0, ADDON_TYPE1, ADDON_TYPE2)
- Tipul bonusurilor de baza pe care obiectul le ofera (ex: APPLY_MOV_SPEED, APPLY_HP, APPLY_RESIST_MAGIC).
- Se aplica la: echipamente, pietre, item-shop, frizuri, costume, centuri.
- Trebuie completat cu tipul bonusului (ex: APPLY_ATT_SPEED).
17. Valoare atribute (ADDON_VALUE0, ADDON_VALUE1, ADDON_VALUE2)
- Valoarea bonusului de mai sus.
Exemplu: daca ai APPLY_ATT_SPEED la punctul 16, aici pui de exemplu 5 daca vrei +5% viteza de atac.
18. Value (value0 - value5) Valoarea are diferite roluri, in functie de tipul obiectului:
Code:
# Arme:
Value1 = Atac magic (minim)
Value2 = Atac magic (maxim)
Value3 = Atac normal (minim)
Value4 = Atac normal (maxim)
Value5 = Bonus
# Armuri / Casti / Scuturi / Cizme:
Value1 = Aparare
Value3 = ShapeIndex (numai pentru armuri)
Value5 = Bonus
# Potiuni rosii/albastre:
Value0 = HP refacut
Value1 = MP refacut
# Scroll-uri de teleport:
Value0 = 1 sau 2 (in functie de cum vrei sa functioneze teleportul).
# Scroll-uri de upgrade (Value0 = tipul scroll-ului (de la 0 la 7):
0. Pergament al Binecuvantarii: nivelul obiectului va scadea la esec, procentul de succes e normal, nu functioneaza pe obiecte cu refine_set egal cu 501.
1. Piatra Magica: nivelul nu scade la esec, procent de succes clasic.
2. Pergament al Dragonului: nivelul itemului scade la esec, procentul de succes depinde de nivelul obiectului: +0: 100%, +1: 75%, apoi 65%, 55%, 45%, 40%, 35%, 25%, 20% pentru +9.
3. Pergament de Razboi: 100% succes, functioneaza doar pe obiecte de la +0 la +3.
4. Manualul Fierarului: nivelul scade la esec, procentul de succes depinde de nivelul obiectului: +0: 100%, +1: 100%, apoi 90%, 80%, 70%, 60%, 50%, 30%, 20% pentru +9.
5. Variabil: 100% succes, poate upgrada doar obiecte cu nivelul de upgrade egal cu valoarea din Value1. De exemplu, daca Value1 = 8, va avea 100% sansa de upgrade la toate obiectele +8.
6. ??: nivelul scade la esec, poate upgrada doar pietre +4, sansa de succes este de 80%, refine_set trebuie sa fie 702.
7. ??: folosit pentru a upgrada costume.
Value1 = nivelul de upgrade daca Value0 este 5.
# Momeala:
Value0 = sansa de prindere a momelii (sansa de prins peste).
# Potiuni / Sucuri:
Value0: ID-ul bonusului
Value1: durata potiunii (in secunde)
Value2: valoarea bonusului
# Potiuni:
Value1: ID-ul bonusului
Value2: puterea bonusului
Value3: durata potiunii (in secunde)
# Potiuni de vindecare instant:
Value0: numarul de puncte de viata vindecate
Value1: numarul de puncte de magie refacute
Value3: % din viata jucatorului vindecata
Value4: % din magia jucatorului refacuta
# Pergament de Piatră a Spiritului:
Value0: 0 sau 7
Daca este 0: curata armele si armura de pietre sparte
Daca este 7: scoate pietrele
# Reteta (type 3/23):
Value0: Vnum-ul recompensei
Value1: Vnum-ul itemului1
Value2: numarul itemului1
Value3: Vnum-ul itemului2
Value4: numarul itemului2
Value5: % de succes
# Undita de pescuit:
Value0: % de succes la pescuit
Value1: % sanse ca undita să câștige un punct pentru fiecare pește prins
Value2: experiența necesară pentru ca undita să poata sa fie plusata
Value3: % sanse de succes la upgrade
Value4: vnum-ul unditei după upgrade
# Item-shop:
Value0: durata
Value2: gestionarea duratei (0 sau 1)
Daca este 0: timpul scade când obiectul este purtat, durata în Value0 este exprimată în minute
Daca este 1: timpul scade continuu (chiar și când jucătorul nu este logat) și începe când obiectul este creat, durata în Value0 este exprimată în secunde
# Carte de abilități:
Value0: numărul abilității care va fi crescuta
# Cufere și Chei: (Cufar de aur pt. comori)
Value0: dacă cele două obiecte Value0 sunt identice, cheia deschide cufărul
# Tarnacop (type 24):
Value1: % sanse ca tarnacopul să câștige un punct pentru fiecare extragere de minereu
Value2: experiența necesară pentru ca tarnacopul să poata sa fie plusat
Value3: % sanse de succes la upgrade
Value4: vnum-ul tanracopului după upgrade
# Frizuri:
Value3: ShapeIndex
# Costum:
Value3: ShapeIndex
19. Spatii pietre (SOCKET / socket_pct)
Cate sloturi libere de pietre are itemul (maxim 3 - arma/armura).
Exemplu:
Code:
0 = fara sloturi
1 = poti atasa 1 piatra
2 = poti pune 2 pietre
3 = poti baga 3 pietre
20. Bonus PGM/PC (ATTU_ADDON / addon_type)
Daca vrei sa adaugi automat bonus de "PGM/PGC" pe arma: (ex: ca Sabia Lunii Pline / Sabie otravita).
Code:
0 = fara
altceva ≠ 0 = are bonus
21. Specular (SPECULAR / specular)
Cat de mult straluceste obiectul.
Exemplu:
Code:
0 = fara stralucire
80 = destul de stralucitor
100 = foarte stralucitor (nu recomand sa pui peste 100).