Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

Get Instance Zone by ID?


BhaaL
 Share

Recommended Posts

I'm currently working on an interactive version of easyAstral which takes zone info directly from the game, using sysZoneNames and zoneIds. This works for Astral Isles like "AstralIsland01", but not for instance maps such as Lab 13, Oreshek or Plague Castle; since all of them return Zone ID 228 which is "Unknown Zone".

And other than GetCurrentZone, I can't seem to get the same info from any of the known API funcs.

Does anyone know any way of

- identifying and

- retrieving data of instance maps?

I'd at least want to someObject.DoMagic(someZoneId) and get "Lab 13"; but preferably also do someObject.DoInstanceMagic(currentZoneId) and get a "true"/1 for such maps.

Anyone knows anything that could help here?

Link to comment
Share on other sites

Yeh, I've been working on mapping out instances for my FullMap add-on. Here's how you get the names.

Code:
local allod = userMods.FromWString(cartographer.GetCurrentZone().allod)

local zone = cartographer.GetCurrentZone().sysZoneName

The allod is not a system string, so it will be different in each languaged client of the game. However places like the Gipat dungeon do not have a sysZoneName in certain versions of the game.

The zone is going to be a system string and will remain the same throughout clients so long as it is used. This will give you things like Inst_Empire1End or other things. You'll have to note simple distinct differences in these names. Like Laguna Boil is ZomeEmpire3 note the m instead of n; don't ask me why that's the case, it just is. Sadly, in certain versions of the game Oreshek and Darkblood Citadel share the same sysName, so the only difference is the non-standard allod name and the dynamic mapId.

Link to comment
Share on other sites

Yeah, I noticed zone.allod is different for all of them (I think, haven't been to some of them yet). But since thats a localized string, I'll probably have a hard time coding that into some sort of table which in turn tells me the sectors its in - different language clients wont match.

The mapId, not so much, its always been "ZonesMapUnknown" for me.

For now, I'm mapping those by hand with keys I picked myself (like "TT2", "Oreshek" or "Lab13") with a corresponding localization table - except that it leaves me no way of detecting them automatically for times when my resource table is not complete enough.

Too bad theres no other way...

Any other ideas?

Link to comment
Share on other sites

You can get the local zone = cartographer.GetCurrentZone().sysZoneName for all of the allods you want and then plug them into local zonesMapId = cartographer.GetZonesMapId(zone) to get their dynamic Id numbers for that client run supposing that they only change once a client load.

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use