Download
(64 Kb)
Download
Updated: 10/05/21 12:15 AM
Updated:10/05/21 12:15 AM
Created:08/25/21 10:53 PM
Monthly downloads:42
Total downloads:3,611
Favorites:4
MD5:
DO NOT USE - IsJusta Writ Helper (WIP)
Version: 5.2.2
by: IsJustaGhost [More]

Requires libIsJustaAlchemy


Works in Gamepad Mode and Keyboard/Mouse Mode

This addon is a work in progress.

NEW:
5.2
  • added translations to support automation for de,fr,ru. -- translations still needed for settings
  • added support for certifications. -- needs further testing
  • added settings for certifications (auto-refine, auto-decon).
  • added setting to auto-collapse the writ panel when all writs are completed, no longer forced.


Updated Writ panel with Station Icons. The chest icon shows that at least 1 item for that writ is in the bank.
* Green (ready to turn in), Yellow (not all items can be done), Red (all items will fail for at least one reason)
Displays a panel on the HUD that shows the current writs and how many are completed.
The writ panel:
  • can be collapsed to show only the number of writs completed and total.
  • can be minimized to a small arrow icon.
  • hides in pvp zones, and when in combat.
  • moves out of the way of the group list.
  • if in a group of more than 4, it auto collapses.
  • can work in combination with Isjusta Easy Alchemy

Features.
  • auto-sets the current staion to currently selected item to craft upon using the station.
    example: on "Using" a provisioning station, it will auto select the current recipe's tab and scroll to the recipe in the list.
  • one-click accept all writs from board.
  • one-click withdraw all items in the player bank needed for all active writs.
  • one-click crafting.
  • one-click turn-in.
  • auto-open writ reward containers.

Options.
  • can set to auto accept writs from Job boards.
  • each writ type can be set to Auto-craft in settings (Smithing, Provisioning, Alchemy, Enchanting).
  • for smithing writs, can set to use the syle material you have the most of. can also set it to only use Race styles.
  • for smithing master writs, can set to auto-improve the item to the required quality.
  • can set to auto-exit from station after all writs for the station are complete.
  • can set to auto-open wirt reward containers after writ turn in, and can set a delay to wait before trying after each writ turned in. this is to give the user time to turn in other writs before the opening process begains.
  • the Writ Panel can be set to 1 of 4 font sizes.
  • the Writ Panel's transparency can be set.
  • for keyboard mode, the alchemy Recipe Panel can be moved and locked.
5.2.2
○ fixed error with gamepad keybind

5.2.1
○ attempt to fixed error with alchemy writs
○ added setting to auto-collapse the writ panel when all writs are completed, no longer forced
○ fixed setting for use character settings to show properly as set when true
○ change how alchemy Result panel fragment is added

5.2
○ crafting tutorials are blocked if auto-craft
○ fixed provisioning recipe lookup
○ added translations to support automation for de,fr,ru -- translations still needed for settings
○ changed the auto-open functions. now will not have to search inventory for each item -- seams to have stopped the "item not ready" issue
○ changed how "on craft station", get next item, is processed
○ added support for certifications
○ added settings for certifications (auto-refine, auto-decon)
○ added setting to auto-collapse the writ panel when all writs are completed, no longer forced

5.1.6
○ changed addon structure
○ fixed bank withdraw
○ worked on writ updates

5.1.5
○ changed writId to "craftingType .. (isMasterWrit and 1 or 0)"

5.1.4
○ added function to get updated questIndex

5.1.3
○ updated for changed gamepad alchemy crafting scene for easy alchemy
○ fixed error caused by missing rune
○ added functions to get link for missing rune to show in writ panel

5.1.2
○ fixed "Alchemy.lua:182: attempt to index a nil value" error on alchemy writs
○ changed how items are compared when checking for banked items
○ added function to smithing to update the link level

5.1.1
○ fixed alchemy error from missing recipeData by added new function to lib
○ changed bank lookup to recipeData_object
○ fixed writPanel not updating after withdrawing items from bank
○ changed how smithing auto-improve data is handled
○ fixed processing of auto-opening containers

5.1
○ several changes to writ processing
○ individual writ conditions are now objects

5.0.4
○ fixed error associated with saved variables
○ many events are now dynamic, only active while writs are active
○ the Writ Panel is now fully dynamic. no longer uses multiple templates for selecting font size

5.0.3
○ fixed invalid "cannont craft this item" smithing alert

5.0.2
○ fixed nil itemTraitType causing the following error
user:/AddOns/IsJustaWritHelper/Smithing.lua:1595: operator + is not supported for nil + number

5.0.1
○ fixed smithing tab index
○ fixed trait information
○ implementation of auto-improvement

5
○ initial upload
Optional Files (0)


Archived Files (14)
File Name
Version
Size
Uploader
Date
5.2.1
64kB
IsJustaGhost
10/02/21 04:34 AM
5.2
66kB
IsJustaGhost
09/29/21 07:29 PM
5.1.6
52kB
IsJustaGhost
09/22/21 09:09 PM
5.1.5
53kB
IsJustaGhost
09/19/21 10:25 AM
5.1.4
53kB
IsJustaGhost
09/18/21 09:42 PM
5.1.3
53kB
IsJustaGhost
09/17/21 06:32 PM
5.1.2
52kB
IsJustaGhost
09/17/21 03:14 PM
5.1.1
52kB
IsJustaGhost
09/14/21 04:15 PM
5.1
52kB
IsJustaGhost
09/12/21 03:28 PM
5.0.4
56kB
IsJustaGhost
08/27/21 12:48 AM
5.0.3
55kB
IsJustaGhost
08/26/21 04:45 PM
5.0.2
55kB
IsJustaGhost
08/26/21 03:13 PM
5.0.1
55kB
IsJustaGhost
08/26/21 05:01 AM
5
55kB
08/25/21 10:53 PM


Post A Reply Comment Options
Unread 08/26/21, 11:35 AM  
Splash

Forum posts: 0
File comments: 45
Uploads: 0
Addon not working

Hello this addon dont work at all for me. When i start game it show a lot of errors

