Go to Page... |
%UserProfile%\Documents\Elder Scrolls Online\live\GuildHistory
~/Documents/Elder Scrolls Online/live/CachedData/GuildHistory
LibHistoire:OnReady(function(lib) local guildId = GetGuildId(1) local category = GUILD_HISTORY_EVENT_CATEGORY_BANKED_CURRENCY local addonName = "MyAddon" local processor = lib:CreateGuildHistoryProcessor(guildId, category, addonName) if not processor then -- the processor could not be created return end local started = processor:StartIteratingTimeRange(startTime, endTime, function(event) local info = event:GetEventInfo() assert(info.currencyType == CURT_MONEY, "Unsupported currency type") local eventType = info.eventType if eventType == GUILD_HISTORY_BANKED_CURRENCY_EVENT_DEPOSITED then local amount = info.amount local displayName = DecorateDisplayName(info.displayName) ProcessDeposit(guildId, displayName, amount) end end, function(reason) if (reason == LibHistoire.StopReason.ITERATION_COMPLETED) then -- all events in the time range have been processed else -- the iteration has stopped early for some reason and not all events have been processed end end) if not started then -- the processor could not be started end end)
LibHistoire:OnReady(function(lib) local category = GUILD_HISTORY_EVENT_CATEGORY_TRADER local addonName = "MyAddon" local function SetUpListener(guildId) local processor = lib:CreateGuildHistoryProcessor(guildId, category, addonName) if not processor then -- the processor could not be created return end local key = processor:GetKey() local started = processor:StartStreaming(saveData.lastEventId[key], function(event) local info = event:GetEventInfo() if info.eventType == GUILD_HISTORY_TRADER_EVENT_ITEM_SOLD then ProcessItemSold(info) end saveData.lastEventId[key] = info.eventId end) if not started then -- the processor could not be started end end for i = 1, GetNumGuilds() do SetUpListener(GetGuildId(i)) end end)
ConvertArtificialLegacyId64ToEventId
Utility function to convert id64s that have been artificially created by a legacy listener to the new id53 equivalent.Lua Code:
(method) LibHistoire:ConvertArtificialLegacyId64ToEventId(id64: string) -> id53: integer53|nil
Should be used one time only to convert all id64s that have been stored by the addon when switching to the new event processor api, since it's not the fastest operation.
@param id64 — The id64 to convert.
@return id53 — The converted id53 or nil if the id64 cannot be converted.
CreateGuildHistoryListener(deprecated)
This method will be removed in a future version. Use CreateGuildHistoryProcessor instead.
Creates a legacy listener object which emulates the old guild history api. See guildHistoryCache/GuildHistoryLegacyEventListener.lua for details.Lua Code:
(method) LibHistoire:CreateGuildHistoryListener(guildId: integer, category: integer) -> listener: GuildHistoryLegacyEventListener|nil
It's highly recommended to transition to CreateGuildHistoryProcessor instead, to take better advantage of the new history api.
@param guildId — The id of the guild to listen to.
@param category — The legacy category to listen to. One of the GUILD_HISTORY_* constants. See guildHistoryCache/compatibility.lua for details.
@return listener — The created listener object or nil if no caches were found for the provided guildId and category.
See:
CreateGuildHistoryProcessor
Creates a processor object which can be configured before it starts sending history events to an addon. See guildHistoryCache/GuildHistoryEventProcessor.lua for details.Lua Code:
(method) LibHistoire:CreateGuildHistoryProcessor(guildId: integer, category: GuildHistoryEventCategory, addonName: string) -> processor: GuildHistoryEventProcessor|nil
@param guildId — The id of the guild to process history events for.
@param category — The category to process history events for.
@param addonName — The name of the addon that is processing the events. This is used to allow users to identify addons that are registered to a category, as well as to provide better logging.
@return processor — The created processor object or nil if no caches were found for the provided guildId and category.
See:
IsReady
This function can be used to check if the library is ready to be used. It will return true after the INITIALIZED callback has been fired.Lua Code:
(method) LibHistoire:IsReady() -> isReady: boolean
When the library is not ready yet, make sure to register to the INITIALIZED callback to know when it is.
@return isReady — True if the library is ready to be used, false otherwise.
See:
OnReady
A convenience function to execute a callback when the library is ready. When the library is already initialized, the callback will be executed immediately.Lua Code:
(method) LibHistoire:OnReady(callback: fun(lib: LibHistoire))
@param callback — The function to call when the library is ready. It will receive the LibHistoire object as an argument.
See:
RegisterCallback
Register to a callback fired by the library. Usage is the same as with ZO_CallbackObject.RegisterCallback. You can find the list of exposed callbacks in api.luaLua Code:
(method) LibHistoire:RegisterCallback(callbackName: Callbacks, callback: function, ...any)
@param callbackName — One of the exposed callbacks.
@param callback — The function to call when the callback is fired.
See:
GuildHistoryEventProcessor
UnregisterCallback
Unregister from a callback fired by the library. Usage is the same as with ZO_CallbackObject.UnregisterCallback.Lua Code:
(method) LibHistoire:UnregisterCallback(callbackName: Callbacks, callback: function, ...any)
@param callbackName — One of the exposed callbacks.
@param callback — The function to unregister.
See:
GetAddonName
Returns the name of the addon that created the processor.Lua Code:
(method) GuildHistoryEventProcessor:GetAddonName() -> addonName: string
@return addonName — The name of the addon that created the processor.
GetCategory
Returns the category.Lua Code:
(method) GuildHistoryEventProcessor:GetCategory() -> category: GuildHistoryEventCategory
@return category — The event category the processor is listening to.
GetGuildId
Returns the guild id.Lua Code:
(method) GuildHistoryEventProcessor:GetGuildId() -> guildId: integer
@return guildId — The id of the guild the processor is listening to.
GetKey
Returns a key consisting of server, guild id and history category, which can be used to store the last received eventId.Lua Code:
(method) GuildHistoryEventProcessor:GetKey() -> key: string
@return key — The key that identifies the processor.
GetPendingEventMetrics
Returns information about history events that need to be sent to the processor.Lua Code:
(method) GuildHistoryEventProcessor:GetPendingEventMetrics() -> numEventsRemaining: integer 2. processingSpeed: integer 3. timeLeft: integer
@return numEventsRemaining — The amount of queued history events that are currently waiting to be processed by the processor.
@return processingSpeed — The processing speed in events per second (rolling average over 5 seconds).
@return timeLeft — The estimated time in seconds it takes to process the remaining events or -1 if it cannot be estimated.
IsRunning
Returns true while iterating over or listening for events.Lua Code:
(method) GuildHistoryEventProcessor:IsRunning() -> running: boolean
@return running — true if the processor is currently running.
SetAfterEventId
Allows to specify a start condition. The nextEventCallback will only return events which have a higher eventId.Lua Code:
(method) GuildHistoryEventProcessor:SetAfterEventId(eventId: integer53) -> success: boolean
@param eventId — An eventId to start after.
@return success — true if the condition was set successfully, false if the processor is already running.
SetAfterEventTime
Allows to specify a start condition. The nextEventCallback will only receive events after the specified timestamp. Only is considered if no afterEventId has been specified.Lua Code:
(method) GuildHistoryEventProcessor:SetAfterEventTime(eventTime: integer53) -> success: boolean
@param eventTime — A timestamp to start after.
@return success — true if the condition was set successfully, false if the processor is already running.
SetBeforeEventId
Allows to specify an end condition. The nextEventCallback will only return events which have a lower eventId.Lua Code:
(method) GuildHistoryEventProcessor:SetBeforeEventId(eventId: integer53) -> success: boolean
@param eventId — An eventId to end before.
@return success — true if the condition was set successfully, false if the processor is already running.
SetBeforeEventTime
Allows to specify an end condition. The nextEventCallback will only return events which have a lower timestamp. Only is considered if no beforeEventId has been specified.Lua Code:
(method) GuildHistoryEventProcessor:SetBeforeEventTime(eventTime: integer53) -> success: boolean
@param eventTime — A timestamp to end before.
@return success — true if the condition was set successfully, false if the processor is already running.
SetEventCallback
Convenience method to set both callback types at once.Lua Code:
(method) GuildHistoryEventProcessor:SetEventCallback(callback: fun(event: ZO_GuildHistoryEventData_Base)) -> success: boolean
@param callback — The function that will be called for each missed event that was found.
@return success — true if the condition was set successfully, false if the processor is already running.
See:
SetMissedEventCallback
Sets a callback which will get passed events that had not previously been included in the managed range, but are inside the start and end criteria. The order of the events is not guaranteed.Lua Code:
(method) GuildHistoryEventProcessor:SetMissedEventCallback(callback: fun(event: ZO_GuildHistoryEventData_Base)) -> success: boolean
If SetReceiveMissedEventsOutsideIterationRange is set to true, this callback will also receive events that are outside of the specified iteration range.
The callback will be handed an event object (see guildhistory_data.lua) which must not be stored or modified, as it can change after the function returns.
@param callback — The function that will be called for each missed event that was found.
@return success — true if the condition was set successfully, false if the processor is already running.
See:
SetNextEventCallback
Sets a callback which will get passed all events in the specified range in the correct historic order (sorted by eventId).Lua Code:
(method) GuildHistoryEventProcessor:SetNextEventCallback(callback: fun(event: ZO_GuildHistoryEventData_Base)) -> success: boolean
The callback will be handed an event object (see guildhistory_data.lua) which must not be stored or modified, as it can change after the function returns.
@param callback — The function that will be called for each event that is processed.
@return success — true if the condition was set successfully, false if the processor is already running.
See:
SetOnStopCallback
Set a callback which is called after the listener has stopped.Lua Code:
(method) GuildHistoryEventProcessor:SetOnStopCallback(callback: fun(reason: StopReason)) -> success: boolean
Receives a reason (see lib.StopReason) why the processor has stopped.
@param callback — The function that will be called when the processor stops.
@return success — true if the condition was set successfully, false if the processor is already running.
See:
SetReceiveMissedEventsOutsideIterationRange
Controls if the processor should forward missed events outside of the specified iteration range to the missedEventCallback.Lua Code:
(method) GuildHistoryEventProcessor:SetReceiveMissedEventsOutsideIterationRange(shouldReceive: boolean) -> success: boolean
@param shouldReceive — true if missed events outside of the specified iteration range should be forwarded, false if they should be ignored.
@return success — true if the condition was set successfully, false if the processor is already running.
See:
SetRegisteredForFutureEventsCallback
Sets a callback which is called when the processor starts waiting for future events.Lua Code:
(method) GuildHistoryEventProcessor:SetRegisteredForFutureEventsCallback(callback: function) -> success: boolean
@param callback — The function that will be called when the processor starts waiting for future events.
@return success — true if the condition was set successfully, false if the processor is already running.
SetStopOnLastCachedEvent
Controls if the processor should stop instead of listening for future events when it runs out of events before encountering an end criteria.Lua Code:
(method) GuildHistoryEventProcessor:SetStopOnLastCachedEvent(shouldStop: boolean) -> success: boolean
@param shouldStop — true if the processor should stop when it runs out of events, false if it should wait for future events.
@return success — true if the condition was set successfully, false if the processor is already running.
Start
Starts the processor and passes events to the specified callbacks asyncronously. The exact behavior depends on the set conditions and callbacks.Lua Code:
(method) GuildHistoryEventProcessor:Start() -> started: boolean
@return started — true if the processor was started successfully, false if it is already running.
StartIteratingTimeRange
Convenience method to configure and start the processor to iterate over a specific time range and stop after it has passed all available events.Lua Code:
(method) GuildHistoryEventProcessor:StartIteratingTimeRange(startTime: integer53, endTime: integer53, eventCallback: fun(event: ZO_GuildHistoryEventData_Base), finishedCallback: fun(reason: StopReason)) -> started: boolean
@param startTime — The start time of the range (inclusive).
@param endTime — The end time of the range (exclusive).
@param eventCallback — The function that will be called for each event that is processed.
@param finishedCallback — The function that will be called when the processor stops. Only when StopReason.ITERATION_COMPLETED is passed, all events in the range have been processed.
@return started — true if the processor was started successfully, false if it is already running.
See:
StartStreaming
Convenience method to start the processor with a callback and optionally only receive events after the specified eventId.Lua Code:
(method) GuildHistoryEventProcessor:StartStreaming(lastProcessedId: integer53|nil, eventCallback: fun(event: ZO_GuildHistoryEventData_Base)) -> started: boolean
@param lastProcessedId — The last eventId that was processed by the addon or nil to start with the oldest managed event.
@param eventCallback — The function that will be called for each event that is processed. If not provided here, it has to be set with SetNextEventCallback beforehand, or the processor won't start.
@return started — true if the processor was started successfully, false if it is already running.
Callbacks
Stop
Stops iterating over stored events and unregisters the processor for future events.Lua Code:
(method) GuildHistoryEventProcessor:Stop() -> stopped: boolean
@return stopped — true if the processor was stopped successfully, false if it is not running.
Callbacks.CATEGORY_LINKED
Fired when a category has linked the managed range to present events. The guildId and category are passed as arguments.
Callbacks.HISTORY_RESCAN_ENDED(deprecated)
Rescan no longer exists.
Callbacks.HISTORY_RESCAN_STARTED(deprecated)
Rescan no longer exists.
Callbacks.INITIALIZED
Fired when the library has finished setting everything up.
Any calls to the api (aside of registering for the event) should happen after this has fired.
It will receive the LibHistoire object as an argument.
Keep in mind that this may fire before EVENT_ADD_ON_LOADED, so make sure to check if the library is ready before listening to the callback.
See:
Callbacks.LINKED_RANGE_FOUND(deprecated)
Use MANAGED_RANGE_FOUND instead.
See:
Callbacks.LINKED_RANGE_LOST(deprecated)
Use MANAGED_RANGE_LOST instead.
See:
Callbacks.MANAGED_RANGE_FOUND
Fired when a new managed range has been found. The guildId and category are passed as arguments.
This happens when the managed range is established initially or after the managed range was lost.
StopReason
Callbacks.MANAGED_RANGE_LOST
Fired when the managed range has been lost. The guildId and category are passed as arguments.
This could be due to the cache being deleted, the library detecting inconsistencies in its own save data or the user manually resetting the range.
StopReason.ITERATION_COMPLETED
An end condition has been set and the first event outside of the specified range was encountered
See:
StopReason.LAST_CACHED_EVENT_REACHED
The stopOnLastCachedEvent flag has been set and the last cached event was reached
See:
StopReason.MANAGED_RANGE_LOST
The managed range was lost (fires right after MANAGED_RANGE_LOST callback)
See:
StopReason.MANUAL_STOP
Stop has been called by the addon
See:
- NOTE: It will now no longer automatically request data and you will instead have to navigate to the next page without pressing shift to trigger a load via ingame codev2.4.2
- NOTE: this will only prevent the data from getting deleted, but it won't be accessible in the game unless you rejoin the guild- updated cache path in the settings menu
- NOTE: Please let me know if the path for MacOS is still correct- fixed currently selected guild not showing properly in the status window in some cases
- sliders to set how long the guild history cache should retain data- fixed managed range reset not working correctly in some cases
- a button to allow resetting all caches at once
- the path to the cache files
- now it will properly explode instead of silently getting stuck when invalid timestamps are receivedv2.2.1
- NOTE: switching guilds and categories via the status panel won't send requests automatically. You'll have to manually hit E or use the ingame ui to do so- added new entry to status window menu to show debug information
- NOTE: it's still a bit experimental, so let me know if you encounter any issues and be prepared to update your code if necessary- fixed legacy listener SetBeforeEventTime, SetTimeFrame and iterationComplete callback behaving slightly different from version 1
- check the addon description for more information and a migration guide
- there is also an api.doc.lua file which can be used with language servers to provide autocompletion without having to include the full source code
- NOTE: legacy listeners will continue to be called just that- changed exit warning dialogues to show up less frequently and be more clear about why you should care
- NOTE: everything will explode for now when it happens. Please make sure to report it, so I can get an idea when and how often it occurs and decide what to do about it- added shift modifier to pagination buttons in the vanilla history UI to allow jumping to the first or last page quickly
- as long as the guild history menu is open, LibHistoire will now prefer requests for the currently visible guild- further reduced amount of automated requests by not sending them to categories that won't produce any events (e.g. guild without bank or store)
- other than that it will prioritize requests by how many listeners are registered for a category as well as a base priority (trading > bank gold > bank items > roster > others)
- automatic removal of old history save data- smart history requests
- removed rescan and force link features
- compatibility layer for old history api
- new api callbacks
- skip requests for categories with no listening addons- new category cache menu
- fetch oldest events first after prolonged absense
- reset linked range button- improved cache status bar
- clear cache button
- request mode setting
- cache segmentation displayv1.5.1
- automated request visualization
- animated progress bar
- zoom level setting (in main menu)
- new colors
NOTE: No data was lost and I believe I've found and fixed all incorrect cases and added unit tests to guard against regressions. As an additional measure the lib will now also throw an assertion error if it encounters links that cannot be decoded. Please make sure to report these so I can add them to the test cases and fix them!
- GetKey - returns an identifier which can be used to store the last seen eventId for a listenerv1.0.2
- GetGuildId - returns the guildId of a listener
- GetCategory - returns the category of a listener
- GetPendingEventMetrics - returnsthe amount of stored or unlinked events that are currently waiting to be processed by the listener- SetBeforeEventId, SetBeforeEventTime
the average processing speed in events per second or -1 if not enough data is yet available
the estimated time in seconds it takes to process the remaining events or -1 if no estimate is possiblethese can be used to limit the iteration range and automatically stop the listener when they are passed- SetIterationCompletedCallback
they will also ensure the correct data is returned by the GetPendingEventMetrics function when only a subset of the data is requested (otherwise it will consider all available events)when an end criteria is set, this callback will fire when the listener has stopped automatically- SetTimeFrame(startTime, endTime)a convenience method to specify a range which includes the startTime and excludes the endTime
File Name |
Version |
Size |
Uploader |
Date |
2.4.2 |
140kB |
sirinsidiator |
06/08/24 02:44 PM |
|
2.4.1 |
140kB |
sirinsidiator |
06/08/24 12:56 PM |
|
2.4.0 |
140kB |
sirinsidiator |
06/08/24 10:31 AM |
|
2.3.0 |
139kB |
sirinsidiator |
03/30/24 03:21 PM |
|
2.3.0 |
137kB |
sirinsidiator |
03/28/24 01:58 PM |
|
2.2.0 |
137kB |
sirinsidiator |
03/27/24 01:58 PM |
|
2.1.1 |
128kB |
sirinsidiator |
03/23/24 07:40 AM |
|
2.1.0 |
128kB |
sirinsidiator |
03/21/24 05:53 PM |
|
2.0.7 |
127kB |
sirinsidiator |
03/17/24 12:11 PM |
|
2.0.6 |
127kB |
sirinsidiator |
03/16/24 10:48 AM |
|
2.0.5 |
127kB |
sirinsidiator |
03/15/24 05:02 PM |
|
2.0.4 |
126kB |
sirinsidiator |
03/15/24 06:05 AM |
|
2.0.3 |
126kB |
sirinsidiator |
03/14/24 07:24 PM |
|
2.0.2 |
126kB |
sirinsidiator |
03/13/24 07:20 PM |
|
2.0.1 |
126kB |
sirinsidiator |
03/12/24 07:06 PM |
|
2.0.0 |
124kB |
sirinsidiator |
03/11/24 04:49 AM |
|
1.5.1 |
120kB |
sirinsidiator |
11/02/23 11:51 AM |
|
1.5.0 |
120kB |
sirinsidiator |
11/01/23 03:20 PM |
|
1.4.1 |
118kB |
sirinsidiator |
06/14/23 12:54 PM |
|
1.4.0 |
118kB |
sirinsidiator |
04/19/23 12:44 PM |
|
1.3.0 |
118kB |
sirinsidiator |
11/01/22 08:16 AM |
|
1.2.2 |
118kB |
sirinsidiator |
04/25/21 06:41 AM |
|
1.2.1 |
118kB |
sirinsidiator |
04/24/21 03:01 PM |
|
1.2.0 |
118kB |
sirinsidiator |
04/22/21 01:22 PM |
|
1.1.3 |
119kB |
sirinsidiator |
12/12/20 11:12 AM |
|
1.1.2 |
118kB |
sirinsidiator |
12/05/20 02:33 PM |
|
1.1.1 |
118kB |
sirinsidiator |
12/05/20 09:47 AM |
|
1.1.0 |
118kB |
sirinsidiator |
12/04/20 07:01 AM |
|
1.0.2 |
115kB |
sirinsidiator |
10/31/20 05:32 AM |
|
1.0.1 |
115kB |
sirinsidiator |
10/25/20 04:32 PM |
![]() |
Comment Options |
sirinsidiator |
View Public Profile |
Send a private message to sirinsidiator |
Find More Posts by sirinsidiator |
Add sirinsidiator to Your Buddy List |
CaffeinatedMayhem |
View Public Profile |
Send a private message to CaffeinatedMayhem |
Send email to CaffeinatedMayhem |
Find More Posts by CaffeinatedMayhem |
Add CaffeinatedMayhem to Your Buddy List |
Thrasher |
View Public Profile |
Send a private message to Thrasher |
Send email to Thrasher |
Find More Posts by Thrasher |
Add Thrasher to Your Buddy List |
sshogrin |
View Public Profile |
Send a private message to sshogrin |
Send email to sshogrin |
Find More Posts by sshogrin |
Add sshogrin to Your Buddy List |
nightstrike2 |
View Public Profile |
Send a private message to nightstrike2 |
Send email to nightstrike2 |
Find More Posts by nightstrike2 |
Add nightstrike2 to Your Buddy List |
M-ree |
View Public Profile |
Send a private message to M-ree |
Send email to M-ree |
Find More Posts by M-ree |
Add M-ree to Your Buddy List |
![]() |
|||
Forum posts: 2
File comments: 533
Uploads: 0
|
![]() |
||
![]() |
![]() |
M-ree |
View Public Profile |
Send a private message to M-ree |
Send email to M-ree |
Find More Posts by M-ree |
Add M-ree to Your Buddy List |
![]() |
|||
Forum posts: 0
File comments: 66
Uploads: 0
|
![]() |
||
![]() |
![]() |
NeKryXe |
View Public Profile |
Send a private message to NeKryXe |
Send email to NeKryXe |
Visit NeKryXe's homepage! |
Find More Posts by NeKryXe |
Add NeKryXe to Your Buddy List |
![]() |
|||
|
|||
![]() |
![]() |
sirinsidiator |
View Public Profile |
Send a private message to sirinsidiator |
Send email to sirinsidiator |
Visit sirinsidiator's homepage! |
Find More Posts by sirinsidiator |
Add sirinsidiator to Your Buddy List |
![]() |
||
That's what the ingame UI provides to load history data. So all you need to do is hit E. |
||
![]() |
![]() |
sirinsidiator |
View Public Profile |
Send a private message to sirinsidiator |
Send email to sirinsidiator |
Visit sirinsidiator's homepage! |
Find More Posts by sirinsidiator |
Add sirinsidiator to Your Buddy List |
![]() |
|
Forum posts: 2
File comments: 533
Uploads: 0
|
Ok, dunno what's up with LibHistoire, but as a few people noted, it keeps giving a warning on logout/quit, even when I've been online for hours. Happens not every time, but at least one in three.
It suggests checking the status window and trying to manually request missing data -- but there is just no option to request it manually. Sent the screenshot via a pm. |
![]() |
![]() |
M-ree |
View Public Profile |
Send a private message to M-ree |
Send email to M-ree |
Visit M-ree's homepage! |
Find More Posts by M-ree |
Add M-ree to Your Buddy List |
![]() |
|
Forum posts: 0
File comments: 66
Uploads: 0
|
Hi! Is there any way to go directly to the last page of the activity log? Because everyday, in order to complete the retrieving, I need to go to the last page of each guild activity log. In my case I have thousands of pages in two guilds, it's thousands of clicks. Is there any shortcut to go to the last page? Thanks for all.
|
![]() |
![]() |
NeKryXe |
View Public Profile |
Send a private message to NeKryXe |
Send email to NeKryXe |
Visit NeKryXe's homepage! |
Find More Posts by NeKryXe |
Add NeKryXe to Your Buddy List |
![]() |
||||
Forum posts: 2
File comments: 533
Uploads: 0
|
Re: Annoying warning popup
|
|||
![]() |
![]() |
M-ree |
View Public Profile |
Send a private message to M-ree |
Send email to M-ree |
Visit M-ree's homepage! |
Find More Posts by M-ree |
Add M-ree to Your Buddy List |
![]() |
|
I'm getting a popup as well, and it kind of sort of attempts to explain something to me, but I just don't understand, ultimately, what this addon wants from me now. I'm just playing the game. If I logoff anyway, will it pickup and re-attempt to do what it did not, before? Will I have interrupted something that never resumes?
|
|
![]() |
![]() |
Jammet |
View Public Profile |
Send a private message to Jammet |
Send email to Jammet |
Visit Jammet's homepage! |
Find More Posts by Jammet |
Add Jammet to Your Buddy List |
![]() |
|
Forum posts: 0
File comments: 3
Uploads: 0
|
Annoying warning popup
Hey! Libhistoire keeps preventing me from logging off and showing Warning box because it couldnt properly link information to guild. Its very annoying and i would like to disable it. Could you put a option in settings to disable the warning popup box?
Thanks for your work. Very much appreciate you addon creators |
![]() |
![]() |
SnorcTheOrc95 |
View Public Profile |
Send a private message to SnorcTheOrc95 |
Send email to SnorcTheOrc95 |
Visit SnorcTheOrc95's homepage! |
Find More Posts by SnorcTheOrc95 |
Add SnorcTheOrc95 to Your Buddy List |
![]() |
You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.