LilSparky's Workshop
LilSparky's Workshop adds auction-derived pricing information for trade skills right into the trade skill recipe frame. Each skill is evaluated for material costs and potential value of the item created. These two numbers are listed next to each skill in an easy-to-read format.
Supported Auction Scanners:
- Auctioneer
- AuctionLite
- AuctionMaster
- Auctionator
Optionally Requires:
- Informant (for vendor availability)
LibPeriodicTable (for vendor availability)
Trade Skill Interfaces Supported:
- GnomeWorks
- AdvancedTradeSkillWindow
- Skillet
- Blizzard's Standard UI
- Doublewide Tradeskills
- Tradeskill HD
Auction pricing models can be selected by right-clicking either the value column or the cost column (each can have a different pricing method attached).
The Value column can be left clicked to cycle through the different valuation methods for the resultant item: Auction Value (a), Vendor Value (v), Disenchant Value (d) or the greatest of the three different values (the default). Any instance of an item Value being greater than the Cost to create it will have a highlighted Value entry. Optionally, the Value column can be displayed as a percentage of the Cost column.
The Cost column simply sums up the costs for each reagent and reports the total.
Both columns can be combined into a single "Profit" column which simply reflects the Value minus the Cost.
Tooltips for each column give more details about the price breakdowns LSW is considering.
A note regarding vendor availability:
LSW utilizes supplied item databases to determine when an item is readily available from a vendor. Occasionally this may not be accurate, usually because the item is a trade in for another item and not buyable with gold. I have provided a simple way to over-ride the vendor database:
/script LSWConfig.vendorOverride[item#] = (true/false/nil)
The item# is the item ID for the specific item. It is a single number. For example, 2589 is Linen Cloth.
Setting the value to "true" means the item is available at the vendor.
Setting the value to "false" means the item is not available at the vendor.
Setting the value to "nil" means to use the provided databse.
There is now also a right-click option to override the vendor availability and also to hand enter specific prices for items.
A note about frame/auction support:
LSW utilizes a plug in scheme to handle support to handle pricing and frame support. I am unlikely to add additional plugins directly into LSW. The goal of the plugin system is to provide basic templates that other addon authors could employ to provide LSW support on their end while at the same time providing functionality for a base set of common mods. Addon authors are free to contact me regarding the plugin system if issues arise or the system doens't make sense.
Ah, I see. I don't really consider that optional then...the addon simply doesn't work correctly without it.
Thanks for the reply and for your work on LSW.
zace: i'll look into your problem. might just be an issue of not having auction data for those items?
mrlavender: lsw has no internal vendor database. you need libperiodictable to provide this info (i suppose maybe i should just add a vendor scanner to alleviate this problem).
I recently installed this addon, and while it's pretty nice there's a major problem with vendor pricing on some blacksmithing materials.
I'm using LSW + Auctionator.
If I set the cost basis option to resale then it tells me that the cost of using a saronite bar is 5g (vendor price). Saronite bars sell for 1.25g to vendors.
If I set the cost basis to purchase cost then it gets the correct AH price for saronite bars, but then tells me the cost of any eternal is 2.4g vendor price. It's 2.4g + a frozen orb of course. It also tells me I can buy any kind of gem from vendors for less than AH price. I wish.
From a quick look at the code it seems to me that the VendorCost function in getSellValue_support should not just be returning vendor sell price * 4, it needs to check if vendors actually sell the item (in bulk). For the moment I have bodged a fix that works for me by changing this function to return the minimum of GetSellValue()*4, GetAuctionBuyout(), which isn't correct but at least shows the right material prices with cost basis = resale.
Hey! I'm having problems with LSW with enchanting dusts (Arcane dust/Infinite dust/even the lowlevel dusts too). I'm using the r90release I downloaded today, 26/07/10. (Not sure how to how to check the version)
I'm not sure it's a bug or something, but the auction value doesn't show up. (I have Residual Material Value: Purchase Cost > Purchase Cost, checked) The other's auction value show up but not the dust's.
Very nice update, looking forward to trying this out tomorrow.
okay, new rev is up.
added a price module for cached prices. basically, it works like this:
when you log out, lsw will iterate over all the item data in memory and write out the *current* prices for the cost and value amounts for each item it knows about. you can then use "cached value" and "cached cost" to reference this saved data.
what this means is that you can have a dedicated auction toon and then access this data from your various crafting toons without having to load up the entire auction system.
once lsw captures prices for an item, it will always try to update that item's information so you don't necessarily need to scan thru all your tradeskills to update the data. as long as you scan thru once on any toon on that server, it'll begin caching data.
note that if your auction toon is using the cached data, then you'll be short circuiting the system a bit (when you log out, lsw will basically re-cached the data already cached which is likely not what you want).
Message: ...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1479: attempt to compare number with nil
Time: 07/23/10 01:46:16
Count: 1
Stack:
Locals:
And then...
Message: Interface\AddOns\Skillet\UI\MainFrame.lua:1430: attempt to index global 'skill_style_type' (a nil value)
Time: 07/23/10 01:46:17
Count: 1
Stack: Interface\AddOns\Skillet\UI\MainFrame.lua:1430: in function `SkillButton_OnEnter'
[string "*:OnEnter"]:3: in function <[string "*:OnEnter"]:1>
Locals: self =
RecipeGroupPruneList = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:609
SkillButton_NewGroup = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:2380
mouseOver = SkilletScrollButton11 {
}
ClearQueue = <function> defined @Interface\AddOns\Skillet\SkilletQueue.lua:193
RecipeGroupInitFlatten = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:450
SkillButton_OnDragStop = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:2210
RecipeGroupConstructDBString = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:576
SkilletShow = <function> defined @Interface\AddOns\Skillet\Skillet.lua:713
internal_HideAllWindows = <function> defined @Interface\AddOns\Skillet\Skillet.lua:1053
QueueChanged = <function> defined @Interface\AddOns\Skillet\Skillet.lua:1132
DisplayShoppingList = <function> defined @Interface\AddOns\Skillet\ThirdPartyHooks.lua:456
QueueAllItems = <function> defined @Interface\AddOns\Skillet\SkilletQueue.lua:295
visited =
}
RecipeNote_OnClick = <function> defined @Interface\AddOns\Skillet\UI\RecipeNotes.lua:99
AddToQueue = <function> defined @Interface\AddOns\Skillet\SkilletQueue.lua:141
hideTrivialRecipes = false
RecipeDifficultyButton_OnShow = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:548
UpdateMerchantFrame = <function> defined @Interface\AddOns\Skillet\UI\MerchantWindow.lua:111
RecipeGroupSort = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:427
EnableResize = <function> defined @Interface\AddOns\Skillet\UI\Utils.lua:121
ConfigureRecipeControls = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:489
UpdateNotesWindow = <function> defined @Interface\AddOns\Skillet\UI\RecipeNotes.lua:135
GetTradeSkillIcon = <function> defined @Interface\AddOns\Skillet\TradeskillInfo.lua:280
GetItemIDFromLink = <function> defined @Interface\AddOns\Skillet\TradeskillInfo.lua:36
FreeCaches = <function> defined @Interface\AddOns\Skillet\Skillet.lua:815
GetTradeSkillRecipeLink = <function> defined @Interface\AddOns\Skillet\TradeskillInfo.lua:211
internal_SortAndFilterRecipes = <function> defined @Interface\AddOns\Skillet\UI\Sorting.lua:453
RecipeGroupNew = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:87
internal_AddPreButtonShowCallback = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:71
GetReagentLabel = <function> defined @Interface\AddOns\Skillet\ThirdPartyHooks.lua:177
SortDropdown_OnLoad = <function> defined @Interface\AddOns\Skillet\UI\Sorting.lua:493
RecipeGroupRenameEntry = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:397
RankFrame_OnEnter = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:2637
RecipeGroupFlatten = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:466
recipeDB =
}
RecipeGroupMoveEntry = <function> defined @Interface\AddOns\Skillet\RecipeGroups.lua:293
GetTradeSkillReagentItemLink = <function> defined @Interface\AddOns\Skillet\TradeskillInfo.lua:195
ReagentButtonSkillSelect = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:2696
GetTradeSkillTools = <function> defined @Interface\AddOns\Skillet\TradeskillInfo.lua:225
SortDropdown_OnClick = <function> defined @Interface\AddOns\Skillet\UI\Sorting.lua:555
name = "Skillet"
internal_ShowTradeSkillWindow = <function> defined @Interface\AddOns\Skillet\Skillet.lua:1014
CHAT_MSG_SKILL = <function> defined @Interface\AddOns\Skillet\SkilletData.lua:1170
TradeButton_OnEnter = <function> defined @Interface\AddOns\Skillet\UI\MainFrame.lua:559
SetSelectedSkill = <function> defined @Interface\AddOns\Skillet\Skill
I like your addon pretty much but i have a big problem with it...it seems to only work sometimes...its quite randomly working // not working (most time not working) and by not working i mean : I go to the AH and scan it with Auctionator the open my tradeskillwindow (its the same problem with advanced trade skill // blizzard standard ui) and theres a loadingbar for LSW saying it is catching the prices in the chat a message appeats that lsw is loaded but in the tradeskill window nothing shows up...
the curious thing is that from time to time it works but when i relog (with the same addons aktive) the prices dissapear...
could it be that some of my addons disturbs lsw?
please help me ;)
greetings Nerifi
sorry, been focused on gnomeworks mostly right now. i'll see if i can squeeze some time in for some attention to lsw.
i've decided, however, to save price data into lsw's saved vars file. this means that the most recent prices that you used will be retained when you run without any ah modules
Have you been able to make any headway into this?
In the case of gem transmute it sometimes doesn't update until after I've bought the mats/done the transmute meaning a 20cd made on the wrong decision.
The problem is that otelma and alnitak are switching which Stat Module they are using in Auctioneer and expecting LSW to change with it.
lilsparky, I'm not sure which Auctioneer data set you are using, but the mod itself actually uses several different modules:
Standard Deviation (StdDev)
Market
Mean
BeanCount/Sales
Appraiser
Is the data you are hooking into showing these as options? If possible we'd like to be able to choose which module LSW uses amongst those.
If that is not feasible the best choices (in my order, but others may argue the order):
Bean Count/Sales
Appraiser
Market
StdDev
The catch with BeanCount/Sales though is that it doesn't affect the actual data. It takes the module you are using in Auctioneer and modifies the displayed data (or the price you are posting an item at).
Appraiser isn't a data module either but rather is a list of which module you want to use for a specific item.
Market is the most commonly used module because it's an amalgam of all the data modules together.