Switching to a different meta with a different starting state than Default
All: {Chat Command: /vt meta load MetaName, Set Meta State: dead}
this will allow you start directly in dead state when switching to a different meta rather than having it initially
load Default.
RecompCheck for multiple characters with a single line.
Any: {All: {Item "Soul Bound Bow" >=1, Any: {Item "Prismatic Taper" <= 600, Item "Massive Mana Charge" <= 3}},
All: {Item "Soul Bound Staff" >=1, Any: {Item "Prismatic Taper" <= 2000, Item "Massive Mana Charge" <= 3}},
All: {Item "Soul Bound Greatsword" >=1, Any: {Item "Prismatic Taper" <= 1000, Item "Massive Mana Charge" <= 3}}}
Set Meta State: Recomp
this will allow you to differentiate 3 seperate taper levels for your characters for a single recomp check
for more efficient use of states and possibly fewer recomps.
Switching Route based on NPC chat while speaking with an NPC
Always Embedded Nav "NPC" (1Pt)
Chat Message: "NPC tells you, (enter chat here)" Embedded Nav "NPC2" (1Pt)
this will intiially load the route for the first NPC then move to NPC2 after seeing the chat message you enter
Note that for many quest NPCs and all killtask NPCs they will have multiple potential messages depending on the
stage of the quest/task. killtask NPCs have 3 in particular starting task, incomplete task, complete task.
Detecting a character who is stuck
this is a little more complicated as it requires you to determine which strategy works best for the location you are hunting.
Example One - bouncing between two states detecting monsters in range or out of range and using seconds in state to determine if stuck
Default2 #1 Mons "" dist 6 Set Meta State: Default3
Default2 Seconds in state >= 120 Set Meta State: Dead
Default3 No Monsters Within 7m Set Meta State: Default2
Default3 Seconds in state >= 120 Set Meta State: Dead
Basically if the meta stays with creatures in range or out of range for 2 minutes time this would trigger you to do
your normal runback sequence as if you died getting you essentially unstuck. you will want to make sure No
Monster within distance is a larger distance than Monsters within range so you don't hop between states rapidly. I
find this strategy most effective while hunting outdoors. I also make use of it in order to make sure the Ralirea or
Fallen Metas are not stuck while searching for spawns.
Example Two - Using portal space entered to reset seconds in state
Default2 PortalSpace Entered Set Meta State: Default2
Default2 Seconds in State >= 600 Set Meta State: Dead
I use this method most commonly in dungeons like Baishi 120 Hive where i am recalling frequently to the top of
the dungeon as part of my regular route. each time i recall it resets my seconds in state, if i were stuck on the
other hand it would take me too long to complete a section of the hive and it would eventually trigger the Dead
state.
Example Three - Detecting if stuck using a stopwatch
Probably one of the most useful tricks I have discovered since meta functions have been added. throughout my routes at
select points I have a chat command that will create a stopwatch in order to track my times through certain sections
/vt mexec setvar[Stopwatch, stopwatchcreate[]];stopwatchstart[getvar[Stopwatch]]
this rule in the chat command will both create/start and restart this constantly running stopwatch whenever it is issued
through the nav route. If it happens that I reach past a designated point in time (for the sake of this example I am using
5minutes) the meta will set the state to my runback.
Code: Select all
Default2 -
Expr stopwatchelapsedseconds[getvar[Stopwatch]]>=300
Set Meta State: Runback
function
ExprAct clearvar[Stopwatch]
Using a Call
Couple good reasons for using a call rather than a a simple transition.
Example One- Colosseum meta, I use calls in between combat states in order to trigger the /mt face.
because there are multiple states in which you would want to load a route for the /mt face and rather than
making 6 rules for each default state 3,5,7,9 I instead made 6 rules for the /mt face in a seperate state and
called it in between states.(you can find this meta at http://www.virindi.net/wiki/index.php/P ... Repository)
Default4 No Monsters Within Distance 50m Call: DefTurnCall, return to Default5
Default5 #1 Mons "" dist 50 Set Meta State: Default6
Default6 No Monsters Within Distance 50m Call: DefTurnCall, return to Default7
DefTurnCall Always All: {Embedded Nav "Face" (1Pt), Return From Call}
This will allow you to use a rule in between multiple states without having to write it out over and over and over
again.
Example Two - RecompMeta using a single recomp meta for all of your other metas. This can be a bit trickier at
first but in the long run saves a ton of time. the basic concept is in each of your hunting metas you will have a
line like this that will trigger a recomp.
Default2 Item "Prismatic Taper" <= 50 All: {Chat Command: /vt meta load RecompMeta, Call: recomp, return to ReturnHunting}
now the return will varry depending on what meta you are going to want to return to. in recomp you will have
your basic rules for recomping then when you trigger to return to wherever you are hunting you would do this.
Recomp Nav Route Empty Return from Call
ReturnHunting Always All: {Chat Command: /vt meta load Hunting, Set Meta State: dead}
Essentially what you are able to do is add 1 state for every meta that will use your recomp meta, that will send it
back to the proper meta and set it to your runback state(mine is dead state).
Example Three- this is still a WIP for me but I figured I’d share it anyway. I've been running into some
issues with vtank waitlists with how it stores the fellowship waitlist even after I disband and reform the
fellowship for the next run. Only time I ever ran into this problem was with colosseum much like were all my
other creative solutions have come from. Right before I start the turn in sequence where it rotates back and
forth between turnin and turnintransition I reform the fellowship and begin recruiting. The solution to the vtank
waitlist issues was actually rather simple; I would work out a way to track the number of members that
joined/left my fellowship starting when the turnin sequence began with calls.
TurnIn Always Chat Command: /vt opt set Autofellowmanagement false
TurnIn Chat Message: "You fought in the Colloseum's" All: {Return from Call, Embedded Nav "[None]" (0pts), Chat Command: /vt opt set AutoFellowmanagement true}
TurnInTransition Seconds in state >= 15 Call: TurnIn, Return to: TurnInTransition
TurnInTransition ^.*is now a member of your Fellowship. Set Meta State: TurnInTransition2
TurninTransition2 Seconds in State >=15 Call: TurnIn, Return to: TurnInTransition2
TurnInTransition2 ^.*is now a member of your Fellowship. Set Meta State: TurnInTransition3
TurnInTransition2 ^.*has left your Fellowship Set Meta State: TurnInTransition2
And so on. 1 state for each member of the fellowship that could potentially join, using the calls you are able to
hold the place of the number of fellowship members that have joined your fellowship until the turn in sequence
is complete. The reason autofellowmanagement is disabled during TurnIn is because it will not be able to track
someone who is recruited to the fellowship during that .25s window between TurnInTransition and TurnIn. Last of
all because when you are finished TurnIn you will have a return queued still that would set you back to
TurnInTransition(x) in order to clear this.
TurnIn Chat Message: "If you wish to fight," All: {Chat Command: /vt meta load [metaName], Set Meta State: Door}
Using the existing line that normally triggers the state change to Door State instead have it reload the meta
which will reset any returns queued and setting the state will allow you to keep place of where you are in the
meta at the same time.
Reacting Differently to same command based on Character its issued from.
Fairly straightforward, just using a different character name for each regex command in the name. most
commonly used for follow routes.
Default2 Chat Message: (^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1)\>.+\<\\Tell\>) (say|says|tells you), \"!follow\"$ Embedded Nav "FollowChar1" (1PT)
Default2 Chat Message: (^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char2)\>.+\<\\Tell\>) (say|says|tells you), \"!follow\"$ Embedded Nav "FollowChar2" (1PT)
Default2 Chat Message: (^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char3)\>.+\<\\Tell\>) (say|says|tells you), \"!follow\"$ Embedded Nav "FollowChar3" (1PT)
this will allow you to follow a different character based on who issues the command rather than always the same
designated leader.
Detecting Rubberbanding while using magtools jumps.
This requires the jump you are attempting to traverse two seperate landcells without crossing back over the first
landcell under normal operation. Lets use jumping off the Roof at AB. For simplicity I am going to use 4 states,
Recall, Jump, JumpCheck, JumpComplete.
Recall Always Embebedded Nav "ABRecall" (2pts)
Recall All: {Portalspace Exited, Landcell == 1134001F} All: {Embedded Nav "None" (0pts), Set Meta State: Jump}
the reason you need the portalspace exit is if you begin jumping in middle of portalspace with magtools
commands its almost always going to rubber band. Now for this particular jump id recommend the following nav
points, 1s pause, /mt face 180, 2s pause, /mt jumpw 1000, 10s pause.
Jump LandCell == 1134001F Embedded Nav "Jump" (5pts)
Jump Not Landcell == 1134001F All: {Embedded Nav "None" (0pts), Set Meta State: JumpCheck}
JumpCheck All: {Landblock==11340000, Not Landcell== 1134001F, Seconds in State>= 5} Set Meta State: JumpComplete
JumpCheck Any: {Landcell==1134001F, Not Landblock 11340000} Set Meta State: Recall
Basically what this will do is after you make the jump it will detect the change in landcell and go into a check
state. in the check state if it sees you go back to the original starting landcell it will know you rubberbanded and
send you back to the original starting location through the recall state and restart the jump process all over
again.
Stopping vtank from pausing after each kill.
Warning do not use this if creatures in location you are hunting have a delayed death animation as you may pass
them before vtank can examine the corpse for rares. this is more useful for rare farming than anything else, it
allows you to go from spawn to spawn killing creatures much more effectively rather than default settings which
cause you to pause for 1-2 seconds after every spawn of creatures before continuing. It works similarly to
example 1 of detecting if a character is stuck.
Default2 #1 Mons "" dist 6 All{Chat Command: /vt opt set enablelooting false, Set Meta State: Default3}
Default2 Chat Message: ^.*has discovered Set Meta State: Default4
Default3 No Monsters Within 7m All{Chat Command: /vt opt set enablelooting true, Set Meta State: Default2}
Default3 Chat Message: ^.*has discovered Set Meta State: Default4
Default4 Always All: {Chat Command: /vt opt set enablelooting true, /vt opt set lootpriorityboost true}
Default4 Chat Message: ^.*has discovered Set Meta State: Default4
Default4 Seconds in state>= 360 Set Meta State: Default2
Vtank only will pause between spawns if looting is enabled, the work around for this is to disable it when killing a
creature then enable it again when no creatures in range, what I've done is enable looting under 2 conditions
if I see the rare message ^.*has discovered or if no creatures in range. between the two conditions I never miss a
rare crystal and I was able to increase kill rate by an average of 109 per hour on my archer.