Download
(17 Kb)
Download
Updated: 10/15/23 02:46 AM
Pictures
File Info
Compatibility:
Endless Archive (9.2.5)
Updated:10/15/23 02:46 AM
Created:06/27/14 12:58 PM
Monthly downloads:39,161
Total downloads:3,323,819
Favorites:1,765
MD5:
LibGPS  Popular! (More than 5000 hits)
Version: 3.3.2
by: sirinsidiator, votan
Have you ever tried to save or send a position on the map with your addon? You might have noticed that this is not as easy as it sounds.
This library efficiently converts a position on any map into a global position that you can save or share. This is made possible by measuring maps once when they are encountered for the first time during a play session and only doing simple calculations afterwards.

Dependencies
Make sure to install the following required libraries in order to use LibGPS.


Quick Start
Add the necessary statements in your addon manifest to load the files:
Code:
## DependsOn: LibGPS>=30
NOTE: The >=30 tells the game to require AddOnVersion 30 or greater, which happens to be the first version with the 3.0 API and has nothing to do with the semantic version. It is simply a build number provided by the build script used to package the library.

In order to use the library you have to get an instance from the global variable:
Code:
local gps = LibGPS3
Next you can convert a position on the currently active map into a global position on the Tamriel map by calling LocalToGlobal.
For example you can convert the local player position into a global position with the following line of code:
Code:
local x, y = gps:LocalToGlobal(GetMapPlayerPosition("player"))
The resulting x and y can be saved, sent or whatever else you want to do with it.
NOTE: For some locations the global coordinates can be outside the bounds for normalized coordinates, for example Coldharbour has negative x coordinates as it is to the left of Tamriel in the global coordinate space.

After you have loaded or received a global position you just need to call GlobalToLocal to get the position on the current map.
Code:
local x, y = gps:GlobalToLocal(x, y)


Migrating from LibGPS2
LibGPS3 offers full backwards compatibility to LibGPS2 (see compatibility.lua), but it's still highly recommended to migrate to the new API.
In order to use the new API, simply access the library via the "LibGPS3" global variable instead of "LibGPS2" or LibStub.
Most functions stayed the same between v2 and v3, but there are a few breaking changes. The following list shows how to migrate those cases.

Renamed functions
Some function names have been changed to better reflect the return value.
  • ClearCurrentMapMeasurements -> ClearCurrentMapMeasurement
  • GetCurrentMapMeasurements -> GetCurrentMapMeasurement
  • CalculateMapMeasurements -> CalculateMapMeasurement

Measurement object
GetCurrentMapMeasurement now returns an object with some convenience methods instead of a plain table. See the description below in the API reference for details on what it can do.

LocalToGlobal
The mapIndex return value has been removed as our understanding of what a map is has changed and it was deemed unnecessary for most use cases.
If you still need it, you can use GetCurrentMapMeasurement() to fetch the measurement object and retrieve it from there.

ZoneToGlobal
This method was used a long time ago to offer a way to migrate LibGPS1 coordinates. Since then it has become effectivly unnecessary and only causes confusion. As such it has been removed without replacement.

PanToMapPosition
This has become easily possible via ingame functionality since the time it was initially added to the library. Simply use "ZO_WorldMap_GetPanAndZoom():PanToNormalizedPosition(x, y)" instead.

OnLibGPS2MeasurementChanged callback
There is now a constant LIB_EVENT_STATE_CHANGED for the callback name, which should be used instead of the plain string.



API Reference
Here is a complete list of the functionality that is provided by LibGPS:

IsReady
Returns true as long as the player exists.
Code:
lib:IsReady()
IsMeasuring
Returns true if the library is currently doing any measurements.
Code:
lib:IsMeasuring()
ClearMapMeasurements
Removes all cached measurement values.
Code:
lib:ClearMapMeasurements()
ClearCurrentMapMeasurement
Removes the cached measurement for the map that is currently active.
Code:
lib:ClearCurrentMapMeasurement()
GetCurrentMapMeasurement
Returns a measurement object for the active map or nil if the measurement could not be calculated for some reason.
See the description of the Measurement object for details.
Code:
Measurement measurement = lib:GetCurrentMapMeasurement()
GetMapMeasurementByMapId
Returns a measurement object for the requested map id or nil if the measurement could not be calculated for some reason.
See the description of the Measurement object for details.
Code:
Measurement measurement = lib:GetMapMeasurementByMapId(mapId)
GetCurrentMapParentZoneIndices
Returns the mapIndex, zoneIndex and zoneId of the parent zone for the currently set map.
Code:
number mapIndex, number zoneIndex, number zoneId = lib:GetCurrentMapParentZoneIndices()
CalculateMapMeasurement
Calculates the measurement for the current map and all parent maps.
This method does nothing if there is already a cached measurement for the active map.
Returns a boolean to indicate if the measurement was successful and a SetMapResultCode indicating if the map has changed independently of the actual result of the measurement.
Code:
boolean isSuccess, SetMapResultCode result = lib:CalculateMapMeasurement()
LocalToGlobal
Converts the given map coordinates on the current map into coordinates on the Tamriel map.
Returns x and y on the world map or nil if the measurements of the active map are not available.
Code:
number x, number y = lib:LocalToGlobal(number x, number y)
GlobalToLocal
Converts the given global coordinates into a position on the active map.
Returns x and y on the current map or nil if the measurements of the active map are not available.
Code:
number x, number y = lib:GlobalToLocal(number x, number y)
SetPlayerChoseCurrentMap
This function sets the current map as player chosen so it won't snap back to the previous map.
Code:
lib:SetPlayerChoseCurrentMap()
SetMapToRootMap
Sets the best matching root map on the given global position: Tamriel, Cold Harbour or Clockwork City and what ever will come.
Returns SET_MAP_RESULT_FAILED, SET_MAP_RESULT_MAP_CHANGED depending on the result of the API calls.
Code:
SetMapResultCode result = lib:SetMapToRootMap(number globalX, number globalY)
MapZoomInMax
Repeatedly calls ProcessMapClick on the given global position starting on the root map (using the function above) until nothing more would happen.
Returns SET_MAP_RESULT_FAILED, SET_MAP_RESULT_MAP_CHANGED or SET_MAP_RESULT_CURRENT_MAP_UNCHANGED depending on the result of the API calls.
Code:
SetMapResultCode result = lib:MapZoomInMax(number globalX, number globalY)
PushCurrentMap
This function stores information about how to return to the current map on a stack.
Code:
lib:PushCurrentMap()
PopCurrentMap
Switches to the last map that was put on the stack.
Returns SET_MAP_RESULT_FAILED, SET_MAP_RESULT_MAP_CHANGED or SET_MAP_RESULT_CURRENT_MAP_UNCHANGED depending on the result of the API calls.
Code:
SetMapResultCode result = lib:PopCurrentMap()
GetCurrentWorldSize
Returns the current size of Tamriel in world-units.
Code:
number scale = lib:GetCurrentWorldSize()
GetLocalDistanceInMeters
Returns the distance in meters of given local coords.
Code:
number distance = lib:GetLocalDistanceInMeters(number lx1, number ly1, number lx2, number ly2)
GetGlobalDistanceInMeters
Returns the distance in meters of given global coords.
Code:
number distance = lib:GetGlobalDistanceInMeters(number gx1, number gy1, number gx2, number gy2)
GetWorldGlobalRatio
Returns how much greater the level is compared to its size on the map.
Code:
number ratio = lib:GetWorldGlobalRatio()
GetGlobalWorldRatio
Returns how much smaller global scaled values must be to fit the current level.
Code:
number ratio = lib:GetGlobalWorldRatio()
lib.LIB_EVENT_STATE_CHANGED
This callback is fired on the global CALLBACK_MANAGER when a map measurement begins or ends and passes the same value as lib:IsMeasuring().
If you have a custom handler for player waypoints in EVENT_MAP_PING you may want to ignore these events while a measurement is active.
Code:
CALLBACK_MANAGER:RegisterCallback(lib.LIB_EVENT_STATE_CHANGED, function(boolean isMeasuring) end)


Measurement
This object returned by GetCurrentMapMeasurement() contains all the data about a map measurement and offers some convenience functions to interact with them.

GetId
Returns a unique id for the measurement which is used to store it in the saved variables. Details are implementation specific and may change between versions.
Code:
local id = measurement:GetId()
GetMapIndex
Returns the mapIndex or nil if the measured map doesn't have one.
Code:
local mapIndex = measurement:GetMapIndex()
GetZoneId
Returns the zoneId for the measurement. Keep in mind that a map can have multiple zoneIds within its borders and a zoneId can also span multiple maps.
Code:
local zoneId = measurement:GetZoneId()
GetScale
Returns the scale in the global coordinate space for the current map.
Code:
local scaleX, scaleY = measurement:GetScale()
GetOffset
Returns the offset in the global coordinate space for the current map.
Code:
local offsetX, offsetY = measurement:GetOffset()
IsValid
Returns true if the measurement contains valid data.
Code:
local valid = measurement:IsValid()
ToGlobal
Converts and returns global coordinates for a given local coordinate pair. Used by LocalToGlobal.
Code:
local gx, gy = measurement:ToGlobal(x, y)
ToLocal
Converts and returns local coordinates for a given global coordinate pair. Used by GlobalToLocal.
Code:
local x, y = measurement:ToLocal(gx, gy)
GetCenter
Returns the center of the measured map as global coordinates.
Code:
local cx, cy = measurement:GetCenter()
Contains
Returns true if the given global coordinates are inside the measured map.
Code:
local inside = measurement:Contains(gx, gy)
version 3.3.2:
- API bump for U40.
- Handle ingame missing map bug in GetLocalDistanceInMeters().

version 3.3.1:
- Fixed typo. Thanks to @M-ree.
- Fixed missing parameter. Thanks to @HansK.
- Better "sub-zone without own map" handling.

version 3.3.0 - votan
Update for Necrom:
  • New extra dimension: Aphocrypha.
  • Better world size calculation.
  • Replaced GetPlayerPosition with GetNormalizedPositionFromWorld where possible to get around the "frozen" positions.
  • No need to persist world size measurements. One variable file less to load and save.
  • Fixed sub-zones without own map, but different world scale.
  • Removed unused code: WaypointManager.

version 3.2.0 - sirinsidiator
  • Added new api to GetMeasurementByMapId (#17, thanks Thal-J!)
  • Updated API version in manifest

version 3.1.0 - votan
  • Update to API 101032.
  • Use GetUniversallyNormalizedMapInfo.
  • New root maps: Fargrave and Deathlands.

version 3.0.3 - sirinsidiator & votan
  • Fixed nil error in some locations
  • Fixed incorrect world size in some locations

version 3.0.2 - sirinsidiator & votan
  • Added hook for SetMapToMapId
  • Fixed some problems regarding Blackreach
  • Simplified some internal code utilizing new API functions
  • Updated API version in manifest

version 3.0.1 - sirinsidiator
  • Added hook for SetMapToDigSitePosition (#10, thanks Shinni!)
  • Fixed compatibility assertion when LibStub is not loaded

version 3.0.0 - sirinsidiator & votan
  • Updated code structure and split it into multiple files
  • Changed saved variable format to be more compact
  • Switched to semantic versioning
  • Switched to LibDebugLogger and LibChatMessage for debug and chat output respectively
    • NOTE: Make sure you have them installed separately!
  • Introduced a new API v3 and added compatibility layer for LibGPS2 ->
    • NOTE: Check the migration guide on the description tab to see what has changed and how to switch to the new API
  • Added experimental support for calculating distances in world space
    • NOTE: Let us know if you find any problems
  • Fixed some bugs and introduced new ones
  • Updated API version in manifest


version 2.0 r21 - sirinsidiator
  • Reverted a change that would cause measurements to be incorrect in combination with mini map addons
    • NOTE: Persisted measurements will be wiped automatically

version 2.0 r20 - sirinsidiator
  • Fixed error when LibStub is not loaded

version 2.0 r19 - sirinsidiator
  • Fixed version updates for persistent measurements not working correctly in some cases
  • Fixed ClearMapMeasurements not removing persistent data
  • Fixed map measurements producing illegal values when the player pin is near the world origin for some reason, which could result in inaccurate measurements or even errors on load.
    • NOTE: The error will still show up on the first load after updating the library, but should be gone after that

version 2.0 r18 - votan
  • Persist measurements. Do not do them on every (re-)load again.
  • API version update.
  • Hook SetMapToAutoMapNavigationTargetPosition, too.
  • LibMapPing not bundled anymore.

version 2.0 r17 - votan
  • Update to API 100027 "Elsweyr".

version 2.0 r16 - sirinsidiator
  • fixed error due to renamed methods in Murkmire

version 2.0 r15 - votan
  • Handling the new zone "Artaeum".

version 2.0 r14 - votan
  • Fixed MapZoomInMax. Now working for Cold Harbour and Clockwork City aswell.
  • New function SetMapToRootMap(x, y) using global coordinates to choose the right root map.
  • LibMapPing rev 6
    • Fixed map ping events can cause wrong waypoint/rally pins in combination with addons changing the current map.

version 2.0 r13 - votan
  • Fixed issue with missing waypoint pin, if addons use different revisions. Thanks to @babylon.
  • Fully compatible with Morrowind+, now.
  • Restore pan & zoom after measurement as well.

version 2.0 r12 - votan
  • Handling the new zone "Clockwork City".

version 2.0 r11 - votan
  • Fixed issue, which was fixed in rev9 and lost in rev10, again. e.g. "Show on Map"
  • Update API version in manifest
  • Make use of new API functions to get pin manager and pan to location.

version 2.0 r10 - sirinsidiator
  • added new method GetCurrentMapParentZoneIndices
  • update API version in manifest

version 2.0 r9 - votan
  • Fixed issue with maps like "Blackwood Borderlands".
  • update API version in manifest

version 2.0 r8 - sirinsidiator
  • updated LibMapPing to r5
  • update API version in manifest

version 2.0 r7.1 - sirinsidiator
  • fixed issue in PopCurrentMap where it would throw an error on some maps

version 2.0 r7a - sirinsidiator
  • updated the bundled LibMapPing to r4
  • no other changes

version 2.0 r7 - sirinsidiator
  • fixed player waypoints not showing on the map in some cases
  • removed some compatibility code for old API

version 2.0 r6 - sirinsidiator
  • Prepared library for API version 100014
  • Improved measurement algorithm for better addon compatibility
  • Added LibMapPing to handle silent setting of map pings
    • Note: This is a required dependency and you need to include it in your addon and load it before LibGPS
  • Added two new functions PushCurrentMap and PopCurrentMap to handle returning to a previous map

version 2.0 r5.4 - votan
  • Fixed muting waypoint click sound can get stucked. (you need to place the waypoint more times until it is working again)
  • Hooked ProcessClick to get map measurement while clicking down to a (sub-)zone already.

version 2.0 r5.3 - votan
  • Restore player waypoint correctly. Broken since ESO 2.2.5???

version 2.0 r5.2 - votan
  • New functions IsReady() and IsMeasuring()
  • Earlier initialization: LibGPS is ready at player activation.

version 2.0 r5.1 - votan
  • New origin map location detection does not use localized names (GetMapName, GetPlayerLocationName) anymore. Instead working with SetMapToPlayerLocation. Thanks to circonian for inspiring idea.

version 2.0 r5 - votan
  • Origin map location detection: isPlayerLocation uses in-string search and exception list.
  • Hook all SetMapTo* functions, for a deterministic last action
Both changes hopefully fixing problems with dungeons.

version 2.0 r4.3 - votan
  • Fixed map measurement for dungeons like "The Harborage".
  • Removed code for API 100011.

version 2.0 r4.2 - votan
  • Fix for recent changes to EVENT_MAP_PING behavior. (Update 7)

version 2.0 r4.1 - votan
  • Fixed minor bug with Transitus Shrine of alliance base: Depending on when LibGPS does its measurement, you got locked to the alliance base subzone, because map navigation is disabled while interacting with a Transitus Shrine.

version 2.0 r4 - votan
  • ESO 2.1 API 100012 ready
  • Event name is public now: lib.LIB_EVENT_STATE_CHANGED
  • Fixing issue if near a wayshrine sub-zone: Map was not detected as current player location
  • For devs: new switch to enable debug: lib.debugMode = 1

version 2.0 r3 - votan
  • Rewrote calculation of map measurements to get rid of using zo_callLater to prevend timing issues
  • Introduced new event callback to get notified when measurement starts and ends

version 2.0.1 - sirinsidiator
features
  • updated to latest API version

version 2.0 - sirinsidiator
features
  • rewrote calculation of map measurements to be more robust and efficient fixing many cases where calculations where not working as intended
  • changed library to use real global positions (tamriel coordinates)
  • added counter measure against a bug in the game where the waypoint is lost when entering or leaving some dungeons
  • fixed libGPS interfering with manually changing the map to one that has not been measured yet
  • changed how the waypoint sounds are muted to prevent the whole UI from being muted permanently in some cases
  • added error messages with attached debug information that can be copied to clipboard
  • split off CalculateCurrentMapMeasurements function from GetCurrentMapMeasurements
  • added ZoneToGlobal function to convert from old global coordinates to new format
  • added ClearCurrentMapMeasurements function to clear measurements of only the current map
  • added PanToMapPosition function which allows to pan to any position on the current map
  • added MapZoomInMax function which zooms in as far as possible (map wise) for a given global position
  • added SetPlayerChoseCurrentMap function which allows you to set the current map as player chosen, thus preventing the map from automatically snapping back.

version 1.0.1 - sirinsidiator
features
  • renamed zoneIndex to mapIndex to avoid confusion (thanks Garkin)
Optional Files (0)


Archived Files (40)
File Name
Version
Size
Uploader
Date
3.3.1
17kB
votan
08/26/23 07:01 AM
3.3.0
16kB
votan
05/17/23 12:51 PM
3.2.0
18kB
sirinsidiator
06/06/22 02:02 PM
3.1.0
18kB
votan
10/02/21 11:38 AM
3.0.3
18kB
sirinsidiator
11/11/20 06:00 AM
3.0.2
18kB
sirinsidiator
11/09/20 11:50 AM
3.0.1
18kB
sirinsidiator
04/25/20 11:44 AM
3.0.0
18kB
sirinsidiator
04/24/20 03:36 AM
2.0 r21
11kB
sirinsidiator
02/28/20 04:10 PM
2.0 r20
11kB
sirinsidiator
02/27/20 01:51 PM
2.0 r19
11kB
sirinsidiator
02/26/20 03:26 PM
2.0_r18
11kB
votan
01/11/20 04:23 PM
r17
20kB
sirinsidiator
05/15/19 01:15 PM
r16
28kB
sirinsidiator
09/19/18 10:48 AM
r15
19kB
votan
04/29/18 01:35 PM
r14
19kB
votan
11/07/17 12:25 PM
r13
19kB
votan
10/08/17 09:52 AM
r12
19kB
votan
09/29/17 11:32 AM
r11
19kB
sirinsidiator
02/13/17 12:57 PM
r10
19kB
sirinsidiator
01/28/17 01:49 PM
r9
18kB
votan
09/30/16 11:04 AM
r8
19kB
sirinsidiator
07/14/16 02:47 PM
r7.1
18kB
sirinsidiator
04/24/16 12:55 PM
r7a
18kB
sirinsidiator
03/19/16 09:00 AM
r7
18kB
sirinsidiator
03/14/16 10:45 AM
r6
18kB
sirinsidiator
02/20/16 11:43 AM
2.0 r5.4
11kB
votan
12/06/15 02:53 PM
2.0 r5.3
11kB
votan
11/25/15 03:10 PM
2.0 r5.2
11kB
votan
11/08/15 09:24 AM
2.0 r5.1
11kB
votan
10/01/15 10:56 AM
2.0 r5
11kB
votan
09/19/15 07:39 AM
2.0 r4.3
10kB
votan
09/06/15 01:39 AM
2.0 r4.2
10kB
votan
08/30/15 12:13 PM
2.0 r4.1
10kB
votan
08/21/15 11:03 AM
2.0 r4
10kB
votan
08/13/15 01:05 PM
2.0 r3
8kB
votan
04/23/15 12:33 PM
2.0.1
7kB
sirinsidiator
08/06/14 09:14 AM
2.0
7kB
sirinsidiator
07/30/14 01:58 PM
1.0.1
3kB
sirinsidiator
06/28/14 06:44 AM
1.0
3kB
sirinsidiator
06/27/14 12:58 PM


Post A Reply Comment Options
Unread 11/10/20, 02:08 PM  
orcashow

Forum posts: 1
File comments: 20
Uploads: 0
Re: Re: Error after updating

The error looks to be fixed on the EHT side. Make sure to get that updated.

Quoted from EHT Commets:
"Update 15.8.6 should resolve the LibGPS compatibility error
Please update to version 15.8.6 when possible as this should resolve the LibGPS compatibility error that appeared today. My apologies for this resolution taking the better part of the day - I just saw these comments as I was returning home from work. Please let us know if you have any questions or continue to experience any other issues."
Report comment to moderator  
Reply With Quote
Unread 11/10/20, 12:37 PM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1576
File comments: 1126
Uploads: 41
Re: Error after updating

Originally Posted by Duir
So first off, I am not using EHT.

Logged in without issue but got this zoning into Coldharbour to do main quest on alt.
Had no issues prior to updating to LibGPS v3.0.2 just before logging in today.

Code:
user:/AddOns/LibGPS/TamrielOMeter.lua:274: attempt to index a nil value
stack traceback:
user:/AddOns/LibGPS/TamrielOMeter.lua:274: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1]{measuring = T, unitZoneId = 381}, mapId = "Art/maps/coldharbor/coldharbou...", localX = -1.5095400810242, localY = -0.1621470451355, adapter = [table:2]{}, wpX = -1.4619232416153, wpY = -0.11453025788069, measurementPositions = [table:3]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 23, zoneId = 347, scaleX = 0.1680075055265, scaleY = 0.16800800248223, offsetX = -0.18332112288097, offsetY = 0.14525000380043, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 23, rootMapId = "Art/maps/coldharbor/coldharbou..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 23, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/clockwork/clockwork_b...", localX = -2.9764742851257, localY = -4.2167181968689, adapter = [table:2], wpX = -2.9364202022552, wpY = -4.176664352417, measurementPositions = [table:4]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 31, zoneId = 980, scaleX = 0.19972961148578, scaleY = 0.19973117239491, offsetX = 0.15755486617948, offsetY = 0.96021807175839, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 31, rootMapId = "Art/maps/clockwork/clockwork_b..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 31, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/summerset/artaeum_bas...", localX = -5.3326106071472, localY = 1.1581263542175, adapter = [table:2], wpX = -5.295747756958, wpY = 1.1212632656097, measurementPositions = [table:5]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.11000800132751, mapIndex = 33, zoneId = 1027, scaleX = 0.21702028923642, scaleY = 0.21701928984898, offsetX = 0.72034950996219, offsetY = -0.13332775630886, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 33, rootMapId = "Art/maps/summerset/artaeum_bas..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 33, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/skyrim/blackreachworl...", localX = -6.4679017066956, localY = -8.6441307067871, adapter = [table:2], wpX = -6.4169039726257, wpY = -8.5931329727173, measurementPositions = [table:6]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 24, zoneId = 0, scaleX = 1.7517943313121, scaleY = 1.7517897347212, offsetX = -0.38632805929938, offsetY = -0.38296676541723, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 40, rootMapId = "Art/maps/skyrim/blackreachworl..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 40, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/coldharbor/wailingpri...", localX = 0.10189189016819, localY = 0.34324324131012, adapter = [table:2], wpX = 1.0027928352356, wpY = 1.2441442012787, measurementPositions = [table:7]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 1, zoneId = 809, scaleX = 0.0088799844799169, scaleY = 0.0088800008733272, offsetX = -0.43783998478943, offsetY = 0.11496000235622, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:191: in function 'TamrielOMeter:CalculateMapMeasurement'
|caaaaaa<Locals> self = [table:1], returnToInitialMap = T, adapter = [table:2], mapId = "Art/maps/coldharbor/wailingpri...", localX = 0.10189189016819, localY = 0.34324324131012, waypointManager = [table:8]{x = 0, playerX = 0, suppressCount = 5, y = 0, playerY = 0}, hasWaypoint = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/coldharbor/wailingpri..." </Locals>|r
user:/AddOns/LibGPS/compatibility.lua:81: in function 'lib:LocalToGlobal'
|caaaaaa<Locals> self = [table:9]{LIB_EVENT_STATE_CHANGED = "OnLibGPSMeasurementChanged"}, x = 0.10189189016819, y = 0.34324324131012 </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Main/MapTools.lua:110: in function 'MapTools:GetViewedMapMetaDataAndPlayerGlobalPosition'
|caaaaaa<Locals> self = [table:10]{lastMapTexture = "Art/maps/coldharbor/wailingpri...", lastMap = "coldharbor/wailingprison1_base..."}, localX = 0.10189189016819, localY = 0.34324324131012, heading = 4.7819933891296 </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/MapPins.lua:390: in function 'MapPins:PinTypeRefreshCallback'
|caaaaaa<Locals> self = [table:11]{lastViewedY = 4162.43, currentMap = "auridon/vulkhelguard_base", visibleDistance = 300, lastViewedX = 2497.52}, validMapMode = F, validMinimapMode = [table:12]{zoomMode = "subZoneZoom", scale = 0.75, cameraAngleRad = 0, limitedScale = 0.8, cameraAngle = 0, name = "VotansMiniMap", lastTitleFont = "BOLD_FONT", isSpecialZoom = F} </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/MapPins.lua:228: in function 'PIN_CALLBACKS'
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/QuickPins.lua:401: in function 'lib:RedrawPinsOfPinType'
|caaaaaa<Locals> self = [table:13]{numRequestedPins = 0, maxZoom = 4.428, initialized = T, minZoom = 1, numCreatedPins = 22, MAP_WIDTH = 1280, MAP_HEIGHT = 1280}, pinType = 0 </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/QuickPins.lua:377: in function 'lib.RedrawPins'
|caaaaaa<Locals> pinType = 0, callback = user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/MapPins.lua:228 </Locals>|r
EsoUI/Libraries/Utility/ZO_Hook.lua:18: in function 'ZO_WorldMap_UpdateMap'
EsoUI/Ingame/Map/WorldMap.lua:5034: in function 'callback'
EsoUI/Libraries/Utility/ZO_CallbackObject.lua:116: in function 'ZO_CallbackObject:FireCallbacks'
|caaaaaa<Locals> self = [table:14]{fireCallbackDepth = 1}, eventName = "OnWorldMapChanged", registry = [table:15]{}, callbackInfoIndex = 22, callbackInfo = [table:16]{3 = F}, callback = EsoUI/Ingame/Map/WorldMap.lua:5028, deleted = F </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:4640: in function '(anonymous)'
Neither votan nor me can reproduce the issue. Could you please provide some additional steps and pm me your LibDebugLogger.lua (simply upload it here, click share and send me the link)?
Report comment to moderator  
Reply With Quote
Unread 11/10/20, 01:40 AM  
Duir

Forum posts: 6
File comments: 15
Uploads: 0
Error after updating

So first off, I am not using EHT.

Logged in without issue but got this zoning into Coldharbour to do main quest on alt.
Had no issues prior to updating to LibGPS v3.0.2 just before logging in today.

Code:
user:/AddOns/LibGPS/TamrielOMeter.lua:274: attempt to index a nil value
stack traceback:
user:/AddOns/LibGPS/TamrielOMeter.lua:274: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1]{measuring = T, unitZoneId = 381}, mapId = "Art/maps/coldharbor/coldharbou...", localX = -1.5095400810242, localY = -0.1621470451355, adapter = [table:2]{}, wpX = -1.4619232416153, wpY = -0.11453025788069, measurementPositions = [table:3]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 23, zoneId = 347, scaleX = 0.1680075055265, scaleY = 0.16800800248223, offsetX = -0.18332112288097, offsetY = 0.14525000380043, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 23, rootMapId = "Art/maps/coldharbor/coldharbou..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 23, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/clockwork/clockwork_b...", localX = -2.9764742851257, localY = -4.2167181968689, adapter = [table:2], wpX = -2.9364202022552, wpY = -4.176664352417, measurementPositions = [table:4]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 31, zoneId = 980, scaleX = 0.19972961148578, scaleY = 0.19973117239491, offsetX = 0.15755486617948, offsetY = 0.96021807175839, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 31, rootMapId = "Art/maps/clockwork/clockwork_b..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 31, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/summerset/artaeum_bas...", localX = -5.3326106071472, localY = 1.1581263542175, adapter = [table:2], wpX = -5.295747756958, wpY = 1.1212632656097, measurementPositions = [table:5]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.11000800132751, mapIndex = 33, zoneId = 1027, scaleX = 0.21702028923642, scaleY = 0.21701928984898, offsetX = 0.72034950996219, offsetY = -0.13332775630886, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 33, rootMapId = "Art/maps/summerset/artaeum_bas..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 33, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/skyrim/blackreachworl...", localX = -6.4679017066956, localY = -8.6441307067871, adapter = [table:2], wpX = -6.4169039726257, wpY = -8.5931329727173, measurementPositions = [table:6]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 24, zoneId = 0, scaleX = 1.7517943313121, scaleY = 1.7517897347212, offsetX = -0.38632805929938, offsetY = -0.38296676541723, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:145: in function 'TamrielOMeter:TryCalculateRootMapMeasurement'
|caaaaaa<Locals> self = [table:1], rootMapIndex = 40, rootMapId = "Art/maps/skyrim/blackreachworl..." </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:290: in function 'TamrielOMeter:FindRootMapMeasurementForCoordinates'
|caaaaaa<Locals> self = [table:1], x = -0.43693518638611, y = 0.11800800263882, rootMapIndex = 40, measurement = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:273: in function 'TamrielOMeter:CalculateMeasurementsInternal'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/coldharbor/wailingpri...", localX = 0.10189189016819, localY = 0.34324324131012, adapter = [table:2], wpX = 1.0027928352356, wpY = 1.2441442012787, measurementPositions = [table:7]{}, x1 = -0.43693518638611, y1 = 0.11800800263882, x2 = -0.42893519997597, y2 = 0.12600800395012, mapIndex = 1, zoneId = 809, scaleX = 0.0088799844799169, scaleY = 0.0088800008733272, offsetX = -0.43783998478943, offsetY = 0.11496000235622, wZoneId = 809, pwx = 2662 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:191: in function 'TamrielOMeter:CalculateMapMeasurement'
|caaaaaa<Locals> self = [table:1], returnToInitialMap = T, adapter = [table:2], mapId = "Art/maps/coldharbor/wailingpri...", localX = 0.10189189016819, localY = 0.34324324131012, waypointManager = [table:8]{x = 0, playerX = 0, suppressCount = 5, y = 0, playerY = 0}, hasWaypoint = F </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
|caaaaaa<Locals> self = [table:1], mapId = "Art/maps/coldharbor/wailingpri..." </Locals>|r
user:/AddOns/LibGPS/compatibility.lua:81: in function 'lib:LocalToGlobal'
|caaaaaa<Locals> self = [table:9]{LIB_EVENT_STATE_CHANGED = "OnLibGPSMeasurementChanged"}, x = 0.10189189016819, y = 0.34324324131012 </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Main/MapTools.lua:110: in function 'MapTools:GetViewedMapMetaDataAndPlayerGlobalPosition'
|caaaaaa<Locals> self = [table:10]{lastMapTexture = "Art/maps/coldharbor/wailingpri...", lastMap = "coldharbor/wailingprison1_base..."}, localX = 0.10189189016819, localY = 0.34324324131012, heading = 4.7819933891296 </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/MapPins.lua:390: in function 'MapPins:PinTypeRefreshCallback'
|caaaaaa<Locals> self = [table:11]{lastViewedY = 4162.43, currentMap = "auridon/vulkhelguard_base", visibleDistance = 300, lastViewedX = 2497.52}, validMapMode = F, validMinimapMode = [table:12]{zoomMode = "subZoneZoom", scale = 0.75, cameraAngleRad = 0, limitedScale = 0.8, cameraAngle = 0, name = "VotansMiniMap", lastTitleFont = "BOLD_FONT", isSpecialZoom = F} </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/MapPins.lua:228: in function 'PIN_CALLBACKS'
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/QuickPins.lua:401: in function 'lib:RedrawPinsOfPinType'
|caaaaaa<Locals> self = [table:13]{numRequestedPins = 0, maxZoom = 4.428, initialized = T, minZoom = 1, numCreatedPins = 22, MAP_WIDTH = 1280, MAP_HEIGHT = 1280}, pinType = 0 </Locals>|r
user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/QuickPins.lua:377: in function 'lib.RedrawPins'
|caaaaaa<Locals> pinType = 0, callback = user:/AddOns/HarvestMap/Modules/HarvestMap/Pins/MapPins.lua:228 </Locals>|r
EsoUI/Libraries/Utility/ZO_Hook.lua:18: in function 'ZO_WorldMap_UpdateMap'
EsoUI/Ingame/Map/WorldMap.lua:5034: in function 'callback'
EsoUI/Libraries/Utility/ZO_CallbackObject.lua:116: in function 'ZO_CallbackObject:FireCallbacks'
|caaaaaa<Locals> self = [table:14]{fireCallbackDepth = 1}, eventName = "OnWorldMapChanged", registry = [table:15]{}, callbackInfoIndex = 22, callbackInfo = [table:16]{3 = F}, callback = EsoUI/Ingame/Map/WorldMap.lua:5028, deleted = F </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:4640: in function '(anonymous)'
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 06:42 PM  
Frompa

