Quantcast
Download
(42 Kb)
Download
Updated: 06/05/21 10:08 AM
Pictures
File Info
Compatibility:
Markarth (6.2.5)
Stonethorn (6.1.5)
Greymoor (6.0.5)
Updated:06/05/21 10:08 AM
Created:04/15/14 09:21 PM
Monthly downloads:2,488
Total downloads:565,905
Favorites:754
MD5:
Categories:Combat Mods, Action Bar Mods, Graphic UI Mods, PvP
Greymind Quick Slot Bar  Popular! (More than 5000 hits)
Version: v2.6.4
by: bsrealm, ivanwfr

Check beta updates in the Comments section
last version always on GitHub

An in-combat complement to the Quickslot Radial Menu
  • Each Profile contains five custom Presets of up to eight equipped Slots.
  • One Profile for each of your characters.
  • And one for an Account-wide configuration you can access from any of your characters.
  • All Settings are saved after each session and restored at login.
And I totally approve Miss Bizz YouTube video about GQSB .. (a bit outdated but cute enough)


1. LAYOUT OPTIONS
  • You can drag an Unlocked-UI corner to visualize from one up to 8 Quick Bar Slot buttons
  • 1x8, 8x1, 2x3, .. Row x Col .. (8 cells max)

2. COLORS CUES
  • Button border Red = low-item-count ALERT
  • Button border Yellow = low-item-count WARNING

3. LABELS
  • Item count
  • Slot number
  • Slot hotkey

4. CUSTOM LAYOUT OPTIONS
  • Buttons-size
  • Labels font size
  • Labels position (left center right .. above middle below)

5. UI VISIBLITY OPTIONS
  • Visible when In-combat only
  • Visible when Reticle is showing (i.e. no interface-menu on screen)
  • Visible Always
  • Visible Never
  • Visible Blink changes
  • Visible FORCED (sneak a peek)
  • Visible BLOCKED (get out of the way)

6. HOTKEYS OPTIONS
  • Preset swap P1..P5 (while not IN-COMBAT)
  • UI-Display FORCED .. (temporary visible)
  • UI-Display BLOCKED .. (temporary hidden)
  • SELECT slot 1 .. Slot 8
  • Previous Item
  • Next Item
  • Reload UI
  • Clear Chat

7. ACTIVATION (i.e. Select, and display, the ITEM your next [Q] activation will use)
  • From a clicked Button
    and..or
  • From each slot Hotkey (Controls config menu)

8. And the Settings menu has more (with tooltips and warnings)
  • auto-select-next
  • auto-wrap
  • action-sounds
  • translucency
  • hide-game-action-bar-quick-slot (at the left of the action bar)
  • Activate Account-wide or Character's profile
  • In-combat delayed Preset swap (at the end of a fight)
  • Static Preset (changes won't be saved - so you can make a mess and restore anytime , possibly just at the
    end of a fight)

9. Pre-release on GitHub
Some corrections could be underway and, until next release, some In-Progress
version could be accessible on GitHub.


When you deploy a master zip from GitHub, the result should be a single folder
named after the Addon's name, under your live/Addons/ folder.


There should be no piled up folders such as GreymindQuickSlotBar/GreymindQuickSlotBar

Like so for W7:

%USERPROFILE%/Documents/Elder Scrolls Online/live/AddOns/GreymindQuickSlotBar

you can try an copy-paste this line in File-Explorer

Screenshots

1. UI 3x2

2. UI 1x8

3. Unlocked UI resizing

4. Controls Hotkeys Binding

5. Settings menu 1/3

6. Settings menu 2/3

7. Settings menu 3/3

8. Visibility logic - A piece of lua code

v2.6.4 210605
- Checked with Update 30 Blackwood (7.0.5): (API 100035)

v2.6.3.3 210424
- Checked with Update 29 Flames of Ambition (6.3.0): (API 100034)
- Issue from Marazota: Hide buttons when champion dialog is showing
v2.6.3.2 210314
- Issue from Neverlands: quick slot swapping snap back on collectibles
v2.6.3.1 210313
- Issue from TheMikrobe: "Next <-o-> Previous wrap" was broken
v2.6.3 210312
- Checked with Update 29 Flames of Ambition 100034 (6.3.0): (API 100034)

v2.6.2 201107
- Checked with Update 28 Markarth (6.2.0): PTS (API 100033)
- Button Background Opacity slider
- UI Handles hidden by default (unless Lock UI is off)
- Weapon swap color applies to current slot button when Hiding buttons background is ON
updated displayed version (201107 16h48 CET)

v2.6.1 200824
- Checked with Update 27 Stonethorn (6.1.0) (API 100032)
- Saving last Preset selected slot


v2.6.1.4 200823 pre-release on GitHub
- Checked with Update XX (X.X.X): PTS (API 100032)
- Saving last Preset selected slot

v2.6.1.3 200717
- Checked with Update XX (X.X.X): PTS (API 100032)

v2.6.1.2 200703
- Checked with Update 26 (6.0.8): Greymoor (API 100031)

v2.6.1.1 200614
- Checked with Update 26 (6.0.5): Greymoor (API 100031)
- Solved issue "3137: function expected" .. global conflict declared local


v2.6.0 200530
- Checked with Update 26 (6.0.5): Greymoor (API 100031)
- UI hidden while scrying or digging Antiquities

v2.5.0 200527
- Checked with Update 26 (6.0.5): Greymoor (API 100031)
- Chat Clear restored thanks to still supported code from ChatWindowManager
- Blink Changes shows Slot buttons only, excluding Settings handles

v2.4.9 200229
- Checked with Update 25 (5.3.4): Harrowstorm (API 100030)
- ZO_ChatWindowTemplate1Buffer .. Chat clear not supported since Update 25

v2.4.8 191027
- Checked with Update 24 (5.2.5): Dragonhold (API 100029)
7:19 PM UTC:
- DependsOn: LibAddonMenu-2.0 (embedded lib folder removed)
Trader08_mod
- LockThisPreset
- DelayPresetSwapWhileInCombat
- Items with same Id but different flavors improved support based on Items Link.
Chat
- LinkToChatOnClick to copy button's item link into chat.
- ChatMax utility option to unlock Chat Window maximum size.
- ChatMute option to block all Chat warning messages.
- (a per-session option i.e. not per-preset): one for Account-wide, one by Character.
Option defaults
- Re-shuffled Settings Menu.
- Default Show Policy set to [Never] instead of [Always]
- Default Visual Cue set to [OFF] instead of [Warn + Alert]
- UI layout may be reduced to a single [1x1 cell] .. down from [2R x 1C]
- [X] Defaults Settings button will only reset the Current Preset.
- (use the /resetall slash-command to reset all 5 Preset at once).
Addons dependency
- Preventing early calls to Refresh_handler from globalapi.lua at login
- Deleted ## DependsOn: directive in favor of embedded ranked-up libraries
- Updated ## Description: directive in embedded libraries manifest

v2.4.7
- 190813
- Checked with Update 23 (5.1.5): Scalebreaker - APIVersion: 100028.
* Crafting Station: ForceBarVisibility to work while ALREADY crafting or showing Skills window.
- Locked Forced Blocked and Display policy precedence tuned for more consistent Show or Hide results
- New Key binding to open Settings Menu
- ...use /gqsb debug_station for logging