Code:
user:/AddOns/IsJustaWritHelper/Smithing.lua:1595: operator + is not supported for nil + number
stack traceback:
user:/AddOns/IsJustaWritHelper/Smithing.lua:1595: in function 'Smithing_Writ_Object:MeetsCraftingRequierments'
|caaaaaa<Locals> self = [table:1]{name = "Blacksmith Writ", completed = F, canCraft = F, numRecipes = 3, craftingType = 1, inBank = F, questIndex = 13, icon = "/esoui/art/inventory/inventory...", numComplete = 0, isReady = F}, conditionIndex = 2, recipeData = [table:2]{patternIndex = 13, materialItemId = 64489, materialIndex = 40, meetsCraftingLevel = T, itemId = 43541, itemStyleId = 1, hasSetTabsOnly = F, materialQuantity = 13, complete = F}, conditionInfo = [table:3]{armorType = 3, materialItemId = 188, current = 0, itemLink = "", complete = F, conditionIndex = 2, perIteration = 1, condition = "Craft Normal Rubedite Pauldron...", itemId = 43541, itemFunctionalQuality = 1, maxLevelMaterial = 40, maximum = 1, craftingType = 1, isMasterWrit = F}, materialItemData = [table:4]{name = "Rubedite Ingot", stackCount = 5609, bagId = 5, itemFunctionalQuality = 1, itemId = 64489, icon = "/esoui/art/icons/crafting_colo...", meetsUsageRequirement = T, sellPrice = 4, slotIndex = 64489, itemType = 36, itemLink = "|H0:item:64489:0:0:0:0:0:0:0:0..."}, numIterations = 1, patternIndex = 13, materialIndex = 40, materialQuantity = 13, itemStyleId = 1 </Locals>|r
user:/AddOns/IsJustaWritHelper/IJA_Writ_Object.lua:182: in function 'Shared_Writ_Object:UpdatePanelData'
|caaaaaa<Locals> self = [table:1], getIconSuffix = user:/AddOns/IsJustaWritHelper/IJA_Writ_Object.lua:141, panelData = [table:5]{isSmithing = T, craftingType = 1}, questIndex = 13, tot = 1, comp = 0, numOver = 0, cond = "Craft Normal Rubedite Pauldron...", bankTextIcon = "|t20:20:/esoui/art/tooltips/ic...", conditionCount = 4, conditionIndex = 2, condition = "Craft Normal Rubedite Pauldron...", current = 0, maximum = 1, conditionInfo = [table:3] </Locals>|r
user:/AddOns/IsJustaWritHelper/WritPanel.lua:254: in function 'IJA_WritPanel:UpdateWritsPanelData'
|caaaaaa<Locals> self = [table:6]{__isAbstractClass = F, groupCheck = T}, panelData = [table:7]{}, craftingType = 1, stationWrits = [table:8]{}, questIndex = 13, writObject = [table:1], completed = 0, canCraft = T, tot = 0, comp = 0, conText = "" </Locals>|r
user:/AddOns/IsJustaWritHelper/WritPanel.lua:285: in function 'IJA_WritPanel:Refresh'
|caaaaaa<Locals> self = [table:6], data = [table:9]{}, scale = 1 </Locals>|r
user:/AddOns/IsJustaWritHelper/WritPanel.lua:267: in function 'IJA_WritPanel:PerformFullRefresh'
|caaaaaa<Locals> self = [table:6] </Locals>|r
user:/AddOns/IsJustaWritHelper/WritPanel.lua:321: in function 'IJA_WritPanel:WritsPanelControl'
|caaaaaa<Locals> self = [table:6] </Locals>|r
user:/AddOns/IsJustaWritHelper/WritPanel.lua:339: in function 'updateWritsPanel'
/EsoUI/Libraries/Utility/ZO_CallbackObject.lua:107: in function 'ZO_CallbackObjectMixin:FireCallbacks'
|caaaaaa<Locals> self = [table:10]{callingFunction = "", fireCallbackDepth = 1}, eventName = "IJA_WritHelper_Update_Writs_Pa...", registry = [table:11]{}, callbackInfoIndex = 1, callbackInfo = [table:12]{3 = F}, callback = user:/AddOns/IsJustaWritHelper/WritPanel.lua:338, deleted = F </Locals>|r
user:/AddOns/IsJustaWritHelper/WritPanel.lua:354: in function 'IJA_WritPanel:SetPanelStyle'
|caaaaaa<Locals> self = [table:6], scale = 1, template = [table:13]{adjustment = 20} </Locals>|r
user:/AddOns/IsJustaWritHelper/IsJustaWritHelper.lua:231: in function 'OnGamepadPreferredModeChanged'
|caaaaaa<Locals> gamepadMode = F </Locals>|r
/EsoUI/Libraries/ZO_PlatformStyle/ZO_PlatformStyle.lua:45: in function 'ZO_PlatformStyle:Apply'
|caaaaaa<Locals> self = [table:14]{} </Locals>|r
/EsoUI/Libraries/ZO_PlatformStyle/ZO_PlatformStyle.lua:39: in function 'ZO_PlatformStyle:Initialize'
|caaaaaa<Locals> self = [table:14], applyFunction = user:/AddOns/IsJustaWritHelper/IsJustaWritHelper.lua:223 </Locals>|r
/EsoUI/Libraries/ZO_PlatformStyle/ZO_PlatformStyle.lua:31: in function 'ZO_PlatformStyle:New'
|caaaaaa<Locals> self = [table:15]{__isAbstractClass = F}, obj = [table:14] </Locals>|r
user:/AddOns/IsJustaWritHelper/IsJustaWritHelper.lua:234: in function 'IJA_WritHelper:OnPlayerActivated'
|caaaaaa<Locals> self = [table:16]{name = "IsJustaWritHelper", version = "5.0.1", displayName = "|cFF00FFIsJusta|r |cffffffWrit...", selectedQuestIndex = 0, isCrafting = F}, OnGamepadPreferredModeChanged = user:/AddOns/IsJustaWritHelper/IsJustaWritHelper.lua:223 </Locals>|r
user:/AddOns/IsJustaWritHelper/IsJustaWritHelper.lua:214: in function '(anonymous)'
|caaaaaa<Locals> eventCode = 589824 </Locals>|r
Report comment to moderator  
Reply With Quote
Unread 08/26/21, 03:09 PM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Re: Addon not working