Forum posts: 3
File comments: 32
Uploads: 0
having a similar error after updating libGPS. reinstalled eht both through minion once and manually once, error still happens. it only started after updating libGPS

this happens when i jump into any zone:

bad argument #1 to 'pairs' (table/struct expected, got nil)
stack traceback:
[C]: in function 'pairs'
user:/AddOns/EssentialHousingTools/EssentialHousingToolsSaver/EssentialHousingToolsSaver.lua:231: in function 'S.Archive.CreateArchive'
|caaaaaa<Locals> es = [table:1]{}, esData = [table:2]{} </Locals>|r
user:/AddOns/EssentialHousingTools/EssentialHousingToolsSaver/EssentialHousingToolsSaver.lua:388: in function 'S.Archive.AutoCreateArchive'
|caaaaaa<Locals> loggingOut = F, hasReset = F </Locals>|r
EsoUI/Libraries/Globals/globalapi.lua:216: in function '(anonymous)'

this happens when i first load into the game:

EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
stack traceback:
EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
|caaaaaa<Locals> newWidth = 690, newHeight = 708 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
|caaaaaa<Locals> self = [table:1]{canZoomOutFurther = F, reachedTargetOffset = T, minZoom = 1, currentNormalizedZoom = 0, allowPanPastMapEdge = F, canZoomInFurther = T, mapMax = 5, maxZoom = 5, mapMin = 1}, normalizedZoom = 0 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
|caaaaaa<Locals> self = [table:1], zoom = 0 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
|caaaaaa<Locals> self = [table:2]{}, mapStack = [table:3]{}, data = [table:4]{1 = 1}, adapter = [table:5]{}, meter = [table:6]{unitZoneId = 0, measuring = T}, mapId = 1, zoom = 0, offsetX = 0, offsetY = 0, result = 2 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
|caaaaaa<Locals> self = [table:6], returnToInitialMap = T, adapter = [table:5], mapId = "Art/maps/Glenumbra/glenumbra_b...", localX = 1.4733247756958, localY = 1.7058130502701, waypointManager = [table:7]{x = 0, playerX = 0, suppressCount = 1, y = 0, playerY = 0}, hasWaypoint = F, mapIndex = 2 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
|caaaaaa<Locals> self = [table:6], mapId = "Art/maps/Glenumbra/glenumbra_b..." </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
|caaaaaa<Locals> result = 2 </Locals>|r
user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'
|caaaaaa<Locals> round = user:/AddOns/EssentialHousingTools/effects.lua:3, RAD5 = 0.087266462599716, RAD15 = 0.26179938779915, RAD30 = 0.5235987755983, RAD45 = 0.78539816339745, RAD90 = 1.5707963267949, RAD180 = 3.1415926535898, RAD270 = 4.7123889803847, RAD360 = 6.2831853071796, RADGL_LOW = 1.5673056682909, RADGL_HIGH = 1.5742869852989, GOLDEN = 1.6180339887499, bit = user:/AddOns/EssentialHousingTools/utilities.lua:24, hasbit = user:/AddOns/EssentialHousingTools/utilities.lua:28, setbit = user:/AddOns/EssentialHousingTools/utilities.lua:32, clearbit = user:/AddOns/EssentialHousingTools/utilities.lua:36, BIT1 = 1, BIT2 = 2, BIT4 = 4, BIT8 = 8 </Locals>|r
Last edited by Frompa : 11/09/20 at 06:50 PM.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 05:15 PM  
Synozeer

