Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #241  
Old 03-24-2009, 09:59 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

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
Reply With Quote
  #242  
Old 03-24-2009, 10:06 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 03-25-2009 at 06:08 AM..
Reply With Quote
  #243  
Old 03-24-2009, 10:11 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

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.
Reply With Quote
  #244  
Old 03-24-2009, 11:57 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #245  
Old 03-25-2009, 06:23 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #246  
Old 03-25-2009, 01:13 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

There's a null term for evolving data too I believe, so 6/8 should be accounted for.
Reply With Quote
  #247  
Old 03-26-2009, 06:44 AM
Leere
Sarnak
 
Join Date: Sep 2008
Location: Home
Posts: 31
Default

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?
Reply With Quote
  #248  
Old 03-26-2009, 12:49 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #249  
Old 03-26-2009, 05:51 PM
Leere
Sarnak
 
Join Date: Sep 2008
Location: Home
Posts: 31
Default

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.
Reply With Quote
  #250  
Old 03-27-2009, 12:22 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #251  
Old 03-29-2009, 10:25 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #252  
Old 03-30-2009, 03:49 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 03-30-2009 at 12:08 PM..
Reply With Quote
  #253  
Old 03-30-2009, 04:03 AM
warhawk
Sarnak
 
Join Date: Mar 2008
Posts: 47
Default

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
Reply With Quote
  #254  
Old 03-30-2009, 05:04 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #255  
Old 03-30-2009, 08:10 PM
mplayer254
Sarnak
 
Join Date: Oct 2008
Location: Texas
Posts: 32
Default

SoF still 5$ on Newegg.com, with free shipping!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:48 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3