Fegyverek berakása - teljes leírás

Indította Alissa, 2012-07-12, 20:24:13

2012-07-12, 20:24:13 Utolsó szerkesztés: 2012-07-12, 20:27:44 Szerző: Alissa
Kedves Fórumozók!

Tudom, sokatok számára ez rutin dolog, de vannak még nagyon sokan, akiknek nem :)
Íme egy leírás, amit ha helyesen csináltok végig, akkor 100%, hogy sikerülni fog a fegyver berakása.

Kezdjük a kliensoldallal. Ugye minden fegyver a Metin2-ben egy .gr2 kiterjesztésű modellből, és különálló textúrákból áll. A modellt Granny Viewer segítségével tekintheted meg. Sok modell nem látszódik Grannyben, in-game viszont igen, és ez néha fordítva is igaz, ezért mindenképp tesztelni kell őket használat előtt.

A fegyverek modelleit általában az item.eix/epk-ban a ymir work/item/weapon mappába szoktuk helyezni, de ennek ellenére bárhova rakhatod, csak a textúrára kell figyelni, hogy jó helyre kerüljön, ugyanis annak az elérési útvonalának a megváltoztatása már kissé nehezebb, ezért mindenképpen először ellenőrizzük le, hogy az jó helyre kerül.
Nyissuk meg a modellt Granny Viewerrel, majd kattintsunk a Texture list fülre.

Ahol aláhúztam, ott láthatjuk a textúra elérési útvonalát. Ha több textúra van, azokat egymás alatt listázza, és kiírja mindnek az elérési útvonalát, ahova kell őket tennünk a megadott néven.

Na de mit csináljunk, ha hiányzik a textúra?
Ha a modellbe "bele van égetve a textúra" (mint a képen láthatón, tehát nem egy fehér valami), akkor igen egyszerű dolgunk van, ha nem, akkor meg szívás.
Nézzük meg először, mekkora méretű textúrára lesz szükségünk:

Az aláhúzott helyen írja, ez a modell éppenséggel 256x256 pixel méretű textúrát használ, ahogy a modellek többsége úgyszintén.
Ezután kattintsunk felül a Texture Inspection fülre, ahol látjuk kinagyítva a textúrát, amire egészen rázoomolhatunk a jobb minőség érdekében:

Készítsünk róla egy screenshotot, vágjuk körbe, majd átméretezés után valamilyen képszerkesztő program vagy DDS converter segítségével mentsük el a megadott formátumba, a megadott helyre.

Mielőtt becsomagolnánk a fájlokat, ne felejtsük el a becsomagoló XML-be pontosan beleírni az összes új fájlunk elérési útvonalát, különben azok kimaradnak a csomagolásból!

A következő lépésként keressük meg a locale_hu.eix/epk-ban (locale_de is lehet, teljesen mindegy, amelyiket használja a kliens), az item_list.txt-t. Ez a fájl társítja a tárgyakhoz az ikonokat és modelleket (vérteknél ez kicsit más tészta, majd egyszer írok arról is).
Fontos, hogy itt minden különálló részt TAB segítségével válasszunk el. Szóközzel is elválaszthatjuk, viszont az elég sok logot fog generálni a syserrünkbe, ami nem túl jó.
Az item_list formátuma a következő:
ID[tab]típus[tab]ikon elérési útja[tab]modell elérési útja (ha van)
A típus lehet ARMOR (vért), WEAPON (fegyver), és ETC (egyéb).
Példa:
10 WEAPON icon/item/00010.tga d:/ymir work/item/weapon/00010.gr2
Mivel már korábban említettem, hogy elég sok modell amit publikálnak, nem látszik in-game (vagy hibás), ezért tesztelnünk kell először. Erre a legegyszerűbb módszer, ha a modelljét egy már létező fegyver helyére berakjuk, majd in-game megnézzük, és ha működik, tetszik is, akkor lehet folytatni a berakását.
Például berakhatjuk a kard+0 helyére, aminek az item_list sorát az imént kimásoltam. Csak ki kell cserélni a modell útvonalát az új modellére, visszacsomagolni a fájlokat, felmenni a szerverünkre, és felvenni egy kard+0-t. Ne felejtsünk el biztonsági mentést csinálni az item_list-ről előtte!
Példa:
10 WEAPON icon/item/00010.tga d:/ymir work/item/uj_fegyok/fegyo1.gr2

A fegyverhez ha volt ikon, azt az icon.eix/epk-ban az item mappába szokás tenni, de ezt is ugyanúgy tehetjük bárhova, csak az item_list-ben a megfelelő elérési utat kell neki megadnunk. Ha nincs hozzá, lefotózhatjuk pl. Granny Viewerben, vagy 3dsMax-ban, körbevághatjuk, és csinálhatunk belőle ikont.

Keressünk 10 egymás utáni szabad ID-t (ha nem +9-ig fejleszthető fegyvert akarunk csinálni, akkor persze kevesebb is elég), és helyezzük el rajta a fegyvert. Az item_listet ugye már meg tudjuk írni, így jöhet az item_proto.
Szerintem a legegyszerűbb megcsinálni a kliensoldalit, és onnét visszakonvertálni szerveroldalra.
A legcélszerűbb, ha lemásolsz egy már létező fegyvert, ami olyan típusú mint amit csinálni akarsz (ha kardot, akkor kardot, ha tőrt, akkor tőrt, stb.), és átírod a tulajdonságait, amit meg akarsz változtatni, de akár teljesen kézzel is megírhatod, ha ügyesebb vagy.
Ugye így néz ki egy általános fegyver XML:
<Item vnum="10" name="'µµ+0'" gb2312name="kard+0" type="1" subtype="0" weight="0" size="2" antiflag="32" flag="1" wearflag="16" immuneflag="0" gold="0" buy_price="0" limittype0="1" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="7" applyvalue0="22" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="15" value2="19" value3="13" value4="15" value5="0" socket0="0" socket1="64832" socket2="127" socket3="65008" socket4="21631" socket5="4855" refine_vnum="11" refine_set="1" magic_pct="15" specular="0" socket_pct="1" />

Nézzük hát meg, hogy mi micsoda.

Item vnum: a fegyver ID-je
Name: az első name oszlop, amit a drop táblázatok olvasnak ki (ha ezt adod meg a dropban, ügyelj rá, hogy ne legyen benne ékezet, de megadhatod ott az ID-t is, az XML-be pedig teljesen mindegy, mi kerül.)
gb2312name: az a név, amit kiírva látunk (az újabb szerver protokban ez már locale_name, úgyhogy visszakonvertáláskor majd figyelj rá.)
Type: típus (fegyvereknél mindig 1)
Subtype: altípus, tehát fegyvereken belül micsoda (kard=0, tőr=1, íj=2, kétkezes=3, harang=4, legyező=5)
Weight: nem tudom, mi akar ez lenni, de mindig 0.
Size: méret (hány darab kockányi helyet foglal el a leltárban egymás alatt)
Antiflag: ez szabályozza, hogy kik vehetik fel az adott tárgyat, eldobható-e, kereskedhető-e, eladható-e, stb. Itt célszerű lemásolni egy olyan tárgyról, aminek ezen tulajdonságait örökíteni akarod rá.
Flag: hát, ezt most meg nem mondom, pontosan micsoda, de fegyverek esetében 1.
Wearflag: ez szabályozza, hogy ha felveszed a tárgyat, hova kerüljön a leltáradban. Fegyverek esetében 16.
Immuneflag: szintén nem tudom, micsoda, de mindig 0.
Gold: vételár
Buy_price: eladási ár
Limitetype(szám): kritérium ID-je (1 a szinthatár)
Limitevalue(szám): az előző kritérium értéke
Applytype(szám): bónusz ID-je
Applyvalue(szám): az előző bónusz értéke
Value0: nem tudom, de 0-t szokás írni oda, valami sebzéssel kapcsolatos, lehet kísérletezni.
Value1: minimum mágikus sebzés
Value2: maximum mágikus sebzés
Value3: minimum normál sebzés
Value4: maximum normál sebzés
Value5: hozzáadódik az összes eddigi sebzéshez
Socketek: nem tudom, de ezekkel nem kell törődni XML-nél.
Refine_vnum: annak a fegyvernek az ID-je, amire lehet majd a fegyvert fejleszteni
Refine_set: a kovácsolási módszer ID-je (refine_proto-ban találod meg)
Magic_pct: Ezt se tudom, de mindig 15.
Specular: fénylés (0-100-ig)
Socket pct: kliensoldalon a csillogás ID-jének kiszámításához kell, szerveroldalon a behelyezhető kövek száma.

Bónuszok ID-i és hatása:
0  Nincs bónusz
1  Max TP
2  Max MP
3  VIT
4  INT
5  ERŐ
6  ÜGY
7  Támadó sebesség
8  Mozgási sebesség
9  Varázs sebesség
10  TP regenerálódás
11  MP regenerálódás
12  Mérgezési esély
13  Ájulási esély
14  Lelassulás esélye
15  Esély kritikus találatra
16  Esély átható találatra
17  Félemberek elleni erő
18  Állatok elleni erő
19  Ork elleni erő
20  Ezotéria elleni erő
21  Nemhalottak elleni erő
22  Ördög elleni erő
23  Veszteségek a TP-böl eltűnnek
24  Veszteségek az MP-böl eltűnnek
25  Esély az ellenség Mp-inek átvételére
26  Esély hogy az MP-t találatnál megtartsd
27  Esély a testi támadás kivédésére
28  Esély a nyilak elkerülésére
29  Kard védelem
30  Kétkezes védelem
31  Tőr védekezés
32  Harang védelem
33  Legyező védekezés
34  Nyíl ellenállás
35  Tűz ellenállás
36  Villám ellenállás
37  Mágia ellenállás
38  Szél ellenállás
39  Esély közvetlen testi támadás visszaverésére
40  Esély az átok visszaverésére
41  Méreg ellenállás
42  Esély MP visszaállítására
43  Esély EXP bónuszra
44  Esély dupla mennyiségű Yang eldobására
45  Esély dupla mennyiségű tárgy eldobására
46  Ital hatásnövekedés
47  Esély TP visszaállítására
48  Immunis az ájulás ellen
49  Immunis a lelassulás ellen
50  Immunis a leesésre
52  Íjjász hatótávolság
53  Támadó érték
54  Védekezés
55  Mágikus támadó érték
56  Mágikus védelem
58  Max. Kitartás
59  Harcosok elleni erő
60  Ninzsák elleni erő
61  Sura elleni erő
62  Sámán elleni erő
63  Szörny elleni erő
64  Támadó érték2
65  Védekezés2
66  EXP
67  Tárgy ledobási esély
68  Yang eldobási esély
71  Készség károk
72  Átlagos károk
73  Készség károkkal szembeni ellenállás
74  Átlagos veszteség ellenállás
76  EXP-Bónusz3
77  Tárgy zsákmányolási esély plusz
78  Védekezési esély harcos támadás ellen
79  Védekezési esély nindzsatámadás ellen
80  Védekezési esély Sura támadás ellen
81  Védekezési esély sámántámadás ellen


Sebzés, value5 teszt:
Idézetet írta: Alissa Dátum 2012-06-14, 10:56:00
Nos, többször felvetődött már a kérdés, hogy vajon a value5 mennyire számítódik mindehhez. Hallottam már olyan verziókat, hogy a skillekre nem hat, vagy épp csak azokra hat, stb, így gondoltam, utánajárok magam egy egyszerű teszt segítségével.

Vegyünk egy alap kardot, és állítsuk át az értékeit. A tesztalany egy 80-as, statok nélküli harcos, P száguldással. A kard kapott 1111-1113-as sebzést úgy, hogy a value5 0 volt.
A sebzés vad kutyákra a következőképpen alakult:
  • Száguldás: 5k körül
  • Ütés: 1,5k körül
  • A teszt következő állomása, hogy ugyanaz a kard megkapta ugyanezt a sebzést, csak éppenséggel úgy, hogy value3 1 lett, value4 3, és value5 pedig 1110 (ez is 1111-1113 sebzést produkál papíron.)
    A sebzés vad kutyákra a következőképpen alakult:
  • Száguldás: 7,5k körül
  • Ütés: 2,5k körül

  • A teszt bebizonyítja, hogy 2, papíron teljesen megegyező sebzésérték másképpen megadva teljesen más valós sebzést produkál, mivel a value5 sokkal jobban hat a skillekre és az ütésekre egyaránt, mint a másik 4 value.

    Tipp: ha új fegyvereket csinálsz, ne egy előző szetthez képest növeld folyamatosan a value5-öt, vagy épp hagyd az eddigi formáiban és a többit növeld, hanem arányosan mindet, és így megmaradnak az eddigi sebzésarányok.

    Nos, ha kész vagy az XML résszel, akkor például ezzel a konverterrel csinálhatsz belőle queryt, amit csak be kell másolnod Navicat konzolba, vagy a kidumpolt SQL fájlba, és visszatölteni (utóbbinál nem rontja el az ékezeteket).
    Érdemes utólag szerver item_protoban leellenőrizni, hogy minden helyesen szerepel-e, a socket_pct részt (mivel ez ugye eltérhet), és amiről idáig nem beszéltünk, mivel csak szerver oldalon van:
    Addon_type: ha 0, akkor nincs átlag/készségkár a fegyverben, ha -1, akkor pedig van.

    Ha mindennel kész vagyunk, csomagoljuk vissza a kliensbe a fájljainkat, tartsunk szerver restartot, vagy írjuk be in-game GM karakterrel, hogy /reload p, várjuk meg, amíg végez, és készen is vagyunk.

    Remélem, hasznos volt a leírás.

    Üdvözlettel: Alissa