|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum) |
03-24-2009, 09:59 PM
|
Administrator
|
|
Join Date: Sep 2006
Posts: 1,348
|
|
Oh yes they both start with a and I just freaking got home when I posted that after sitting through an hour worth of traffic =p
|
|
|
|
03-24-2009, 10:06 PM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Figured as much. Also, if anyone else is willing and able to help with getting augments working, here is a good packet from EQLive that we can probably use as an example of an item with an augment in it. It also has Herioc Stats, so we can use that to make sure those stats are in the right place of the struct and to find exactly where augments should start:
Code:
Mar 23 2009 04:02:10:598 [Decoded] [Server->Client] [Size: 1640]
[OPCode: 0x2bad]
000 | 04 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 | ................
016 | 00 00 00 00 01 00 00 00 00 00 00 00 16 2f db 00 | ............./..
032 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
048 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
064 | 00 00 00 00 46 61 62 6c 65 64 20 4c 6f 6e 67 62 | ....Fabled Longb
080 | 6f 77 20 6f 66 20 74 68 65 20 53 74 6f 72 6d 63 | ow of the Stormc
096 | 61 6c 6c 65 72 00 4c 6f 6e 67 62 6f 77 20 6f 66 | aller.Longbow of
112 | 20 74 68 65 20 53 74 6f 72 6d 63 61 6c 6c 65 72 | the Stormcaller
128 | 00 49 54 31 30 36 31 34 00 f6 37 01 00 28 01 00 | .IT10614..7..(..
144 | 00 03 00 08 00 00 00 00 00 00 32 05 00 00 01 01 | ..........2.....
160 | 00 00 00 00 00 35 00 00 35 35 00 06 1a 06 1e 06 | .....5..55......
176 | 16 16 26 02 00 00 26 02 00 00 26 02 00 00 39 00 | ..&...&...&...9.
192 | 00 00 04 00 00 00 00 00 00 00 00 00 00 00 1d 01 | ................
208 | 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 | ................
224 | 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 | ................
240 | 00 00 00 00 00 00 01 00 00 00 00 4b 00 00 00 00 | ...........K....
256 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
272 | 20 00 00 c8 52 00 00 00 00 00 00 ff 05 00 00 00 | ...R...........
288 | 00 00 00 00 00 00 00 00 00 00 00 80 3f 06 00 00 | ............?...
304 | 00 03 00 00 00 05 00 00 00 00 00 00 00 00 00 00 | ................
320 | 00 00 00 00 00 01 00 00 00 00 00 00 00 0f 00 00 | ................
336 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
352 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
368 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 | ................
384 | 00 00 01 00 00 00 00 00 01 00 00 00 00 00 01 00 | ................
400 | 00 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 | ................
416 | 00 00 00 00 00 00 00 00 46 00 00 00 00 00 00 00 | ........F.......
432 | 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 00 | ................
448 | 00 00 03 00 00 00 28 00 00 00 00 00 00 00 00 00 | ......(.........
464 | 00 00 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 | ................
480 | 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 | ................
496 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
512 | 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 | ................
528 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
544 | 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 | ................
560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
576 | 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 | ................
592 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
608 | 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff | ................
624 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
640 | 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff | ................
656 | ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
672 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff | ................
688 | ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 | ................
704 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
720 | 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 | ................
736 | 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 | ................
752 | 00 00 00 00 00 00 01 00 00 00 03 00 00 00 02 00 | ................
768 | 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
784 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 | ................
816 | 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 | ................
832 | 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 17 | ................
848 | 2f db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | /...............
864 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
880 | 00 00 00 00 00 00 00 53 68 69 6d 6d 65 72 69 6e | .......Shimmerin
896 | 67 20 49 6c 6c 73 61 6c 69 6e 20 4a 65 77 65 6c | g Illsalin Jewel
912 | 63 72 61 66 74 65 72 20 53 74 6f 6e 65 00 41 6e | crafter Stone.An
928 | 20 61 6e 63 69 65 6e 74 20 73 68 69 6c 69 73 6b | ancient shilisk
944 | 69 6e 20 6a 65 77 65 6c 00 49 54 36 33 00 b7 47 | in jewel.IT63..G
960 | 01 00 00 01 00 00 00 fe ff 1f 00 00 00 00 00 f0 | ................
976 | 02 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 | ................
992 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1008 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1024 | 00 00 00 ff ff 00 00 ff ff 00 00 00 00 00 00 0a | ................
1040 | 00 00 00 00 00 00 00 13 00 00 00 00 00 00 00 00 | ................
1056 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 | ................
1072 | 41 00 00 00 46 00 00 00 00 00 00 00 00 00 00 00 | A...F...........
1088 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1104 | ff 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .6..............
1120 | 80 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .?..............
1136 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1152 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1168 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1184 | 00 00 00 00 00 00 00 00 00 00 00 c0 00 00 00 00 | ................
1200 | 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00 | ................
1216 | 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 01 | ................
1232 | 00 00 00 00 00 00 00 00 00 00 00 00 00 46 00 00 | .............F..
1248 | 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff | ................
1264 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1280 | 00 00 00 00 00 00 00 00 00 00 00 a7 b7 00 00 ff | ................
1296 | ff ff ff 00 00 00 00 00 00 00 00 00 00 00 01 00 | ................
1312 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1328 | 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 | ................
1344 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1360 | 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 | ................
1376 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1392 | 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff | ................
1408 | ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1424 | 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff | ................
1440 | ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 | ................
1456 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1472 | ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 | ................
1488 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1504 | 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 | ................
1520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1536 | 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 00 00 | ................
1552 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1568 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1584 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1616 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
1632 | 00 00 00 00 00 00 00 00 | ........
This is from an itemlink I saw on Live the other day.
Here is a link to the item on 13th floor for reference of what stats are what:
http://eqitems.13th-floor.org/item.php?id=79862
And here is a link to the raw item info for it there:
http://eqitems.13th-floor.org/itemraw.php?id=79862
Last edited by trevius; 03-25-2009 at 06:08 AM..
|
|
|
|
03-24-2009, 10:11 PM
|
Administrator
|
|
Join Date: Sep 2006
Posts: 1,348
|
|
I actually had heroic stats working in my initial release of the item structure. I think they may of gotten messed up as you fixed the rest of it.
|
03-24-2009, 11:57 PM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Oh, LOL! I will have to check into how you had it structured. I don't think I really adjusted anything down there, but I did move a few fields around which would definitely cause issues with that part of the structure if they aren't right.
I was mostly concerned with getting the stats that Titanium uses working. For the new stuff like Heroic Stats, I didn't think any of it was linked to the database yet. If you already set that up, then it shouldn't take me long to align that part again.
I think if I can figure out how to check if an item has an aug in it during the encode, I can probably get the augs in the right place. I think it would basically work like the if you have set to check if a bag has items in it. But, I just don't know how to check if an item has augs in it. I will look around a bit through the source and see if anything stands out that might work.
|
|
|
|
|
|
|
03-25-2009, 06:23 AM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Well, after some quick testing by forcing the encode to send certain values, it seems that the way the structure is set now is perfect or very close to it.
I added these values to the encode:
itbs.backstab = 16;
itbs.dsmitigation = 17;
itbs.heroic_str = 1;
itbs.heroic_int = 2;
itbs.heroic_wis = 3;
itbs.heroic_agi = 4;
itbs.heroic_dex = 5;
itbs.heroic_sta = 6;
itbs.heroic_cha = 7;
itbs.heroic_mr = 8;
itbs.heroic_fr = 9;
itbs.heroic_cr = 10;
itbs.heroic_dr = 11;
itbs.heroic_pr = 12;
itbs.heroic_corr = 13;
itbs.heal_amt = 14;
itbs.spell_dmg = 15;
And here is an example of an item after forcing those values:
Notice that they all match up perfectly
Anyway, I think that means that everything should be correct. The only thing we should need to do is figure out how the augs fit into the last 8 padded bytes in the structure.
I would think that the last of those 8 bytes is almost certainly the null terminator for the whole item or at the very least it is the null terminator for the last aug slot. Since there are only 5 aug slots, 5 of the 8 bytes should definitely be null terminators for those. That leaves 3 that I am unsure about. They are probably either 3 unknowns at the beginning of the 8 or at the end of the 8. One of them may also be clairvoyance, but I have no clue what that even is. Hopefully it wouldn't be too hard to figure that part out.
|
|
|
|
03-25-2009, 01:13 PM
|
Administrator
|
|
Join Date: Sep 2006
Posts: 1,348
|
|
There's a null term for evolving data too I believe, so 6/8 should be accounted for.
|
|
|
|
03-26-2009, 06:44 AM
|
Sarnak
|
|
Join Date: Sep 2008
Location: Home
Posts: 31
|
|
I've broken down that item packet with the data structures that have been added to the SVN as of late night 2009-03-25.
About the only real difference between the structs and the packet, that I'm seeing, is that there are 6 EffectSlot entries on both items. The structure only lists 5. Plus, the int8 seems to be a 0 terminated string. (Code may already handle that, I just looked at the structures.)
Unk131, from struct ItemTiertaryBodyStruct, if that one is named after the Unk131 from the EQ13thfloor item dump, then it should be a flag to indicate that Endless Quiver doesn't work on the item. (I've found exactly one item that has it set in the DB, Shadowspike Arrow Digging through the ranger board seemed to indicate the endless quiver relationship.)
The actual item structure is preceeded by a 68 byte header. Format looks to be 17 DWORDs.
The actual aug encoding seems to be fairly straight forward, trailing after the main data for the item is an int32, it seems to indicate the slot the aug is slotted into. Following that slot number is just a repeat of the item format, this time for the aug.
Below the break down of the packet, in case it is actually helpful. This is pretty much just a copy of my work notes, I hope it doesn't end up being too confusing.
Code:
000 | 04 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 header
016 | 00 00 00 00 01 00 00 00 00 00 00 00 16 2f db 00
032 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
048 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
064 | 00 00 00 00
46 61 62 6c 65 64 20
4c 6f 6e 67 62 6f 77 20
6f 66 20
74 68 65 20
53 74 6f 72 6d 63 61 6c 6c 65 72 00
Fabled Longbow of the Stormcaller
4c 6f 6e 67 62 6f 77 20
6f 66 20
74 68 65 20
53 74 6f 72 6d 63 61 6c 6c 65 72 00
Longbow of the Stormcaller
49 54 31 30 36 31 34 00
IT10614
f6 37 01 00 id
28 weight
01 permanent flag
00 tradeable flag
00 attunable
03 size
00 08 00 00 slots
00 00 00 00 price
32 05 00 00 icon
01 unk1
01 unk2
00 00 00 00 benefitflag
00 tradeskills
35 CR
00 PR
00 DR
35 MR
35 FR
00 Corr
06 AStr
1a ASta
06 AAgi
1e ADex
06 ACha
16 AInt
16 AWis
26 02 00 00 HP
26 02 00 00 Mana
26 02 00 00 End
39 00 00 00 AC
04 00 00 00 regen
00 00 00 00 manaregen
00 00 00 00 endregen
1d 01 00 00 classes
ff ff 00 00 races
00 00 00 00 deity
00 00 00 00 skillmodvalue
00 00 00 00 unk
ff ff ff ff skillmodtype (-1)
00 00 00 00 BaneDmgRace
00 00 00 00 BaneDmgBody
00 00 00 00 BaneDmgRaceAmt
00 00 00 00 BaneDmgAmt
01 magic
00 00 00 00 value (food/drink duration, ...)
4b 00 00 00 req level
00 00 00 00 rec level
00 00 00 00 rec skill
00 00 00 00 bardtype
00 00 00 00 bardvalue
00 light
20 delay
00 elemdmgtype
00 elemdmgamt
c8 range
52 00 00 00 dmg
00 00 00 ff color
05 item type
00 00 00 00 Material
00 00 00 00 unk
00 00 00 00 unk -- only is 1 for TSS Part 2 raid armor
00 00 80 3f sell rate
06 00 00 00 combat effects
03 00 00 00 shielding
05 00 00 00 stun resist
00 00 00 00 strike through
00 00 00 00 extradmgskill
00 00 00 00 extradmgamt
01 00 00 00 spell shield
00 00 00 00 avoidance
0f 00 00 00 accuracy
00 00 00 00 charmfileid
00 00 00 00 factionmod1
00 00 00 00 factionamt1
00 00 00 00 2
00 00 00 00 2
00 00 00 00 3
00 00 00 00 3
00 00 00 00 4
00 00 00 00 4
00 Charm file name (ASCIIZ)
00 00 00 00 augtype
00 00 00 00 augrestrict
08 00 00 00 aug 1
01 visible
00 powersource aug flag
00 00 00 00 aug 2
01 visible
00 powersource aug flag
00 00 00 00 aug 3
01 visible
00 powersource aug flag
00 00 00 00 aug 4
01 visible
00 powersource aug flag
00 00 00 00 aug 5
01 visible
00 powersource aug flag
00 00 00 00 ldonpoint_type
00 00 00 00 ldontheme
00 00 00 00 ldonprice
46 00 00 00 Unk (70)
00 00 00 00 ldonsold
00 bagtype
00 bagslots
00 bagsize
00 weightreduction
00 bookflag
00 booktype
00 filename (ASCIIZ)
ff ff ff ff lore group (-1)
00 artifact flag
00 pending lore flag
00 00 00 00 favor
00 fv nodrop flag
03 00 00 00 dot shielding
28 00 00 00 attack
00 00 00 00 haste
00 00 00 00 damage shield
00 00 00 00 guild favor
00 00 00 00 augdistill
ff ff ff ff unk (-1)
00 00 00 00
00 no pet
00 unk?
00 potion belt enabled
00 00 00 00 potion belt slots
01 00 00 00 stacksize
00 no transfer
00 00 unk131 -- EQ quiver ignore?
00 00 00 00 unk
00 00 00 00
00 00 00 00
00 00 00 00 unk (the 000000000000000 block)
00 unk
00 unk
00 unk
ff ff ff ff eff #1 effect struct start
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff click effect end
ff ff ff ff eff #2
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff eff #3
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff eff #4
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff eff #5
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff eff #6
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
00 00 00 00 unk
00 quest item
00 00 00 00 power source
00 00 00 00 purity
00 00 00 00 backstab
00 00 00 00 ds mit
01 00 00 00 hstr
00 00 00 00 hint
00 00 00 00 hwis
01 00 00 00 hagi
03 00 00 00 hdex
02 00 00 00 hsta
01 00 00 00 hcha
00 00 00 00 hmr
00 00 00 00 hfr
00 00 00 00 hcr
00 00 00 00 hdr
00 00 00 00 hpr
00 00 00 00 hcorr
00 00 00 00 healamt
00 00 00 00 spelldmg
00 00 00 00 clairvoyance?
00 00 00 00 ? (Evo level?)
00 evo? string? closing 0?
000 | 01 00 00 00 aug slot?
000 | 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 header
016 | 00 00 00 00 01 00 00 00 00 00 00 00 17 2f db 00
032 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
048 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
064 | 00 00 00 00
53 68 69 6d 6d 65 72 69 6e 67 20
49 6c 6c 73 61 6c 69 6e 20
4a 65 77 65 6c 63 72 61 66 74 65 72 20
53 74 6f 6e 65 00
Shimmering Illsalin Jewelcrafter Stone
41 6e 20
61 6e 63 69 65 6e 74 20
73 68 69 6c 69 73 6b 69 6e 20
6a 65 77 65 6c 00
An ancient shilisk in jewel
49 54 36 33 00
IT63
b7 47 01 00 id
00
01
00
00
00
fe ff 1f 00
00 00 00 00
f0 02 00 00
01
01
00 00 00 00
00
00 CR
00 PR
00 DR
00 MR
00 FR
00 Corr
00 AStr
00 ASta
00 AAgi
00 ADex
00 ACha
00 AInt
00 AWis
00 00 00 00 HP
00 00 00 00 Mana
00 00 00 00 End
00 00 00 00 AC
00 00 00 00 regen
00 00 00 00 manaregen
00 00 00 00 endregen
ff ff 00 00 classes
ff ff 00 00 races
00 00 00 00 deity
0a 00 00 00 skillmodvalue (10%)
00 00 00 00 unk
13 00 00 00 skillmodtype (Dodge)
00 00 00 00 Bane
00 00 00 00
00 00 00 00
00 00 00 00 Bane
01 magic
00 00 00 00 value
41 00 00 00 req level
46 00 00 00 rec level
00 00 00 00 rec skill
00 00 00 00 bard
00 00 00 00 bard
00
00
00
00
00
00 00 00 00 dmg
00 00 00 ff color
36 itemtype
00 00 00 00 mat
00 00 00 00 unk
00 00 00 00 unk
00 00 80 3f sellrate
00 00 00 00 CE
00 00 00 00 shielding
00 00 00 00 stun resist
00 00 00 00 strike through
00 00 00 00 extradmg
00 00 00 00 extradmg
00 00 00 00 spell shield
00 00 00 00 avoidance
00 00 00 00 accuracy
00 00 00 00 charmfileid
00 00 00 00 1
00 00 00 00
00 00 00 00 2
00 00 00 00
00 00 00 00 3
00 00 00 00
00 00 00 00 4
00 00 00 00
00
c0 00 00 00 augtype
00 00 00 00 augres
00 00 00 00 aug slot1
01
00
00 00 00 00 aug slot2
01
00
00 00 00 00 aug slot3
01
00
00 00 00 00 aug slot4
01
00
00 00 00 00 aug slot5
01
00
00 00 00 00
00 00 00 00
00 00 00 00
46 00 00 00
00 00 00 00
00
00
00
00
00
00
00
ff ff ff ff lore group
00
00
00 00 00 00 favor
00
00 00 00 00 dot shield
00 00 00 00 attack
00 00 00 00 haste
00 00 00 00 ds
00 00 00 00 guild favor
a7 b7 00 00 augdistill
ff ff ff ff unk
00 00 00 00
00
00
00
00 00 00 00
01 00 00 00 stacksize
00
00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
00
00
ff ff ff ff effect #1
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff end eff #6
00 00 00 00 unk
00 quest?
00 00 00 00 power cap
00 00 00 00 purity
00 00 00 00 backstab
00 00 00 00 dsmit
00 00 00 00 hstr
00 00 00 00 hint
00 00 00 00 hwis
00 00 00 00 hagi
00 00 00 00 hdex
00 00 00 00 hsta
00 00 00 00 hcha
00 00 00 00 hmr
00 00 00 00 hfr
00 00 00 00 hcr
00 00 00 00 hdr
00 00 00 00 hpr
00 00 00 00 hcor
00 00 00 00 healamt
00 00 00 00 spelldmg
00 00 00 00 clairvoyance?
00 00 00 00 evo level?
00 evo level? string? end?
00 00 00 00 next slot? 0 => no more augs?
|
|
|
|
|
|
|
03-26-2009, 12:49 PM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Thanks Leere. I have basically been doing the same thing. I also broke down a single item without an aug for comparison. Seems like live has an extra 5 bytes somewhere at the end. I would assume that it is from new fields that are just unknown atm. I have been trying to split it all up to make sense, but haven't came up with a good solution yet. I had thought that augs were actually contained within other items, but judging by these packets, it seems like they are completely separate from each other. Though, I agree that the 01 near the bottom is almost definitely signifying that the item has an aug. Seems like the EQLive packet isn't the same as the SoF ones, but at least they are very very close. I am sure we can get it working, just need to experiment.
Here are my current notes just for reference:
Code:
Mar 23 2009 04:02:10:598 [Decoded] [Server->Client] [Size: 1640]
[OPCode: 0x2bad]
04 00 00 00
01 00 00 00 stacksize
00 00 00 00 unknown004
00 00 00 00 slot
00 00 00 00 price
01 00 00 00 merchant_slot
00 00 00 00 unknown020
16 2f db 00 instance_id
00 00 00 00 inst_nodrop
00 00 00 00 potion_type
00 00 00 00 charges
00 00 00 00 unknown040
00 00 00 00 unknown044
00 00 00 00 unknown048
00 00 00 00 unknown052
00 00 00 00 unknown056
00 unknown060
00 unknown061
00 ItemClass
// 00 - Not in SoF
46 61 62 6c 65 64 20 4c 6f 6e 67 62 6f 77 20 6f 66 20 74 68 65 20 53 74 6f 72 6d 63 61 6c 6c 65 72 00 | Fabled Longbow of the Stormcaller
4c 6f 6e 67 62 6f 77 20 6f 66 20 74 68 65 20 53 74 6f 72 6d 63 61 6c 6c 65 72 00
49 54 31 30 36 31 34 00
f6 37 01 00 id
28 weight
01 norent
00 nodrop
00 attune
03 size
00 08 00 00 slots
00 00 00 00 price
32 05 00 00 icon
01 unknown1
01 unknown2
00 00 00 00 BenefitFlag
00 tradeskills
35 CR
00 DR
00 PR
35 MR
35 FR
00 Corruption
06 AStr
1a ASta
06 AAgi
1e ADex
06 ACha
16 AInt
16 AWis
26 02 00 00 HP
26 02 00 00 Mana
26 02 00 00 Endur
39 00 00 00 AC
04 00 00 00 regen
00 00 00 00 mana_regen
00 00 00 00 end_regen
1d 01 00 00 Classes
ff ff 00 00 Races
00 00 00 00 Deity
00 00 00 00 SkillModValue
00 00 00 00 unknown6
ff ff ff ff SkillModType
00 00 00 00 BaneDmgRace
00 00 00 00 BaneDmgBody
00 00 00 00 BaneDmgRaceAmt
00 00 00 00 BaneDmgAmt
01 Magic
00 00 00 00 CastTime_
4b 00 00 00 ReqLevel
00 00 00 00 RecLevel
00 00 00 00 RecSkill
00 00 00 00 BardType
00 00 00 00 BardValue
00 Light
20 Delay
00 ElemDmgType
00 ElemDmgAmt
c8 Range
52 00 00 00 Damage
00 00 00 ff Color
05 ItemType
00 00 00 00 Material
00 00 00 00 unknown7
00 00 00 00 unknown8
00 00 80 3f SellRate
06 00 00 00 CombatEffects
03 00 00 00 Shielding
05 00 00 00 StunResist
00 00 00 00 StrikeThrough
00 00 00 00 ExtraDmgSkill
00 00 00 00 ExtraDmgAmt
01 00 00 00 SpellShield
00 00 00 00 Avoidance
0f 00 00 00 Accuracy
00 00 00 00 CharmFileID
00 00 00 00 FactionMod1
00 00 00 00 FactionAmt1
00 00 00 00 FactionMod2
00 00 00 00 FactionAmt2
00 00 00 00 FactionMod3
00 00 00 00 FactionAmt3
00 00 00 00 FactionMod4
00 00 00 00 FactionAmt4
00 CharmFile
00 00 00 00 augtype
00 00 00 00 augrestrict
08 00 00 00 type
01 visible
00 unknown
00 00 00 00 type
01 visible
00 unknown
00 00 00 00 type
01 visible
00 unknown
00 00 00 00 type
01 visible
00 unknown
00 00 00 00 type
01 visible
00 unknown
00 00 00 00 ldonpoint_type
00 00 00 00 ldontheme
00 00 00 00 ldonprice
46 00 00 00 unk098
00 00 00 00 ldonsold
00 bagtype
00 bagslots
00 bagsize
00 wreduction
00 book
00 booktype
00 filename
ff ff ff ff loregroup
00 artifact
00 pendinglore
00 00 00 00 favor
00 fvnodrop
03 00 00 00 dotshield
28 00 00 00 atk
00 00 00 00 haste
00 00 00 00 damage_shield
00 00 00 00 guildfavor
00 00 00 00 augdistil
ff ff ff ff unknown3
00 00 00 00 unknown4
00 no_pet
00 unknown5
00 potion_belt_enabled
00 00 00 00 potion_belt_slots
01 00 00 00 stacksize
00 no_transfer
00 00 unk131
00 00 00 00 unknown8
00 00 00 00 unknown9
00 00 00 00 unknown10
00 00 00 00 unknown11
00 unknown12
00 unknown13
00 unknown14
ff ff ff ff effect // Click
00 unknown1
00 type
00 00 00 00 level
00 00 00 00 max_charges
00 00 00 00 cast_time
00 00 00 00 recast
00 00 00 00 recast_type
00 00 00 00 unknown2
00 effect_string
ff ff ff ff clickunk7
ff ff ff ff effect // Proc
00 level2
00 00 00 00 type
00 level
00 00 00 00 unknown1
00 00 00 00 unknown2
00 00 00 00 unknown3
00 00 00 00 unknown4
00 00 00 00 procrate
00 effect_string
ff ff ff ff unknown5
ff ff ff ff effect // Worn
00 level2
00 00 00 00 type
00 level
00 00 00 00 unknown1
00 00 00 00 unknown2
00 00 00 00 unknown3
00 00 00 00 unknown4
00 00 00 00 unknown5
00 effect_string
ff ff ff ff unknown6
ff ff ff ff effect // Focus
00 level2
00 00 00 00 type
00 level
00 00 00 00 unknown1
00 00 00 00 unknown2
00 00 00 00 unknown3
00 00 00 00 unknown4
00 00 00 00 unknown5
00 effect_string
ff ff ff ff unknown6
ff ff ff ff effect // Scroll
00 level2
00 00 00 00 type
00 level
00 00 00 00 unknown1
00 00 00 00 unknown2
00 00 00 00 unknown3
00 00 00 00 unknown4
00 00 00 00 unknown5
00 effect_string
ff ff ff ff unknown6
ff ff ff ff effect // Unknown???
00 level2
00 00 00 00 type
00 level
00 00 00 00 unknown1
00 00 00 00 unknown2
00 00 00 00 unknown3
00 00 00 00 unknown4
00 00 00 00 unknown5
00 effect_string
ff ff ff ff unknown6
00 00 00 00 UNK129
00 quest_item
00 00 00 00 unknown15
00 00 00 00 purity
00 00 00 00 backstab
00 00 00 00 dsmitigation
01 00 00 00 heroic_str
00 00 00 00 heroic_int
00 00 00 00 heroic_wis
01 00 00 00 heroic_agi
03 00 00 00 heroic_dex
02 00 00 00 heroic_sta
01 00 00 00 heroic_cha
00 00 00 00 heroic_mr
00 00 00 00 heroic_fr
00 00 00 00 heroic_cr
00 00 00 00 heroic_dr
00 00 00 00 heroic_pr
00 00 00 00 heroic_corr
00 00 00 00 healamt
00 00 00 00 spelldmg
// 00 00 00 00 00 - Not in SoF
00
00 End of Evolving Item
00 End of Aug 1
00 End of Aug 2
01 End of Aug 3
00 End of Aug 4
00 End of Aug 5
00
00 00 00 00
01 00 00 00 stacksize
00 00 00 00 unknown004
00 00 00 00 slot
00 00 00 00 price
01 00 00 00 merchant_slot
00 00 00 00 unknown020
17 2f db 00 instance_id
00 00 00 00 inst_nodrop
00 00 00 00 potion_type
00 00 00 00 charges
00 00 00 00 unknown040
00 00 00 00 unknown044
00 00 00 00 unknown048
00 00 00 00 unknown052
00 00 00 00 unknown056
00 unknown060
00 unknown061
00 ItemClass
// 00 - Not in SoF
53 68 69 6d 6d 65 72 69 6e | .......Shimmerin
67 20 49 6c 6c 73 61 6c 69 6e 20 4a 65 77 65 6c | g Illsalin Jewel
63 72 61 66 74 65 72 20 53 74 6f 6e 65 00 41 6e | crafter Stone.An
20 61 6e 63 69 65 6e 74 20 73 68 69 6c 69 73 6b
69 6e 20 6a 65 77 65 6c 00 49 54 36 33 00 b7 47
01 00 00 01 00 00 00 fe ff 1f 00 00 00 00 00 f0
02 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 ff ff 00 00 ff ff 00 00 00 00 00 00 0a
00 00 00 00 00 00 00 13 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00
41 00 00 00 46 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 c0 00 00 00 00
00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00
00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 01
00 00 00 00 00 00 00 00 00 00 00 00 00 46 00 00
00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 a7 b7 00 00 ff
ff ff ff 00 00 00 00 00 00 00 00 00 00 00 01 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff
ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff
ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
ff ff ff ff unknown6 (reference point to map the end of the packet without having to do the whole thing)
00 00 00 00 UNK129
00 quest_item
00 00 00 00 unknown15
00 00 00 00 purity
00 00 00 00 backstab
00 00 00 00 dsmitigation
00 00 00 00 heroic_str
00 00 00 00 heroic_int
00 00 00 00 heroic_wis
00 00 00 00 heroic_agi
00 00 00 00 heroic_dex
00 00 00 00 heroic_sta
00 00 00 00 heroic_cha
00 00 00 00 heroic_mr
00 00 00 00 heroic_fr
00 00 00 00 heroic_cr
00 00 00 00 heroic_dr
00 00 00 00 heroic_pr
00 00 00 00 heroic_corr
00 00 00 00 healamt
00 00 00 00 spelldmg
// 00 00 00 00 00 - Not in SoF
00
00 End of Evolving Item
00 End of Aug 1
00 End of Aug 2
00 End of Aug 3
00 End of Aug 4
00 End of Aug 5
00
################## Single Item (no aug) ########################
[OPCode: 0x2bad]
04 00 00 00
01 00 00 00 stacksize
00 00 00 00 unknown004
00 00 00 00 slot
00 00 00 00 price
01 00 00 00 merchant_slot
00 00 00 00 unknown020
0e 46 00 00 instance_id
00 00 00 00 inst_nodrop
00 00 00 00 potion_type
00 00 00 00 charges
00 00 00 00 unknown040
00 00 00 00 unknown044
00 00 00 00 unknown048
00 00 00 00 unknown052
00 00 00 00 unknown056
00 unknown060
00 unknown061
00 ItemClass
// 00 - Not in SoF
4c 61 6d 65 6e 74 61 74 69 6f 6e 00 Lamentation
4c 61 6d 65 6e 74 61 74 69 6f 6e 20 28 35 30 29 00
49 54 38 31 00
25 14 00 00 id
06 weight
01 norent
01 nodrop
00 attune
02 size
00 60 00 00 slots
a8 61 00 00 price
8d 04 00 00 icon
01 unknown1
00 unknown2
00 00 00 00 BenefitFlag
00 tradeskills
00 CR
00
00
00
00
00
06
06
00
00
00
00
00
14 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
19 00 00 00
ff ff 00 00
00 00 00 00
00 00 00 00
00 00 00 00
ff ff ff ff
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
01
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
13
00
00
00
09 00 00 00
00 00 00 ff
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 40 41
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
00 00 00 00
00 00 00 00
04 00 00 00
01
00
00 00 00 00
01
00
00 00 00 00
01
00
00 00 00 00
01
00
00 00 00 00
01
00
00 00 00 00
00 00 00 00
00 00 00 00
46 00 00 00
00 00 00 00
00
00
00
00
00
00
00
00 00 00 00
00
00
99 07 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
99 07 00 00
00 00 00 00
ff ff ff ff
00 00 00 00
00
00
00
00 00 00 00
01 00 00 00
00
00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
00
00
ff ff ff ff
00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
ff ff ff ff
00
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00
ff ff ff ff
00 00 00 00
00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00 spelldmg
// 00 00 00 00 00 - Not in SoF
00
00 End of Evolving Item
00 End of Aug 1
00 End of Aug 2
00 End of Aug 3
00 End of Aug 4
00 End of Aug 5
00 End of Item
|
|
|
|
|
|
|
03-26-2009, 05:51 PM
|
Sarnak
|
|
Join Date: Sep 2008
Location: Home
Posts: 31
|
|
Have you tried being primitive about the ending, and just assigned it as two int32s? The first being clairvoyance and the second being a combo list-terminator/aug slot number?
Using the structure already found for SOF, taking the 0x00000001 to mean slot 1, since the item has aug slot #1 set, could work nicely. Wasteful, sure, but they might not have cared for a packet that is only sent rarely. (Support for that idea should be found in the fact that they are sending the majority of data as 32 bit ints, when they could just go for 16 bits as well. Live items have only started in on 4 digits for HP/Mana/End, lots of room left until a short isn't enough.)
The list terminator would work on the principle of a non-zero value meaning that there is item data following, which is mounted in the aug slot indicated. A zero would be the end of the list.
The clairvoyance at least should be easy to test, given that you've been able to inject the heroics above. (Side note, I never knew that they made heroic resists, those aren't actually used on live, as far as I know.)
If you're playing around with the fields, some ideas for what some of the header unknowns could be: power source charge, copy item (found on test, they just set a flag to disqualify items from being tradded, sold, used in quests, ...), inst_attuned, evo level (both max and current perhaps).
I'd play with them myself, but I don't have access to a set of SOF discs currently. I've been meaning to work on adapting a legacy version, but the additional format changes are a pain....
As a handy reference, an item ID for an item that actually uses the string field in the effect structure to override the name.
34158 - Fabled Ring of Flamewarding - Changes the name of the focus effect from Sothgar's Rancor to Focus of Flames, thus retaining the focus name of the non-fabled version but boosting the actual effect.
fabled item version
non-fabled item version
My apologies if this particular feature is already well handled, the structures just seem to hint at it not being the case.
|
|
|
|
|
|
|
03-27-2009, 12:22 AM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Ahh, that override for the effect names is really cool. That could let us adjust items using any spells we want and then name the effect anything we want without requiring a custom spell file download. I figured it did something like that, but had never seen an actual example. There are still alot of things about items that need to get coded, but it is always good to know what options we have to possibly add in the future.
BTW, if you are going to look at items for comparing to the structures or packets, you are better-off using 13th floor instead of Alla's. The raw data from 13th floor is ordered in almost the exact order as our structure is, so it is much easier to reference and it helped alot to make sure our structure was as aligned as possible.
Other than augments, the only other thing I would really like to figure out about items is the cooldown stuff. I haven't seen anything that shows me what tells the client how to show the greyed out items ticking down until they aren't greyed out anymore. Recast delays do work properly, but all items with cooldowns in SoF currently always show as grey and never tick down to normal like on live. The weird thing is that I swear Titanium has the same greyed out cooldowns, but something disables them permanently after the first time you build the server, and I don't know what it is. I have heard a few reports and witnessed it myself as well. The first time after building a server from scratch, I saw the cooldown timers grey out items after use and actually tick down until the timer was up and it was ready to be used again. However, the next time restarting the server after that, the items never grey out or tick down ever again. No items do. And others have seen this same thing. I would love to figure out how that is handled for SoF and get it working properly as I think being able to see the cooldown is important, or at least nice to have I also figure that if we can figure it out for SoF, we can fix it in Titanium with the same change really easily.
I will keep messing with those last 8 bytes and see what I can figure out tonight.
Also, in case you didn't know, you can get SoF for $4.99 with free shipping from newegg while they last. Since you said you don't have SoF yet, this is a hard deal to pass up. Sounds like you have enough experience to definitely help out on finishing stuff up. I know your name from somewhere, but I can't recall where. Maybe you submitted code in the past or something? Keep in mind that I am not a coder really, so some technical terms will go over my head. I just look at the stuff and figure it out without knowing what things are actually called lol. I really should start actually reading and training on it, but learning it from examples has worked out fairly well for me so far :P
|
|
|
|
|
|
|
03-29-2009, 10:25 PM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Been working towards getting augments able to load in SoF over the past few days. I think for that to happen, I have to get the correct way to send the client inventory working first. KLS coded the proper way to send the inventory, which is to send all items in a single huge packet, but that is causing crashes due to alignment issues. SoF is currently set to send items 1 at a time in individual packets so it doesn't have to rely on sending a perfect inventory packet. If the single packet structure gets mis-aligned at any time, it throws off the whole rest of the inventory and will cause a crash if too many items are loaded after the packet alignment is off.
After trying to use the original code that KLS wrote to handle the inventory, it looks like extra bytes are being added between items at the point that breaks the structure. I am unsure where these bytes are coming from atm, but it does seem really odd. I think that if we can figure out what is sending those extra 25 or so bytes, we can get the inventory to load fully and properly without crashing. Once that happens, we can start working towards adding in code to handle loading augments into items in this list.
While just playing around, I messed up the structure many times, and a few times it showed info on some of the things we don't know much about yet. I saw an item with an augment at one point and I also saw items that shows evolving levels and even power source percentage. It seems like once the inventory is loading properly, it shouldn't be too hard to figure out where evolving item info and power source stuff is set.
|
|
|
|
|
|
|
03-30-2009, 03:49 AM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Good news! I got items loading the correct way as far as I can tell so far. The code KLS had written for it was actually very close to being perfect, but had 1 minor mistake in it. The subitem code was adding "length" instead of "sub_length", and since length was defined and not being cleared out before doing subitems, it was forcing all subitems to load as the same length. Since the lengths need to vary depending on the string fields like name and lore, it was causing the structure to break as soon as the second subitem in the list tried to get loaded.
Here is the code change I made:
Code:
for(int x = 0; x < 10; ++x)
{
serialized = NULL;
uint32 sub_length = 0;
const ItemInst* subitem = ((const ItemInst*)eq->inst)->GetItem(x);
if(subitem)
{
serialized = SerializeItem(subitem, (((eq->slot_id+3)*10)+x+1), &sub_length, 0);
//serialized = SerializeItem(subitem, 0, &sub_length, 0);
if(serialized)
{
tempdata = data;
data = NULL;
data = new uchar[total_length+sub_length];
memcpy(data, tempdata, total_length);
memcpy(data+total_length, serialized, sub_length);
total_length += sub_length; // This was set to length before
delete[] tempdata;
tempdata = NULL;
delete[] serialized;
serialized = NULL;
}
}
}
That loaded a full inventory without a crash and it is almost flawlessly loaded. The only remaining issue with loading the inventory like this is that it seems the amount of slots to load at once are either limited by the client or by the server somehow. Basically, the char I logged in has almost a full inventory for most slots including bank slots. But, it seems that since bank slots are loaded last, the client isn't showing all of the items in my bank. I first noticed that only the shared bank and last row on the right in the normal bank (last 4 slots) were not showing up. I then summoned more items to fill all of the bags in my normal inventory and zoned. After zoning, I see even less slots showing up in my bank. So, it seems like some kind of cut-off on how many items can be sent in a single packet. Maybe we have to split the packet up if it gets too big or something and send a second packet. Though, 2 packets should be enough to send all possible items unless maybe if all slots were full of multiple augged items, then it might take 3 packets or something. I am not too sure about this issue yet, but at least it is getting closer to working perfectly.
Last edited by trevius; 03-30-2009 at 12:08 PM..
|
|
|
|
03-30-2009, 04:03 AM
|
Sarnak
|
|
Join Date: Mar 2008
Posts: 47
|
|
The progess being made on this is amazing!
Congrats to the team and your efforts are really appreciated. I just need my SOF discs to turn up now
War
|
|
|
|
03-30-2009, 05:04 AM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Thanks, Warhawk I am really glad that this SoF project is almost done, or at least almost as final as Titanium currently is anyway.
I just figured out the issue with the limitation of how many items get loaded. Turns out that the first number sent in the packet was labeled as "item_opcode" in the code, but it is actually just supposed to be the total number of items that the client should be loading from that inventory packet. I tried setting it to use itemcount, but that total doesn't include subitems like augments or items in bags, so we would need a way to count the total items for it to be truly accurate. Here is the code that is related to this issue:
Code:
data = new uchar[4];
uint32 *item_opcode;
item_opcode = (uint32*)data;
*item_opcode = 0x69; //0x35;
By it being set to 69 in hex there, it means that it is telling the client to load a max of 105 items and stop loading any after that point. I made this change to verify that it would work:
Code:
*item_opcode = 200;
And that let all of my items load fully So, it seems that it doesn't matter much if the number of items we list is over the actual number we want the client to load, just as long as it isn't under that amount. I assume we could set it to something like 1000 and not have to ever worry about it. But, it would probably be best to get a total item count to put there that includes all sub items in bags and augments as well.
Now, just to figure out how to get augments actually working :P
|
|
|
|
03-30-2009, 08:10 PM
|
Sarnak
|
|
Join Date: Oct 2008
Location: Texas
Posts: 32
|
|
SoF still 5$ on Newegg.com, with free shipping!
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 09:18 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|