Forum posts: 0
File comments: 27
Uploads: 0
Originally Posted by Pyrelle
Originally Posted by M-ree
Originally Posted by sirinsidiator
Did you try what EHT suggests and reinstall it? Because this looks like it is caused due to EHT not being installed correctly. If it still happens after you reinstalled EHT, you'll have to provide more information (like which zone you are in or what you were doing) so I can reproduce the problem on my end.
Any zone, in fact, it gives the error on load wherever you are:

EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
stack traceback:
EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
|caaaaaa<Locals> newWidth = 690, newHeight = 708 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
|caaaaaa<Locals> self = [table:1]{allowPanPastMapEdge = F, minZoom = 1, mapMin = 1, reachedTargetOffset = T, mapMax = 5, canZoomInFurther = T, canZoomOutFurther = F, maxZoom = 5, currentNormalizedZoom = 0}, normalizedZoom = 0 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
|caaaaaa<Locals> self = [table:1], zoom = 0 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
|caaaaaa<Locals> self = [table:2]{}, mapStack = [table:3]{}, data = [table:4]{1 = 1}, adapter = [table:5]{}, meter = [table:6]{unitZoneId = 0, measuring = T}, mapId = 1, zoom = 0, offsetX = 0, offsetY = 0, result = 2 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
|caaaaaa<Locals> self = [table:6], returnToInitialMap = T, adapter = [table:5], mapId = "Art/maps/Glenumbra/glenumbra_b...", localX = 5.0652527809143, localY = 1.6290481090546, waypointManager = [table:7]{suppressCount = 1, y = 0, x = 0, playerY = 0, playerX = 0}, hasWaypoint = F, mapIndex = 2 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
|caaaaaa<Locals> self = [table:6], mapId = "Art/maps/Glenumbra/glenumbra_b..." </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
|caaaaaa<Locals> result = 2 </Locals>|r
user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'
|caaaaaa<Locals> round = user:/AddOns/EssentialHousingTools/effects.lua:3, RAD5 = 0.087266462599716, RAD15 = 0.26179938779915, RAD30 = 0.5235987755983, RAD45 = 0.78539816339745, RAD90 = 1.5707963267949, RAD180 = 3.1415926535898, RAD270 = 4.7123889803847, RAD360 = 6.2831853071796, RADGL_LOW = 1.5673056682909, RADGL_HIGH = 1.5742869852989, GOLDEN = 1.6180339887499, bit = user:/AddOns/EssentialHousingTools/utilities.lua:24, hasbit = user:/AddOns/EssentialHousingTools/utilities.lua:28, setbit = user:/AddOns/EssentialHousingTools/utilities.lua:32, clearbit = user:/AddOns/EssentialHousingTools/utilities.lua:36, BIT1 = 1, BIT2 = 2, BIT4 = 4, BIT8 = 8 </Locals>|r
Yeah, same issue here. Any zone I go to this pops up.
Same here.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 04:44 PM  
Pyrelle

Forum posts: 8
File comments: 12
Uploads: 0
Originally Posted by M-ree
Originally Posted by sirinsidiator
Did you try what EHT suggests and reinstall it? Because this looks like it is caused due to EHT not being installed correctly. If it still happens after you reinstalled EHT, you'll have to provide more information (like which zone you are in or what you were doing) so I can reproduce the problem on my end.
Any zone, in fact, it gives the error on load wherever you are:

EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
stack traceback:
EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
|caaaaaa<Locals> newWidth = 690, newHeight = 708 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
|caaaaaa<Locals> self = [table:1]{allowPanPastMapEdge = F, minZoom = 1, mapMin = 1, reachedTargetOffset = T, mapMax = 5, canZoomInFurther = T, canZoomOutFurther = F, maxZoom = 5, currentNormalizedZoom = 0}, normalizedZoom = 0 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
|caaaaaa<Locals> self = [table:1], zoom = 0 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
|caaaaaa<Locals> self = [table:2]{}, mapStack = [table:3]{}, data = [table:4]{1 = 1}, adapter = [table:5]{}, meter = [table:6]{unitZoneId = 0, measuring = T}, mapId = 1, zoom = 0, offsetX = 0, offsetY = 0, result = 2 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
|caaaaaa<Locals> self = [table:6], returnToInitialMap = T, adapter = [table:5], mapId = "Art/maps/Glenumbra/glenumbra_b...", localX = 5.0652527809143, localY = 1.6290481090546, waypointManager = [table:7]{suppressCount = 1, y = 0, x = 0, playerY = 0, playerX = 0}, hasWaypoint = F, mapIndex = 2 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
|caaaaaa<Locals> self = [table:6], mapId = "Art/maps/Glenumbra/glenumbra_b..." </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
|caaaaaa<Locals> result = 2 </Locals>|r
user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'
|caaaaaa<Locals> round = user:/AddOns/EssentialHousingTools/effects.lua:3, RAD5 = 0.087266462599716, RAD15 = 0.26179938779915, RAD30 = 0.5235987755983, RAD45 = 0.78539816339745, RAD90 = 1.5707963267949, RAD180 = 3.1415926535898, RAD270 = 4.7123889803847, RAD360 = 6.2831853071796, RADGL_LOW = 1.5673056682909, RADGL_HIGH = 1.5742869852989, GOLDEN = 1.6180339887499, bit = user:/AddOns/EssentialHousingTools/utilities.lua:24, hasbit = user:/AddOns/EssentialHousingTools/utilities.lua:28, setbit = user:/AddOns/EssentialHousingTools/utilities.lua:32, clearbit = user:/AddOns/EssentialHousingTools/utilities.lua:36, BIT1 = 1, BIT2 = 2, BIT4 = 4, BIT8 = 8 </Locals>|r
Yeah, same issue here. Any zone I go to this pops up.

Can confirm switching back to Version 3.0.1 results in no errors.
Last edited by Pyrelle : 11/09/20 at 05:20 PM.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 04:32 PM  
M-ree

Forum posts: 2
File comments: 510
Uploads: 0
Originally Posted by sirinsidiator
Did you try what EHT suggests and reinstall it? Because this looks like it is caused due to EHT not being installed correctly. If it still happens after you reinstalled EHT, you'll have to provide more information (like which zone you are in or what you were doing) so I can reproduce the problem on my end.
Any zone, in fact, it gives the error on load wherever you are:

EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
stack traceback:
EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
|caaaaaa<Locals> newWidth = 690, newHeight = 708 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
|caaaaaa<Locals> self = [table:1]{allowPanPastMapEdge = F, minZoom = 1, mapMin = 1, reachedTargetOffset = T, mapMax = 5, canZoomInFurther = T, canZoomOutFurther = F, maxZoom = 5, currentNormalizedZoom = 0}, normalizedZoom = 0 </Locals>|r
EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
|caaaaaa<Locals> self = [table:1], zoom = 0 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
|caaaaaa<Locals> self = [table:2]{}, mapStack = [table:3]{}, data = [table:4]{1 = 1}, adapter = [table:5]{}, meter = [table:6]{unitZoneId = 0, measuring = T}, mapId = 1, zoom = 0, offsetX = 0, offsetY = 0, result = 2 </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
|caaaaaa<Locals> self = [table:6], returnToInitialMap = T, adapter = [table:5], mapId = "Art/maps/Glenumbra/glenumbra_b...", localX = 5.0652527809143, localY = 1.6290481090546, waypointManager = [table:7]{suppressCount = 1, y = 0, x = 0, playerY = 0, playerX = 0}, hasWaypoint = F, mapIndex = 2 </Locals>|r
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
|caaaaaa<Locals> self = [table:6], mapId = "Art/maps/Glenumbra/glenumbra_b..." </Locals>|r
(tail call): ?
user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
|caaaaaa<Locals> result = 2 </Locals>|r
user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'
|caaaaaa<Locals> round = user:/AddOns/EssentialHousingTools/effects.lua:3, RAD5 = 0.087266462599716, RAD15 = 0.26179938779915, RAD30 = 0.5235987755983, RAD45 = 0.78539816339745, RAD90 = 1.5707963267949, RAD180 = 3.1415926535898, RAD270 = 4.7123889803847, RAD360 = 6.2831853071796, RADGL_LOW = 1.5673056682909, RADGL_HIGH = 1.5742869852989, GOLDEN = 1.6180339887499, bit = user:/AddOns/EssentialHousingTools/utilities.lua:24, hasbit = user:/AddOns/EssentialHousingTools/utilities.lua:28, setbit = user:/AddOns/EssentialHousingTools/utilities.lua:32, clearbit = user:/AddOns/EssentialHousingTools/utilities.lua:36, BIT1 = 1, BIT2 = 2, BIT4 = 4, BIT8 = 8 </Locals>|r
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 02:59 PM  
ajaxcat1

Forum posts: 0
File comments: 37
Uploads: 0
same error as others

I'm not sure what clean install of previous version is when using minion but I downloaded the previous one from here and extracted and then just pasted it over the 3.02 libgps and eht worked fine. (this was after multiple reinstalls if eht ofc)
Last edited by ajaxcat1 : 11/09/20 at 03:00 PM.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 02:02 PM  
Aran5000

Forum posts: 0
File comments: 30
Uploads: 0
Hi, I am getting the same issues with EHT. Tried a couple of re-installs but still problems. I am in Vivec and get the following when I start the game........................
EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
stack traceback:
EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
(tail call): ?
(tail call): ?
user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
(tail call): ?
user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
(tail call): ?
user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'

The next text is after I dismiss error.............

bad argument #1 to 'pairs' (table/struct expected, got nil)
stack traceback:
[C]: in function 'pairs'
user:/AddOns/EssentialHousingTools/EssentialHousingToolsSaver/EssentialHousingToolsSaver.lua:231: in function 'S.Archive.CreateArchive'
user:/AddOns/EssentialHousingTools/EssentialHousingToolsSaver/EssentialHousingToolsSaver.lua:388: in function 'S.Archive.AutoCreateArchive'
EsoUI/Libraries/Globals/globalapi.lua:216: in function '(anonymous)'

Can confirm also, that after clean insall of 3.0.1 all works fine again
Last edited by Aran5000 : 11/09/20 at 02:16 PM.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 01:48 PM  
HowellQagan
 
HowellQagan's Avatar

Forum posts: 11
File comments: 437
Uploads: 0
Yep, I did and it doesn't do anything. It only went away when I did a clean revert to LibGPS 3.0.1.

edit: I'm in the Thieves Den.
thievesguild, current subzone: safehouse_base, map tile texture name: art/maps/thievesguild/safehouse_base, zoneId: 821, parentZoneId: 816, zoneIndex: 447, parentZoneIndex: 442

edit2: it's certainly EHT causing it, if I rip it out completely, it doesn't happen. I have no idea why though.

edit3: EHT seems to be calling LibGPS (with "LibGPS2"...) and LibMapPing via LibStub in mapcast.lua still but even after kicking LibStub out and replacing its call with LibGPS3 simply, it still doesn't work with 3.0.2.

Originally Posted by sirinsidiator
Did you try what EHT suggests and reinstall it? Because this looks like it is caused due to EHT not being installed correctly. If it still happens after you reinstalled EHT, you'll have to provide more information (like which zone you are in or what you were doing) so I can reproduce the problem on my end.
Last edited by HowellQagan : 11/09/20 at 02:13 PM.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 01:34 PM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1576
File comments: 1126
Uploads: 41
Originally Posted by HowellQagan
Hey,

3.0.2 makes my game freak out.

Lua Code:
  1. EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
  2. stack traceback:
  3. EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
  4. <Locals> newWidth = 690, newHeight = 708 </Locals>
  5. EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
  6. <Locals> self = [table:1]{allowPanPastMapEdge = F, maxZoom = 5, reachedTargetOffset = T, minZoom = 1, mapMin = 1, mapMax = 5, canZoomInFurther = T, canZoomOutFurther = F, currentNormalizedZoom = 0}, normalizedZoom = 0 </Locals>
  7. EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
  8. <Locals> self = [table:1], zoom = 0 </Locals>
  9. (tail call): ?
  10. user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
  11. <Locals> self = [table:2]{}, mapStack = [table:3]{}, data = [table:4]{1 = 1}, adapter = [table:5]{}, meter = [table:6]{unitZoneId = 0, measuring = T}, mapId = 1, zoom = 0, offsetX = 0, offsetY = 0, result = 2 </Locals>
  12. (tail call): ?
  13. user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
  14. <Locals> self = [table:6], returnToInitialMap = T, adapter = [table:5], mapId = "Art/maps/Glenumbra/glenumbra_b...", localX = 1.4929074048996, localY = 1.5065023899078, waypointManager = [table:7]{suppressCount = 1, x = 0, playerY = 0, y = 0, playerX = 0}, hasWaypoint = F, mapIndex = 2 </Locals>
  15. user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
  16. <Locals> self = [table:6], mapId = "Art/maps/Glenumbra/glenumbra_b..." </Locals>
  17. (tail call): ?
  18. user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
  19. <Locals> result = 2 </Locals>
  20. user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'
  21. <Locals> round = user:/AddOns/EssentialHousingTools/effects.lua:3, RAD5 = 0.087266462599716, RAD15 = 0.26179938779915, RAD30 = 0.5235987755983, RAD45 = 0.78539816339745, RAD90 = 1.5707963267949, RAD180 = 3.1415926535898, RAD270 = 4.7123889803847, RAD360 = 6.2831853071796, RADGL_LOW = 1.5673056682909, RADGL_HIGH = 1.5742869852989, GOLDEN = 1.6180339887499, bit = user:/AddOns/EssentialHousingTools/utilities.lua:24, hasbit = user:/AddOns/EssentialHousingTools/utilities.lua:28, setbit = user:/AddOns/EssentialHousingTools/utilities.lua:32, clearbit = user:/AddOns/EssentialHousingTools/utilities.lua:36, BIT1 = 1, BIT2 = 2, BIT4 = 4, BIT8 = 8 </Locals>

At first I thought it might be because there are different versions bundled with other addons (PvPAlerts and MapCoordinates) but after deleting those it still pops up.

EHT also prints this in my chat:


Reverting to 3.0.1 fixes it.
Did you try what EHT suggests and reinstall it? Because this looks like it is caused due to EHT not being installed correctly. If it still happens after you reinstalled EHT, you'll have to provide more information (like which zone you are in or what you were doing) so I can reproduce the problem on my end.
Report comment to moderator  
Reply With Quote
Unread 11/09/20, 12:43 PM  
HowellQagan
 
HowellQagan's Avatar

Forum posts: 11
File comments: 437
Uploads: 0
Hey,

3.0.2 makes my game freak out.

Lua Code:
  1. EsoUI/Ingame/Map/WorldMap.lua:2232: attempt to index a nil value
  2. stack traceback:
  3. EsoUI/Ingame/Map/WorldMap.lua:2232: in function 'SetMapWindowSize'
  4. <Locals> newWidth = 690, newHeight = 708 </Locals>
  5. EsoUI/Ingame/Map/WorldMap.lua:2661: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoomInternal'
  6. <Locals> self = [table:1]{allowPanPastMapEdge = F, maxZoom = 5, reachedTargetOffset = T, minZoom = 1, mapMin = 1, mapMax = 5, canZoomInFurther = T, canZoomOutFurther = F, currentNormalizedZoom = 0}, normalizedZoom = 0 </Locals>
  7. EsoUI/Ingame/Map/WorldMap.lua:2648: in function 'ZO_MapPanAndZoom:SetCurrentNormalizedZoom'
  8. <Locals> self = [table:1], zoom = 0 </Locals>
  9. (tail call): ?
  10. user:/AddOns/LibGPS/MapStack.lua:54: in function 'MapStack:Pop'
  11. <Locals> self = [table:2]{}, mapStack = [table:3]{}, data = [table:4]{1 = 1}, adapter = [table:5]{}, meter = [table:6]{unitZoneId = 0, measuring = T}, mapId = 1, zoom = 0, offsetX = 0, offsetY = 0, result = 2 </Locals>
  12. (tail call): ?
  13. user:/AddOns/LibGPS/TamrielOMeter.lua:201: in function 'TamrielOMeter:CalculateMapMeasurement'
  14. <Locals> self = [table:6], returnToInitialMap = T, adapter = [table:5], mapId = "Art/maps/Glenumbra/glenumbra_b...", localX = 1.4929074048996, localY = 1.5065023899078, waypointManager = [table:7]{suppressCount = 1, x = 0, playerY = 0, y = 0, playerX = 0}, hasWaypoint = F, mapIndex = 2 </Locals>
  15. user:/AddOns/LibGPS/TamrielOMeter.lua:128: in function 'TamrielOMeter:GetCurrentMapMeasurement'
  16. <Locals> self = [table:6], mapId = "Art/maps/Glenumbra/glenumbra_b..." </Locals>
  17. (tail call): ?
  18. user:/AddOns/LibGPS/MapAdapter.lua:43: in function 'SetMapToMapListIndex'
  19. <Locals> result = 2 </Locals>
  20. user:/AddOns/EssentialHousingTools/effects.lua:29505: in function '(main chunk)'
  21. <Locals> round = user:/AddOns/EssentialHousingTools/effects.lua:3, RAD5 = 0.087266462599716, RAD15 = 0.26179938779915, RAD30 = 0.5235987755983, RAD45 = 0.78539816339745, RAD90 = 1.5707963267949, RAD180 = 3.1415926535898, RAD270 = 4.7123889803847, RAD360 = 6.2831853071796, RADGL_LOW = 1.5673056682909, RADGL_HIGH = 1.5742869852989, GOLDEN = 1.6180339887499, bit = user:/AddOns/EssentialHousingTools/utilities.lua:24, hasbit = user:/AddOns/EssentialHousingTools/utilities.lua:28, setbit = user:/AddOns/EssentialHousingTools/utilities.lua:32, clearbit = user:/AddOns/EssentialHousingTools/utilities.lua:36, BIT1 = 1, BIT2 = 2, BIT4 = 4, BIT8 = 8 </Locals>

At first I thought it might be because there are different versions bundled with other addons (PvPAlerts and MapCoordinates) but after deleting those it still pops up.

EHT also prints this in my chat:
WARNING!
Essential Housing Tools is not installed properly.
This can happen sometimes if Minion crashes or is installing an update as you log in.
Please do NOT delete your Saved Variables
but please REINSTALL the add-on itself
and then type /reloadui or restart your game.
Reverting to 3.0.1 fixes it.
Report comment to moderator  
Reply With Quote
Unread 09/01/20, 01:20 PM  
Casualgamer307

Forum posts: 0
File comments: 2
Uploads: 0
Re: Re: what am I doing wrong?

Originally Posted by Shinni
Originally Posted by Casualgamer307
Apparently, according to skyshards dependency issue, LibGPS and MapPing are disabled, then LibGPS says dependency, out of date while the rest of the addons say out of date. Tried "allow out of date" addons, didnt work so, did I install the mods in the wrong place?

Installed in Username/Documents/Elderscrolls online/live/addons/Minion-backups/ESO-1
If the installation paths not the issue (installed all the mods via Minion), do I need to edit certain manifests?
No rush on replying hard working sirinsidiator and votan
It should be in Username/Documents/Elderscrolls online/live/addons
If you nest it too deep inside other folders (ie Minion-backups/ESO-1) then eso is not able to find the library.
Also when it says "dependency" in the addon list then it also displays which addons/libraries are missing when you click on the details. So make sure all those are installed.

edit:
Two extra levels is the maximum. So Minion-backups/ESO-1 should be fine when you install libraries directly. But if another addon has their libraries bundled, then eso won't be able to find them because they are buried too deep.
Moved the stuff to just plain Addons, seems to have fixed the problem
Report comment to moderator  
Reply With Quote
Unread 08/31/20, 02:27 PM  
Shinni
AddOn Author - Click to view AddOns

Forum posts: 167
File comments: 550
Uploads: 22
Re: what am I doing wrong?

Originally Posted by Casualgamer307
Apparently, according to skyshards dependency issue, LibGPS and MapPing are disabled, then LibGPS says dependency, out of date while the rest of the addons say out of date. Tried "allow out of date" addons, didnt work so, did I install the mods in the wrong place?

Installed in Username/Documents/Elderscrolls online/live/addons/Minion-backups/ESO-1
If the installation paths not the issue (installed all the mods via Minion), do I need to edit certain manifests?
No rush on replying hard working sirinsidiator and votan
It should be in Username/Documents/Elderscrolls online/live/addons
If you nest it too deep inside other folders (ie Minion-backups/ESO-1) then eso is not able to find the library.
Also when it says "dependency" in the addon list then it also displays which addons/libraries are missing when you click on the details. So make sure all those are installed.

edit:
Two extra levels is the maximum. So Minion-backups/ESO-1 should be fine when you install libraries directly. But if another addon has their libraries bundled, then eso won't be able to find them because they are buried too deep.
Last edited by Shinni : 08/31/20 at 02:53 PM.
Report comment to moderator  
Reply With Quote
Unread 08/31/20, 10:23 AM  
Casualgamer307

Forum posts: 0
File comments: 2
Uploads: 0
what am I doing wrong?

Apparently, according to skyshards dependency issue, LibGPS and MapPing are disabled, then LibGPS says dependency, out of date while the rest of the addons say out of date. Tried "allow out of date" addons, didnt work so, did I install the mods in the wrong place?

Installed in Username/Documents/Elderscrolls online/live/addons/Minion-backups/ESO-1
If the installation paths not the issue (installed all the mods via Minion), do I need to edit certain manifests?
No rush on replying hard working sirinsidiator and votan
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.