v2.4.6
- 190522
- Checked with Update 22 (5.0.5): Elsweyr - APIVersion: 100027.
- Added PRESET SWAP COOLDOWN to prevent SPAM WARNING MESSAGES.
- New settings Option: Print selected item description in to Chat Window.
* Crafting Station: UI EFFECTIVELY freezed while crafting or showing Skills window.
- "Blink Changes" display duration set to 500ms (up from 10ms).
* Initial "Visibility" option set to "Always" so that it wont start hiding by default.

v2.4.5
- 190226
- Checked with Update 21 (4.3.5): Wrathstone - APIVersion: 100026
* New saved settings option: Account-wide or Character Settings
* User Interface showing a BIG RED X when unlocked .. instead of hiding slotted items

v2.4.4
- 181113
* collectible...: Murkmire missing function call to [SelectSlotCollectible] replaced with [SelectSlotSimpleAction]
................ (thanks to Static's Quickslot Profiles rummage)
* crafting......: UI freezed while working at some Crafting Station (as suggested by Baertram).
* tooltips......: UI shows a few more descriptions

v2.4.3
- 181027
- Checked with Update 20 (4.2.5): Murkmire - APIVersion: 100025
- UI freezed while working at some Crafting Station (as suggested by Baertram).

v2.4.2
- 181023
- Checked with Update 20 (4.2.5): Murkmire - APIVersion: 100025
- patch version typo corrected

v2.4.1
- 181022
- Checked with Patch v4.2.5: Murkmire - APIVersion: 100025

v2.4.0
- 180815
</p><p class='wall_of_text_split'>- Checked with Update 19 (4.1.15): Wolfhunter - APIVersion: 100024

v2.3.9
- 180522
- Checked with Update 18 (4.0.5): Summerset - APIVersion: 100023

v2.3.8
- 180312
- Tracking potions with same slotId .. promoted to a "known issue"
- New "NO SOUND ENTRY"
- New "Blink Changed" Display Policy

- 180310
- Tracking potions with same slotId .. (forum comment @Nudel)

v2.3.7
- 180302
- FIXED Collections Issue since API 100022 - GetCollectibleIdFromLink did the trick

v2.3.6
- 180226
- Checked with Patch 3.3.7
- FIXED GreymindQuickSlotBar.lua:984 error message: - missing again COLLECTIONS_INVENTORY_SINGLETON

v2.3.5
- 180214
- WORAROUND: version tag for the missing COLLECTIONS_INVENTORY_SINGLETON

v2.3.4.4
- 180212
- Checked with (3.3.5): Dragon Bones - APIVersion: 100022
- TODO: find a replacement for missing COLLECTIONS_INVENTORY_SINGLETON to synchronize collectibles
- QSB Bar visibility: 2 more Keyboard Shortcuts and slash-commands:
- New slash-command.: /gqsb force .. to force Bar Visiblity
- New slash-command.: /gqsb block .. to block Bar Visiblity (overrides force)
- Controls-Keybind and Chat-Report colors .. to better spot what's ON and what's OFF
</p><p class='wall_of_text_split'>- Events bursts handling shorter .. to update UI faster

v2.3.4.3 -- Release candidate v2.3.4.3 on GitHub
- 171128
- New slash-command.: /gqsb clear ...to clear Current-Preset-Items.
- New option: Auto-Clone previous-to-empty preset (ON OFF) ...whether to copy the CURRENT PRESET LAYOUT AND CONTENT when selecting an EMPTY PRESET.
- Addon-Version added into the Settings Menu Display Name.

v2.3.4.2
- 171028
- Checked with Update 16 (3.2.6): Clockwork City - APIVersion: 100021
- Works with LibAddonMenu 2.0 r25

v2.3.4.1
- 170917
Collectible Presets properly saved and restored.

v2.3.4
- 170902
Collectible Items Support.
Collectible tooltip active state missing (Found no sync capable EVENT_XXX).

v2.3.3.2
- 170829
LibAddonMenu empty panel issue: could not find any workaround.

- lib author wont consider his buttons should not be the only means to change addon settings.
- Found no way to avoid this side-effect when I need to refresh Per Preset Settings Panel UI.
- workaround: use the cog to the right of the Addon UI.


v2.3.3.1
- 170822
Preset selection: 5 more Keyboard Shortcuts

v2.3.3
- 170818
Changed from Account-wide to Per-character Preset
...meaning each character will save and restore its own full-preset
</p><p class='wall_of_text_split'>Activating an EMPTY PRESET will clone the CURRENT PRESET (Layout and Content)
Instant UI update when Weapon Swap Colors is changed

v2.3.2.1
- 170815
- correction for error message: [536: operator .. is not supported for nil .. string]

v2.3.2
- 170814
- Checked with Update 15 (3.1.5): Horns of the Reach - APIVersion: 100020
- Works with LibAddonMenu 2.0 r24 and LibStub-1.0r4

5x SlotItemTable (one per PRESET):
.. a new table to save and restore 8x [Quick Slot Bar itemName] [BAG_BACKPACK slotID] [button texture]

- Each preset saves and restores its own Quick Slot Items Set.
...can be used to setup ACTIVITY-SPECIFIC-ITEM-SETS (i.e. PvP, PvE or some other ativities)

- A new BIG TOOLTIP stating you have to click the red-pin when the Addon-UI is UNLOCKED during layout.

- IMPORTANT NOTE ABOUT "EXCESSIVE MESSAGE WARNING"
* Item swap adds up in the count of message spamming.
* If you get this warning, be sure to wait a few seconds before your next preset swap.
* (...it looks like chances to get this warning are low when the Item bag is showing)

- check_QSB_BAG_BACKPACK_slotId_to_check:
. When a new item is added into the BAG_BACKPACK,
. if this item is part of the current PRESET-ITEM-SET,
. it is added to the Quick slot bar when it is missing.
. This may happen when some pre-selected items are not available when a particular PRESET is activated.
. As adding items missing from the BAG_BACKPACK is not supported, it must be done when available.

- get_slotId_itemName:
. Access a BAG_BACKPACK [slotID] item name.

- loadItemSlots:
. Clear PRESET-UNCONFIGURED Quick Bar Slots,
</p><p class='wall_of_text_split'> . Equip PRESET-CONFIGURED Quick Bar Slots,
. Nothing happens when upgrading from previous addon-version,
. preserving whatever is slotted in the Quick Bar at that time.

- is_SlotItemTable_empty:
. ON FIRST USE OF THE NEW FEATURE:
. refrain from clearing current Quick Slot Bar (a NON-EXISTENT-PRESET is not the same as an EMPTY-PRESET)

- populate_an_empty_SlotItemTable:
. ON FIRST USE OF THE NEW FEATURE:
. capture current Quick Slot Bar content into an empty PRESET before SAVING OR USING it.

- clear_bNum:
. Clears a Quick Slot Bar entry based on intentionally-left-empty PRESET slot.

- equip_bNum_item_slotId:
. Equip a Quick Slot Bar entry based on an configured PRESET slot.

- handle_ACTION_SLOT_UPDATED:
. Save the item added to a Quick Slot Bar entry.
. ON FIRST USE OF THE NEW FEATURE:
. save all current Quick Slot Bar entries to update the Addon UI.

- save_QSB_to_SlotItemTable:
. save one of the CURRENT PRESET slot item: [item-name] [BAG_BACKPACK slotID] [button texture]

- get_BAG_BACKPACK_slotId:
. Search the BAG_BACKPACK to get the Item ID passed to equip_bNum_item_slotId.

- get_tooltipText:
. get information about currently EQUIPPED or SAVED item name.

v2.3.1
- 170524
- Checked with Update 14 (3.0.5): Morrowind - APIVersion: 100019

v2.3.0
- 170207
- Checked with Update 13 (2.7.5): Homestead - APIVersion: 100018
- (typo -= 1) (vertical->horizontal) (thx zasy99)

v2.2.9
- 161007
- Checked with Update 12 (2.6.4): One Tamriel - APIVersion: 100017
</p><p class='wall_of_text_split'>- Shortened a few more keyNames: Insert=[INS] Caps Lock=[Caps] Page Down=[PgDn] Page Up=[PgUp]
- changed lua file format from dos to unix (maybe the cause of some release issue in the comments)
- added the missing GreymindQuickSlotBar.xml Thanks Thrasher who spotted this one!


v2.2.8
- 160823
- Shortened a few displayed keyNames: BACKSPACE=[BKS] DELETE=[DEL] ENTER=[ENT]
...with the right caps such as......: Backspace=[BKS] Delete=[DEL] Enter=[ENT]

v2.2.7
- 160803
- Checked with Update 2.5.5: Shadows of the Hist - APIVersion: 100016
- no change required

v2.2.6
- 160601
- Checked with Update 2.4.5: Dark Brotherhood - APIVersion: 100015
- no change required

v2.2.5
- 160310
- Works with LibStub-1.0r4
- Installed LibStub Version: 1.0 r4 independently from LibAddonMenu archive which comes with another version(!)

v2.2.4
- 160309
- Cheked with Update 2.2.5: Thieves Guild - APIVersion: 100014
- Addon Settings of Warning and Alert Quantity clamping working again: (Alert < Warning)
- Works with LibAddonMenu 2.0 r19

v2.2.3
- 160219
- Prevented addon popup caused by WEAPON SWAP when SKILL WINDOW is showing

v2.2.2
- 160218
- Smarter handling of Disable Default Quick Slot option
- Added new slash command: /gqsb qsbhide to toggle this option

v2.2.1
- 151108
- Checked against Update 2.2.4 : Orsinium ...still working, no change

v2.2.0
- 150905
</p><p class='wall_of_text_split'>- Checked against Update 7 ...still working as it should, nothing changed

v2.1.9
- 150607
- Added Potion Tooltips on UI Mouse Over
- Catching an error involving a nil value and the mouse at load time

v2.1.8
...not worth a release

v2.1.7
- 150403
- Weapon Swap background color turned into a Settings option
...whether to change buttons background colors on Weapon Swap

v2.1.6
- 150330
- Hitting an empty-slot-keybind also works with Auto-select next not empty slot and Next <-o-> Previous Wrap
- User Settings for SoundAlert and SoundSlotted
- Support for SLOTTABLE PETS (nil-count items) -- (counting them as one instead of ignoring them)
- Buttons background green or blue in sync with Active Weapon Swap -- (if Hide background is OFF)
- UI update anti-burst -- (optimzation)
- Force Bar Visibility as an On-Off state machine -- (instead of a one shot action)

v2.1.5
- 150314
- workaround for random empty item: GreymindQuickSlotBar.lua:653: operator < is not supported for nil < number

v2.1.4
- ...with embedded LibAddonMenu-2.0r17 150308

v2.1.3
- tagged for Update 6 -- APIVersion: 100011 -- 150308
- Auto-select next not empty DISPLAYED slot

v2.1.0
- tagged for Update 5 -- APIVersion: 100010 -- 141105
- using LibAddonMenu 2.0 r16

v2.0.7.1
- REALLY tagged for APIVersion: 100009 -- 140924

v2.0.7
- tagged for APIVersion: 100009 -- 140924
- force ignoring any external global DEBUG variable -- declared local and set to false

v2.0.6
- "In Combat Only" Display Policy not disrupted by irrelevant inventory updates
</p><p class='wall_of_text_split'>- "Auto-select next non-empty slot" now restricted to visible buttons only

v2.0.5
- API 100008 compatible (140804).
- NextAuto is called (now!) when the last item of the currently selected Quick Slot has been consumed
... previously, it was only working in my dreams
- Added a Clear Chat keybinding entry

v2.0.4
- API 100007 compatible (140625).
- "Disable Default Quick Slot" option is more responsive to UI transitions.
...and when this option is OFF, this Add-On will neither Show nor Hide this button and let the game or any other Add-On in charge with no interference.
- Correction to next/previous slot key binding which missed the last entry.
- Search for "Auto-select next not empty slot" wraps to check all entries.

v2.0.3
- PATCHED LibAddonMenu so that Settings menu follows Preset swapping.
- "Disable Default Quick Slot" option enforced by Reticle change instead of when addon UI needs a refresh.
- TODO: turn this option into a 3-ways Dropdown: OFF/ON/IGNORE to let other addons take control.

v2.0.2
- ***MAJOR ISSUE SOLVED *** UI Font (back to univers57.otf from esocartographer-bold.otf)
- ADDED - Visibility Option "Always"
- CLARIFIED - Visibility Option behaviour:
. "Never" will have user decide at all time with "ForceVisibity" Keybinding
. "In Combat Only" and "Reticle" are event driven as before
. Using a Keybind or reorganzing Quick Slot Wheel will show the UI unless Visibility "Never" is selected.
. ForceVisibility will always toggle UI display
. then, Combat or Reticle reticle control will be restored.
. Visibility "Never" having no coded control, ForceVisibility will be the only means of action.
- Quantity Alert and Warning sliders lock issue solved.
- Visibility issue: (unexpected Action slot update was briefly showing UI)

</p><p class='wall_of_text_split'>- PENDING ISSUE: LibAddonMenu callbacks backfiring (if used once from within the settings menu, drop-down controls wont follow a preset swap until a /reloadui)

v2.0.1
- API 100004 compatible (140523).
- UI handles: Lock-unlock-pin, Preset x 5, Settings menu.
- Settings menu is updated with a new set of parameters at each change of the current Preset.
- Option to automatically select the next not empty slot when the current slot items are consumed.
- Reordered the 8 slots numbering so that 1-8 grid slots turn clockwise starting from 12 o'clock.
- Settings option menu items reordered so that most useful entries come near the top.
- Every settings change is effective immediately (reloadUI is never required).
- Options to anchor text to 5 horizontal and 5 vertical positions. (3 inside, 2 outside).
- Opacity and gray-out adjustable options.
- ...

v2.0
- Added color indicator for quantity label and key bind label if item quantity is 0.
- Prevent key labels showing 0 on empty slots.
- Fixed and improved auto-hide behavior. Can now use and click in "mouse mode" if not in UI menus or conversation.
- Revamped settings menu with subheaders, a dash of color and sliders for numeric inputs.
- Added feature and setting to disable default quick slot action button provided by the game.
- Added feature and setting to control the opacity/translucency of slot items that are not currently selected.

v1.9
- Can display item quantity and set position (horizontal and vertical) relative to quick slot items.
- Can force quick bar to show via a hotkey. This overrides all your other settings until its turned off by pressing the key again.

v1.8
- Can resize expanded bar to display as grids or purely vertical/horizontal strips (default). This also lets you only show a limited number of quick slots if you so desire.
- Keybinds to move to previous item or next item. Intelligently skips empty slots.
- Added auto-hide feature when in combat.
- More positioning options for keybind display label.
</p><p class='wall_of_text_split'>- Shows currently selected quick slot item with a colored label and all others with some translucency.
- Can now adjust the size of the quick slot items.
- Added ability to lock UI to prevent resizing or moving.

v1.7
- Updated the LAM addon, even though I don't benefit from the changes, its the right thing to do since other addons might source it via LibStub.

v1.6
- Key bind display and position (above/middle/below) for each quick slot item!

v1.5
- Now properly redraws the quick bar after wayshrining and traveling to player.

v1.4
- Ability to turn on/off the base background for the expanded quick slot bar.
- Added a new background to each quick slot item + settings to toggle this.
- Added visual cues based on two values (warnings, default 10 and errors, default 2) + settings to toggle and set these values.
- Added smart visual cue toggle that shows visual cues only when there's something to report.
- Can now move UI with and without background enabled and by clicking and dragging all areas around the slot items.
- New border graphic added to match ability bar.
- Settings now saved across characters!
- Better default settings.

v1.3
- Added toggle-able auto-hide feature that hides when in UI mode. Can still reposition in settings screen or with auto-hide off.

v1.2
- Fixed issue where you may not be able to move window after turning on/off show numbers via settings

v1.1
- Added reset button to settings in case the UI gets stuck somewhere
- Fixed some workflow issues in save functionality
- Untested (French client users please help!) fix for different language clients
</p>
Optional Files (0)


Archived Files (71)
File Name
Version
Size
Uploader
Date
v2.6.3.3
41kB
ivanwfr
04/24/21 05:12 PM
v2.6.3.2
41kB
ivanwfr
03/14/21 08:46 AM
v2.6.3.1
41kB
ivanwfr
03/13/21 03:17 PM
v2.6.3
41kB
ivanwfr
03/11/21 06:24 PM
v2.6.2
41kB
ivanwfr
11/07/20 09:50 AM
v2.6.1
41kB
ivanwfr
08/24/20 12:25 PM
v2.6.0
40kB
ivanwfr
05/30/20 12:00 PM
v2.5.0
41kB
ivanwfr
05/27/20 03:40 PM
v2.4.9
40kB
ivanwfr
02/28/20 08:07 PM
v2.4.8
40kB
ivanwfr
10/27/19 01:21 PM
v2.4.7
79kB
ivanwfr
08/13/19 03:10 PM
v2.4.6
78kB
ivanwfr
05/22/19 05:23 PM
v2.4.5
77kB
ivanwfr
02/25/19 05:58 PM
v2.4.4
75kB
ivanwfr
11/13/18 10:45 AM
v2.4.2
75kB
ivanwfr
10/23/18 03:34 PM
v2.4.0
74kB
ivanwfr
08/14/18 04:52 PM
v2.3.9
74kB
ivanwfr
05/23/18 07:16 AM
v2.3.7
74kB
ivanwfr
03/02/18 04:55 PM
v2.3.6
74kB
ivanwfr
02/26/18 09:05 AM
v2.3.5
74kB
ivanwfr
02/13/18 05:46 PM
v2.3.4.4
73kB
ivanwfr
02/12/18 05:39 PM
v2.3.4.2
72kB
ivanwfr
10/28/17 07:12 AM
v2.3.4.1
72kB
ivanwfr
09/17/17 01:22 PM
v2.3.4
72kB
ivanwfr
09/02/17 03:16 PM
v2.3.3
63kB
ivanwfr
08/18/17 01:19 PM
v2.3.2.1
63kB
ivanwfr
08/15/17 01:47 PM
v2.3.2
63kB
ivanwfr
08/14/17 03:09 PM
v2.3.1
58kB
ivanwfr
05/23/17 04:48 PM
v2.3.0
58kB
ivanwfr
02/06/17 08:00 PM
v2.3.0
58kB
ivanwfr
02/06/17 06:34 PM
v2.2.9
58kB
ivanwfr
10/07/16 03:39 AM
v2.2.9
57kB
ivanwfr
10/06/16 08:43 PM
v2.2.9
58kB
ivanwfr
10/06/16 06:28 PM
v2.2.8
58kB
ivanwfr
08/23/16 02:02 PM
v2.2.8
58kB
ivanwfr
08/23/16 01:47 PM
v2.2.7
57kB
ivanwfr
08/02/16 05:44 PM
v2.2.6
57kB
ivanwfr
06/01/16 03:32 PM
v2.2.5
57kB
ivanwfr
03/09/16 08:36 PM
v2.2.5
50kB
ivanwfr
03/09/16 06:28 PM
v2.2.4
50kB
ivanwfr
03/09/16 10:09 AM
v2.2.3
50kB
ivanwfr
02/19/16 02:21 PM
v2.2.2
50kB
ivanwfr
02/18/16 10:58 AM
v2.2.1
50kB
ivanwfr
11/08/15 10:26 AM
v2.2.0
50kB
ivanwfr
09/05/15 12:11 PM
v2.1.9
50kB
ivanwfr
06/07/15 08:52 AM
v2.1.7
50kB
ivanwfr
04/03/15 02:28 PM
v2.1.6
50kB
ivanwfr
04/03/15 08:32 AM
v2.1.5
48kB
ivanwfr
03/19/15 07:12 AM
v2.1.4
48kB
ivanwfr
03/08/15 07:58 AM
v2.1.3
44kB
ivanwfr
03/07/15 05:32 PM
v2.1
46kB
ivanwfr
11/05/14 01:58 PM
v2.0.7.1
22kB
ivanwfr
09/24/14 02:12 PM
v2.0.7
22kB
ivanwfr
09/24/14 01:41 PM
v2.0.6
22kB
ivanwfr
08/13/14 03:02 PM
v2.0.5
22kB
ivanwfr
08/12/14 01:57 PM
v2.0.4
22kB
ivanwfr
06/25/14 11:01 AM
v2.0.3
22kB
ivanwfr
05/31/14 11:14 AM
v2.0.2
22kB
ivanwfr
05/30/14 03:47 PM
v2.0.1
21kB
ivanwfr
05/28/14 02:41 PM
v2.0
16kB
bsrealm
05/11/14 08:28 PM
v1.9
15kB
bsrealm
05/06/14 06:48 PM
v1.8
14kB
bsrealm
05/04/14 09:55 PM
v1.7
11kB
bsrealm
04/22/14 01:20 PM
v1.6
11kB
bsrealm
04/20/14 03:03 PM
v1.5
11kB
bsrealm
04/19/14 11:39 PM
v1.5
11kB
bsrealm
04/19/14 11:36 PM
v1.4
11kB
bsrealm
04/18/14 09:00 PM
v1.3
9kB
bsrealm
04/18/14 12:07 AM
v1.2
9kB
bsrealm
04/17/14 10:11 AM
v1.1
9kB
bsrealm
04/16/14 06:12 PM
v1
8kB
bsrealm
04/15/14 09:21 PM


Post A Reply Comment Options
Unread 07/28/21, 01:23 PM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
v2.6.4.7 210728 pre-release on GitHub click here to load from GitHub
- Checked with Update 30 Blackwood (7.0.5): (API 100035)
- 4 - Cloning PRESET AccountWide Character (both ways)
- 3 - Cloning PREVIOUS PRESET CONTENT to EMPTY preset
- 2 - Cloning PREVIOUS PRESET LAYOUT to UNLOCKED preset (red pin)
- 1 - Refactoring Baertram server-namespace patch
Modified option:
Auto-Clone previous-to-empty preset *
Whether to copy the PREVIOUS PRESET LAYOUT or CONTENT when changing CURRENT PRESET
LAYOUT CLONED when selecting a not locked on screen preset (red pin)
CONTENT CLONED when selecting an empty preset

It is now possible to CLONE A PRESET by switching back an forth from ACCOUNT-WIDE to CHARACTER settings.

When activating an UNLOCKED or EMPTY preset, the previously selected will be used as a template.
__________________


ivan

Last edited by ivanwfr : 07/29/21 at 03:52 PM.
Report comment to moderator  
Reply With Quote
Unread 07/27/21, 03:51 PM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
Originally Posted by ivanwfr
I forgot to say that I added a /gqsb logs slash-command to display what has been logged before the chat was ready to print debug messages .. wont work when there is a bug though
I'm using LibDebugLogger + the DebugLogViewer UI for it, it's easier and you are able to share the data very easily with others via siri's oline viewer:

https://sir.insidi.at/or/logviewer/

It also keeps track of other loaded addons, provides a search, and "current UI reload" or "total session" data so you can lookup stuff from previous reloaduis easily.
Last edited by Baertram : 07/27/21 at 03:52 PM.
Report comment to moderator  
Reply With Quote
Unread 07/27/21, 12:10 PM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
I forgot to say that I added a /gqsb logs slash-command to display what has been logged before the chat was ready to print debug messages .. wont work when there is a bug though
__________________


ivan

Last edited by ivanwfr : 07/27/21 at 12:10 PM.
Report comment to moderator  
Reply With Quote
Unread 07/27/21, 12:00 PM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
Hi Baertram
v2.6.4.6 pre-release on GitHub click here to load from GitHub
merging of BAERTRAM migration patch to server namespace
It seem to be working fine for me...

I did not take your optimisation variables yet as I first wanted to point every single patch without all the extra diffs in the way.. will do later when the real change checks OK.

I tried to decouple your code and mine as much as possible as long as we may have to add some more adjustements.

Code:
3455  --.. BAERTRAM --
    1 +--  7 lines: -- flags -------------------------------------
    2 +-- 13 lines: -- removeServerDataOnce ----------------------
    3 +-- 57 lines: -- migrateToServerSVs ------------------------
    4 --..
    5 +-- 18 lines: -- Load_eval_migratedAccountWideToServer -----
    6 +-- 19 lines: -- Load_eval_migratedCharacterToServer -------
    7 +-- 18 lines: -- Load_AccountWideSettings ------------------
    8 +-- 27 lines: -- Load_Character_Settings -------------------
    9 +-- 26 lines: -- Load_SwitchTo_AccountWideSettings ---------
   10 -- INIT
__________________


ivan

Last edited by ivanwfr : 07/29/21 at 03:52 PM.
Report comment to moderator  
Reply With Quote
Unread 07/26/21, 04:49 PM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
Yeah I noticed I had an older code base. Saw your github link too late. And there was none in the addon description (edit: Found it at the top right, was too small ). I've used your most current version from GitHub now as base and made a pull request:
https://github.com/ivanwfr/GQSB/pull/3

As I did not only change the SV part but also improved a few other pointers GitHUb should show you the stuff properly. I used your files and same tabstops. Should be easy to see the diffs.
Posting the code here would be too much/long sorry.

f there is a way to override a previous nil namespace version the way this character-name to the character-ID transition override, I would give it a try.
That's the problem. You can simply "try" to put in the API ZO_SavedVars as the "defaults" param but most likely (in the past at least) it did not work properly as there are functions inside which would be nil as well, or data pointing wrong as this SV table got a structure.

That's why I have created the migration function you will find in my pull request. Should be easy to understand.
It's just taking the data directly from the global table _G["GreymindQuickSlotBarSettings"], without assigning it to ZO_SavedVars first, which was defined in your GreymindQuickSlotBar.txt behind ## SavedVariables. Without any wrapper data and functions, just pure table data!
That's how the SV work. Defined in the txt > available after event_add_on_loaded. ZO_SavedVars just provides "easy tools" to write the @accountName via GetDisplayName() and the characterId via GetCurrentCharacterId() into the tables. But you can do the same manually.

Depending on character or accountwide it uses the "Default" or the "AccountWide" profilename you had specified.
And then it passes this to the settings via ZO_SavedVars again, does a reloadui at event_player_activated (as trying it before does nothing if you login, as it seems). And writes a boolean to the SV tha the migration was done so it does not try to repeat this again and again. Finished.

And if you change the settings after login via slash command or LAM it does the same just with a direct reloadui then.
Last edited by Baertram : 07/26/21 at 07:13 PM.
Report comment to moderator  
Reply With Quote
Unread 07/26/21, 04:25 PM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
Originally Posted by Baertram
Okay I think I found a way to make it work + fixed 1 global leaking variable and added small speedUp pointers for EVENT_MANAGER and WINDOW_MANAGER.
May I sed you a pull request on github? Or shall I upload you a version here?
As I have a very personal code formatting policy (+vim markers) that helps me highlight items based on some situation or work in progress, working on GitHub diffs would not be very friendly for me.

If you found some clean solutions, you can post some [code] here so that those pull-push would all hapen in this forum.

And about your previous post:
The "OLD Settings" thing is not in the v2.6.4.5 pre-release on GitHub.
You start from an older code.
This migration was for v2.4.9.1 in November 2019 and sure, there is no need to support player who are this far behind.

As far as I "need/want" to understand how to cope with Saved variables, I've always planed to stick to using ZO API thus avoiding to call for more trouble than we already have even when complying with this minimal requirement.

If there is a way to override a previous nil namespace version the way this character-name to the character-ID transition override, I would give it a try.

But if for some reason those GQSB USR/Preset/Settings Tables should be tempered with only to patch an API call, I wont do that ... a few hundred hours spent on this addon will have to do unless I have some new functional feature to add. API patching or backstage migration wont get more of my time.
I need the fun/burden factor way above one.
__________________


ivan

Report comment to moderator  
Reply With Quote
Unread 07/26/21, 01:48 PM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
The problem is that if I just add the GetWorldName the old SV will be gone and not migrated. Users will loose their SVs that way!
If you do not want to have that happen you'd have to strip all ZO_SavedVars wrappers and just manually use the global table to add the data, but that would have needed to be done from the beginning or migrated now too.

One question: Is this still needed? I guess it was added for support of old "character name" settings? I guess this can be removed now as ppl who still got that old files should efinately re-configure the addon today, right?

Lua Code:
  1. -- QSB.Settings .. LOAD OLD .. AS FALLBACK FOR NEW {{{
  2.         c("LOADING "..COLOR_4..GetUnitName("player").."|r Character-NAME (OLD Settings)")
  3.  
  4.         --[[
  5.         QSB.Settings = ZO_SavedVars:New(
  6.                 "GreymindQuickSlotBarSettings"
  7.         , QSB.SettingsVersion
  8.         , nil
  9.         , QSB.SettingsDefaults
  10.         , "Default"
  11.         )
  12.         ]]

It currently "always" loads the savedvars into the old structures just to reuse them as defaults for the new characterID settings. I'd strip that and directly use the new characterId now. Makes things less complicated.

But I'd understand if you like to keep it.
I got the settings to work fine including a migration now.
Currently testing on all servers.


Automatic reloadui at event_player_activated;
Data was migrated:
Code:
 ["8796093052231733"] =
            {
                ["$LastCharacterName"] = "Bärtram Bärenfreund",
                ["NA Megaserver"] =
                {
                    ["GameActionButtonHide"] = false,
                    ["Visibility"] = "Never",
                    ["SoundAlert"] = "QUICKSLOT_USE_EMPTY",
                    ["LockUI"] = false,
                    ["Presets"] =
                    {
                        ["P4"] =
                        {
                        },
                        ["P3"] = 
                        {
                        },
                        ["P2"] =
                        {
                        },
                        ["P1"] =
                        {
                        },
                        ["P5"] =
                        {
                        },
                    },
The data is empty as there was no data yet on NA servers so it uses the SV defaults.
Wil test on EU with my characters soon.
Last edited by Baertram : 07/26/21 at 02:22 PM.
Report comment to moderator  
Reply With Quote
Unread 07/26/21, 01:10 PM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
The "operator / is not supported for nil / number" is the result of a non-functional patch with ZO_SavedVars calls.
It has to do with Settings that are not loaded properly

This still works with no error:
Code:
function Load_ZO_SavedVars(accountwide)
    local WorldName = GetWorldName()
    if(accountwide == nil) then
        QSB.AccountWideSettings = ZO_SavedVars:NewAccountWide(
        "GreymindQuickSlotBarSettings" -- savedVariableTable
        , QSB.SettingsVersion          -- version
        , nil                          -- namespace XXX UNSET AS A FALLBACK
        , QSB.SettingsDefaults         -- defaults
        , "AccountWide"                -- profile
        )
    -- override by a call with WorldName namespace
    else
        QSB.AccountWideSettings.SaveAccountWide = accountwide
    end
    if(QSB.AccountWideSettings.SaveAccountWide ) then
        QSB.Settings = ZO_SavedVars:NewAccountWide(
        "GreymindQuickSlotBarSettings" -- savedVariableTable
        , QSB.SettingsVersion          -- version
        , nil                          -- namespace XXX UNSET AS A FALLBACK
        , QSB.SettingsDefaults         -- defaults
        , "AccountWide"                -- profile
        )
    -- override by a call with WorldName namespace
    else
        QSB.Settings = ZO_SavedVars:NewCharacterIdSettings(
        "GreymindQuickSlotBarSettings" -- savedVariableTable
        , QSB.SettingsVersion          -- version
        , nil                          -- namespace XXX UNSET AS A FALLBACK
        , QSB.Settings                 -- defaults
        , "Default"                    -- profile
        )
    -- override by a call with WorldName namespace
    end
end
...and it should work if you find a SIMPLE way to override with the WorldName namespace from those settings.

Simple, because until now, since v1.0 back in 2014, I use to understand everything there is in GreymindQuickSlotBar code.
I don't care for any kind of ZO utility lua code, as this is the best way to question the understanding you have of what is a table or a simple string for that matter... this or using any kind of helping framework you get addicted to as expected.
__________________


ivan

Last edited by ivanwfr : 07/26/21 at 01:11 PM.
Report comment to moderator  
Reply With Quote
Unread 07/26/21, 10:34 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
Okay, will test this as well. The first try was creating subtables at teh character settings having the same subtables again -> Some kind of redundancy ...
I hope the cleanup function I have added fixes this now and it will runn properly once.
Need to add some debug messages and try it on the 3 servers, and will give you feedback with a final working version (or that I gave up ).

Originally Posted by ivanwfr
Hi Baertram,

I hate using those ZO incantations to save a bunch of variables
...hence those missed nil params and the obviously inadequate fallback logic.

For me, this should simply work with implied backward compatibility support!
Playing with tables to handle addons param is a normal thing.
But having to patch tables when the API changes is likely to let me give up.
I need to get and amount of fun to overweight the maintenance burden...

If you are ready to dive into those fussy calls,
I'll take your crafted code for granted as long as soon as I see it working.

I'm going to insert your patch (and give it some thoughts in the process)
and push the next GitHub pre-release...

Thanks again for the time you spend at this
Report comment to moderator  
Reply With Quote
Unread 07/26/21, 10:05 AM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
Hi Baertram,

I hate using those ZO incantations to save a bunch of variables
...hence those missed nil params and the obviously inadequate fallback logic.

For me, this should simply work with implied backward compatibility support!
Playing with tables to handle addons param is a normal thing.
But having to patch tables when the API changes is likely to let me give up.
I need to get and amount of fun to overweight the maintenance burden...

If you are ready to dive into those fussy calls,
I'll take your crafted code for granted as long as soon as I see it working.

I'm going to insert your patch (and give it some thoughts in the process)
and push the next GitHub pre-release...

Thanks again for the time you spend at this
__________________


ivan

Report comment to moderator  
Reply With Quote
Unread 07/26/21, 07:55 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
Originally Posted by ivanwfr
Hi Baertram


I removed the call to /reloadUI in Load_ZO_SavedVars to that a toggling Account-wide Settings from the Settings menu can be checked more easily...
I don't know if everything gets synchronized as it would be by full reload.
You tell me and, if necessary, I will restore this reload before the next release
Thanks I'll try the version. What I see first is that the character settings via NewCharacterIdSettings are not respecting the GetWorldName()?
ou definately should add it there as well then, not only for the account support.

And this here (if( QSB.AccountWideSettings == nil ) then) will ALWAYS ~= nil because you load the QSB.SettingsDefaults in teh upper part ALWAYS to QSB.AccountWideSettings so there always will be a table created as long as QSB.SettingsDefaults is not nil. And even if it is nil it will create a table and thus if( QSB.AccountWideSettings == nil ) then will never be met!
Lua Code:
  1. QSB.AccountWideSettings = ZO_SavedVars:NewAccountWide(
  2.         "GreymindQuickSlotBarSettings" -- savedVariableTable
  3.         , QSB.SettingsVersion          -- version
  4.         , WorldName                    -- namespace
  5.         , QSB.SettingsDefaults         -- defaults
  6.         , "AccountWide"                -- profile
  7.         )                              -- displayName
  8.  
  9.         if( QSB.AccountWideSettings == nil ) then
  10.             QSB.AccountWideSettings = ZO_SavedVars:NewAccountWide(
  11.             "GreymindQuickSlotBarSettings" -- savedVariableTable
  12.             , QSB.SettingsVersion          -- version
  13.             , nil                          -- namespace
  14.             , QSB.SettingsDefaults         -- defaults
  15.             , "AccountWide"                -- profile
  16.             )                              -- displayName
  17.         end

That's what I tried to explain. You need to load the old SVs without GetWorldName() first like normal. Then copy the old data directly from the global table (not from the ZO_SavedVar wrapper!) via ZO_ShallowTableCopy to a new table and use this as the default for the new SVs with GetWorldName()
Do a ReloadUI("ingame") then directly to save the new data to the new SV file structure and then you are set.
Do not copy from the ZO_SavedVars:NewAccountWide of the old data! Only use the _G["GreymindQuickSlotBarSettings"] table with the ["AccountWide"] and [GetDisplayName(] subtables like needed.

Your total SV is somewhat messy there. Copies directly from ZO_SavedVars to ZO_SavedVars taking the overhead of the wrapper with it (char name -> charIds e.g.) and you also have 2 pointers to the same like
if(QSB.AccountWideSettings.SaveAccountWide ) then
QSB.Settings = ZO_SavedVars:NewAccountWide(
where QSB.Settings is exactly what QSB.AccountWideSettings was before.
You ould simply point QSB.Settings = QSB.AccountWideSettings in that case and it should work

I'll try to provide you a file with the changes so that you are able to see what I mean!
Here is the code which should/could work. Please backup your SV before testing:
Lua Code:
  1. --As the base SV including the servername was created already before in function Load_ZO_SavedVars we will remove it here
  2. local function removeServerDataOnce(svTableOld, worldName)
  3.     local copyOfOldSV = ZO_ShallowTableCopy(svTableOld)
  4.     if copyOfOldSV[worldName] ~= nil then copyOfOldSV[worldName] = nil end
  5.     return copyOfOldSV
  6. end
  7.  
  8. local function migrateToServerSVs(useAccountWide)
  9. d(string.format(">>migrateToServerSVs - useAccountWide: %s, settingsGiven: %s", tostring(useAccountWide), tostring(QSB.AccountWideSettings ~= nil)))
  10.     if not QSB.AccountWideSettings then return end
  11.     if useAccountWide == true and not QSB.AccountWideSettings._migratedAcountWideToServerDependent then
  12.         --use account wide
  13.         local oldNoNServerSVAccountWide = _G["GreymindQuickSlotBarSettings"]["AccountWide"][GetDisplayName()]["$AccountWide"]
  14.         local worldName = GetWorldName()
  15.         local copyOfOldSV = removeServerDataOnce(oldNoNServerSVAccountWide, worldName)
  16.         QSB.Settings = ZO_SavedVars:NewAccountWide(
  17.                 "GreymindQuickSlotBarSettings"
  18.         , QSB.SettingsVersion
  19.         , GetWorldName()
  20.         , copyOfOldSV
  21.         , "AccountWide"
  22.         )
  23.         QSB.AccountWideSettings._migratedAcountWideToServerDependent = true
  24. d(">>reloadui account!")
  25.         ReloadUI() --write the new SV to the disk and update the QSB.AccountWideSettings
  26.     elseif useAccountWide == false and not QSB.AccountWideSettings._migratedCharacterToServerDependent then
  27.         --use per character
  28.         local oldNoNServerSVCharacter = _G["GreymindQuickSlotBarSettings"]["Default"][GetDisplayName()]
  29.         local worldName = GetWorldName()
  30.         local copyOfOldSV = removeServerDataOnce(oldNoNServerSVCharacter, worldName)
  31.         QSB.Settings = ZO_SavedVars:NewCharacterIdSettings(
  32.                 "GreymindQuickSlotBarSettings"
  33.         , QSB.SettingsVersion
  34.         , GetWorldName()
  35.         , copyOfOldSV
  36.         , "Default"
  37.         )
  38.         QSB.AccountWideSettings._migratedCharacterToServerDependent = true
  39. d(">>reloadui character!")
  40.         ReloadUI() --write the new SV to the disk and update the QSB.AccountWideSettings
  41.     end
  42. end
  43.  
  44. --}}}
  45. -- Load_ZO_SavedVars {{{
  46. function Load_ZO_SavedVars(value)
  47. --c(COLOR_9.." Load_ZO_SavedVars("..tostring(value)..")")
  48.  
  49.     local changed = (value ~= nil) and QSB_Settings_Changed()
  50.     local WorldName = GetWorldName()
  51.     local migratedAccountWideToServer = true
  52.     local migratedCharacterToServer = true
  53.  
  54.     -- [QSB.AccountWideSettings]
  55.     -- GET/SET {{{
  56.     if(value == nil) then
  57.         QSB.AccountWideSettings = ZO_SavedVars:NewAccountWide(
  58.                 "GreymindQuickSlotBarSettings" -- savedVariableTable
  59.         , QSB.SettingsVersion          -- version
  60.         , WorldName                    -- namespace
  61.         , QSB.SettingsDefaults         -- defaults
  62.         , "AccountWide"                -- profile
  63.         )                              -- displayName
  64.  
  65.         --Only run if value param == nil once: Was the SV migrated already?
  66.         migratedAccountWideToServer = QSB.AccountWideSettings._migratedAcountWideToServerDependent
  67.         migratedCharacterToServer = QSB.AccountWideSettings._migratedCharacterToServerDependent
  68. d(string.format(">SV migration - account: %s, character: %s", tostring(migratedAccountWideToServer), tostring(migratedCharacterToServer)))
  69.     else
  70.         QSB.AccountWideSettings.SaveAccountWide = value
  71.     end
  72.     --}}}
  73.  
  74.     if(QSB.AccountWideSettings.SaveAccountWide ) then
  75.         -- QSB.Settings .. f(AccountWide.SaveAccountWide) {{{
  76.         --:!start explorer "https://wiki.esoui.com/Circonians_Saved_Variables_Tutorial"
  77.         --:!start explorer "https://esodata.uesp.net/100029/data/z/o/_/ZO_SavedVars.NewCharacterIdSettings.html"
  78.         c("LOADING "..COLOR_5.."Account-wide|r Settings")
  79.         --[[
  80.         QSB.Settings = ZO_SavedVars:NewAccountWide(
  81.                 "GreymindQuickSlotBarSettings"
  82.         , QSB.SettingsVersion
  83.         , WorldName
  84.         , QSB.SettingsDefaults
  85.         , "AccountWide"
  86.         )]]
  87.         --They are the same so do not "overload" them with ZO_SavedVars again, just "point" to the table
  88.         QSB.Settings = QSB.AccountWideSettings
  89.  
  90.         if not migratedAccountWideToServer then migrateToServerSVs(true) end
  91.  
  92.         --}}}
  93.     else
  94.         -- QSB.Settings .. LOAD OLD .. AS FALLBACK FOR NEW {{{
  95.         c("LOADING "..COLOR_4..GetUnitName("player").."|r Character-NAME (OLD Settings)")
  96.  
  97.         QSB.Settings = ZO_SavedVars:New(
  98.                 "GreymindQuickSlotBarSettings"
  99.         , QSB.SettingsVersion
  100.         , nil
  101.         , QSB.SettingsDefaults
  102.         , "Default"
  103.         )
  104.  
  105.         --}}}
  106.         -- QSB.Settings .. LOAD NEW .. USE OLD AS DEFAULT {{{
  107.         c("LOADING "..COLOR_3..GetUnitName("player").."|r Character-ID (NEW Settings)")
  108.  
  109.         QSB.Settings = ZO_SavedVars:NewCharacterIdSettings(
  110.                 "GreymindQuickSlotBarSettings"
  111.         , QSB.SettingsVersion
  112.         , WorldName
  113.         --> This is just BAH! ;-) You will copy the overhead that the ZO_SavedVars wrapper added here to the SavedVariables. You should only take the "GreymindQuickSlotBarSettings" table as base and not the ZO_SavedVars created wrapper suff including the functions it provides
  114.         --> Should be a copy of the table containing the character names instead: ZO_ShallowTableCopy(_G[GreymindQuickSlotBarSettings["Default"][GetDisplayName()])
  115.         , QSB.Settings -- defaults to OLD
  116.         , "Default"
  117.         )
  118.  
  119.         if not migratedCharacterToServer then migrateToServerSVs(false) end
  120.  
  121.         --}}}
  122.     end
  123.  
  124.     -- [Loaded_QSB_Settings] {{{
  125.     if(value == nil) then
  126. --c("ROOTING: "..COLOR_2.." Loaded_QSB_Settings")
  127.  
  128.         Loaded_QSB_Settings = DeepCopy(QSB.Settings)
  129.     --}}}
  130.     -- [QSB_ReloadUI] or [Refresh] .. f(changed) {{{
  131.     else
  132.         if( changed ) then
  133. c(COLOR_2.." GQSB RELOADING\n"..COLOR_2..tostring(changed))
  134.  
  135.             zo_callLater(QSB_ReloadUI, 3000)
  136.         else
  137.             Rebuild_LibAddonMenu()
  138.  
  139.             loadPresetSlots()
  140.             zo_callLater(QSB_SetCurrentQuickslot_handler, 500)
  141.             Refresh("Load_ZO_SavedVars")
  142.         end
  143.     end
  144.     --}}}
  145. end

Works similar like your's.
The major problem here is that the worldname should be at the level where the "AccountWide" or "Default" profile is used by your savedvars.
It's currently moving it further down below that and thus some data seems to be missing, or at least it's hard to see them at a glance inside the files and tables ingame.
And this will make a kind of redundant loop of the character data -> EU megaserver -> character data -> EU megaserver -> and so on


Edit:
After first test this happens every here and there after the game was loaded with the new version (before 1st reloadui)
Code:
user:/AddOns/GreymindQuickSlotBar/GreymindQuickSlotBar.lua:2427: operator / is not supported for nil / number
|rstack traceback:
user:/AddOns/GreymindQuickSlotBar/GreymindQuickSlotBar.lua:2427: in function 'Refresh_handler'
|caaaaaa<Locals> log_this = F, tasks_pending = F, preset_delayed = F, preset_pending = F, preset_locked = F, inventory_showing = F, quickslot_showing = F, r = 0, g = 0, b = 0, slot_settings = [table:1]{ShowNumbers = F, HideSlotBackground = F, QuantityLabelPositionHorizontal = "Right", NotSelectedButtonOpacity = 30, QuantityLabelPositionVertical = "Bottom", OverlayButtonOpacity = 30, QuantityWarning = 10, ShowKeyBindings = F, LinkToChatOnClick = T, VisualCue = "Off", KeyBindAlignV = "Top", ShowQuantityLabels = T, KeyBindAlignH = "Left", QuantityAlert = 5}, buttonSize = 36, button_font = "EsoUI/Common/Fonts/univers57.o...", x = -9, y = -9, hAlign = "Left", vAlign = "Top", row = 0, col = 1, color = [table:2]{G = 0, A = 0.6, B = 0, R = 0} </Locals>|r
EsoUI/Libraries/Globals/globalapi.lua:227: in function '(anonymous)'
Last edited by Baertram : 07/26/21 at 09:36 AM.
Report comment to moderator  
Reply With Quote
Unread 07/25/21, 01:41 PM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
Hi Baertram
v2.6.4.5 pre-release on GitHub
Using GetWorldName to load SavedVariables
I removed the call to /reloadUI in Load_ZO_SavedVars to that a toggling Account-wide Settings from the Settings menu can be checked more easily...
I don't know if everything gets synchronized as it would be by full reload.
You tell me and, if necessary, I will restore this reload before the next release
__________________


ivan

Report comment to moderator  
Reply With Quote
Unread 07/25/21, 08:57 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
Could you please add server support to the SavedVariables using GetWorldName() as e.g. 3rd parameter of ZO_SavedVars.
Lua Code:
  1. QSB.AccountWideSettings = ZO_SavedVars:NewAccountWide(
  2.         "GreymindQuickSlotBarSettings" -- savedVariableTable
  3.         , QSB.SettingsVersion          -- version
  4.         , GetWorldName() -- namespace = servername e.g. "NA Megaserver"
  5.         , QSB.SettingsDefaults         -- defaults
  6.         , "AccountWide"                -- profile
  7.         )
Be aware that adding this won't load the current SV anymore! So you need to migrate it somehow by e.g. a normal login with old SVs, check if the new sv's with servername are already given or not. If not: Copy them via local copyOfSv = ZO_ShallowTableCopy(_G["GreymindQuickSlotBarSettings"]["AccountWide"][GetDispalyName()])
and then use copyOfSv as default value (param 4) of ZO_SavedVars so that it will be copied over to your new SV data.
You could also invent a new table GreymindQuickSlotBarSettings_Server and add that to the txt file's ## SavedVariables: and use these for the server dependent SVs.
This way you can check if they were migrated and delete the old non-server dependent ones afterwards.

Or at least change the settings to properly work for characters. It's annoying that when I change e.g. the character "Baertram" on "EU Megaserver" my other charatcer "Baertram Bärenfreund" on "NA Megaserver" gets the savedvars altered as well.
Not sure how this work,s maybe the characterId is indentical on the different servers.
Or you got a bug somewhere which uses kind of standard values for both?

The current situation makes it difficult as I always have to opc yover different SV files for the different servers

BTW, I hate those tricks where devs think its a good idea to turn something like a name into some jargon so that it's not a name anymore but a tricky bundle that will bite you sooner or later
Yeah, at least they provide a clear api for it and it works fine if you stick to that.
And you also need to remember you are not alone on this earth and there are many language and grammar spoken/used. English is simple, others are not. So this method here is quite easy and as long as you follow "their rules" via zo_strformat all is okay.
Just would be nice if this was mentioned somewhere properly in their api documentation.
Last edited by Baertram : 07/25/21 at 09:04 AM.
Report comment to moderator  
Reply With Quote
Unread 07/10/21, 09:18 AM  
ivanwfr

Forum posts: 4
File comments: 418
Uploads: 0
Originally Posted by Baertram
Please use ZO_CachedStrFormat or zo_strformat (with <<C:1>>) on all of the functions where you show chat messages/on screen alerts including the quickslotted item names.
Else it will contain the gender suffix ^ns, or ^n etc.
As I never saw those compound names using the default language,
I guess it only shows when internationalization is involved...
As I display item links in the chat, I used this formating patch only with ZO_Alert popup messages.
You tell me if you see those string packages in other occasions.
v2.6.4.4 pre-release on GitHub
Using ZO_CachedStrFormat to cleanup ZO compound names
BTW, I hate those tricks where devs think its a good idea to turn something like a name into some jargon so that it's not a name anymore but a tricky bundle that will bite you sooner or later
__________________


ivan

Last edited by ivanwfr : 07/10/21 at 09:19 AM.
Report comment to moderator  
Reply With Quote
Unread 07/10/21, 07:25 AM  
Baertram
 
Baertram's Avatar
AddOn Author - Click to view AddOns

Forum posts: 3608
File comments: 4426
Uploads: 68
Please use ZO_CachedStrFormat or zo_strformat (with <<C:1>>) on all of the functions where you show chat messages/on screen alerts including the quickslotted item names.
Else it will contain the gender suffix ^ns, or ^n etc.:
Code:
You're out of 'Goldküsten-Kriegerelixier^ns' in your inventory, it won't be in this quickslot preset [P2] anymore
This should be fixed via using e.g.
Lua Code:
  1. local nameClean = ZO_CachedStrFormat("<<C:1>>", quickslottedItemName)

Applies to about all inventory items, character names, display names, map names, zone names etc. in the game and should always be "cleaned" that way.
If you do not want to hardcode the "<<C:1>>" you could also use the string constant id that Zos uses to clean the character name:
SI_UNIT_NAME
Last edited by Baertram : 07/10/21 at 07:26 AM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: