Jack of all Trades
2 Attachment(s)
Jack of all Trades is an addon I am looking to release with U29. It will only work on the PTS for now Automatically adjusts your green champion bar loadout depending on what you are attempting to achieve and restores back your old CP setup when you are done. Crafting
Riding
Looting
Fishing
Thieving
Miscellaneous
This addon will not respec your champion points, and will not charge you 3000 gold etc. It will only equip the skills if you have enough points into them already. It is intended to be a seamless quality of life improvement, not a CP respec addon. Optional Features
If anyone has time to test this addon or can provide me with any thoughts, additions, or improvements I would be very grateful. Many thanks Update v0.1
|
I love the idea already!
As you requested to test it, I did a leaking globals check. The only minor thing found is, that disciplineIndex in line 43 (JackOfAllTrades.AddonLoaded) is undefined. Not sure, if the line could be simplified to just assign 1. votan |
Thank you very much, I do really appreciate it!
Quote:
|
Hey'a, over the past week or so I have made large improvements to the addon, getting it ready for release.
I have tested the changes myself and with a friend, but would appreciate any testing or feedback any of you could provide on the latest version. Thank you very much! |
Loving the addon. Brilliant work. :banana:
The one ask/suggestion I have is having 'Fade Away' automatically slot when entering sneak mode or when selecting flee from a guard. The only issue might be that triggering the guard (entering combat) might come after the sneak state is broken. The reason I suggest it is because it's only likely to be needed when performing nefarious deeds that tend to only happen when sneaking. It would also mean only 4 stars remain that are not situational being: Friends in Low Places Rationer Liquid Efficiency Steed's Blessing Which would mean that they could become the 4 defaults slotted. |
Quote:
Either something for a CP profile changing the slots before you try to steal/sneak etc. or a keybind change maybe? |
Quote:
I don't use the Justice system that often, however, one way I think it may be doable is by using the event EVENT_JUSTICE_INFAMY_UPDATED, this will tell the addon your new and old infamy values, which would be increased when you first commit a crime and decreased whenever you successfully flee from guards? Is that correct? So I could slot the 'Fade Away' star whenever you increase in infamy state and remove it whenever you decrease in infamy state. As long as the crime you are committing doesn't put you in combat this should work? Alternatively, I could add a toggle in the setting menu to automatically slot Fade Away whenever you start sneaking Would love to hear your thoughts. Many thanks! |
Quote:
|
Quote:
Which is why I was thinking about it being slotted when you sneak. The problem I'm causing you though is Sustaining Shadows would need to be slotted at the same time, and Cutpurse's Art, Shadowstrike, Treasure Hunter, and Homemaker could come into play at some point too. So I guess my question is, if Sustaining Shadows is auto-slotted by sneak mode, does it use Slot 1 and Cutpurse's Art, Shadowstrike, Treasure Hunter, and Homemaker then use Slot 2 when they come into play? If so, then if both Shadow & Fade Away slot when sneaking, Shadow using Slot 1, and Fade using Slot 2, the others would have to use Slot 3 when they come into play. Edit: Not trying to create work for you, but just a passing thought, adding in an option as to which slot each star will use? |
Quote:
In the esoui txt API documentation you'll find e.g. MsgInteractTypes CHATTER_... Btw: The infamy level does not decrease if you successfully flee afaik. It will lower itsself over time, but not necessarily fter fleeing already, isn't it? |
Quote:
Whenever you attempt to pickpocket someone (Press E when the pickpocket reticle message is shown) it will slot 'Cutpurse's Art' in slot 2. Whenever you attempt to loot a container (Press E when the 'search' reticle message is shown) it will slot 'Homemaker' in slot 2. Whenever you attempt to loot a treasurechest (Press E when the 'use'/ 'unlock' reticle message is shown) it will slot 'Treasure Hunter' in slot 2. Neither of these 3 events can happen at the same time, so we're okay. Whenever you see the 'Blade of Woe' synergy it will slot 'Shadowstrike' in slot 3. (This is a problematic one and the Blade of Woe synergy is ****y so it gets its own slot). With 'Fade Away' I am thinking of slotting it in slot 4 whenever something that would trigger it would happen. But that would overwrite someone's speed buff star, which isn't really ideal. I have an implementation now where when you start getting arrested it will slot 'Fade Away' in slot 4 and then when your heat is decreased by 25% (When the passive is activated) it will unslot it. Quote:
I am looking into how to find which dialog option the user selects. |
Quote:
However, you can change which place each category of stars replaces. Just not change the category of each star. |
Quote:
If you are going down the dialogue option, you'll have to put checks in for "Not Fleeing", so that might cause you some hassle. Sadly I wish it could be a little simpler on the mechs, as in you can't pickpocket while in-combat (triggered by fleeing) but you can still loot chests/containers in combat if you outsmart the dumb guards. As for the options, it was just a passing thought, and I know people would have issues, but categories sounds an interesting option if you ever feel like implementing. For me personally, I'm just going to look at where your code puts them and decide my 4 non-auto slottables. The only one I would want to sure was always available when moving would be Steed's Blessing, so as it stands slot 3 is where that would live. Friends in Low Places in slot 4 and Rationer and Liquid Efficiency slots 1 & 2 respectively. Thanks for your time and the addon. |
1 Attachment(s)
Quote:
If the user sets two skills that are slotted together to the same value then that may affect returning old skills etc. It did require quite a bit of refactoring, but 'should' work as you intended it to. Please give it a go, I hope it's what you were looking for. |
Quote:
|
Quote:
That said. Absolutely love it beyond words. :banana: Sadly I cannot give it the full test that it deserves without respeccing. My meager pool of 900 CP is not enough. :( |
Just spotted an error on Line 514 in Events.lua
Code:
local sustainingShadowsResult = sustainingShadows:AttemptToSlot() Code:
local sustainingShadowsResult = JackOfAllTrades.sustainingShadows:AttemptToSlot() |
Yeah, there are a few of those errors in the version you are using.
Don't worry about them for now, after sending it to you I went back and made all the skills local, and fixed all issues like that that I could find. Currently am working on a fix for the issue with clemency, where it will check your clemency cooldown and reset it when it goes above 0. Edit: I have made adjustments and published a release here. This should fix the issue with Clemency. Once I have tested the new skill category changes I will push this to the main build. Many thanks! |
1 Attachment(s)
I was feeling a little guilty about creating work for you, so I wanted to say thanks the best way I could.
I was thinking about the slot options, and the likelihood of it causing problems. I took some code I have been working on and played around a bit. Basically it starts with a table (choiceConflicts) that stores the skillId and puts it against the raw name and any skillId's that you want to flag as "conflicting". That allows for a function which I have called choiceConflict to be set that takes the starting choice tables (by number and text) and returns new tables (by number and text) excluding the conflicts. I have put that function instead of the tables listed against choices and choicesValues for each of the dropdowns. So for example, Gifted Rider is set to slot 1, which means that the dropdown list for War Mount won't include slot 1 - thereby making conflict between them impossible. If you change Gifted Rider to slot 3, then War Mount dropdown will restore slot 1 to its list but remove slot 3. LAM is a great library, but one of the things it doesn't do is refresh the dropdown lists if you play around with them like I have above. So there is a second function called refreshConflict, that fires on the setFunc parameter after the original save variable function has done it's thing. The purpose of the second function is to rebuild the dropdown list for the ones that conflict with the value you just changed. I have attached the menu.lua I have been playing with. Feel free to use it, ignore it, change it, whatever you want to do with it. :) Thanks, Gab |
About LAM and the resfresh:
Set your addon panel to listen for refreshs like described in the LAM documentaion -> local panelData = { ... registerForRefresh = true, } There is a clear callback for LAM-RefreshPanel of the lam panel where you register your function and check if the panel is your LAM panel (local myAddonPanel = LibAddonMenu2:RegisterAddonPanel(gAddonName .. "_LAM", panelData) -> in the callback function if panel (1st param of the callback func) ~= myAddonPanel then return end) , and then you should call your refreshConflict function for the needed dropdown controls (predefined in a table "for _, dropdownControl in ipairs(updateThisControls)"). Using the setfunc will get you into trouble earlier than you might think off. Quote:
|
Quote:
All the setFunc is doing is firing as it normally would to save the variable to the saved variable tables. |
Quote:
When I have time I will certainly look at implementing the LAM callback as Baertram suggests. However, as far as I am aware wouldn't doing it this way cause refreshes for all 14 drop-down lists whenever you change any setting? Maybe it's not really intensive, however, any input on if any part of the addon causes more lag/ server strain than necessary would be really appreciated. Thank you both for your suggestions, I do really appreciate it! |
Quote:
Edit: Found the problem I think. Line 560 references, JackofAllTrades.fadeAway - given the rest of your code naming convention I think it should be skill.fadeAway. It should be ok to default FadeAway to slot 2 btw. I know you put it to 4 to keep it out of the way, but the mechanics of the situation are such that arresting/fleeing puts you into combat, so you can still Blade of Woe people or pickpocket but as you are in combat you can't auto-slot stars so there is no chance of conflicting with other stars. Also on that note, being arrested breaks stealth and it is unslotting Sustaining Shadows which does make sense and then falls foul of the same issue of being in combat. If you don't want it to work that way you could put a check on if SS has been auto-slotted then arrest doesn't re-slot the original - only paying the bounty/clemency would. I have not strong opinion either way, just wanted to give you the feedback. |
Quote:
Depends on how the functions to select the current dropdown selections and build the new entries + UpdateChoices are currently set to run. I only thought about using setFunc will be called if you change anything. Could get you into trouble as setFunc of box 1 updates entries of box 2 choices/chociesValues, which then calls getFunc and/or setFunc again and will continue the chain call. Depening on the number of boxes, and their relations/depencies, using the refresh callback, and "collecting all dropdown data" prior to only running an UpdateChocis once to update to all of them (throttled so that the next refresh won't be run within millisecons e.g. via EVENT_MANAGER:RegisterForRefresh with always the same unique event name), might be better. Depends on the usecase. But I remember using setFunc directly got me severe headache in the past. I did not find the time to check the code of the lam settings in detail. Could be this already is the most optimized way. Sorry for the confusion then. |
Quote:
|
Hey'a, just wanted to thank you all for your help.
I have uploaded the addon and am just awaiting a file admin. I implemented the code from Gabriel_H. To the latest version, and I believe it all works as intended! :banana: |
Quote:
|
ZOS have implemented a hidden 30 second cooldown on changing CP's.
I will need to completely rewrite the addon to try and get around this... |
Quote:
It was added on purpose. Please do not try to get around it but live with and adopt to it. Thank you. |
Quote:
I have no intention of ever doing that. I meant to say that I am going to only attempt to slot CP stars every 30 seconds, and to queue them up to be slotted when the player is off cooldown. As I don't want to annoy players by forcing them to see the 'Cannot slot one or more champion stars message'. |
Quote:
Tread with care. |
Yeah like what if it was less, it is 30 now, and what if it becomes a minute in the future. They decide to restrict if not prevent access. I for one think it is a neat idea to have something that can automatically swap things when you want. For example if you're fishing or farming. If ZOS figures whatever you choose to do isn't to their liking it will become a private api function possibly, who knows. None of us know but that's the gist of what is being said. Don't take it personally nobody's judging you for it we're just saying it may not be a good idea.
Philgo added a turbo mode to MM and that got squashed. |
I am just trying to understand what is going on here.
Currently, I have a version that I am working on that fully obeys the new restrictions. It will only send a request to the server when the cooldown is over. It is a very toned-down version of the original Jack of all Trades. What is the best way forward, am I supposed to try to ask ZOS if this is okay. I don't ever want to break the game or cause any performance issues. The new version stays well within the rules and doesn't try to exploit anything. (Neither did my original version). I have not been told that the adjustment was due to my addon, at all. Am I supposed to try to contact ZOS and ask if this is okay with them? I genuinely don't want them to feel the need to fight back. I am more than happy to work within whatever restrictions they say. Regardless of if I agree with them. I just wanted to create an addon that would remove some of the insane amounts of micromanagement with the new CP system. Both versions of my addon stayed well within the rules. I do not want to go down as the guy that nerfed the API, I just read the API patch notes and used what was there. If they don't like the automated aspect of it, I am happy to introduce a keybind to switch profiles. But I just don't know what they want. What would be the best way forward, the version I am working on now with the cooldown is much more efficient in every way in terms of messages sent to the server. But I don't want to be seen as trying to break anything. Should I leave the old version, which is spamming users with new annoying messages because it tries to slot CP too fast. Or post a new version, which fixes those issues. |
Yep you are doing fine nothing is wrong. You don't have to contact ZOS and nobody is saying anything happened because of you.
Quote:
These aren't the droids you are looking for. Carry on. |
Quote:
As long as you did not find any way to trick the cooldown to circumvent it, and just use it as ZOs provides it (30 secons), all is allowed and fine. About performance: Maybe there is some event or stuff like a callback that fires as the CD is gone. Or any api function one coudl check every 1 seconds or whatever. |
We are currently looking into ways to mitigate the potential server load of this aspect of the new system. The cooldown was a fast solution to a spammy system but since its only server side, I don't have access to it either. I don't know at this time if the cooldown will be the ultimate answer or if some kind of redesign to those abilities or slotting in general will be in play. If the cooldown is here to stay, I will be trying to get access to it so I can expose it to the API.
|
Quote:
If the skill cooldown is here to stay then thank you very much in advance for trying to get us access to the skill cooldown. It would be great if the skill cooldown could be picked up by GetChampionPurchaseAvailability() or GetExpectedResultForChampionPurchaseRequest() Many thanks for all your work and your communication. It is really appreciated! |
This addon was officially released:
https://www.esoui.com/downloads/info...allTrades.html |
All times are GMT -6. The time now is 03:20 AM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI