Ace has an add-on for warcraft called itemleveldkp for a look at a simply dkp price approach.
http://files.wowace.com/ItemLevelDKP/ItemLevelDKP-r37249.1032.zipthis is the specific function in their approach
function ilvlDKP(item)
if not item then return -1000,0 end
name,_,itemRarity,itemLevel,_,itemType,itemSubType,_,itemEquipLoc = GetItemInfo(item)
if ItemLevelDKP_List[name] then
return -1,ItemLevelDKP_List[name]
else
if (not ((itemType == "Armor" or itemType == "Weapon") and
(itemRarity > 2 and itemRarity < 6))) then
return -1000,0
end
-- Set DKP base cost
dkp_base = 0
if (itemRarity == 3) then
dkp_base = (itemLevel - 1.84) / 1.6
elseif (itemRarity == 4) then
dkp_base = (itemLevel - 1.3) / 1.3
elseif (itemRarity == 5) then
dkp_base = itemLevel
end
-- Set slot modifier
dkp_slot = 0
if (itemEquipLoc == "INVTYPE_HEAD") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_NECK") then
dkp_slot = 0.54
elseif (itemEquipLoc == "INVTYPE_SHOULDER") then
dkp_slot = 0.74
elseif (itemEquipLoc == "INVTYPE_CHEST") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_ROBE") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_WAIST") then
dkp_slot = 0.74
elseif (itemEquipLoc == "INVTYPE_LEGS") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_FEET") then
dkp_slot = 0.74
elseif (itemEquipLoc == "INVTYPE_WRIST") then
dkp_slot = 0.54
elseif (itemEquipLoc == "INVTYPE_HAND") then
dkp_slot = 0.74
elseif (itemEquipLoc == "INVTYPE_FINGER") then
dkp_slot = 0.54
elseif (itemEquipLoc == "INVTYPE_TRINKET") then
dkp_slot = 0.68
elseif (itemEquipLoc == "INVTYPE_CLOAK") then
dkp_slot = 0.54
elseif (itemEquipLoc == "INVTYPE_WEAPON") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_SHIELD") then
dkp_slot = 0.65
elseif (itemEquipLoc == "INVTYPE_2HWEAPON") then
dkp_slot = 1.5
elseif (itemEquipLoc == "INVTYPE_WEAPONMAINHAND") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_WEAPONOFFHAND") then
dkp_slot = 1
elseif (itemEquipLoc == "INVTYPE_HOLDABLE") then
dkp_slot = 0.52
elseif (itemEquipLoc == "INVTYPE_RANGED" or itemEquipLoc == "INVTYPE_RANGEDRIGHT") then
if (itemSubType == "Guns" or itemSubType == "Bows" or itemSubType == "Crossbows") then
dkp_slot = 1.5
else
dkp_slot = 0.50
end
elseif (itemEquipLoc == "INVTYPE_RELIC") then
dkp_slot = 0.30
else
dkp_slot = 0
end
if (dkp_base == 0 or dkp_slot == 0) then
return -1000,0
else
return itemLevel,dkp_base * dkp_slot
end
end
end
looks you get a base based on rarity multiplied by the item level and slot type.
hope this helps.