Download
(10 Kb)
Download
Updated: 03/14/21 05:52 PM
Pictures
File Info
Compatibility:
Flames of Ambition (6.3.5)
Markarth (6.2.5)
Stonethorn (6.1.5)
Greymoor (6.0.5)
Updated:03/14/21 05:52 PM
Created:12/23/20 03:28 PM
Monthly downloads:39
Total downloads:2,851
Favorites:5
MD5:
Limit Event Tickets (and other annoyances)
Version: 1.3.2
by: DewiMorgan [More]
Make it harder to accidentally lose event tickets by getting more than the max of 12 tickets. It does not yet make it impossible, however!

Between events, you can use it for its nice side effects: it makes Assistants far less annoying when in a group, and makes it so you can ignore all NPCs, corpses, or containers for a while. You can even switch off the ticket-handling stuff completely, and use the addon just for these features, instead!

Significant change in version 1.3.0 - crouch-to-loot containers and bodies is now no longer triggered by hitting your ticket limit. For containers, it's because no events so far have had tickets in containers. For bodies, it's because the tickets are generated on the body when it dies. If you run off to spend your existing tickets, the body, and its tickets, will be gone when you return. So you are better off getting whatever tickets you can off the body, even if it meant you lose some.

Features
  • Will block you from eating Jubilee Cake if you have too many tickets.
  • Can block you from accepting Cyrodiil job-board quests that might give you too many tickets.
  • Can block you from dialog options for taking or handing in quests that might give you too many tickets.
  • Lets you override that block anyway, by crouching (just like the NoAccidentalStealing addon).
  • Lets you set NPCs to always be crouch-to-talk, regardless of tickets: handy when grinding writs, safeboxes, etc.
  • Lets you set assistants to always be crouch-to-talk: handy if your group members always forget to put their Ezabi away!
  • Similarly with corpses, and with other containers.
  • No keybinds to set up, no commands to learn, no space taken up on your UI: just crouch!

Dependencies
Possible future ToDo items

