Download
(8 Kb)
Download
Updated: 06/23/24 11:52 AM
Pictures
File Info
Compatibility:
Gold Road (10.0.0)
Updated:06/23/24 11:52 AM
Created:05/21/24 04:32 AM
Monthly downloads:577
Total downloads:1,798
Favorites:2
MD5:
Categories:Miscellaneous, Data Mods, Group, Guild & Friends, Info, Plug-in Bars, UI Media
10.0.0
DungeonHistory
Version: 1.1.2
by: oInsideOut [More]
AddOn Description:

A simple Dungeon Log and GUI for successfully completed Dungeons.

Only designed for the Dungeon Finder. Dungeons that are done manually without the use of the Dungeon Finder or unfinished Dungeons won't be recorded.

Shoutout to the ESOUI Add-on Wiki and especially to pills and ziggr for the Scroll List Example.

This is my first AddOn and first time working with Lua, but it gets the job done!

If you encounter any bugs, have suggestions for future updates or have any questions, please let me know in the comments.

External Dependencies:

Required:
  • None

Recommended/Optional:
Keybinds:

How to get to the Keybinds Menu:
  • Esc -> Controls -> Addon Keybinds -> DungeonHistory

You can bind a key to toggle the DungeonHistory Window.
  • ... -> Show/Hide History Window

Settings(LibAddonMenu-2.0 required):

How to get to the Settings Menu:
  • Esc -> Settings -> Addons -> DungeonHistory

You can toggle the Date Format of the GUI from d/m/Y to m/d/Y.
  • ... -> Date Format m/d/Y

You can erase all dungeon data, notes and options to reset everything back to default.
  • ... -> Erase All Data

List of usable commands:
  • /dh -> Used to toggle the DungeonHistory Window
  • /dungeonhistory -> Used to toggle the DungeonHistory Window
  • /dhdateformat -> Used to toggle the Date Format of the GUI between d/m/Y and m/d/Y
  • /dherasealldata -> Used to erase all dungeon data, notes and options to reset everything back to default.
Changelog for Version 1.1.2

  • Fixed an issue where an error message would be displayed due to the string format handling of dungeon names for non-English ESO clients.



Changelog for Version 1.1.1

  • Fixed an issue where an error message would be displayed due to string formatting of dungeon names on non-English ESO clients.



Changelog for Version 1.1.0

  • Added a ComboBox Filter for the ScrollList.
  • Added Stats (Total Dungeons, Dungeon Counter, Last Counter reset on) to the GUI.
  • Added a Reset Dungeon Counter Button
  • Added a EditBox (Notepad) to the GUI.
  • Added slash command (/dherasealldata) to delete all data stored in the SavedVariables table.
  • Updated to the API Version 101042



Changelog for Version 1.0.5

  • Fixed an issue where an Error Message would be displayed if LibAddonMenu-2.0 wasn't installed.



Changelog for Version 1.0.4

  • Changed the default Date Format of the GUI to d/m/Y.
  • Added an optional AddOn Settings Menu with LibAddonMenu-2.0.
  • Added a Setting to the AddOn Menu to toggle the Date Format of the GUI between d/m/Y and m/d/Y.
  • Added a new slash command (/dhdateformat) to toggle the Date Format between d/m/Y and m/d/Y.



Changelog for Version 1.0.3

  • Fixed an issue where the AddOn just recorded one Dungeon per session.



Changelog for Version 1.0.0 - 1.0.2

  • First Release.
  • Minor bug fixes and cleanup.
Optional Files (0)


Archived Files (1)
File Name
Version
Size
Uploader
Date
1.0.5
6kB
oInsideOut
05/27/24 10:17 AM


Post A Reply Comment Options
Unread 06/23/24, 02:43 PM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Originally Posted by code65536
As a general dev tip, it's usually a good idea to separate the actual data and the "presentation" of that data.

So, instead of working with and storing the names of dungeons, you could instead work with and store their zone IDs, translating those IDs to human-readable names only as the final "presentation" step of displaying info to the user, thus keeping much of your code language-neutral and reducing the footprint of code that needs to deal with the thorny issues of internationalization and localization.
Thank you for the suggestion.

I already came to the same conclusion when I was fixing the first occurences of translation problems.
That's exactly what I was referring to in one of my last comments by I know there are better ways to address this issue which I might implement in the future.
Report comment to moderator  
Reply With Quote
Unread 06/23/24, 01:35 PM  
code65536
AddOn Author - Click to view AddOns

Forum posts: 21
File comments: 417
Uploads: 41
As a general dev tip, it's usually a good idea to separate the actual data and the "presentation" of that data.

So, instead of working with and storing the names of dungeons, you could instead work with and store their zone IDs, translating those IDs to human-readable names only as the final "presentation" step of displaying info to the user, thus keeping much of your code language-neutral and reducing the footprint of code that needs to deal with the thorny issues of internationalization and localization.
Report comment to moderator  
Reply With Quote
Unread 06/23/24, 12:10 PM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Originally Posted by crysis992
Code:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: attempt to index a nil value
stack traceback:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: in function 'DungeonHistory.StartDungeon'
|caaaaaa<Locals> event = 131177, ActivityFinderStatus = 3 </Locals>|r
After finishing the cauldron (german client locals), didnt happen on other dungeons so far.
Thank you again for submitting the error message.

The reason for the error message is an edge case in the handling of the translation of dungeon names.
In the last update, I fixed the translation issue by removing the article of the dungeon names.
The dungeon "The Cauldron" is an exception since it is stored with its article in the SavedVariables file/table.

I have released an update that addresses this issue.

If you encounter any other bugs/error messages, please let me know.
Last edited by oInsideOut : 06/23/24 at 12:33 PM.
Report comment to moderator  
Reply With Quote
Unread 06/23/24, 04:23 AM  
crysis992

Forum posts: 2
File comments: 68
Uploads: 0
Code:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: attempt to index a nil value
stack traceback:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: in function 'DungeonHistory.StartDungeon'
|caaaaaa<Locals> event = 131177, ActivityFinderStatus = 3 </Locals>|r
After finishing the cauldron (german client locals), didnt happen on other dungeons so far.
Report comment to moderator  
Reply With Quote
Unread 06/12/24, 11:21 AM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Originally Posted by crysis992
Originally Posted by oInsideOut
Originally Posted by crysis992
Can't get this to work, every time I finish a random vet dungeon following error pops up:

Code:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: attempt to index a nil value
stack traceback:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: in function 'DungeonHistory.StartDungeon'
Hey, thanks for reporting the error.

I assume you are not playing ESO in English, because I was able to reconstruct this error message by changing the language in ESO from English US to German.

The error occurs because ESO adds an article to the front of some dungeon names when translating it into German. By calling the GetUnitZone() function the dungeon name is output with a "translation" suffix of control characters (e.g. ^fd,in). The problem now is that the dungeon names are saved without their definitive article or control character suffix in the SavedVariables file/table but are searched for with the control character suffix.

I will release an update that should fix this issue, however I have only tested it for the German language as it is very time consuming to test it for every other language myself.

I know there are better ways to address this issue which I might implement in the future.

If you still get the error, please let me know and also tell me which language you are playing in.
It's working now, thanks for the fast update.

Any chance to add group members in a future update? Like the Raidificator addon for raids, that shows all group members with their @userid and class icon for that run when hovering over an entry.
Nice, I'm glad to hear.

I was already thinking about adding and tracking more information.
Sounds like a good idea to get some extra information when hovering an entry.
Like last time someone suggested an idea, I'll keep it in mind and eventually add it when I find the time and motivation.
Report comment to moderator  
Reply With Quote
Unread 06/12/24, 04:15 AM  
crysis992

Forum posts: 2
File comments: 68
Uploads: 0
Originally Posted by oInsideOut
Originally Posted by crysis992
Can't get this to work, every time I finish a random vet dungeon following error pops up:

Code:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: attempt to index a nil value
stack traceback:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: in function 'DungeonHistory.StartDungeon'
Hey, thanks for reporting the error.

I assume you are not playing ESO in English, because I was able to reconstruct this error message by changing the language in ESO from English US to German.

The error occurs because ESO adds an article to the front of some dungeon names when translating it into German. By calling the GetUnitZone() function the dungeon name is output with a "translation" suffix of control characters (e.g. ^fd,in). The problem now is that the dungeon names are saved without their definitive article or control character suffix in the SavedVariables file/table but are searched for with the control character suffix.

I will release an update that should fix this issue, however I have only tested it for the German language as it is very time consuming to test it for every other language myself.

I know there are better ways to address this issue which I might implement in the future.

If you still get the error, please let me know and also tell me which language you are playing in.
It's working now, thanks for the fast update.

Any chance to add group members in a future update? Like the Raidificator addon for raids, that shows all group members with their @userid and class icon for that run when hovering over an entry.
Report comment to moderator  
Reply With Quote
Unread 06/08/24, 06:08 PM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Originally Posted by crysis992
Can't get this to work, every time I finish a random vet dungeon following error pops up:

Code:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: attempt to index a nil value
stack traceback:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: in function 'DungeonHistory.StartDungeon'
Hey, thanks for reporting the error.

I assume you are not playing ESO in English, because I was able to reconstruct this error message by changing the language in ESO from English US to German.

The error occurs because ESO adds an article to the front of some dungeon names when translating it into German. By calling the GetUnitZone() function the dungeon name is output with a "translation" suffix of control characters (e.g. ^fd,in). The problem now is that the dungeon names are saved without their definitive article or control character suffix in the SavedVariables file/table but are searched for with the control character suffix.

I will release an update that should fix this issue, however I have only tested it for the German language as it is very time consuming to test it for every other language myself.

I know there are better ways to address this issue which I might implement in the future.

If you still get the error, please let me know and also tell me which language you are playing in.
Report comment to moderator  
Reply With Quote
Unread 06/08/24, 05:40 AM  
crysis992

Forum posts: 2
File comments: 68
Uploads: 0
Can't get this to work, every time I finish a random vet dungeon following error pops up:

Code:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: attempt to index a nil value
stack traceback:
user:/AddOns/DungeonHistory/DungeonHistory.lua:131: in function 'DungeonHistory.StartDungeon'
Report comment to moderator  
Reply With Quote
Unread 05/27/24, 07:45 AM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Re: Awesome!

Originally Posted by ChrisK
Thanks for sharing your Addon, oInsideOut! It's really useful - especially the duration column.
Thank you for the Feedback!
I'm glad that the AddOn is of help to you.
Report comment to moderator  
Reply With Quote
Unread 05/27/24, 07:22 AM  
ChrisK

Forum posts: 0
File comments: 176
Uploads: 0
Awesome!

Thanks for sharing your Addon, oInsideOut! It's really useful - especially the duration column.
Report comment to moderator  
Reply With Quote
Unread 05/23/24, 12:23 PM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Originally Posted by Cheshire
Hi, I have an idea, how about adding stats on how many times cleared dungeon? For example, you are farming style mask and already lost count.... and then it finally drops and you want to know how many times you have completed this dungeon
Hey.
Thank you for the suggestion. Actually the purpose and reason I started developing this AddOn is to keep track of how many Dungeons I've completed before I drop a mask.
Sounds like a good idea to add more stats or something like a tracker. I'll keep that in mind and eventually add it when I find the time and motivation.
Report comment to moderator  
Reply With Quote
Unread 05/23/24, 10:35 AM  
Cheshire

Forum posts: 1
File comments: 18
Uploads: 0
Hi, I have an idea, how about adding stats on how many times cleared dungeon? For example, you are farming style mask and already lost count.... and then it finally drops and you want to know how many times you have completed this dungeon
Report comment to moderator  
Reply With Quote
Unread 05/21/24, 05:49 AM  
oInsideOut
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 7
Uploads: 1
Originally Posted by Baertram
Welcome to ESO addon development.

A hint: All variables you declare in lua are global (accessible by other addons and overwriting existing variables), unless you add a local up in front.
To minimize compatibilty issues and pollution of the global namespace (table _G):

If you create an addon with an UI (like your scrolllist in XML, using variable DungeonHistoryXML as a global container), but you already got a global table (DungeonHistory) you could simply add a sub-table DungeonHistory.XML= {} (adding all variables and UI related functions to that)
instead of defining another 2nd global DungeonHistoryXML.

To speed-up the reference and make it easy to access them in your code you can add a local reference like local DungeonHistoryXML = DungeonHistory.XML at the top, below defining DungeonHistory.XML = {}
This will make your code below (in the same lua file) work the same as of before, only using the local reference, pointing to the global table DungeonHistory.XML (instead of a 2nd global variable DungeonHistoryXML).
-> Only in your XML files you'd need to change DungeonHistoryXML to DungeonHistory.XML as the variable DungeonHistoryXML would be local now, and not global anymore.

It's no "Must do it like that" but a best practice.
First of all thank you for taking the time to glance through my spaghetti code.

That makes a lot of sense. I will adapt my code to your suggestion.
Last edited by oInsideOut : 05/21/24 at 06:28 AM.
Report comment to moderator  
Reply With Quote
Unread 05/21/24, 04:57 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 5107
File comments: 6190
Uploads: 78
Welcome to ESO addon development.

A hint: All variables you declare in lua are global (accessible by other addons and overwriting existing variables), unless you add a local up in front.
To minimize compatibilty issues and pollution of the global namespace (table _G):

If you create an addon with an UI (like your scrolllist in XML, using variable DungeonHistoryXML as a global container), but you already got a global table (DungeonHistory) you could simply add a sub-table DungeonHistory.XML= {} (adding all variables and UI related functions to that)
instead of defining another 2nd global DungeonHistoryXML.

To speed-up the reference and make it easy to access them in your code you can add a local reference like local DungeonHistoryXML = DungeonHistory.XML at the top, below defining DungeonHistory.XML = {}
This will make your code below (in the same lua file) work the same as of before, only using the local reference, pointing to the global table DungeonHistory.XML (instead of a 2nd global variable DungeonHistoryXML).
-> Only in your XML files you'd need to change DungeonHistoryXML to DungeonHistory.XML as the variable DungeonHistoryXML would be local now, and not global anymore.

It's no "Must do it like that" but a best practice.
Last edited by Baertram : 05/21/24 at 05:02 AM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: