TrinityCore Enchantments ( Mi micsoda )

Indította NevemSenki, 2013 február 08, 05:50:55 DÉLUTÁN

Előző téma - Következő téma

NevemSenki


Erről lenne szó:

http://collab.kpsn.org/display/tc/Item+instance+tc2#Iteminstancetc2-enchantments

Addig Oké, hogy SpellItemEnchantment.dbc, de mégis melyik érték micsoda?
Én erről a dologról nem találtam infót, lehet csak én vagyok béna.
Ezért kikísérleteztem.

Egy példa, így egyszerűbb lesz átlátni:

Idéz3297 0 0 0 0 0 3100 0 0 3056 0 0 3049 0 0 2868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Látunk pár számot, és közben egy talicska ' 0 '-t.
Ezen számok ténylegesen a SpellItemEnchantment.dbc-ből visszakérhetőek.
De mégis melyik érték micsoda?
Ezt fogom most megmondani.

Jöjjön ezen sornak, a kiolvasott értékei visszakérve a SpellItemEnchantment.dbc-ből, kép formájában.



( Ezt az egészet, egy tömbbe kell rendeznünk, amiről itt találtok információt:  http://infobarkacs.hu/index.php/topic,4898.msg79823.html#msg79823 )


Egy tömb számozása, indexe, mindig a ' 0 '-tól kezdődik. ( 0; 1; 2; 3; 4.... )
Én ezen szellemben számoztam meg az adatokat.



  • 0, A nulladik érték amennyiben nem ' 0 ', akkor az item-en lévő encsat ID-jét adja meg.

  • 6, A hetedik érték amennyiben nem ' 0 ' akkor az, az item-ben lévő első Gem ID-jét adja meg.

  • 9, A kilencedik érték amennyiben nem ' 0 ' akkor az, az item-ben lévő második Gem ID-jét adja meg.

  • 12, A tizenkettedik érték amennyiben nem ' 0 ' akkor az, az item-ben lévő harmadik Gem ID-jét adja meg.

  • 15, A tizenötödik érték amennyiben nem ' 0 ' akkor az a Gem-ek által kiadott Socket bónusz ID-jét adja meg.

Létezhet még 3 érték, ez pedig a random dolgokra vonatkozik. ( Subfix GemProperties )

Maga a sor:
Idéz3839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2803 0 0 2802 0 0 3727 0 0 0 0 0 0 0 0





Itt is látszik, hogy az első érték a gyűrűn lévő encsi.


  • 0, A nulladik érték amennyiben nem ' 0 ', akkor az item-en lévő encsat ID-jét adja meg.
  • 21, A huszonegyedik érték amennyiben nem ' 0 ', akkor az item-en lévő első, Random stat ID-t adja meg.
  • 24, A huszonnegyedik érték amennyiben nem ' 0 ', akkor az item-en lévő második Random stat ID-t adja meg.
  • 27, A huszonhetedik érték amennyiben nem ' 0 ', akkor az item-en lévő harmadik Random stat ID-t adja meg.

Hogy pontosan hogyan kell kikarkulálni a Random dolgok pontos értékét, azt majd egy másik leírásban teszem közzé.

Tc-ék igazán kiegészíthetnék a Wiki-jüket...

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Anubisss

#1
Ez feler egy reverse engineeringel. :D

Amugy ha ilyen dolgokkal probal foglalkozni az ember, mindig erdemes magat a core-t megnezni, mert ott mindig pontos es napra kesz informacio van.


Ez igazabol egy 2 dimenzios tomb [12][3], tehat osszesen 36 ertek.

Az 1. dimenzio: src/server/game/Entities/Item/Item.h#L156

enum EnchantmentSlot
{
    PERM_ENCHANTMENT_SLOT           = 0,
    TEMP_ENCHANTMENT_SLOT           = 1,
    SOCK_ENCHANTMENT_SLOT           = 2,
    SOCK_ENCHANTMENT_SLOT_2         = 3,
    SOCK_ENCHANTMENT_SLOT_3         = 4,
    BONUS_ENCHANTMENT_SLOT          = 5,
    PRISMATIC_ENCHANTMENT_SLOT      = 6,                    // added at apply special permanent enchantment
    MAX_INSPECTED_ENCHANTMENT_SLOT  = 7,

    PROP_ENCHANTMENT_SLOT_0         = 7,                    // used with RandomSuffix
    PROP_ENCHANTMENT_SLOT_1         = 8,                    // used with RandomSuffix
    PROP_ENCHANTMENT_SLOT_2         = 9,                    // used with RandomSuffix and RandomProperty
    PROP_ENCHANTMENT_SLOT_3         = 10,                   // used with RandomProperty
    PROP_ENCHANTMENT_SLOT_4         = 11,                   // used with RandomProperty
    MAX_ENCHANTMENT_SLOT            = 12
};


Vegul a 2. dimenzio:src/server/game/Entities/Item/Item.cpp#L339

for (uint8 i = 0; i < MAX_ENCHANTMENT_SLOT; ++i)
{
    ssEnchants << GetEnchantmentId(EnchantmentSlot(i)) << ' ';
    ssEnchants << GetEnchantmentDuration(EnchantmentSlot(i)) << ' ';
    ssEnchants << GetEnchantmentCharges(EnchantmentSlot(i)) << ' ';
}



UI.:
Regebben meg tobb ehhez hasonlo tomb volt a DB oszlopokban, de szep lassan egyre tobb lett kulon oszlopokra bontva, ugy latszik ez (meg) nem. :)
Háromfajta ember van. Aki tud számolni és aki nem.

NevemSenki

#2
Oh.... jól van te Céss...  Hát így könnyű...  :D

Hát én nem néztem bele a Core-ba, csak Google, DBC-k, Adatbázistáblák.

Megy a +1!

Ha már sikerült megtalálnod, akkor egy kérdés. Hogy számolod ki a RandomSuffix és a RandomProperty által létrejövő pontos statokat? Példának okáért az első hozzászólásban szereplő gyűrű.
A gyűrűhöz tartozó bejegyzés:

Idéz3839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2803 0 0 2802 0 0 3727 0 0 0 0 0 0 0 0

A gyűrű random statjai:

  • 18 Stamina
  • 12 Agility
  • 12 Hit

    PROP_ENCHANTMENT_SLOT_0         = 7,                    // used with RandomSuffix
    PROP_ENCHANTMENT_SLOT_1         = 8,                    // used with RandomSuffix
    PROP_ENCHANTMENT_SLOT_2         = 9,                    // used with RandomSuffix and RandomProperty
    PROP_ENCHANTMENT_SLOT_3         = 10,                   // used with RandomProperty
    PROP_ENCHANTMENT_SLOT_4         = 11,                   // used with RandomProperty
    MAX_ENCHANTMENT_SLOT            = 12


Mert ez nekem még nem világos. Azért kérdezlek téged, mert lehet hogy a Core-ban megvan a pontos, és egyszerű megoldás. És te jobban bele vagy mélyedve a C-be.

Üdv.: Senki

Frissítés..

Én rájöttem, az volt eddig a baj, hogy egy DBC-t nem találtam.
Kép:


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu


Csak kötözködök, mert nem értem.
Ennél a példánál maradva. Mert ez pontosan az az item ( Id: 51991 ) amit fentebb képen láthatsz. A legmagasabb esélyű random stat-ot kaptam meg rá. ( Wowhead-en utána lehet nézni )
Idéz3839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2803 0 0 2802 0 0 3727 0 0 0 0 0 0 0 0

A vége felé lévő 3 Db különálló négyjegyű szám takarja a itemrandomsuffix DBC-ben a visszakereséshez szükséges azonosítót, majd a randproppoints DBC-ben quality ilevel és invtype alapján a beszorzáshoz kellő számot.

Nálad az egyenlőségjel utáni számok minek az értékeit takarják? Mert hogy nem a sorozatban elfoglalt helyét, az biztos. Nem értem hogy hogy bontja különálló tömbökre. Mert én PHP-val, ezen számhalmazból, egy sima tömböt tudok csak kreálni.

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Anubisss

Igy kell elkepzelni:

array[PERM_ENCHANTMENT_SLOT][0] = 3839;
array[PERM_ENCHANTMENT_SLOT][1] = 0;
array[PERM_ENCHANTMENT_SLOT][2] = 0;
array[TEMP_ENCHANTMENT_SLOT][0] = 0;
array[TEMP_ENCHANTMENT_SLOT][1] = 0;
array[TEMP_ENCHANTMENT_SLOT][2] = 0;
// ...
array[PROP_ENCHANTMENT_SLOT_1][0] = 2803
array[PROP_ENCHANTMENT_SLOT_1][1] = 0;
array[PROP_ENCHANTMENT_SLOT_1][2] = 0;
array[PROP_ENCHANTMENT_SLOT_2][0] = 2802;
array[PROP_ENCHANTMENT_SLOT_2][1] = 0;
array[PROP_ENCHANTMENT_SLOT_2][2] = 0;
array[PROP_ENCHANTMENT_SLOT_3][0] = 3727;
array[PROP_ENCHANTMENT_SLOT_3][1] =  0;
array[PROP_ENCHANTMENT_SLOT_3][2] = 0;
// ...



[0] -> GetEnchantmentId();       // ID
[1] -> GetEnchantmentDuration(); // duration
[2] -> GetEnchantmentCharges();  // charges
Háromfajta ember van. Aki tud számolni és aki nem.

Powered by EzPortal