Please post in the comments if any of these would be useful, or you have any other suggestions!
  • ToDo: Internationalization.
  • ToDo: Allow characters to have their own individual settings, instead of globally shared ones.
  • ToDo: Remind the player to get tickets for the day?
  • ToDo: Add compatibility with the Event Tracker addon to turn off blocking outside of events, so there're no tickets to be got? But maybe a few days after the scheduled ending, in case event gets extended.
  • ToDo: Add other potentially-annoying actions, like interacting with other players, murdered corpses, using a non-set crafting table where you've already completed the writ, maybe even a system to allow players to define their own lists of verbs and targets (So they could block, eg, "Use" with "*Portal", "Talk" with "vendors"?)
  • ToDo: Offer other standard keys (shift/run, or "jump within a few seconds before interacting) instead of/as well as crouching?
  • ToDo: Split this addon up into a bunch of very minimal lightweight one-task addons with no config (crouch to use assistants, crouch to get tickets, etc), and one big rollup addon that does it all and gives the user lots of config options for each thing.

Related addons
  • Event Ticket Notifier by ibex.rc - shows a warning when you get close to your limit.
  • Event Tracker by Kelinmiriel - tracks events, and your tickets, and which are available, and warns if you get close.
  • Event Collectibles by code65536 - tracks which account-wide event-only collectibles you've picked up.
  • Smart Looter by code65536 - will not auto-loot currencies over your currency limit.
For a more detailed breakdown, see https://github.com/DewiMorgan/LimitTickets/blob/main/CHANGELOG.md

1.3.2 - 2021/3/14 Pi day!
-----
  • Update: API bump to 100034, 'Flames of Ambition'.
  • Update: Added container names: Bottle, Rubble Pile, Metal Pellet Stockpile.

1.3.1 - 2021/1/6
  • Update: Added TONS of container names. There may still be a few DLC or quest-related ones, though. If I can translate all these, the list may become lib-worthy. What I REALLY need, though, is a way to crowdsource item names!
  • Fix: removed debugging reticle text for corpses and containers.
  • Code Cleanup: Remove unused vars, etc.

1.3.0 - 2021/1/3
  • Feature: Prevent players from picking up any quests if they have too many tickets.
  • Feature: Prevent players from handing in ticket quests if they have too many tickets.
  • Update: Update settings page.
  • Feature: Handle "Examine" items, too (Cyrodiil job boards).
  • Feature: Handle "Use" items, too (Jubilee cakes).
  • Update: Change crouch-to-loot-corpse and crouch-to-search-container into constant toggles.
  • Update: Added "Coffer", "Tomb Urn", "Fish" and "Book" to container list.
  • Update: Renamed "Millet Basket" to "Millet Sack".
  • Code Cleanup: Removed excessive hooking logic.

1.2.1 - 2020/12/30
  • DONE: FIX: remove nil debug messages when toggling checkboxes.

1.2.0 - 2020/12/30
  • DONE: Feature: Create more complete list of known-safe containers. Now I've checked through all events, too, it's no-longer-beta.
  • DONE: FIX: Don't trigger crouching for assistants if "crouch for everyone" is on. Thanks to danbest82 for reporting.
  • DONE: FIX: Changed max ticket target to 13, in order to effectively switch off all ticket checking behavior even when you're at 12 (needed in this event, since there's nothing else to buy!)
  • DONE: FIX: Duplicate display of debug toggle confirmation.
  • DONE: FIX: I found some pickpocketable NPCs who could be Talked to, so reinstated the warning tooltip.
  • DONE: Code Cleanup: Create GitHub repo (https://github.com/DewiMorgan/LimitTickets) and set up project.
  • DONE: Code Cleanup: Remove repetition and hardcoding. Parameterize methods for easier translation. And so on... because apparently people actually read this stuff!

1.1.0 - 2020/12/24
  • Feature: Add a toggle setting for the ZO_Alert if you max your tickets.
  • Feature: Add a toggle setting to make crouching optional - so, you could show a warning but still not need to crouch.
  • Feature (Beta): Option not to decorate reticle, nor prevent use, for known-safe containers like "Apple basket", "Backpack", "barrel"...
  • FIX: Removed incorrect "went from 0/N" notification when zoning. Thanks to @willandbeyond for reporting.
  • FIX: Don't decorate reticle for empty containers.
  • FIX: A tooltip incorrectly claimed pickpocketable NPCs may be affected: in fact, they never get the "[E] Talk" reticle prompt.
  • FIX: remove empty, unused settings.lua file, and various other code cleanup.

1.0.0 - 2020/12/23
Initial release.
Optional Files (0)


Archived Files (6)
File Name
Version
Size
Uploader
Date
1.3.1
10kB
DewiMorgan
01/06/21 12:41 AM
1.3.0
8kB
DewiMorgan
01/03/21 08:57 PM
1.2.1
7kB
DewiMorgan
12/31/20 04:50 AM
1.2.0
7kB
DewiMorgan
12/30/20 10:34 PM
1.1.0
7kB
DewiMorgan
12/24/20 03:37 PM
1.0.0
7kB
12/23/20 03:28 PM


Post A Reply Comment Options
Unread 06/05/23, 12:37 PM  
snatch

Forum posts: 0
File comments: 4
Uploads: 0
I started getting errors with Update 48 (Necrom). As with other addons using the FISHING_MANAGER in LUA, it needed some massaging to get working again. Some details are here (https://www.esoui.com/downloads/info....html#comments). Below are the updates I committed to make my addon work again.

Original Code:
Code:
        originalStartInteraction = FISHING_MANAGER.StartInteraction
        FISHING_MANAGER.StartInteraction = StartInteraction_hook
Replacement Code:
Code:
		local interactionManager = FISHING_MANAGER or INTERACTIVE_WHEEL_MANAGER
		originalStartInteraction = interactionManager.StartInteraction
		interactionManager.StartInteraction = StartInteraction_hook
For those interested I also got the rest of the assistants added by replacing the assistantLookup function as follows:
Code:
local assistantLookup = {
    ["Fezez"]                 = true,
    ["Ezabi"]                 = true,
    ["Pirharri the Smuggler"] = true,
    ["Tythis Andromo"]        = true,
    ["Nuzhimeh"]              = true,
    ["Giladil the Ragpicker"] = true,
    ["Ghrasharog"] = true,
    ["Peddler of Prizes"] = true,
    ["Zuqoth"] = true,
    ["Baron Jangleplume"] = true,
    ["Aderene"] = true,
    ["Factotum Commerce Delegate"] = true,
    ["Factotum Proptery Steward"] = true,
    ["Bastian Hallix"] = true,
    ["Ember"] = true,
    ["Isobel Veloise"] = true,
    ["Mirri Elendis"] = true,
    ["Azandar Al-Cybiades"] = true,
    ["Sharp-As-Night"] = true,
}
I haven't tested the new Necrom assistants yet, but I believe that code should work for them as well.

Special thanks to Baertram and DinoZavr for sharing the pointers on working around the FISHING_MANAGER situation.

Feel free to test and share experiences here.
Last edited by snatch : 06/05/23 at 12:42 PM.
Report comment to moderator  
Reply With Quote
Unread 12/31/20, 09:44 AM  
danbest82
 
danbest82's Avatar

Forum posts: 0
File comments: 19
Uploads: 0
Originally Posted by DewiMorgan
Originally Posted by danbest82
Nice AddOn! I hate when I'm in a quest with an NPC tagging along, I go to loot something and it talks to them instead. I'm hoping this helps with that. I'm having an issue with the "crouch to talk to all NPC, except assistants" even when "crouch to use assistant" is off. It tells me to crouch no matter what. I also was not near max tickets so that wasn't getting in the way.
Today's update should resolve this. Sorry it took longer than I hoped... I spent far too much time neatening up the code.
Fixed! No problem with the time it took. Neat code will help you later with any errors and adding additional features. Thanks!
Last edited by danbest82 : 01/01/21 at 01:17 AM.
Report comment to moderator  
Reply With Quote
Unread 12/31/20, 12:47 AM  
DewiMorgan
 
DewiMorgan's Avatar
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 82
Uploads: 1
Originally Posted by danbest82
Nice AddOn! I hate when I'm in a quest with an NPC tagging along, I go to loot something and it talks to them instead. I'm hoping this helps with that. I'm having an issue with the "crouch to talk to all NPC, except assistants" even when "crouch to use assistant" is off. It tells me to crouch no matter what. I also was not near max tickets so that wasn't getting in the way.
Today's update should resolve this. Sorry it took longer than I hoped... I spent far too much time neatening up the code.
Report comment to moderator  
Reply With Quote
Unread 12/26/20, 07:04 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4963
File comments: 6032
Uploads: 78
Sure, you are welcome If you need translation help with German texts write me a PM please.

Originally Posted by DewiMorgan
Originally Posted by Baertram
Thanks for the addon.
A few hints:
Oh my goodness! Thank you SO much! This is really helpful for a newbie like me, and I greatly appreciate it. This'll all hopefully go into tomorrow's update (today's, it's past midnight). Maybe not the I18N stuff, that might take a little longer...
Report comment to moderator  
Reply With Quote
Unread 12/26/20, 04:00 AM  
DewiMorgan
 
DewiMorgan's Avatar
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 82
Uploads: 1
Originally Posted by Baertram
Thanks for the addon.
A few hints:
Oh my goodness! Thank you SO much! This is really helpful for a newbie like me, and I greatly appreciate it. This'll all hopefully go into tomorrow's update (today's, it's past midnight). Maybe not the I18N stuff, that might take a little longer...
Last edited by DewiMorgan : 12/26/20 at 04:17 AM.
Report comment to moderator  
Reply With Quote
Unread 12/26/20, 03:58 AM  
DewiMorgan
 
DewiMorgan's Avatar
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 82
Uploads: 1
Originally Posted by danbest82
Nice AddOn! I hate when I'm in a quest with an NPC tagging along, I go to loot something and it talks to them instead. I'm hoping this helps with that. I'm having an issue with the "crouch to talk to all NPC, except assistants" even when "crouch to use assistant" is off. It tells me to crouch no matter what. I also was not near max tickets so that wasn't getting in the way.
Thanks so much for the report!
I'll try to have a fix tomorrow.
Report comment to moderator  
Reply With Quote
Unread 12/25/20, 11:14 AM  
danbest82
 
danbest82's Avatar

Forum posts: 0
File comments: 19
Uploads: 0
Nice AddOn! I hate when I'm in a quest with an NPC tagging along, I go to loot something and it talks to them instead. I'm hoping this helps with that. I'm having an issue with the "crouch to talk to all NPC, except assistants" even when "crouch to use assistant" is off. It tells me to crouch no matter what. I also was not near max tickets so that wasn't getting in the way.
Report comment to moderator  
Reply With Quote
Unread 12/25/20, 09:41 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4963
File comments: 6032
Uploads: 78
Thanks for the addon.
A few hints:
Do not use numbers here in your if statement but use the defined constants that ZOs uses, so if they change them you won't run into problems:
Code:
if 9 == currencyType
Check the API txt file (https://wiki.esoui.com/APIVersion -> Check which version is current live and click on the link at API TXT Documentation for the correct constant, should be something with CURRENCY_TYPE e.g.
If you want to be precise check the event/function parameters.n your case it is EVENT_CURRENCY_UPDATE, so search for it in th txt file.
In there you'll find the parameters list of the callback function and their types:
Code:
* EVENT_CURRENCY_UPDATE (*[CurrencyType|#CurrencyType]* _currencyType_, *[CurrencyLocation|#CurrencyLocation]* _currencyLocation_, *integer* _newAmount_, *integer* _oldAmount_, *[CurrencyChangeReason|#CurrencyChangeReason]* _reason_, *integer* _reasonSupplementaryInfo_)
So it's CurrencyType. Saerch for it in the api txt file:
Code:
h5. CurrencyType
* CURT_ALLIANCE_POINTS
* CURT_CHAOTIC_CREATIA
* CURT_CROWNS
* CURT_CROWN_GEMS
* CURT_EVENT_TICKETS
* CURT_MONEY
* CURT_NONE
* CURT_STYLE_STONES
* CURT_TELVAR_STONES
* CURT_UNDAUNTED_KEYS
* CURT_WRIT_VOUCHERS
In your case it would be CURT_EVENT_TICKETS then instead of 9


And instead of using your own texts like "Use", "Search" etc. use the predefined constants which Zos uses via SI_*whatever. These are numbers returning the text via GetText(SI_*) -> "Use" e.g.
This way you got multi language support at once! And do not need to re-create the same strings over and over again.
Here is the list of predefined texts that ZOs uses:
https://github.com/esoui/esoui/blob/master/esoui/ingamelocalization/localizegeneratedstrings.lua

e.g.

Code:
"Search", -- SI_GAMECAMERAACTIONTYPE1
    "Talk", -- SI_GAMECAMERAACTIONTYPE2
    "Harvest", -- SI_GAMECAMERAACTIONTYPE3
    "Disarm", -- SI_GAMECAMERAACTIONTYPE4
    "Use", -- SI_GAMECAMERAACTIONTYPE5
    "Read", -- SI_GAMECAMERAACTIONTYPE6
    "Take", -- SI_GAMECAMERAACTIONTYPE7
    "Destroy", -- SI_GAMECAMERAACTIONTYPE8
    "Repair", -- SI_GAMECAMERAACTIONTYPE9
    "Inspect", -- SI_GAMECAMERAACTIONTYPE10
    "Repair", -- SI_GAMECAMERAACTIONTYPE11
    "Unlock", -- SI_GAMECAMERAACTIONTYPE12
    "Open", -- SI_GAMECAMERAACTIONTYPE13
    "Examine", -- SI_GAMECAMERAACTIONTYPE15
    "Fish", -- SI_GAMECAMERAACTIONTYPE16
    "Reel In", -- SI_GAMECAMERAACTIONTYPE17
    "Pack Up", -- SI_GAMECAMERAACTIONTYPE18
    "Steal", -- SI_GAMECAMERAACTIONTYPE19
    "Steal From", -- SI_GAMECAMERAACTIONTYPE20
    "Pickpocket", -- SI_GAMECAMERAACTIONTYPE21
    "Trespass", -- SI_GAMECAMERAACTIONTYPE23
    "Hide", -- SI_GAMECAMERAACTIONTYPE24
    "Preview", -- SI_GAMECAMERAACTIONTYPE25
    "Exit Home", -- SI_GAMECAMERAACTIONTYPE26
    "Excavate", -- SI_GAMECAMERAACTIONTYPE27
If th texts for "Apple basket" etc. are not in the list of ZOs text constants try to get the texts in other languages yourself.
Use this script ingame to change to German language e.g. and move your cursor at the apple basket to see the exact text:

Code:
/script SetCVar("language.2", "de")
Other languages:
de German
en English
fr French
ru Russian
jp Japanese (only with the extra Japanese client)



The same SI_ constants could be used for your addon. Here is how to support multi language in your addon:
https://wiki.esoui.com/Addon_manifest_(.txt)_format#Variable_Expansion
$(language)

https://wiki.esoui.com/How_to_add_localization_support
Last edited by Baertram : 12/25/20 at 09:52 AM.
Report comment to moderator  
Reply With Quote
Unread 12/24/20, 11:53 PM  
DewiMorgan
 
DewiMorgan's Avatar
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 82
Uploads: 1
ruh roh...

So, turns out that the things you get tickets from aren't just "Search" and "Talk".
You can also "Use" a 2020 Jubilee Cake, or "Examine" a Scouting Mission Board.

So now I'm going through creating a blocklist of objects that you shouldn't be able to interact with, but it's never going to be perfect, since even if I capture every verb and every object they've ever used... they have arbitrary new zone celebration events where anything could give you a ticket! Sure, I can push an update out as soon as I can, but that gives far too large a window at the start of the event for people to lose tickets.

But maybe I can make it smart? So, it remembers the last verb you did before you get some tickets, and if it's not one it knows about, it just flags that as "a thing I should probably prevent in this event"?

Or maybe even better, offer to append that verb to a user-editable list of verbs...

Hoo boy.

But for THIS event, the system works.
Report comment to moderator  
Reply With Quote
Unread 12/24/20, 03:30 PM  
DewiMorgan
 
DewiMorgan's Avatar
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 82
Uploads: 1
Hope you're all finding this addon useful and easy to use.
If not, here's a good place to let me know!
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

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.