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

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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