What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

ExploreDungeon Tag, problem with "ExitFound" value.

pimpampum

Member
Joined
Nov 29, 2012
Messages
769
Reaction score
23
I'm trying to modify an act 2 profile which runs Storm Halls Dungeon; it uses Fully explored, and backtracks a lot. I am trying to change that to ExitFound, and checked the ExitNameHash of the way out (44805511).

Problem is, as soon as you enter the dungeon there is a teleport back portal, exactly the same as the Exit portal at the end of the dungeon, which share the ExitNameHash. So if I use it, as soon as it enters the dungeon it finds the fake exit and just finishes the DungeonExplore.

Is there anything I can do to solve this? Like, Blacklisting that ExitNameHash for the first 60 seconds of the dungeon, or just to consider the exit found the 2nd time it finds it in the dungeon, or something?

Thanks !
 
ExitNameHash is actually the internal reference identification number of the text that appears on the minimap for the exit.

E.g., if you hover your mouse over the entrance (or exit) portal of storm halls, you'll see the "name".

The ExitNameHash is the ID that's used by D3 to reference the translation dictionary inside D3 - which is why we need to use the hash (because the "name" is different in Russian, Chinese, etc.)

So, I would recommend using until="ObjectFound" with the ActorSNO Id of the dungeon exit (portal or dungeon stone or whatever it is). This way, you'll explore until you actually find the exit, not just any minimap object name that matches.
 
I could use some help here; This are the actors on the dungeon entrance:

19:22:10.539 N] [36758DB4] Type: ServerProp Name: a2dun_Zolt_Portal_Sand_FlowingUp-7252 ActorSNO: 209378, Distance: 19.51804
[19:22:10.607 N] [3674E2A8] GizmoType: CheckPoint Name: Checkpoint-7260 ActorSNO: 3795 Distance: 19.62697 Position: <1620, 1080, 0.7905884> Barracade: False Radius: 5.830952
[19:22:10.676 N] [367450A4] GizmoType: Portal Name: g_Portal_Circle_Orange-7258 ActorSNO: 175501 Distance: 19.64647 Position: <1620.5, 1080, 2.422703> Barracade: False Radius: 7.992339
[19:22:10.745 N] [36757D04] GizmoType: StartLocations Name: Start_Location_0-7259 ActorSNO: 5502 Distance: 20.11566 Position: <1620, 1079.5, 0.7905273> Barracade: False Radius: 6.631498

And these are the actors at the dungeon exit:

[19:20:21.695 N] [3674FBB0] GizmoType: StartLocations Name: Exit_Location_1-6403 ActorSNO: 4067 Distance: 21.32284 Position: <380.5, 480.5, 0.321167> Barracade: False Radius: 6.631498
[19:20:21.695 N] [36752994] Type: ServerProp Name: a2dun_Zolt_Portal_Sand_FlowingUp-6388 ActorSNO: 209378, Distance: 21.45778
[19:20:21.761 N] [3674A414] GizmoType: Portal Name: g_Portal_Circle_Orange-6393 ActorSNO: 175501 Distance: 22.27964 Position: <379.9397, 479.6667, 1.143486> Barracade: False Radius: 8.094751

As you might see, the actor SNO of the dungeon exit and the dungeon entrance are the same; can you think of any workaround? I guess you'll find this issue when you try to make your act2 profile too, but you have the inside knowledge of Db that I completely lack.

I thought of using the Exit_Location actor SNO as an object found, but I'm guessing that since this one is a random dungeon actor SNO would change from one iteration to another, right?
 
Last edited:
Here's how it's done in my questing profile:

Code:
    <If condition="IsActiveQuest(57337) and IsActiveQuestStep(35) and CurrentWorldId == 50611">
      <!-- Storm Halls -->
      <TrinityExploreDungeon questId="57337" stepId="35" until="ObjectFound" actorId="2975" boxTolerance=".70" boxSize="10" objectDistance="75" pathPrecision="20">
        <PrioritizeScenes>
          <PriorityScene sceneName="Exit" />
        </PrioritizeScenes>
        <IgnoreScenes>
          <IgnoreScene sceneName="Zolt_N_" />
          <IgnoreScene sceneName="Zolt_S_" />
          <IgnoreScene sceneName="Zolt_W_" />
          <IgnoreScene sceneName="Zolt_E_" />
        </IgnoreScenes>
      </TrinityExploreDungeon>
      <WaitTimer questId="57337" stepId="35" waitTime="1000" />
      <MoveToActor questId="57337" stepId="35" actorId="2975" interactRange="30"  />
      <!-- Shadow Lock -->
      <WaitTimer questId="57337" stepId="35" waitTime="1000" />
      <TrinityExploreDungeon questId="57337" stepId="35" until="ObjectFound" actorId="175501" boxTolerance=".10" boxSize="50" ignoreGridReset="True" />
      <MoveToActor questId="57337" stepId="35" actorId="175501" isPortal="True" destinationWorldId="50613" />
      <!-- To the Terminus -->
      <WaitTimer questId="57337" stepId="35" waitTime="1000" />
    </If>

This will:

1) Search the dungeon for the "shadow lock"
2) once it finds it, search the dungeon again for the exit

This could probably be improved by adding the Exit as a priority scene in the 2nd TrinityExploreDungeon.
 
And, a side note, TrinityExploreDungeon also supports dungeon exploration ending when a SceneId or SceneName is found, and the player is standing inside that scene. This works well with PrioritizeScenes

t9Qt6eZ.png


In this case you could use:
Code:
    <!-- Explore until we find the Exit Scene -->
    <TrinityExploreDungeon questId="1" until="SceneFound" sceneName="Exit" boxSize="10" boxTolerance="0.70">
      <PriortizeScenes>
        <PriorityScene sceneName="Exit" />
      </PriortizeScenes>
    </TrinityExploreDungeon>
    <!-- Move to the Terminus map marker -->
    <MoveToMarker questId="1" markerHash="-944805511" />
    <!-- Interact with the portal -->
    <UseObject questId="1" actorId="175501" />
 
Here's how it's done in my questing profile:

Code:
    <If condition="IsActiveQuest(57337) and IsActiveQuestStep(35) and CurrentWorldId == 50611">
      <!-- Storm Halls -->
      <TrinityExploreDungeon questId="57337" stepId="35" until="ObjectFound" actorId="2975" boxTolerance=".70" boxSize="10" objectDistance="75" pathPrecision="20">
        <PrioritizeScenes>
          <PriorityScene sceneName="Exit" />
        </PrioritizeScenes>
        <IgnoreScenes>
          <IgnoreScene sceneName="Zolt_N_" />
          <IgnoreScene sceneName="Zolt_S_" />
          <IgnoreScene sceneName="Zolt_W_" />
          <IgnoreScene sceneName="Zolt_E_" />
        </IgnoreScenes>
      </TrinityExploreDungeon>
      <WaitTimer questId="57337" stepId="35" waitTime="1000" />
      <MoveToActor questId="57337" stepId="35" actorId="2975" interactRange="30"  />
      <!-- Shadow Lock -->
      <WaitTimer questId="57337" stepId="35" waitTime="1000" />
      <TrinityExploreDungeon questId="57337" stepId="35" until="ObjectFound" actorId="175501" boxTolerance=".10" boxSize="50" ignoreGridReset="True" />
      <MoveToActor questId="57337" stepId="35" actorId="175501" isPortal="True" destinationWorldId="50613" />
      <!-- To the Terminus -->
      <WaitTimer questId="57337" stepId="35" waitTime="1000" />
    </If>

This will:

1) Search the dungeon for the "shadow lock"
2) once it finds it, search the dungeon again for the exit

This could probably be improved by adding the Exit as a priority scene in the 2nd TrinityExploreDungeon.


This is really helpful!

1 Question though: I guess the shadow lock Object is only found when it is interactable, in the quest where you have to use it. Or it will be there and Db will be able to locate it even if you can't use it ( i.e. in another quest step)?
 
This is really helpful!

1 Question though: I guess the shadow lock Object is only found when it is interactable, in the quest where you have to use it. Or it will be there and Db will be able to locate it even if you can't use it ( i.e. in another quest step)?

It should still be there as an object, but the bot won't be able to interact with it, so it will still work with until="ObjectFound"
 
And, a side note, TrinityExploreDungeon also supports dungeon exploration ending when a SceneId or SceneName is found, and the player is standing inside that scene. This works well with PrioritizeScenes

t9Qt6eZ.png


In this case you could use:
Code:
    <!-- Explore until we find the Exit Scene -->
    <TrinityExploreDungeon questId="1" until="SceneFound" sceneName="Exit" boxSize="10" boxTolerance="0.70">
      <PriortizeScenes>
        <PriorityScene sceneName="Exit" />
      </PriortizeScenes>
    </TrinityExploreDungeon>
    <!-- Move to the Terminus map marker -->
    <MoveToMarker questId="1" markerHash="-944805511" />
    <!-- Interact with the portal -->
    <UseObject questId="1" actorId="175501" />

Amazing as usual man. This is simply perfect. 1 last question, using Pathprecision in a profile that does not use Trinitymoveto or Safemoveto is completely pointless, or it does have some effect on the pathing?
 
Amazing as usual man. This is simply perfect. 1 last question, using Pathprecision in a profile that does not use Trinitymoveto or Safemoveto is completely pointless, or it does have some effect on the pathing?

The pathPrecision attribute does only ONE thing - it determines the distance from the given x="" y="" z="" that the tag will consider itself to be "done".

E.g. if you're within pathPrecision="25" (yards) of the x="100" y="100" z="0" point, then you don't have to be standing exactly on top of the x/y/z - but the tag will end within 25 yards of it that point. It's useful for open world areas, where the map tiles can be randomly generated (inside of a larger static area).
 
And, a side note, TrinityExploreDungeon also supports dungeon exploration ending when a SceneId or SceneName is found, and the player is standing inside that scene. This works well with PrioritizeScenes

t9Qt6eZ.png

how do you get the library of tags listed. what program if you dont mind me asking?
 
yes but for some reason i cannot get it to load . maybe im doing it wrong or they just use a different program. i using notepad++ atm. and sorry for going off topic.

i just having a heck of a time with exploring dungeon code and hopeing it would help
 
Back
Top