Originally Posted by Splash
Hello this addon dont work at all for me. When i start game it show a lot of errors
Thank you for letting me know. I found the issue an will have it updated soon.
Report comment to moderator  
Reply With Quote
Unread 08/26/21, 05:32 PM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
I've been made aware of an issue caused by new install that I was not getting since the addon evolved with my savedVariable file.


user:/AddOns/IsJustaWritHelper/WritPanel.lua:220: attempt to index a nil value

Will have this fixed soon.

Will also work on making update events to un/register depending on if the character has active writs.
Last edited by IsJustaGhost : 08/26/21 at 05:52 PM.
Report comment to moderator  
Reply With Quote
Unread 08/27/21, 12:56 AM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Update 5.0.4 should fix the new install saved variable issue that everyone is having.

Other updates to it:
- the Writ Panel is now fully dynamic. it no longer uses a separate template for each font size.
I did this to better keep size ratios between the different sizes.
- many of the event handlers are now dynamic.
those handlers will now only be active while the character has an active writ.
the station's "StateChange" callbacks are only activated by crafting type. (smithing, alchemy, enchanting, provisioning)
Last edited by IsJustaGhost : 08/27/21 at 12:57 AM.
Report comment to moderator  
Reply With Quote
Unread 08/27/21, 03:13 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4966
File comments: 6033
Uploads: 78
Hey IsJustAGhost,

do you happen to use FCOItemSaver and have tested if the automatic writ creation is respecting FCOIS marked & protected items?
If not, could you add it to your addon?

I'm not sure if your addon needs to open/opens the "create" panel at the smithing/woodworking/clothier/jewelry tabs to craft the items, but it definatly should do it to assure compatibility with other addons. e.g. if you'd be at the decon tab and clickon "craft writ items" it shoudl change to the create tab before doing any creation of items.
This way the SMITHING:SetMode functions get called properly an update Zos needed variables, which e.g. FCOIS and others use to detect the panels properly.

FCOIS API to check if an item is marked & protected at crafting tables (for creation of items!) are e.g.
Code:
--Auto detects the panel so creation should be selected properly before an item get's created, or it might check for anti-deconstruction or anti-refine if these panels are opened
--Smithing, Clothier, Woodworking, Jewelry
FCOIS.IsLocked(bagId, slotIndex)

--Enchanting
FCOIS.IsEnchantingCreationLocked(bagId, slotIndex)

--Alchemy
FCOIS.IsAlchemyDestroyLocked(bagId, slotIndex)

And at the banks withdraw (might not work properly if you withdraw the items directly as the bank opens, as sometimes the vars needed at the bank will not be updated fast enough before you auto-close it again and are back to normal inventory mode then):
Code:
FCOIS.IsPlayerBankWithdrawLocked(bagId, slotIndex)
--If needed/supported:
FCOIS.IsGuildBankWithdrawLocked(bagId, slotIndex)
You can check if FCOIS is loaded by adding it to your ## OptionalDependsOn: FCOItemSaver
and checking
Lua Code:
  1. if FCOIS then
  2.  --check protection
  3.  
  4. end
ingame then.

Many thanks for supporting this!


Edit:
Dolgubons Lazy Writ Crafter got a callback function that fires after any item was crafted. Could you also add such a function please, and at best a callback via CALLBACK_MANAGER I can use, providing the type of craft, bagId and slotIndex of the item that was crafted. Or maybe a table containing all items crafted at that crafting table after they got crafted if there should not be a callback for each single item.

e.g.
Lua Code:
  1. CALLBACK_MANAGER:FireCallbacks("IsJustaWritHelper_OnCraftComplete", CRAFTING_TYPE_ALCHEMY, tableOfItemsCraftedWithKeyBagIdAndValueSlotIndexOrSimilar)


This would be nice as I could add your addon to the auto-mark features of FCOIS then as well.
Last edited by Baertram : 08/27/21 at 03:18 AM.
Report comment to moderator  
Reply With Quote
Unread 08/27/21, 03:38 AM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Originally Posted by Baertram
Hey IsJustAGhost,

do you happen to use FCOItemSaver and have tested if the automatic writ creation is respecting FCOIS marked & protected items?
I will definitely look into this.


The callback should be easy enough. I use one from single slot update to start the post-craft function

Oh. already exists as a callback
CALLBACK_MANAGER:RegisterCallback("IsJustaWritHelper_OnCraftComplete", onCraftItemUpdate)
it sends (bagId, slotIndex, craftingType)

I like the name. changing it to it as shown above


For alchemy, I guess i just add something to my alchemy lib to ignore certain reagents.
Will also benefit IsJusta Easy Alchemy.


I've added this to the bank check.
Lua Code:
  1. local function isItemLocked(bagId, slotIndex)
  2.     local locked = IsItemPlayerLocked(bagId, slotIndex)
  3.    
  4.     if FCOIS then
  5.         locked = FCOIS.IsPlayerBankWithdrawLocked(bagId, slotIndex)
  6.     end
  7.     return locked
  8. end
  9.  
  10. if conditionInfo.itemId == GetItemId(itemData.bagId, itemData.slotIndex) and not isItemLocked(itemData.bagId, itemData.slotIndex) then
It will not be effected by a delay. This information is checked for any time the writ is updated.

Besides Alchemy and Provisioning, materials to be used for crafting is figured out prior to using a crafting station.

For enchanting and provisioning, since there are only a specific set of items per recipe that can be used, is the idea to prevent crafting if an item is locked?

for smithing,
master writs require specific items, daily, specific material. the style item is either selected by highest quantity, or last selected.
for daily, the style item is reselected after each crafted item. this is to ensure the highest quantity is always used, if that is set in the settings
for the style material, i should be able to easily ignore items locked whenever the style list is refreshed.

I'm just trying to work out how I can best implement this to work best for both addons.

What about alerts? Does FCOItemSaver trigger alerts if a locked item is tried to use?
I think what I may need to do is create nested function that will be checked by. That would make it easier to consolidate checking for locked items and triggering an alert if locked.
Last edited by IsJustaGhost : 08/27/21 at 04:27 AM.
Report comment to moderator  
Reply With Quote
Unread 08/29/21, 09:48 PM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
need opinions

I've been thinking of options for the writ pannel.

Report comment to moderator  
Reply With Quote
Unread 09/14/21, 01:23 AM  
tim99
 
tim99's Avatar
AddOn Author - Click to view AddOns

Forum posts: 22
File comments: 159
Uploads: 12
Re: need opinions

Originally Posted by IsJustaGhost
I've been thinking of options for the writ pannel.


2 for sure
Report comment to moderator  
Reply With Quote
Unread 09/14/21, 06:50 AM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Re: Re: need opinions

Originally Posted by tim99
2 for sure
Thank you for the reply, that is the one I have it currently set to.
Report comment to moderator  
Reply With Quote
Unread 09/14/21, 06:55 PM  
stefj68

Forum posts: 0
File comments: 24
Uploads: 0
I try to position the writ window about 20 times, and each time it come back at the previous location, i check the saved files settings and i don't see anything

are those screen coordinates for the panel hard coded?
ty
nice works
Report comment to moderator  
Reply With Quote
Unread 09/15/21, 12:33 PM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Originally Posted by stefj68
I try to position the writ window about 20 times, and each time it come back at the previous location, i check the saved files settings and i don't see anything

are those screen coordinates for the panel hard coded?
ty
nice works
The writ windows? As in this?
If so, then I have yet to make that movable, due it's auto-positioning when in a group. It is something I still need to work on.

If you are talking about the Alchemy recipes panel, I don't think I made any changes since it was last working but, I've made a lot of changes since then. And that is one thing I neglected to re-test since it was last working.
Report comment to moderator  
Reply With Quote
Unread 09/17/21, 05:00 PM  
stefj68

Forum posts: 0
File comments: 24
Uploads: 0
Originally Posted by IsJustaGhost
Originally Posted by stefj68
I try to position the writ window about 20 times, and each time it come back at the previous location, i check the saved files settings and i don't see anything

are those screen coordinates for the panel hard coded?
ty
nice works
The writ windows? As in this?
If so, then I have yet to make that movable, due it's auto-positioning when in a group. It is something I still need to work on.

If you are talking about the Alchemy recipes panel, I don't think I made any changes since it was last working but, I've made a lot of changes since then. And that is one thing I neglected to re-test since it was last working.
exactly that window
Report comment to moderator  
Reply With Quote
Unread 09/17/21, 06:13 PM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Originally Posted by stefj68
exactly that window
Ok. I have yet to work on that. My plan is to make a complete set of functions that will determine what edge it's closest too. This is too anchor the minimize button too and set the direction of the animation.
Report comment to moderator  
Reply With Quote
Unread 09/20/21, 11:00 AM  
Rincevent63

Forum posts: 0
File comments: 11
Uploads: 0
Alchemy Issue

Hello,

Great job, but...everything work fine for me except two topics:
- no automatic deconnection of Enchanter workplace,
- when i activate alchemy workplace i lose the control, need to kill the ESO process...
Does it is possible to have an option to not use alchemy functionnalities like in beta ?
Regards
@Varen63
Report comment to moderator  
Reply With Quote
Unread 09/20/21, 05:39 PM  
IsJustaGhost
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 278
Uploads: 23
Re: Alchemy Issue

Originally Posted by Rincevent63
- no automatic deconnection of Enchanter workplace
What do you mean? There is no auto-deconstruct.
If you mean that it is not auto-crafting, it should do it if it's enabled. However, I am still working on it as I type this.

- when i activate alchemy workplace i lose the control, need to kill the ESO process...
Does it is possible to have an option to not use alchemy functionnalities like in beta ?
You can turn auto-crafting alchemy off in settings. With it turned off it will not auto-craft, but will setup the station to make crafting easier, and allow you to select the recipe you want to use.

If you would like to disable all alchemy handeling functions all together, that has not been added. That would be a simple add tho.
For now, you can prevent alchemy handling by doing this.

In Core.lua on line 181, put "--" in front of the alchemy line like below.

Lua Code:
  1. local InitializeWrit = {
  2.     [CRAFTING_TYPE_BLACKSMITHING]   = IJA_WritHelper_Smithing_Object,
  3.     [CRAFTING_TYPE_CLOTHIER]        = IJA_WritHelper_Smithing_Object,
  4.     [CRAFTING_TYPE_ENCHANTING]      = IJA_WritHelper_Enchanter_Object,
  5. --  [CRAFTING_TYPE_ALCHEMY]         = IJA_WritHelper_Alchemy_Object,
  6.     [CRAFTING_TYPE_PROVISIONING]    = IJA_WritHelper_Provisioning_Object,
  7.     [CRAFTING_TYPE_WOODWORKING]     = IJA_WritHelper_Smithing_Object,
  8.     [CRAFTING_TYPE_JEWELRYCRAFTING] = IJA_WritHelper_Smithing_Object
  9. }
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: