ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   General Authoring Discussion (https://www.esoui.com/forums/forumdisplay.php?f=174)
-   -   Guild History of sales changes. Discussion and solutions (https://www.esoui.com/forums/showthread.php?t=8602)

Marazota 06/15/19 10:31 AM

Guild History of sales changes. Discussion and solutions
 
While this is still subject to change, and may be ZOS will revert API changes, better to be ready for worst scenario
https://forums.elderscrollsonline.co...rmanent-please
https://forums.elderscrollsonline.co...-guild-history

also, id like to hear a word from API developer here
what was behind this decigion, please?


what i have in mind, and its related to Master Merchant addon ofc:

- if guild history will still be unavailable for addons
- when you sold an item - you receiving a MAIL with gold
- i think it will be possible to read DATA from that mail (amount of gold, item name, quantity, date, guild name)
- this info you already can see if you turn on option in Awesome Guild Store
- and record this data to Master Merchant data base?


also, may be Philgo will consider to make a way to merge data across users, similar way like its is now in HarversMap addon

/discuss :banana:


about other addons, history of donations, promotions, kicks or invites... im not sure still, but i hope together, in this topic we will find workarounds!


P.s. while i understand solution with mails isnt perfect, because guild master still will not able to see summary of sales of the guild total or of each member, the member itself will able to have up-to-date data of his own sales
....and if merge feature will be added, everything will works the same as before
ofcourse if people will upload and merge their data
.... but also they can edit their saved variables and add sales that doesnt exist... hmm. it will be bad
open space for manipulations

Rhyono 06/15/19 10:57 AM

As your own sale history, that'd be fine. But to have an actual idea of prices, a large portion of players would be having to upload their data and you'd need access to it. If things were to stay as they are, TTC would be the most capable of adapting.

sirinsidiator 06/15/19 11:49 AM

Sorry to rain on your parade, but the mail does not contain information about the sold item. AGS only takes a guess by comparing the attached gold and send time to the guild history. As long as the history is disabled it won't work and just show the regular mail text.

Rhyono 06/15/19 12:27 PM

I haven't seen the regular mail text in so long that I didn't realize AGS was making assumptions to show the item name. It makes sense now, since a couple times the mail text has shown the same item twice (back to back mail) when they sold for the same price and likely at almost the exact same time.

sirinsidiator 06/15/19 12:50 PM

I may actually be able to improve that now by taking the item unique ids into account and only consider a history entry when the id hasn't been assigned to a mail yet.

Marazota 06/15/19 01:11 PM

at least gold and item-id
can be taken from email without access to guild history?

sirinsidiator 06/15/19 01:18 PM

Nope. item is not known. only gold.

Marazota 06/15/19 01:24 PM

damn thats... unfortunate

so in theory we need addon that can read an event when we listing smthing to the guild
with amount of gold and item-id
and then somehow compare to the system email of Item being sold

still too difficultm and we must not list different items for similar price too then

Marazota 06/16/19 03:08 PM

one addition

we also can track items we bought
and add them to database in theory

Marazota 06/17/19 05:52 AM

new topic
old was closed
https://forums.elderscrollsonline.co...-guild-history

also, id like to hear a word from API developer here
what was behind this decigion, please?

Marazota 06/17/19 09:16 AM

UPD.
guild bank history working as before
from my understanding Sales history only unavailable


Marazota 06/18/19 03:26 AM

From what I have heard, MM is restricted to the most recent 99-199 items when it refreshes (you might also need to open guild history for sales first). So basically addons can technically access SOME information but is blocked from getting most of the info unless you keep refreshing it every minute 24/7.

I guess this was ZOS's stopgap measure to restore guild history while still limiting addons from making calls to the server.

Verbalinkontinenz 06/18/19 01:05 PM

I was able to pull - I guess - complete 10 days data last night from 10pm till 1:30 am, it took quite a while. i google-translated Kai Schobers comment on it.

Quote:

@DDD: The patch today, a switch has been installed, which allows us to regulate the access on-the-fly. That's exactly what happened immediately after the patch.
I am not sure, how its supposed to work still, since other people mention it doesnt work for them. On my Main Account I also wasnt able to get the data, but on my second account it was working. I have no clue what the difference was, I could imagine, Shissus Guild Tools requesting history same time might be the reason it didnt work on main. But I didnt go deep into it yet.

If it's working as we guess, it seems as the contingent for requests is limited. That's why I requested some changes on ATT from Arka, so people wont necessarily pull all 10 days all the time when ATT is activated. This on the other hand requires Dev support. ZOS would have to adjust the return value of RequestGuildHistoryCategoryOlder(), so the addon knows, there is still data available, but can not be retrieved at the moment.

Marazota 06/18/19 01:36 PM

Quote:

Originally Posted by Verbalinkontinenz (Post 38437)
I was able to pull - I guess - complete 10 days data last night from 10pm till 1:30 am, it took quite a while. i google-translated Kai Schobers comment on it.



I am not sure, how its supposed to work still, since other people mention it doesnt work for them. On my Main Account I also wasnt able to get the data, but on my second account it was working. I have no clue what the difference was, I could imagine, Shissus Guild Tools requesting history same time might be the reason it didnt work on main. But I didnt go deep into it yet.

If it's working as we guess, it seems as the contingent for requests is limited. That's why I requested some changes on ATT from Arka, so people wont necessarily pull all 10 days all the time when ATT is activated. This on the other hand requires Dev support. ZOS would have to adjust the return value of RequestGuildHistoryCategoryOlder(), so the addon knows, there is still data available, but can not be retrieved at the moment.

AHA! from mm comments

Quote:

Originally Posted by Sorondor
I was able to get the entirety of this past week's sales data into MM. The key is to manually load the sales history before enabling MM. It appears that MM is still capable of reading the sales history, but only sales history that has been manually loaded (i.e. "Show More") by the player. Warning: Getting the full 10 days of sales history for my trade guild was extremely time consuming, the sales history developed weird display issues after about day 5, and client freezes grew quite severe the more history was loaded.

I was able to verify MM appears to read the sales history properly because I had sales last Monday and Tuesday and MM correctly tallied them. YMMV


Verbalinkontinenz 06/18/19 01:37 PM

Quote:

Originally Posted by Marazota (Post 38438)
AHA! from mm comments

Nope, I didnt do anything like that. I also read Blobsky in a Discord talking about a secret trick. There is no trick. ATT just pings server and sometimes its getting response and data and sometimes (most of the time) not. And this the complete 10 days back. But this matches Kai Schobers statement.

Marazota 06/18/19 03:23 PM

Quote:

Originally Posted by Verbalinkontinenz (Post 38439)
Nope, I didnt do anything like that. I also read Blobsky in a Discord talking about a secret trick. There is no trick. ATT just pings server and sometimes its getting response and data and sometimes (most of the time) not. And this the complete 10 days back. But this matches Kai Schobers statement.

can you please link Kai original post

Verbalinkontinenz 06/18/19 03:46 PM

Quote:

Originally Posted by Marazota (Post 38441)
can you please link Kai original post

It's german:
https://forums.elderscrollsonline.co...omment_6143722

Quote:

@DDD: Mit dem Patch heute wurde ein Schalter eingebaut, der uns erlaubt den Zugriff on-the-fly zu reglementieren. Genau das geschah unmittelbar nach dem Patch.
I was nagging at Kai and Gina in forums, because to me the whole behaviour ingame of guilds, chat lags, pvp and so on was contrary to the previous announcement of opening history but removing api command or disallowing addons to request that data. To me then it seemed, as if nothing had changed the first hour after patch and then something happened with the server, it suddenly stabilized. while att slowly started grabbing sales data.

ZOS_ChipHilseberg 06/19/19 09:42 AM

The changes to the guild history API allowed us to control the frequency of addon requests to stabilize the load in the short term. While the cooldown on the requests is something that we can tune as needed, the present timings are one new data request and one old data request per category each time you log in (100 entries per request). And then an additional new request every 30 minutes and an additional old request every 30 seconds. This will slow down mining all of the past entries, but will allow us to keep providing data while a better long-term solution is pursued.

Rhyono 06/19/19 01:14 PM

Do you think it might be time to change how it works in general to a more native solution?

Things an average player "needs" to know:
  • Their own sales
  • The typical value of an item

Things a guildmaster "needs" to know:
  • Guildmate sales for the previous/current week.

Right now, addons such as MM are trying to pull all of this data every login and try to piece it all together. What if you shorthanded it yourselves with cached results?

This would shift all of those tiny calls and client side calculations into much less frequent queries, handled in a much faster manner.

What you would likely need to do:

Price history:
  • Allow it to be toggled off (some players don't want the overhead and that's fine).
  • Have aggregated prices for all items across sales in all guilds over the past X.
  • Have aggregated prices update every X (day?)
  • Have it cached using saved vars, allowing tooltips and so forth to pull it in without hitting the server every time. The longer the delay between the updates also make the cache more important, so that logging in doesn't necessarily update it either. Addons would also be allowed to do things with this cached info without API calls.

Sales history:
  • Allow it to be toggled
  • Add a guild UI tab for players to pull up their sales (only their own sales)
  • Can use a cache. Upon login, would check against the existing cache file's date and only append new sales.
  • Every X minutes, it will check for new sales.

Guild info:
  • Add a guild UI tab that lists all guildmates total sales for X time frame (only the aggregates per player, not the line item detail).
  • Can use a cache. Would probably only update once or twice per day. Should cache each player's weekly sales per the guild cycle. Retaining more than just the current week would be a setting that mostly only guildmasters would need and manually enable for themselves. If you wanted to slim this down more, viewing other player's sales would be strictly based on guild roles/permissions. A normal player would perhaps just see their own rank/sales.

Verbalinkontinenz 06/19/19 01:21 PM

Quote:

Have it cached using saved vars, allowing tooltips and so forth to pull it in without hitting the server every time. The longer the delay between the updates also make the cache more important, so that logging in doesn't necessarily update it either. Addons would also be allowed to do things with this cached info without API calls.
Tbh this is my fav. suggestion as well.

-> User Setting save such data local
-> ESO saves data, it gets timestamp, new data gets updated till timestamp + buffer of specific amount of time to check the saved its correct, data gets deleted after x amount of days (maybe 14d?)
-> everyone else, who isnt activating that setting gets only max 3 days via sales history

The rest isnt that necessary to be done by ZOS, i doubt it would ever happen, but for such ui mods we have addon developers.

Rhyono 06/19/19 02:32 PM

Even if they didn't do the UI aspect, that method of data retrieval would be a lot lighter than currently.

Philgo68 06/19/19 04:26 PM

Guild Sales History
 
Quote:

Originally Posted by ZOS_ChipHilseberg (Post 38443)
The changes to the guild history API allowed us to control the frequency of addon requests to stabilize the load in the short term. While the cooldown on the requests is something that we can tune as needed, the present timings are one new data request and one old data request per category each time you log in (100 entries per request). And then an additional new request every 30 minutes and an additional old request every 30 seconds. This will slow down mining all of the past entries, but will allow us to keep providing data while a better long-term solution is pursued.

Is there an API to ask the server what the cooldowns are at any given time so we can avoid asking during our cooldown? How are the cooldowns enforced? (No response at all, A "no more data" response, A "you are on cooldown" response, etc.)

What happens in guilds where there are more than 100 new entries in a category in 30 minutes?

ZOS_ChipHilseberg 06/20/19 08:35 AM

Quote:

Is there an API to ask the server what the cooldowns are at any given time so we can avoid asking during our cooldown? How are the cooldowns enforced? (No response at all, A "no more data" response, A "you are on cooldown" response, etc.)
RequestGuildHistoryCategoryNewest and RequestGuildHistoryCategoryOlder will return false in the case of being on CD. We don't push the server CD to all clients so the client only knows the server CD when it makes a request. There is virtually no cost to calling these APIs all the time since we would just check the CD value on the client and bail.

Quote:

What happens in guilds where there are more than 100 new entries in a category in 30 minutes?
Each time it will grab the next 100 entries working from the most recent event it last received towards now. If there are more than 100 then those that were left out will come with the next request.

Sorondor 06/20/19 11:59 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 38443)
The changes to the guild history API allowed us to control the frequency of addon requests to stabilize the load in the short term. While the cooldown on the requests is something that we can tune as needed, the present timings are one new data request and one old data request per category each time you log in (100 entries per request). And then an additional new request every 30 minutes and an additional old request every 30 seconds. This will slow down mining all of the past entries, but will allow us to keep providing data while a better long-term solution is pursued.

If I understand this correctly, if a single trade guild averages 1 sale/minute (mine averages close to this) then it would take a minimum of 6.5min after log on to catch up on sales data from the last 24 hours? (200 items at log on plus 13 "old" retrieval requests every 30 seconds thereafter)

ZOS_ChipHilseberg 06/20/19 03:32 PM

Quote:

Originally Posted by Sorondor (Post 38459)
If I understand this correctly, if a single trade guild averages 1 sale/minute (mine averages close to this) then it would take a minimum of 6.5min after log on to catch up on sales data from the last 24 hours? (200 items at log on plus 13 "old" retrieval requests every 30 seconds thereafter)

That is correct.

Verbalinkontinenz 06/21/19 12:33 AM

Any ideas on future plans?

Sordrak 06/21/19 01:05 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 38443)
The changes to the guild history API allowed us to control the frequency of addon requests to stabilize the load in the short term. While the cooldown on the requests is something that we can tune as needed, the present timings are one new data request and one old data request per category each time you log in (100 entries per request). And then an additional new request every 30 minutes and an additional old request every 30 seconds. This will slow down mining all of the past entries, but will allow us to keep providing data while a better long-term solution is pursued.

Hey ZOS_ChipHilseberg

Nice to getting some answers here. I'm still a bit confused about everything that is going on.

Could you please explain how the different things are tied together respectively would you mind explaining if and how the issues described above (guild history) are related to guild chat and pvp campaign status?

As far as I understood the bad performance, like guild chat delays was related to the history, right?
It might not be, and therefore some explanation would be great. Thanks. :)

ZOS_ChipHilseberg 06/21/19 12:26 PM

Quote:

Originally Posted by Verbalinkontinenz (Post 38480)
Any ideas on future plans?

Not to share right now but we're working on it.

Philgo68 06/30/19 10:03 AM

Quote:

Originally Posted by ZOS_ChipHilseberg (Post 38488)
Not to share right now but we're working on it.

It would be super handy (and reduce calls for server data in the long run) if RequestGuildHistoryCategoryOlder and RequestGuildHistoryCategoryNewest had a "start time" parameter. "Give me the 100 records newer than timestamp 1561862419" Right now when people don't log in for a few days they have to sit on one character, without a crash or /reloadui, for a few hours to get in history far enough to get that data. If they don't make it back for whatever reason, it has to start digging from scratch. With a "start time" parameter, we could start looking back in history and store those records, and then we would not have to dig back that far again, after a /reloadui or switching characters.

merlight 06/30/19 10:33 AM

Quote:

Originally Posted by Philgo68 (Post 38536)
It would be super handy (and reduce calls for server data in the long run) if RequestGuildHistoryCategoryOlder and RequestGuildHistoryCategoryNewest had a "start time" parameter. "Give me the 100 records newer than timestamp 1561862419" Right now when people don't log in for a few days they have to sit on one character, without a crash or /reloadui, ...

Actually it's without a crash or logout. /reloadui, as well as switching characters without logging out, doesn't discard downloaded history (and also doesn't refresh cooldowns). But that's a nitpick. A start time parameter would help a ton regardless. However, you'd then also need a way to tell there's a gap in downloaded history. If another addon requests Newest since an hour ago, and your addon then requests Older since 5 days ago... you need to be able to tell where the gaps are.

Sorondor 06/30/19 11:57 AM

Quote:

Originally Posted by merlight (Post 38537)
/reloadui, as well as switching characters without logging out, doesn't discard downloaded history

This is quite true, thankfully, otherwise my bandaid of manually downloading sales history before enabling MM (requiring /reloadui) wouldn't work. This characteristic has saved me so many hours.

Marazota 07/25/19 04:28 AM

from last PTS patch

Changed the guild history update mechanism from client polling to server-initiated updates to help address performance issues. The history will update approximately once per minute.

Baertram 07/25/19 06:37 AM

The before/above discussed API functions were changed as well due to this change in guild history:

Quote:

basically RequestGuildHistoryCategoryNewest is gone and RequestGuildHistoryCategoryOlder is now RequestMoreGuildHistoryCategoryEvents
and new events are sent to you on a timer
Also found these reovals from a difference between teh API txt files:
Lua Code:
  1. --Removed
  2. * HasGuildHistoryCategoryEverBeenRequested(*integer* _guildId_, *[GuildHistoryCategory|#GuildHistoryCategory]* _category_)
  3. ** _Returns:_ *bool* _hasEverBeenRequested_
  4. * RequestMoreGuildHistoryCategoryEvents(*integer* _guildId_, *[GuildHistoryCategory|#GuildHistoryCategory]* _category_)
  5. ** _Returns:_ *bool* _requested_

Marazota 08/20/19 11:22 PM

guild history disabled again


Sorondor 08/21/19 06:07 AM

Only the guild history API that allows addons to request more data appears to be disabled. Fetching sales history manually still works fine.

Note that ZOS has significantly improved the performance while fetching the history manually.

Baertram 08/21/19 03:28 PM

Quote:

Originally Posted by Sorondor (Post 38961)
Only the guild history API that allows addons to request more data appears to be disabled. Fetching sales history manually still works fine.

Note that ZOS has significantly improved the performance while fetching the history manually.

Maybe because the addon history is offline and the server now got time to concentrate on the manual requests:rolleyes:

Sorondor 08/21/19 03:49 PM

Quote:

Originally Posted by Baertram (Post 38962)
Maybe because the addon history is offline and the server now got time to concentrate on the manual requests:rolleyes:

Whatever the reason, it's much improved, even after 3 days without any logins. Just sharing my experience in case it may benefit others.

Marazota 08/23/19 01:39 PM

guild history API turned ON again
also
Addons
Addon requests for Guild History now have a longer cooldown when the game is under heavy load.

interesting how to determine this CD

Baertram 08/23/19 02:06 PM

Quote:

Originally Posted by Marazota (Post 38991)
guild history API turned ON again
also
Addons
Addon requests for Guild History now have a longer cooldown when the game is under heavy load.

interesting how to determine this CD

I don't think we will be able to determine this cooldown. The addons will request the data, the data will not be retrieved. "Hammering" (trying a lot) to get the data again will not help and just increase the payload on the server so the cooldown will increase, I guess.


All times are GMT -6. The time now is 04:19 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI