Log in

View Full Version : Parsing Raw Item Data


Cronos
05-03-2004, 08:43 AM
My question is this. I have a database of all the raw item data off of Lucy and I was wondering exactly how race, class, and equippable slots are assigned to an item. Say I wanted to dig through the database and return only <insert class here> usable items and if it is equippable in <insert slot here>. Most of the rest of the raw data is self explanatory.

Much thanks in advance for responses. :D

mikenune
05-03-2004, 09:01 AM
How exactly did you manage to get thier database? Lucy (http://lucy.allakhazam.com) only provides dumps of the spells "database." And all they're doing there is giving you the spells_us.txt file as a DB.

As long as it's something that you aquired legally, then I'd love to get my pads. . . err HANDS on a copy!

As for the class thing. . .
In the items table, the class is actually determined by a bit being turned on. For example, a Paladin is (in binary) "00000100" or (in decimal) "4." All you have to do is check the corresponding bit. if it's a "1", then that class can wear it, if it's a "0" then they can't (if an item had "5" - "00000101" in binary - in the class field, then it would be wearable by both Pallys - class "00000100" or "4" - and Warriors - class "00000001" or "1".

As for slos. . .
I haven't looked into those too much yet so I can't help ya there. I would assume it's set up in a similar fashion though.

Cronos
05-03-2004, 09:28 AM
To get all the raw item data I scraped the site. Lucy organizes it's database such as:


http://lucy.allakhazam.com/itemraw.html?id=1001
http://lucy.allakhazam.com/itemraw.html?id=1002
http://lucy.allakhazam.com/itemraw.html?id=1003


etc.,

So I just used a program that grabbed the html source for each item's raw data and parsed the HTML into a database file the has the raw data listed such as:


<ITEM:1001>
AkzID = 1395
aagi = 0
ac = 2
accuracy = 0
acha = 0
adex = 0
aint = 0
asta = 0
astr = 0
attack =
aug1type = 7
aug2type = 0
aug3type = 0
aug4type = 0
aug5type = 0
augres = 0
augvalue = 0
avoidance = 0
awis = 0
bagsize =
bagslots =
bagtype =
bagwr =
banedmgamnt2 =
banedmgamt = 0
banedmgbody = 0
banedmgrace = 0
bardtype = 0
bardvalue = 0
booktype =
casttime = -1
charmfile = 0
classes = 65535
color = 0
combateffects = 0
cost = 200
cr = 0
damage = 0
damageshield =
deity = 0
delay = 0
dmgplusamnt = 0
dmgplustype = 0
dotshielding = 0
dr = 0
effecttype = 0
elemdmgamt = 0
elemdmgtype = 0
endur = 0
factionamt1 = 0
factionamt2 = 0
factionamt3 = 0
factionamt4 = 0
factionmod1 = 0
factionmod2 = 0
factionmod3 = 0
factionmod4 = 0
filename =
focusid = 0
fr = 0
gmflag = 0
haste =
hp = 0
icon = 639
id = 1001
idfile = IT63
itemclass = 0
itemtype = 10
ldonprice = 0
ldonsold = 0
ldontheme = 0
level = 0
light = 0
lore = Cloth Cap
magic = 0
mana = 0
manaregen =
material = 0
maxcharges = -1
mr = 0
name = Cloth Cap
nodrop = -1
norent = -1
pr = 0
procratemod = 0
races = 32767
range = 0
reclevel = 0
recskill = 0
regen =
reqlevel = 0
shielding = 0
size = 1
skillmodtype = 0
skillmodvalue = 0
slots = 4
spellid = -1
spellshield = 0
stackable = 0
strikethrough = 0
stunresist = 0
tradeskills = 0
tribute = 0
unknown230 =
unknown264 = 0
unknown296 = 0
unknown298 = 0
unknown300 = 0
unknown302 = 0
unknown304 = 0
unknown306 = 0
unknown308 = 0
unknown310 = 0
updated = 2004-03-21 21:43:28
weight = 2


Now I just need to parse that out so that I can return items that are usable by a certain class and filter out which slot(s) the item is assigned to.

Btw, what would the value be assigned to for usable classes? I see race, which is self-explanatory, and I see slots, which is self-explanatory (although I don't understand the algorythm for it yet), but I just need a little help figuring out how to parse it all.

Thanks again for any responses.

Cronos
05-04-2004, 05:06 AM
Okay, with a little help I was able to figure out race/class, but I'm still confused with the slots field. According to a post on eqbeastlord forums, slots are assigned using the following method. The problem is, the other two use binary. People on the eqbeastlord forums originally thought that the value in the slots field determined proc rate (such as normal proc vs. high proc rate, such as the cleric summoned hammer), which is false, and the author of the post suggests that:

The Slot on Lucy doesnt have anything to do with How many Procs a Weapon has. Its just a Binary coded value in wich slot the Weapon fits :
8192 = 4000h = Primary slot
24576 = 6000h = Primary and secondary slot (4000h + 2000h)

im sure you find a weapon that fits in Range also, that would be
4000h+2000h+0800h = 6800h = 26624

thats it, and not any Proc rate !

He then continues to give examples of the slot values in whatever form he is using (whatever his 'h' suffix suggests; I'm not thinking it's hex, I'm not sure though). I have simplified his slot values into a table (Please forgive the sloppiness. I had it formatted all pretty, but I couldn't copy the formatting :?):


Slot = Numerical Value
Left Ear = 000002
Head = 000004
Face = 000008
Right Ear = 000010
Neck = 000020
Shoulder = 000040
Arms = 000080
Back = 000100
Left Wrist = 000200
Right Wrist = 000400
Range = 000800
Hands = 001000
Secondary = 002000
Primary = 004000
Right Finger = 008000
Left Finger = 010000
Finger (?) = 018000
Chest = 020000
Legs = 040000
Feet = 080000
Waist = 100000
Ammo = 200000


Now what I guess I need to know is if those values are actually converted to binary to determine what slots the item is allowed or just how exactly. Also, he had a single field labelled "Finger" and it's value it "018000" that doesn't seem to follow the pattern, so it seems as though that would be wrong.

Thank you for any help :D

mikenune
05-04-2004, 06:40 AM
The EQEMu source code says this:

SLOT_CHARM = 0,
SLOT_EAR01 = 1,
SLOT_HEAD = 2,
SLOT_FACE = 3,
SLOT_EAR02 = 4,
SLOT_NECK = 5,
SLOT_SHOULDER = 6,
SLOT_ARMS = 7,
SLOT_BACK = 8,
SLOT_BRACER01 = 9,
SLOT_BRACER02 = 10,
SLOT_RANGE = 11,
SLOT_HANDS = 12,
SLOT_PRIMARY = 13,
SLOT_SECONDARY = 14,
SLOT_RING01 = 15,
SLOT_RING02 = 16,
SLOT_CHEST = 17,
SLOT_LEGS = 18,
SLOT_FEET = 19,
SLOT_WAIST = 20,
SLOT_AMMO = 21,
I have yet to really decipher what that means though. I'll post here later this evening with what I find. . .

Cronos
05-04-2004, 09:16 AM
I don't think that has to do with designating what fields an item can go in, but instead is the actual slot you see in the inventory. I don't know how else to describe it.

mikenune
05-04-2004, 09:26 AM
It's the location of the "active bit" actually.

Arms = 7

That means that something that can be put in ONLY that slot would have a value of "000000000000001000000" (binary) or 128 (decimal). I'll go ahead and build a chart up for these slots (after I do a little more verifying) later tonight.

Cronos
05-04-2004, 10:30 AM
Thank you very much :)