Thread Tools Display Modes
07/07/15, 03:06 PM   #1
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
[outdated] guild store API improvements

I already asked for some improvements a while ago here, but it's been almost half a year and I haven't heard anything new since then. I also have a few new things to add in the meantime, so here we go:

SetTradingHouseFilter parameter limit
The function SetTradingHouseFilter which is used to specify the arguments for the individual search filters is currently limited to accept only up to 8 filter arguments.
Because of this I can't add a Crafting > All subcategory in AwesomeGuildStore as I would need to pass 19 arguments to list all item types.

Filters
I implemented some new filters in AwesomeGuildStore that are currently only working locally on the current page.
It would be great if these were added on the server side in order to reduce the transferred data and show all matching results on one page, thus making the search faster and more efficient.

There is also some problem with item levels on certain item categories that are related to crafting professions, that makes it impossible to look for a level range on them.
This Sourflower Tea Recipe for example was listed with level 8 and level 10 in a guild store:
|H1:item:45999:3:8:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h
|H1:item:45999:3:10:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h
It would be really helpful either the item levels are adjusted so that a certain range corresponds to a crafting level, or if there was a filter that works with the required crafting level of an item.
[*] New filter types:
  • text - this one has gotten quite powerful and allows to match text and item links in a number of ways. see the Textfilter Tutorial in the description of AwesomeGuildStore for a full explanation
  • set boni - e.g. health regen, weapon damage
  • known state - for recipes, motifs, runes and item traits
  • unit price range
  • stack size range
  • crafting level filter - or a fixed item level filter

Sorting
Probably the most requested feature for AwesomeGuildStore - besides the unit price filter - is sorting the results by unit price. If this was added to the API it would save me a lot of trouble implementing local sorting by unit price.

Search Improvements
These are some features that would make finding a specific item much easier and thus reduce the amount of traffic that is generated and at the same time improve usability by making the interface more responsive.

SetPendingItemPurchase and GetTradingHouseSearchResultItemInfo only accept a local index within the last searched page.
If the search results had indices that are independent of the current page it would allow me to locally cache pages and still be able to purchase items regardless of which page of the current search is opened.
Going a step further and giving each listing a global id64 which is also returned in the guild activity log and item sold mails would also allow to track sales easier.

The theoretical limit of items in a store is 15,000 (30*500) which means there can be up to 150 pages in one store. With the current cooldown of 5 seconds that would mean that indexing a fully stocked store takes around 12-13 minutes.
Moreover in my experience most searches return more than 100 items and make additional requests necessary. Even a small increase to 200 would be well appreciated.
A limit of 5000 results would allow downloading all items in a guild store in up to 15 seconds and make more requests unnecessary as the filtering can then happen completely on client side.

In case the limit can't be increased that much, it would also be nice to have a way to query how many results a search would return before it is submitted.
Two new methods GetSearchResultPageCount and GetSearchResultItemCount would allow for some nice features.

Item Categorization
The newly added Psijic Ambrosia Recipe Fragments are currently a bit troublesome to search for.
They have the item category ITEM_TROPHY, but are unlike other trophies also consumables. Because of that they are shown in the consumable category inside the inventory, but under Misc > Trophy in AwesomeGuildStore.
In my opinion these should actually be ITEM_RECIPE, because that's what a regular user is looking for when he is thinking of the new recipe.
It would also be nice if IsItemLinkRecipeKnown can handle them, so the known recipe filter can work on them without me making special cases all over the place in AwesomeGuildStore.

Shields have an ITEMTYPE_WEAPON, even though they are always handled as armor. This makes it impossible for me to list them under Armor > All with the current restrictions on SetTradingHouseFilter, because I can't use the EQUIP_TYPE_* due to the number of different types that I would need to filter then.

I hope at least some of the easier requests can make it into Update 7, so I have something to look forward to on the addon front.
 
04/22/16, 03:42 AM   #2
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
It's been some time since I posted this, so are there any news?
GetSearchResultPageCount please?
 
04/25/16, 11:59 AM   #3
ZOS_ChipHilseberg
ZOS Staff!
Premium Member
Yes this person is from ZeniMax!
Join Date: Oct 2014
Posts: 551
Unfortunately the client doesn't have that information right now. The guild store query on the server only returns enough to fill a page so it doesn't know the total number of results. Changing that would impact database performance which makes it a more complicated matter than adding an API for it.
 
04/25/16, 12:34 PM   #4
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
I know the server guys are busy, but this should be something that they can implement in 5 minutes.

I suppose you have a SQL database for the store and do something like "SELECT * FROM store_data WHERE guild=... AND itemFillter=... LIMIT 100". Shouldn't it be as simple as adding a second function that runs "COUNT * FROM store_data WHERE guild=... AND itemFillter=..." and returns the value instead? Count should not impact performance in any considerable way.
 
04/25/16, 02:39 PM   #5
haggen
 
haggen's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2015
Posts: 137
Originally Posted by sirinsidiator View Post
I know the server guys are busy, but this should be something that they can implement in 5 minutes.

I suppose you have a SQL database for the store and do something like "SELECT * FROM store_data WHERE guild=... AND itemFillter=... LIMIT 100". Shouldn't it be as simple as adding a second function that runs "COUNT * FROM store_data WHERE guild=... AND itemFillter=..." and returns the value instead? Count should not impact performance in any considerable way.
It's never that simple, I'm afraid. There are cases where "a simple count" can kill your database/systems. Keep in mind we're dealing with a massive amount of requests, plus not one but probably a cluster of databases and load balancers and caches in front of it. Also, any changes you make can and will impact other areas so you have to get approval from your project manager or boss and then he/she must talk with other managers to agree on terms of the change and suddenly we're talking about a dozen of people working dozens of hours just to include this tiny little piece of information in the API response. I've seen it before. :P

Last edited by haggen : 04/25/16 at 02:45 PM.
 
04/26/16, 08:27 AM   #6
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
I know that it may take a bit more than that, but it is really frustrating. The guild store API has been neglected since launch. There isn't even a new filter for the new SPECIALIZED_ITEMTYPE.
EDIT: and i am also hitting the 8 value limit again thanks to the newly added ITEMTYPE_POISON. Now I have to decide which of the item types I remove from Consumable > All.

Last edited by sirinsidiator : 04/26/16 at 08:40 AM.
 
04/26/16, 08:46 AM   #7
haggen
 
haggen's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2015
Posts: 137
Originally Posted by sirinsidiator View Post
I know that it may take a bit more than that, but it is really frustrating. The guild store API has been neglected since launch. There isn't even a new filter for the new SPECIALIZED_ITEMTYPE.
EDIT: and i am also hitting the 8 value limit again thanks to the newly added ITEMTYPE_POISON. Now I have to decide which of the item types I remove from Consumable > All.
I'm with you buddy. Actually I think the whole Trading House thing hasn't received a much needed attention. The API specially. But I've seen people raising the issue before and I recall someone from ZOS saying something about it, but of course it was something like "we're talking about it" and "soon™". :/ Let's hope for the DLC after the next (Dark Brotherhood).
 
05/04/16, 11:43 AM   #8
cyxui
AddOn Author - Click to view addons
Join Date: Nov 2015
Posts: 61
Originally Posted by ZOS_ChipHilseberg View Post
Unfortunately the client doesn't have that information right now. The guild store query on the server only returns enough to fill a page so it doesn't know the total number of results. Changing that would impact database performance which makes it a more complicated matter than adding an API for it.
can we get an ID for each store listing at least? I believe that is simple as Select ID .... FROM .... and the clustered column shouldn't effect performance at all
 
05/12/16, 05:12 AM   #9
@AlphaLemming
 
@AlphaLemming's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 122
I wish guildstores would disappear and be replaced by one! auction house. Lesser DB requirement, lesser or none required addons and a player friendly environment to shop needed items. These weekly fees for guild traders are also an unpopular part.
 
05/12/16, 06:50 AM   #10
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
Originally Posted by @AlphaLemming View Post
I wish guildstores would disappear and be replaced by one! auction house. Lesser DB requirement, lesser or none required addons and a player friendly environment to shop needed items. These weekly fees for guild traders are also an unpopular part.
You forgot to mention the through the roof prices for everything, because suddenly the ultra rich can just dominate the market globally.
Two improvements I could live with are a combined interface for all stores in one location and a different time for the store transition time for EU. Tuesday 4am is a huge pain in the ass.
 
06/09/16, 04:05 PM   #11
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
With the craft bags now being part of the game, please allow SetPendingItemPost and RequestPostItemOnTradingHouse to also accept BAG_VIRTUAL and maybe even BAG_BANK.
Please also fix/implement the 3rd parameter "quantity" on RequestPostItemOnTradingHouse. Right now it is ignored and just takes the whole stack.
 
10/21/16, 04:38 AM   #12
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
Any news? Will we ever see some improvements to the guild store, or will it just be ignored for all eternity?
 

ESOUI » Developer Discussions » Wish List » [outdated] guild store API improvements

Thread Tools
Display Modes

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

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