ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   General Authoring Discussion (https://www.esoui.com/forums/forumdisplay.php?f=174)
-   -   A plea to ZOS (https://www.esoui.com/forums/showthread.php?t=6440)

kerb9729 08/02/16 11:49 AM

A plea to ZOS
 
Dear ZOS API devs,

I'd love to be able to code my addon so that if I take a break for 6 months, it keeps working as new zones are added.

Please give us a way to query the zones accessible to a player. Currently I hardcode some zone ids, which makes extra work when new zones are added because I need to update my addon when new content is added to keep it working.

Currently we can halfway achieve this with GetNumZonesForDifficultyLevel and GetCadwellZoneInfo
However, DLC zones aren't included, so must be hard coded.
The beginner zones are not included, either. I don't so much mind hardcoding those because they are unlikely to change.

Hopefully I'm overlooking something and one of the experienced addon authors will tell me "Just do it this way, stupid!"
but if not, please consider my request. Thank you.

Signed: An addon dev with not enough free time who could really use a way to query a list of zones available/accessible to a character

Ayantir 08/02/16 12:44 PM

There's a guy which add things in wiki.

http://wiki.esoui.com/Maps
http://wiki.esoui.com/Zones

I could help.

ZOS_ChipHilseberg 08/02/16 01:56 PM

Can you give me an example of the API function you'd like to see added?

votan 08/02/16 02:00 PM

There are the functions:
* GetZoneIndex(*integer* _zoneId_)
** _Returns:_ *luaindex* _zoneIndex_

* GetZoneId(*luaindex* _zoneIndex_)
** _Returns:_ *integer* _zoneId_

* GetZoneNameByIndex(*luaindex* _zoneIndex_)
** _Returns:_ *string* _zoneName_

* GetUnitZoneIndex(*string* _unitTag_)
** _Returns:_ *luaindex:nilable* _zoneIndex_

for example:
local zoneId = GetZoneId(GetUnitZoneIndex("player"))

zoneId is promised to be more stable than zoneIndex.

sirinsidiator 08/02/16 02:15 PM

and a mapping between ZoneId/Index and MapId/Index would also be great

kerb9729 08/03/16 10:05 AM

After thinking about it some more, I'm modifying my request =P

Example:
One of my guildmates is in a zone which has zoneid 1234

If I can't access (fast travel to) that zone for whatever reason, I want to filter this guildmate from my list of possible fast travel destinations.


A function like:
isZoneUnlocked(zoneid)

or something similar which returns a boolean would do everything I need.

The TLDR:
Currently I make a list of major accessible zones and filter what my addon displays based on that list.
But creating the list is problematic without hardcoding. If I had a function such as the one above, I wouldn't need to make a list at all. Well technically I guess it's a dictionary. But you get the point.

In case someone did need to create a list of zones, (and assuming there aren't gaps in zoneids), then at least a function like

getMaxZoneId()

would be helpful.

Ayantir 08/03/16 10:38 AM

You have


GetUnitAlliance() , GetGuildMemberCharacterInfo() , GetFriendCharacterInfo() to known alliance

Then :

GetCadwellProgressionLevel() for base zones

Then for DLC :

Quote:

Originally Posted by Ayantir (Post 26541)

491 - SoH
306 - Dark brotherhood
254 - Thieves Guild
215 - Orsinium
154 - Imperial City

List : http://wiki.esoui.com/Collectibles

For the list :
Lua Code:
  1. local name, _, numCollectibles, unlockedCollectibles, _, _, collectibleCategoryType = GetCollectibleCategoryInfo(COLLECTIBLE_CATEGORY_TYPE_DLC)
  2.  
  3. for i=1, numCollectibles do
  4.     local collectibleId = GetCollectibleId(COLLECTIBLE_CATEGORY_TYPE_DLC, nil, i)
  5.     local collectibleName, _, _, _, unlocked = GetCollectibleInfo(collectibleId) -- Will return true or false. If the user unlocked throught ESO+ without buying DLC it will return true.
  6.     d("DLC ".. collectibleName .. "( ".. collectibleId .. ") unlocked : " .. tostring(unlocked))
  7. end

Edit : there is also dungeons you can't go in, look at the Zones page on esoui wiki. this include trials, dungeons and group dungeons in craglorn too.

kerb9729 08/12/16 05:38 PM

Thank you Ayantir

How was teh zone list at http://wiki.esoui.com/Zones generated?

Ayantir 08/12/16 06:32 PM

Lua Code:
  1. for zoneIndex = 1, 9999 do
  2.     local zoneName = GetZoneNameByIndex(zoneIndex)
  3.     if zoneName ~= "" then
  4.         GLOBAL_DUMPER[zoneIndex] = zoneName
  5.     end
  6. end

PS: You should not use zoneIndex as they move at each DLC, but zoneId. You have few functions to get zoneId from zoneIndex and viceversa. (generally 2/3 index of public playable zones are moved)

kerb9729 08/19/16 12:16 PM

I was playing around with this today, and I find that GetZoneIndex returns "1" for

Gold Coast (zoneid 518)
Hew's Bane (zoneid 512)
Craglorn (zoneid 352)
Khenarthi's Roost (zoneid 293)

and quite a few others actually.

For some zones, it returns a number like you'd expect.

I'm calling bug.

Ayantir 09/03/16 07:22 AM

Quote:

Originally Posted by kerb9729 (Post 28133)
I was playing around with this today, and I find that GetZoneIndex returns "1" for

Gold Coast (zoneid 518)
Hew's Bane (zoneid 512)
Craglorn (zoneid 352)
Khenarthi's Roost (zoneid 293)

and quite a few others actually.

For some zones, it returns a number like you'd expect.

I'm calling bug.

While doing the 100017 dump, I looked at this. In fact , it's working as intended.
If the zoneId don't have a zoneIndex, it returns 1.

You have the complete list of zoneId on http://wiki.esoui.com/Zones now.

zoneId which exists without zoneIndex link are listed as ID_WITHOUT_INDEX.
PS: I've added the #1 but in fact, it should not, it's the dummy value.


Lua Code:
  1. [1] = "ID_WITHOUT_INDEX",
  2.     [2] = "ID_WITHOUT_INDEX",
  3.     [4] = "ID_WITHOUT_INDEX",
  4.     [5] = "ID_WITHOUT_INDEX",
  5.     [6] = "ID_WITHOUT_INDEX",
  6.     [7] = "ID_WITHOUT_INDEX",
  7.     [8] = "ID_WITHOUT_INDEX",
  8.     [9] = "ID_WITHOUT_INDEX",
  9.     [10] = "ID_WITHOUT_INDEX",
  10.     [12] = "ID_WITHOUT_INDEX",
  11.     [13] = "ID_WITHOUT_INDEX",
  12.     [14] = "ID_WITHOUT_INDEX",
  13.     [15] = "ID_WITHOUT_INDEX",
  14.     [16] = "ID_WITHOUT_INDEX",
  15.     [17] = "ID_WITHOUT_INDEX",
  16.     [18] = "ID_WITHOUT_INDEX",
  17.     [21] = "ID_WITHOUT_INDEX",
  18.     [23] = "ID_WITHOUT_INDEX",
  19.     [24] = "ID_WITHOUT_INDEX",
  20.     [25] = "ID_WITHOUT_INDEX",
  21.     [26] = "ID_WITHOUT_INDEX",
  22.     [27] = "ID_WITHOUT_INDEX",
  23.     [28] = "ID_WITHOUT_INDEX",
  24.     [29] = "ID_WITHOUT_INDEX",
  25.     [30] = "ID_WITHOUT_INDEX",
  26.     [32] = "ID_WITHOUT_INDEX",
  27.     [33] = "ID_WITHOUT_INDEX",
  28.     [34] = "ID_WITHOUT_INDEX",
  29.     [35] = "ID_WITHOUT_INDEX",
  30.     [36] = "ID_WITHOUT_INDEX",
  31.     [37] = "ID_WITHOUT_INDEX",
  32.     [39] = "ID_WITHOUT_INDEX",
  33.     [40] = "ID_WITHOUT_INDEX",
  34.     [42] = "ID_WITHOUT_INDEX",
  35.     [43] = "ID_WITHOUT_INDEX",
  36.     [44] = "ID_WITHOUT_INDEX",
  37.     [45] = "ID_WITHOUT_INDEX",
  38.     [46] = "ID_WITHOUT_INDEX",
  39.     [47] = "ID_WITHOUT_INDEX",
  40.     [48] = "ID_WITHOUT_INDEX",
  41.     [49] = "ID_WITHOUT_INDEX",
  42.     [50] = "ID_WITHOUT_INDEX",
  43.     [51] = "ID_WITHOUT_INDEX",
  44.     [52] = "ID_WITHOUT_INDEX",
  45.     [53] = "ID_WITHOUT_INDEX",
  46.     [54] = "ID_WITHOUT_INDEX",
  47.     [55] = "ID_WITHOUT_INDEX",
  48.     [56] = "ID_WITHOUT_INDEX",
  49.     [59] = "ID_WITHOUT_INDEX",
  50.     [60] = "ID_WITHOUT_INDEX",
  51.     [61] = "ID_WITHOUT_INDEX",
  52.     [62] = "ID_WITHOUT_INDEX",
  53.     [65] = "ID_WITHOUT_INDEX",
  54.     [66] = "ID_WITHOUT_INDEX",
  55.     [67] = "ID_WITHOUT_INDEX",
  56.     [68] = "ID_WITHOUT_INDEX",
  57.     [69] = "ID_WITHOUT_INDEX",
  58.     [70] = "ID_WITHOUT_INDEX",
  59.     [71] = "ID_WITHOUT_INDEX",
  60.     [72] = "ID_WITHOUT_INDEX",
  61.     [73] = "ID_WITHOUT_INDEX",
  62.     [74] = "ID_WITHOUT_INDEX",
  63.     [75] = "ID_WITHOUT_INDEX",
  64.     [76] = "ID_WITHOUT_INDEX",
  65.     [77] = "ID_WITHOUT_INDEX",
  66.     [78] = "ID_WITHOUT_INDEX",
  67.     [79] = "ID_WITHOUT_INDEX",
  68.     [80] = "ID_WITHOUT_INDEX",
  69.     [81] = "ID_WITHOUT_INDEX",
  70.     [82] = "ID_WITHOUT_INDEX",
  71.     [83] = "ID_WITHOUT_INDEX",
  72.     [84] = "ID_WITHOUT_INDEX",
  73.     [85] = "ID_WITHOUT_INDEX",
  74.     [86] = "ID_WITHOUT_INDEX",
  75.     [87] = "ID_WITHOUT_INDEX",
  76.     [88] = "ID_WITHOUT_INDEX",
  77.     [89] = "ID_WITHOUT_INDEX",
  78.     [90] = "ID_WITHOUT_INDEX",
  79.     [91] = "ID_WITHOUT_INDEX",
  80.     [93] = "ID_WITHOUT_INDEX",
  81.     [94] = "ID_WITHOUT_INDEX",
  82.     [95] = "ID_WITHOUT_INDEX",
  83.     [96] = "ID_WITHOUT_INDEX",
  84.     [97] = "ID_WITHOUT_INDEX",
  85.     [98] = "ID_WITHOUT_INDEX",
  86.     [99] = "ID_WITHOUT_INDEX",
  87.     [100] = "ID_WITHOUT_INDEX",
  88.     [102] = "ID_WITHOUT_INDEX",
  89.     [105] = "ID_WITHOUT_INDEX",
  90.     [106] = "ID_WITHOUT_INDEX",
  91.     [109] = "ID_WITHOUT_INDEX",
  92.     [110] = "ID_WITHOUT_INDEX",
  93.     [111] = "ID_WITHOUT_INDEX",
  94.     [112] = "ID_WITHOUT_INDEX",
  95.     [113] = "ID_WITHOUT_INDEX",
  96.     [114] = "ID_WITHOUT_INDEX",
  97.     [115] = "ID_WITHOUT_INDEX",
  98.     [116] = "ID_WITHOUT_INDEX",
  99.     [118] = "ID_WITHOUT_INDEX",
  100.     [119] = "ID_WITHOUT_INDEX",
  101.     [120] = "ID_WITHOUT_INDEX",
  102.     [121] = "ID_WITHOUT_INDEX",
  103.     [122] = "ID_WITHOUT_INDEX",
  104.     [123] = "ID_WITHOUT_INDEX",
  105.     [125] = "ID_WITHOUT_INDEX",
  106.     [127] = "ID_WITHOUT_INDEX",
  107.     [128] = "ID_WITHOUT_INDEX",
  108.     [129] = "ID_WITHOUT_INDEX",
  109.     [132] = "ID_WITHOUT_INDEX",
  110.     [133] = "ID_WITHOUT_INDEX",
  111.     [135] = "ID_WITHOUT_INDEX",
  112.     [136] = "ID_WITHOUT_INDEX",
  113.     [139] = "ID_WITHOUT_INDEX",
  114.     [140] = "ID_WITHOUT_INDEX",
  115.     [141] = "ID_WITHOUT_INDEX",
  116.     [143] = "ID_WITHOUT_INDEX",
  117.     [145] = "ID_WITHOUT_INDEX",
  118.     [147] = "ID_WITHOUT_INDEX",
  119.     [149] = "ID_WITHOUT_INDEX",
  120.     [150] = "ID_WITHOUT_INDEX",
  121.     [151] = "ID_WITHOUT_INDEX",
  122.     [152] = "ID_WITHOUT_INDEX",
  123.     [153] = "ID_WITHOUT_INDEX",
  124.     [154] = "ID_WITHOUT_INDEX",
  125.     [155] = "ID_WITHOUT_INDEX",
  126.     [156] = "ID_WITHOUT_INDEX",
  127.     [157] = "ID_WITHOUT_INDEX",
  128.     [158] = "ID_WITHOUT_INDEX",
  129.     [160] = "ID_WITHOUT_INDEX",
  130.     [161] = "ID_WITHOUT_INDEX",
  131.     [163] = "ID_WITHOUT_INDEX",
  132.     [164] = "ID_WITHOUT_INDEX",
  133.     [165] = "ID_WITHOUT_INDEX",
  134.     [167] = "ID_WITHOUT_INDEX",
  135.     [170] = "ID_WITHOUT_INDEX",
  136.     [171] = "ID_WITHOUT_INDEX",
  137.     [172] = "ID_WITHOUT_INDEX",
  138.     [173] = "ID_WITHOUT_INDEX",
  139.     [174] = "ID_WITHOUT_INDEX",
  140.     [175] = "ID_WITHOUT_INDEX",
  141.     [177] = "ID_WITHOUT_INDEX",
  142.     [178] = "ID_WITHOUT_INDEX",
  143.     [179] = "ID_WITHOUT_INDEX",
  144.     [180] = "ID_WITHOUT_INDEX",
  145.     [182] = "ID_WITHOUT_INDEX",
  146.     [183] = "ID_WITHOUT_INDEX",
  147.     [184] = "ID_WITHOUT_INDEX",
  148.     [185] = "ID_WITHOUT_INDEX",
  149.     [186] = "ID_WITHOUT_INDEX",
  150.     [194] = "ID_WITHOUT_INDEX",
  151.     [195] = "ID_WITHOUT_INDEX",
  152.     [196] = "ID_WITHOUT_INDEX",
  153.     [197] = "ID_WITHOUT_INDEX",
  154.     [198] = "ID_WITHOUT_INDEX",
  155.     [202] = "ID_WITHOUT_INDEX",
  156.     [204] = "ID_WITHOUT_INDEX",
  157.     [205] = "ID_WITHOUT_INDEX",
  158.     [206] = "ID_WITHOUT_INDEX",
  159.     [210] = "ID_WITHOUT_INDEX",
  160.     [211] = "ID_WITHOUT_INDEX",
  161.     [220] = "ID_WITHOUT_INDEX",
  162.     [221] = "ID_WITHOUT_INDEX",
  163.     [225] = "ID_WITHOUT_INDEX",
  164.     [226] = "ID_WITHOUT_INDEX",
  165.     [230] = "ID_WITHOUT_INDEX",
  166.     [240] = "ID_WITHOUT_INDEX",
  167.     [244] = "ID_WITHOUT_INDEX",
  168.     [251] = "ID_WITHOUT_INDEX",
  169.     [276] = "ID_WITHOUT_INDEX",
  170.     [277] = "ID_WITHOUT_INDEX",
  171.     [278] = "ID_WITHOUT_INDEX",
  172.     [282] = "ID_WITHOUT_INDEX",
  173.     [285] = "ID_WITHOUT_INDEX",
  174.     [286] = "ID_WITHOUT_INDEX",
  175.     [292] = "ID_WITHOUT_INDEX",
  176.     [293] = "ID_WITHOUT_INDEX",
  177.     [294] = "ID_WITHOUT_INDEX",
  178.     [295] = "ID_WITHOUT_INDEX",
  179.     [297] = "ID_WITHOUT_INDEX",
  180.     [298] = "ID_WITHOUT_INDEX",
  181.     [299] = "ID_WITHOUT_INDEX",
  182.     [300] = "ID_WITHOUT_INDEX",
  183.     [301] = "ID_WITHOUT_INDEX",
  184.     [302] = "ID_WITHOUT_INDEX",
  185.     [303] = "ID_WITHOUT_INDEX",
  186.     [304] = "ID_WITHOUT_INDEX",
  187.     [305] = "ID_WITHOUT_INDEX",
  188.     [307] = "ID_WITHOUT_INDEX",
  189.     [340] = "ID_WITHOUT_INDEX",
  190.     [342] = "ID_WITHOUT_INDEX",
  191.     [343] = "ID_WITHOUT_INDEX",
  192.     [344] = "ID_WITHOUT_INDEX",
  193.     [345] = "ID_WITHOUT_INDEX",
  194.     [348] = "ID_WITHOUT_INDEX",
  195.     [349] = "ID_WITHOUT_INDEX",
  196.     [350] = "ID_WITHOUT_INDEX",
  197.     [351] = "ID_WITHOUT_INDEX",
  198.     [352] = "ID_WITHOUT_INDEX",
  199.     [355] = "ID_WITHOUT_INDEX",
  200.     [356] = "ID_WITHOUT_INDEX",
  201.     [357] = "ID_WITHOUT_INDEX",
  202.     [358] = "ID_WITHOUT_INDEX",
  203.     [373] = "ID_WITHOUT_INDEX",
  204.     [384] = "ID_WITHOUT_INDEX",
  205.     [391] = "ID_WITHOUT_INDEX",
  206.     [474] = "ID_WITHOUT_INDEX",
  207.     [476] = "ID_WITHOUT_INDEX",
  208.     [479] = "ID_WITHOUT_INDEX",
  209.     [483] = "ID_WITHOUT_INDEX",
  210.     [488] = "ID_WITHOUT_INDEX",
  211.     [489] = "ID_WITHOUT_INDEX",
  212.     [490] = "ID_WITHOUT_INDEX",
  213.     [491] = "ID_WITHOUT_INDEX",
  214.     [508] = "ID_WITHOUT_INDEX",
  215.     [509] = "ID_WITHOUT_INDEX",
  216.     [510] = "ID_WITHOUT_INDEX",
  217.     [511] = "ID_WITHOUT_INDEX",
  218.     [513] = "ID_WITHOUT_INDEX",
  219.     [514] = "ID_WITHOUT_INDEX",
  220.     [515] = "ID_WITHOUT_INDEX",
  221.     [516] = "ID_WITHOUT_INDEX",
  222.     [517] = "ID_WITHOUT_INDEX",
  223.     [518] = "ID_WITHOUT_INDEX",
  224.     [519] = "ID_WITHOUT_INDEX",

kerb9729 10/06/16 01:01 PM

Thanks for this Ayantir!


All times are GMT -6. The time now is 09:49 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI