Go to Page... |
Compatibility: | Ascending Tide (7.3.5) Deadlands (7.2.5) Waking Flame (7.1.5) Blackwood (7.0.5) Flames of Ambition (6.3.5) Markarth (6.2.5) Stonethorn (6.1.5) Greymoor (6.0.5) |
Updated: | 04/10/22 11:02 AM |
Created: | 05/25/21 02:56 PM |
Monthly downloads: | 232 |
Total downloads: | 3,387 |
Favorites: | 2 |
MD5: | |
Categories: | Character Advancement, Data Mods, Miscellaneous |
File Name |
Version |
Size |
Uploader |
Date |
5.3.2 |
1MB |
rosadogg |
10/29/21 02:40 PM |
![]() |
Comment Options |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
jpor |
View Public Profile |
Send a private message to jpor |
Find More Posts by jpor |
Add jpor to Your Buddy List |
![]() |
|||
|
You can always have a look at the ESOUI Wiki as well, it provides some "howtos" and best practices.
http://wiki.esoui.com/ It's much text, I know. But it also informs about lua (differences to other coding languages e.g.) https://wiki.esoui.com/New_to_lua%3F_GOTCHA https://wiki.esoui.com/LUA_Tables lua is interpreting the code in the files from top to bottom, so if you define a variable it needs to be defined before it's call (on top of the line it is called, or in the line). If you do not put local up in front of the variable it will pollute the global namespace tabel _G (where all addons and lua code is given which is global -> not local!). This will overwrite entries in _G e.g. if you define a variable addonName without local, it will be _G.addonName or _G["addonName"] (same variable, only different notation) and if _G.addonName already existed elsewhere you are overwriting it. best practice is to define one global table like myAddonName = {} and then add all avriables and functions to the table like myAddonName.myVar = true, function myaddonName.doSomething() end (or myAddonName.doSomething = function() end). local variables are ONLY known within the same scope. A scope will be either a function end, a for ... do end looop, an if ... end, and so on. If you define the local variable at the top of your file, it will b known for the whole file. If your addon uses multiple filenames to split up the code the 1 global table approach is the easiest one. At first lua file called (first lua file from the top in your txt manifest) you define the global table myAddon = {} You then assign a local pointer below to that table to speed up the acess as else the _G table needs to be searched for myAddon each time: local mya = myAddon And then you assign the variables and functions to mya In all other lua files you check if myAddon exists or else create it as new empty table myAddon = myAddon or {} It's the same as if myAddon == nil then myAddon = {} end And then again you use the local mya there to speed up the access: local mya = myAddon and add new variables/functions of that other file to the table
Last edited by Baertram : 05/28/21 at 05:07 AM.
|
||
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
rosadogg |
View Public Profile |
Send a private message to rosadogg |
Find More Posts by rosadogg |
Add rosadogg to Your Buddy List |
![]() |
|
|
Hey again,
there is a changelog tab at the addon maintain page which should be used to put the versioning changes in there, as it will also be shown wihtin Minion e.g. Please move your changelog text from the description in there, thank you. You can just maintain your addon without updating the zip file: Click on maintain, uncheck he checkbox below the filename (archive file...) and check the checkbox "Disable version check" so it keeps the version you already got. Move your text to the changelog tab and/or update other text and images. Then check the checkbox at the bottom about the disclaimer and save. No file and version update will be done but the text will be updated. Edit: Your addon is leaking some variables to the global _G table, where you would need to put a local up in front or decalre them at the top of your addon as local (as you e.g. did for resultList), or add them to your addon table CompletionistsLists so that they do not float around without any connection to your addon and maybe destroy other addons using the same variable names. totalLogMsgLenght, line 103 motif_name, line 144 itemText -> critical as very common name knownListRecipies craftingSkillName exportText Your XML file says "bad character" ( "-" ) in my editor at each line where you added the comments: Code:
<!-- ----------------------- <Text like Customize Here, Filter buttons, ...> -------------- -->
Last edited by Baertram : 05/27/21 at 02:48 PM.
|
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
![]() |
||
|
Thank you! Will upload with the changes your suggest
![]()
|
|
![]() |
![]() |
rosadogg |
View Public Profile |
Send a private message to rosadogg |
Find More Posts by rosadogg |
Add rosadogg to Your Buddy List |
![]() |
|
|
Thanks for the addon.
If you use libraries/depedencies please name those in your addon description so one can see which ones are needed without having to start the game client (within Minion addon manager e.g). LibMotif Optional: LibSlashCommander LibDebugLogger And important for new addons: Your SavedVariables are not respecting the server! If you want the settings to store differently for different servers please add the servername to the SVs, like this e.g. Lua Code:
or like this: Lua Code:
And your addon's code should not run before your EVENT_ADD_ON_LOADED fires, so I'd try to move these lines into the event's callback function: Code:
SCENE_MANAGER:RegisterTopLevel(CompletionistsListsWindow, false) SLASH_COMMANDS["/completionistslists"] = CompletionistsLists.ShowCompletionistsLists Lua Code:
Another hint: Using mixed notation for CompletionistsLists: and CompletionistsLists. is kind of working, but not intended. The : is meant to be used for object oriented class-like objects that you create as ZO_Object objects from a class/subclass. If your variable is "only" a table though you should only use the . notation so that one does not think it's an object. Also prevents errors with self pointer or missing 1st params pointing to the correct object. Final hint: The hardcoded english only texts within your table local motifPageText = { can be found ingame already in pre-ceated strin constants SI_* which, if used, provide the autoamtic translated texts to the supported game languages de, fr, ru, jp and en! So better use them via GetString(SI*) instead of hardcoding texts like "Axe" again and again in the addons! You can find example string constants here: https://github.com/esoui/esoui/blob/master/esoui/ingamelocalization/localizegeneratedstrings.lua https://github.com/esoui/esoui/blob/master/esoui/internalingamelocalization/localizeinternalingamegeneratedstrings.lua e.g. instead of "Axes" use: "Axe", -- SI_WEAPONTYPE1 GetString(SI_WEAPONTYPE1) will return Axe CRAFTING_TYPE_BLACKSMITHING -> SI_ITEMTYPEDISPLAYCATEGORY10 and so on! Not all strings are given the way you need them, but using predefiend translated ones will help to make your addon multilanguage supported autoamtically. If you really need the plural AxeS instead of Axe: The function zo_strformat is able to create the plural of it. Check the Wiki for examples: https://wiki.esoui.com/How_to_format_strings_with_zo_strformat Thank you!
Last edited by Baertram : 05/26/21 at 05:52 AM.
|
![]() |
![]() |
Baertram |
View Public Profile |
Send a private message to Baertram |
Find More Posts by Baertram |
Add Baertram to Your Buddy List |
![]() |
|
|
for the one-line per motif the columns are following
motifname;Axes;Belts;Boots;Bows;Chests;Daggers;Gloves;Helmets;Legs;Maces;Shields;Shoulders;Staves;Swords |
![]() |
![]() |
rosadogg |
View Public Profile |
Send a private message to rosadogg |
Find More Posts by rosadogg |
Add rosadogg to Your Buddy List |
![]() |