http://white.virindi.net/wiki/api.php?action=feedcontributions&user=The+Guru&feedformat=atomVirindiPlugins - User contributions [en]2024-03-28T22:01:18ZUser contributionsMediaWiki 1.28.1http://white.virindi.net/wiki/index.php?title=Virindi_Tank&diff=1619Virindi Tank2024-01-13T00:14:28Z<p>The Guru: update support links</p>
<hr />
<div>'''*****To download Virindi Tank, visit the [http://www.virindi.net/plugins Virindi Plugins page]*****'''<br />
<br />
<br />
'''Virindi Tank support is available on the [https://discord.gg/kfeuTKkFn3 Virindi Plugins] or [https://discord.gg/KfD9PpFewc ACPluginsDev] discords<br><br />
''Please read the [[Virindi Tank FAQ]] before posting any questions.<br />
<br />
<br />
Virindi Tank is a Decal-based combat macro plugin for Asheron's Call designed to replace [http://www.reality.net/ac/xx/ LifeTank] and is written in C# with Decal.Adapter.<br />
<br />
Virindi Tank is intended to only provide those functions necessary for basic operation of a combat macro, ie. those that require character actions during the macro process. As such, Virindi Tank does '''not''' provide:<br />
* Equipped item management<br />
* Buffbot<br />
* Unfriendly player detection alarms<br />
<br />
Additionally, Virindi Tank does not provide features which are only of use to UCM characters, such as:<br />
* Admin alarms<br />
* Log out on death, low comps, etc<br />
<br />
<br />
<br />
''Use of Virindi Tank in a manner inconsistent with the Asheron's Call [http://turbine.fuzeqna.com/asheronscall/consumer/kbdetail.asp?kbid=305 Code of Conduct] is a violation of the [[Virindi Tank license agreement]].<br />
<br />
<br />
<br />
Virindi Tank is now a public Decal plugin. ([http://web.archive.org/web/20090509194000/http://vnboards.ign.com/ac_utilities/b5432/106600406/p1/? Virindi Tank Release Post on Archive.org VNboards])<br />
<br />
The latest stable version is available on the [http://www.virindi.net/plugins Virindi Plugins page]. Virindi Tank is distributed with the [[Virindi Plugin Bundle]] and as a standalone installer. <br><br />
Currently only the Bundle version works with Decal 2.9.6.0 due to changes in the game related to the introduction of Void Magic.<br />
<br />
= Tutorials =<br />
<br />
[[Virindi Tank Standard Options]]<br />
<br />
[[Virindi Tank Advanced Options]]<br />
<br />
[[Virindi Tank Commands]]<br />
<br />
[[Virindi Tank Fellowship Commands]]<br />
<br />
[[Virindi Tank Monster List Matching]]<br />
<br />
[[Virindi Tank Meta System]]<br />
<br />
[[Virindi Tank Changelog]]<br />
<br />
[[VTClassic Tutorial]] for the VTClassic loot plugin<br />
<br />
[[VTClassic Advanced Tips]]<br />
<br />
[[Salvage Material IDs]]<br />
<br />
[[Armor Set IDs]]<br />
<br />
[[Previous versions of Virindi Tank]]<br />
<br />
[[Known Bugs In Virindi Plugins#Virindi_Tank|Known Bugs]]<br />
<br />
[[Virindi Tank FAQ]]<br />
<br />
= Features =<br />
<br />
Virindi Tank features:<br />
<br />
* Melee, Missile and Mage combat, with full support for hybrid templates<br />
* 2-handed combat support*<br />
* Void magic support*<br />
* Summoning support*<br />
* Harm/martyr mage support<br />
* Automatic selection of the best attack type based on your configured weapons<br />
* Alchemical grenades support*<br />
* Lenses support*<br />
* Cast-on-strike debuffing weapons support*<br />
* Fine-grained control over combat action priorities<br />
* War/void streak spell support<br />
<br />
* Automated buffing, with item buff durations persisted between logins<br />
* Level 8 spell support<br />
* Rebuffing early when character is idle<br />
* Automatic stacking of items and storing into side packs<br />
* Beers, buff gems, and foods support<br />
* Automatic crafting of food, arrowheads, etc from components<br />
* Automatic mana stone mode loots and fills stones, then uses them when your items run low*<br />
<br />
* Fellowship helper, with Healer's Heart support for healing allies<br />
* Sophisticated navigation system capable of linear or connected routes, with support for recall waypoints<br />
* Looting and learning of unknown scrolls<br />
* Use of dispel gems and/or spells when vulned<br />
<br />
* An extensible plugin-based loot system<br />
* Default configuration requiring minimal set-up<br />
* All internal variables can be set using an advanced options panel, for experienced users<br />
* Meta system allows high level state-based control over macro and character behavior*<br />
<br />
(*) Feature currently only available in the bundle edition</div>The Guruhttp://white.virindi.net/wiki/index.php?title=BeginnerBundleGuide&diff=1618BeginnerBundleGuide2022-03-25T01:29:02Z<p>The Guru: /* Transferring [Char] Profiles to Alt Char. */</p>
<hr />
<div>WORK IN PROGRESS<br />
<br />
A Quick Reference Guide for the Virindi Tank Bundle - Compiled by [http://www.virindi.net/wiki/index.php?title=Special:Contributions/The_Guru&limit=500&target=The+Guru Hell's Wrath]<br />
<br />
Before diving in you may want to [[Customize Your View]]<br />
<br />
= Virindi Tank [[image:TankIcon.PNG]] =<br />
Click the Tank icon [[image:TankIcon.PNG]] on the [[Virindi Views]](VVS) bar to open the main Virindi Tank plugin.<br />
<br />
== Options tab ==<br />
The main options page handles basic Vtank ranges and a multitude of easy-access options.<br />
<br />
[[image:Vtank_Main.PNG]] <br />
<br />
For detailed explanations of the individual options on the main tab, visit the [[Virindi_Tank_Standard_Options#Options|Standard Options]] page<br />
<br />
You can also view the entire [[Virindi_Tank_Advanced_Options|Advanced Options]] which will be linked to throughout this guide. <br />
<br />
<br />
== Profiles tab==<br />
<br />
[[image:Vtank_Profiles.PNG]]<br />
<br />
=== Macro Setting Profiles ===<br />
Understanding how profiles are managed is vital to running an organized macro. You will likely have many profiles for different locations and tasks.<br />
There are two types of profiles we will talk about: Those with Mine Only enabled, and those without.<br />
<br />
* Click the Macro Settings dropdown list<br />
* You will see [Default] and [ByChar] -- You never want to edit settings within these, think of them as templates. You load one, make a save with a specific name, then edit and use the new save. <br />
* [Default] profile settings will always reset on logout.<br />
* [ByChar] is associated with the Mine Only radio button. This is the profile type you will use the most. <br />
* When creating a new character specific profile you want to have the Mine Only radio button enabled, selecting the [ByChar] profile automatically enables Mine Only.<br />
<br />
==== Saving [Char] Macro Settings ====<br />
* Select [ByChar] from the Macro Settings dropdown then click the "CopyTo" button.<br />
* Your chat bar will be filled with the string "/vt settings savechar" -- Type a name after "savechar" and press Enter. (eg. "/vt settings savechar ProfileName")<br />
* You will now have a "[Char]ProfileName" profile in the Macro Settings dropdown - You can now safely begin making changes to the settings.<br />
** Changes made within profiles are saved immediately and automatically. You do not have to save after making alterations. This is the reason for using [ByChar] as a template to make new profiles.<br />
<br />
==== Transferring [Char] Profiles to Alt Char. ====<br />
* To transfer a [Char] setting profile over to another character you will need to load the [Char]profile, disable Mine Only and click CopyTo. <br />
* In your chat bar you will see the string "/vt settings save" - type a profile name and click enter. (eg. "/vt settings save ProfileName")<br />
* On the character you want the profile transferred to, uncheck Mine Only and select the Macro Settings dropdown. You will see "ProfileName" listed without a [Char] tag.<br />
* You now need to save the cross-char profile as a [Char] profile. Select "ProfileName" from the dropdown and then enable Mine Only. Click "CopyTo" and the string "/vt settings savechar" should appear in your chat bar. Type ProfileName and press Enter. <br />
** You should now see "[Char]ProfileName" in your macro settings dropdown list.<br />
**Now you must populate the Items/Consumables tab with your items, and assign any weapon types in the Monster tab that may have become unassigned as a result of transferring the profile.<br />
<br />
=== Auto-Navigation Profiles ===<br />
* To create a new route select [None] from the dropdown and then click the "CopyTo" button - "/vt nav save" will appear in your char bar, type a name and hit Enter<br />
* Build and edit your routes on the Routes tab<br />
<br />
=== Looting Profiles ===<br />
* Displays a list of loot profiles, select one to load it<br />
* Profiles loaded from your \\VirindiPlugins\VirindiTank folder<br />
<br />
* Loot profiles for Virindi Tank are built outside of game using the [[Virindi_Tank_Classic_Loot_System|Virindi Tank Classic Loot System]]<br />
* The classic looter is extremely powerful. Example profiles are available on the above page.<br />
* [http://www.immortalbob.com Immortalbob.com] provides a profile called "Lootsnob" that has hundreds of rules for all manner of armor/weapon/trophies/collectibles.<br />
<br />
** Aside from the Vtank Classic Looter, you can also use [http://asheron.aetherific.com/Alinco Alinco3], [http://asheron.aetherific.com/GearFoundry GearFoundry], or any other plugin that will link its profile to Vtank<br />
** OnLogin, if no loot profile is selected, Vtank will detect if GearFoundry or Alinco is loaded and provide a link you can click to attach your profile to Vtank.<br />
<br />
=== Meta Action Profiles ===<br />
* Select a meta profile from the dropdown list to load it <br />
* You build and edit on the [[BeginnerBundleGuide#Meta tab|Meta tab]]<br />
<br />
== Vitals tab ==<br />
The vitals tab is crucial to your survival. Depending on your skill level you will want to adjust the sliders to best fit your circumstances.<br />
Lower level spells do not revitalize as well so the sliders must be adjusted to give you maximum benefit. Trial and error is the name of the game.<br />
<br />
[[image:Vtank_vitals.PNG]]<br />
<br />
* The first three sliders manage your vitals during combat<br />
<br />
* The second set of sliders manages your Top-off vitals. When there are no combat targets in range you will recharge to these values.<br />
<br />
* The third set of sliders manages your Helper spells<br />
<br />
**[[Virindi_Tank_Advanced_Options#Recharge|Advanced Recharge Options]] can be used to set exact percentages of vitals, enable Helper spells, and set ranges.<br />
<br />
== Monsters tab ==<br />
The monsters tab is where you will manage the different types of attacks, debuffs, and weapons you use against specific monsters.<br />
<br />
[[image:Vtank_monsters.PNG]]<br />
<br />
* Type in a monster name and click Add, or select a monster in the 3D window and click Add Sel.<br />
<br />
* Once you have a monster name entered you can set the ways you want to react. Hovering over each of the letters will show a tooltip. <br />
* Click the text beneath Dmg type / Extra Vuln / Weapon / Offhand / PetDmg to cycle through the available options. <br />
<br />
The monster list can be very simple or quite complex, depending on your needs. <br />
<br />
There are advanced operators and variables you can use to account for very specific situational problems<br />
<br />
Check out [[Virindi_Tank_Monster_List_Matching | Monster List Matching]] for more information.<br />
<br />
== Items tab ==<br />
Within the items tab you add all of your weapons/wands/shields/pets you want to use in your profile. <br />
<br />
[[image:Vtank_items.PNG]]<br />
<br />
*Select an item in your inventory and click "Add" to add it to the list.<br />
<br />
Once an item is listed it can be set in the Monsters tab under the appropriate options. <br />
<br />
<br />
== Consumables tab ==<br />
<br />
<br />
[[image:Vtank_consumables.PNG]]<br />
<br />
* If you use any type of gems/foods/healing kits/potions/lockpicks etc, you can add them to the Consumables list and have Vtank automatically use them at the appropriate times.<br />
* If you don't want to use high level spells you can exclude Scarab types so the spells aren't cast. This is handy for saving on spellcomps when hunting lower level areas on a high level character. <br />
<br />
<br />
[[Virindi_Tank_Advanced_Options#Crafting|Advanced Crafting Options]]<br />
<br />
<br />
* '''Notes''':<br />
** Items that cast spells lasting less than 5 minutes will not work.<br />
<br />
<br />
== Buffs tab ==<br />
Vtank reads your characters skills, spellbook, and available spellcomps to determine which spells to cast. <br />
<br />
[[image:Vtank_buffs.PNG]]<br />
<br />
Creature buffs are always cast. Which ones are used are selected automatically based on the skills that you have trained.<br />
<br />
* The buffs tab is used when you want to Add or Exclude buffs from your buffing profile.<br />
* Normally you will not need to change anything on this tab. <br />
<br />
* Life protections and banes can be selected through the advanced panel by changing the BuffProfile_Prots and BuffProfile_Banes options. The builtin selections are:<br />
<br />
All (Bludgeon, Pierce, Slash, Acid, Lightning, Cold, Fire)<br />
None<br />
B (Bludgeon)<br />
BPS (Bludgeon, Pierce, Slash)<br />
BPSA (Bludgeon, Pierce, Slash, Acid)<br />
ALFC (Acid, Lightning, Fire, Cold)<br />
Custom (see below)<br />
<br />
'Custom' element sets are specified similarly to the above, by selecting among the letters BPSALFC. To do this, set the option in the advanced options panel to 'Custom' and then issue a command like the following, replacing BPSALFC with the letters you want:<br />
<br />
/vt opt set BuffProfile-Prots BPSALFC<br />
/vt opt set BuffProfile-Banes BPSALFC<br />
<br />
Set [[Virindi_Plugins_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use.2C_and_how_can_I_change_it.3F|skill thresholds]] so you can pick up scrolls and attempt to cast spells above your skill level<br />
<br />
[[Virindi_Tank_Advanced_Options#Buffing|Advanced Buffing Options]]<br />
<br />
<br />
* '''Notes''':<br />
** "/filter -magic" will cause Vtank to loop and continuously cast a single spell. You can "/filter -spellcasting" without issues. <br />
** You can safely filter the chat using the AC Chat options instead of the /filter commands. <br />
<br />
<br />
== Route tab == <br />
This is where you will build all of your auto-navigation routes.<br />
<br />
[[image:Route_tab.PNG]]<br />
<br />
* Turn your character with [[Virindi_Plugins_FAQ#My_character_stops_at_each_Nav_point_in_my_route_and_won.27t_proceed_until_I_press_a_key._What.27s_wrong.3F|camera turning]] must be disabled for auto-navigation to function<br />
* Default movement keys must be used in your keyboard configuration<br />
<br />
<br />
There are 4 types of routes you can build:<br />
* Circular routes traverse waypoints in the order ABC-ABC.(After last waypoint, will return to first waypoint)<br />
* Linear routes traverse waypoints in the order ABC-CBA. (Will run back and forth from beginning to end)<br />
* Once routes traverse a route just once. Waypoints in the route tab will appear to delete themselves, reloading the route reloads the waypoints (Good for ToVendor/ToDungeon routes.)<br />
* Follow routes follow another player-character. See [[BeginnerBundleGuide#Virindi_Follower|Mini Remote]] <br />
<br />
<br />
* To build a route you simply run while clicking the "Add" button to add waypoints. <br />
* Aside from waypoints you can input Recalls, Use Portal/NPC, Pauses, Chat commands and Jumps.<br />
<br />
<br />
Jumps<br />
* Jumps can be executed by a chat command, or added to a navroute using a different command<br />
* Execute a jump: "/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar]<br />
* Add a jump to a route: "/vt addnavjump [heading] [shift] [milliseconds]"<br />
* Execute a strafe jump: "/vt addnavjump [heading] [shift: true or false] [milliseconds] [strafeleft/straferight/forward]"<br />
** For example "/vt jump 360 true 500 strafeleft" will make you face north and do a left-strafe shift jump at half power. <br />
<br />
<br />
*Note: /vt addnavjump will automatically pause and issue the jump. If you use the /vt jump command you must add the pauses yourself<br />
<br />
<br />
Checkpoints<br />
* Add to routes with "/vt addnavcheckpoint"<br />
* Functions as a normal waypoint, except that when reaching it the macro pauses until the server reports back your location as being near the point. (Normally, your client sees your location as a bit ahead of what the server sees, due to communication latency.) This point type can ensure that you really made it around a corner or through a doorway. Once the server reports that you are in a location you will not be "rubber-banded" back. Sometimes you will stop and wait and the server will disagree on your final location, so if you have been waiting awhile the macro will inch forward.<br />
<br />
<br />
Route Editing<br />
* You can edit routes by using the drop-down menu containing "Add to End", "Insert Above" and "Insert Below"<br />
* The curly green arrow [[image:GreenTurnDownArrow.PNG ]] sets the route to the nearest waypoint to your location. You can use the green and red up/down arrows to change the waypoint.<br />
* You must change your route to circular to use the curly green arrow. It will not work for once and linear routes. Change back once finished editing.<br />
<br />
<br />
<br />
* [[Virindi_Tank_Standard_Options#Route_tab|Standard Options]]<br />
* [[Virindi_Tank_Advanced_Options#Navigation|Advanced Navigation Options]] have tweaks for approach corpse distance, opendoors enable/disable, nav priority boost and others.<br />
<br />
== Meta tab ==<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. <br />
<br />
With meta you can create Hunt / Recomp / Return On Death routines, automate entire quests, control multiple characters through chat commands and much more.<br />
<br />
Check out the [[Virindi_Tank_Meta_System|Meta System]] page for more information.<br />
<br />
<br />
= Virindi Classic Looter =<br />
<br />
Virindi Tank provides a standalone loot editor called Virindi Classic Looter<br />
* Found in your VirindiPlugins\VirindiTankClassicLooter folder (typically C:\Games\VirindiPlugins\VirindiTankClassicLooter)<br />
** Run "uTank2 Settings Editor.exe"<br />
<br />
The Classic Looter is quite extensive and requires detailed explanations.<br />
<br />
Information can be found on the following pages<br />
* [[VTClassic_Tutorial |Tutorial]]<br />
* [[VTClassic_Advanced_Tips |Advanced Tips]]<br />
* [[VTClassic_Sample_Profiles |Sample Profiles]]<br />
* [http://acpedia.org/wiki/User:Immortalbob/Guides/Beginner%27s_Guide_to_looting_with_VTank VTClassic Guide] - by Immortalbob<br />
<br />
If you don't like the Classic Looter or feel it is too complicated for your needs you can use an alternate plugin for loot profiles<br />
<br />
At login, Vtank will auto-detect if you are running Alinco or GearFoundry without a loot profile loaded. <br />
If so, it will provide a link to connect the plugins.<br />
** [http://asheron.aetherific.com/GearFoundry GearFoundry]<br />
** [http://asheron.aetherific.com/Alinco Alinco3] - How to [[Virindi_Plugins_FAQ#How_do_I_use_Alinco_with_Virindi_Tank.3F |connect Alinco]] (Alinco does not recognize tier8 loot)<br />
<br />
= Virindi Integrator2 [[image:I2_Icon_inactive.PNG]] [[image:I2_Icon_Active.PNG]] =<br />
* VI2 connects to a central server in order to provide fellow-like groups, friends notifications, tells, automated mapping and ally location awareness. <br />
* Friends and /tells in VI2 operate through an account-based system; sent tells go to every character logged in under the same VI2 account, and friends logging on to their VI2 account appear as online regardless of which AC character or server they are logged in to.<br />
* VI2 is completely AC-world independent, allowing communication and even questing to function easily across different game worlds. <br />
<br />
* Fellow Members prefer to attack vulned/imped mobs first.<br />
* Fellow members will try not to double-vuln mobs<br />
* Fellow Members heal each other without the need for the AC Fellow Panel to be open<br />
<br />
<br />
Visit the [[Virindi Integrator 2 |Virindi Integrator2]] page for a detailed breakdown of the plugin.<br />
<br />
<br />
= Virindi Reporter [[image:Reporter_Icon.PNG]] =<br />
* Reports XP/Lum Earnings to yourself, fellowship chat, or allegiance chat. <br />
* Must be running for XP/Lum Earning properties to appear on the Status HUD<br />
<br />
[[Virindi_Reporter |More]]<br />
<br />
<br />
= Virindi Chat System 5 [[image:VCS_Icon.PNG]]=<br />
* A filtering plugin for text in the AC chatboxes. It allows you to define rules that specify where matching text will go, and what color it will become, with the option for corresponding sound alerts. <br />
* These rules apply not only to AC's text, but also to the text output of all Virindi Bundle plugins.<br />
<br />
[[Virindi_Chat_System_5|More]]<br />
<br />
<br />
= Virindi Item Tool [[image:VIT_Icon.PNG]] = <br />
* The Give tab is used to hand large quantities of the same type item, quickly, to another character or NPC<br />
* The Buy tab has options to select which item you need to buy, how many, and which items to sell to cover the costs(pea's/mmds) <br />
* The GiveVT tab has the Go button for pre-built Buy/Sell profiles to be triggered<br />
* The Chest tab allows you to automatically use keys on a chest and transfer looted items to a mule.<br />
* The Comps tab stores a list of user selected items to automatically purchase from vendors <br />
<br />
* [http://magtools.codeplex.com Mag-Tools] calls on VIT to handle item transfer for its Auto Buy/Sell feature. <br />
<br />
[[Virindi_Item_Tool |More]]<br />
<br />
<br />
= Virindi Follower =<br />
<br />
Follow Character is built in to the [[Virindi HUDs]] MiniRemote<br />
<br />
* Select who you want to follow and Press the "FC" button [[image:Follow_Char.PNG]] on the MiniRemote.<br />
* "C" toggles "Follow character around corners"<br />
** Enabled: Follows the leaders exact route - Mostly used inside<br />
** Disabled: Runs directly at the leader - Mostly used outside<br />
<br />
<br />
The stand-alone version of [[Virindi Follower]] is unlikely to be updated in the future.<br />
<br />
<br />
= Virindi HUDs [[image:VirindiUIsIcon.png]]= <br />
Currently included:<br />
* Comps HUD<br />
* VTank Remote Control<br />
* VVS Chat Window<br />
* Status HUD<br />
* H/S/M Bar. <br />
* Old Style H/S/M Bar<br />
* ItemTool Comps HUD<br />
<br />
More information on the [[Virindi HUDs]] or [[Customize Your View]] page<br />
<br />
<br />
= Virindi Hotkey System [[image:Virindi_Hotkey_System_Icon.PNG]] =<br />
* Allows you to set hotkeys to perform functions created by different plugins. <br />
* As an alternative to Decal Hotkey System, VHS uses Virindi Views<br />
* Supports assigning hotkeys to joystick/gamepad buttons. <br />
<br />
[[Virindi Hotkey System|More]]<br />
<br />
<br />
= Virindi Sense [[image:Virindi_Sense_Icon.PNG]]=<br />
A simple 6th Sense style plugin.<br />
* Input items you wish to track on the Setup tab<br />
* If something is detected you will be alerted in chat and the item will be listed on the Detected tab<br />
<br />
[[Virindi_Sense|More]]<br />
<br />
<br />
= Virindi Window Tool [[image:VWTIcon.png]] = <br />
* Used to manage multiple UI Layouts<br />
* Save and load UI captures with a GUI rather than the AC chat commands.<br />
* Saves location of all VVS plugins<br />
* Offers the "Old AC UI" option<br />
<br />
[[Virindi_Window_Tool|More]]<br />
<br />
<br />
= Virindi Global Inventory [[image:VGI_Icon.PNG]] =<br />
A simple tool for managing armor, weapons and misc items on mules. <br />
* You must log on each character who's inventory you would like to track and choose a Tracking style, then wait for it to read all items.<br />
* You can search by item name/spells/sets and others. It will display all items matching the query and the character each item is on.<br />
* Suit Search application helps you filter through and match your gear to create the best possible suits.<br />
* World View application lists all weapons and pets for each character in a spreadsheet for easy viewing. <br />
<br />
[[Virindi_Global_Inventory|More]]<br />
<br />
<br />
= GoArrow (VVS) [[image:GoArrow_Icon.PNG]] =<br />
A version of Digero's GoArrow plugin which has been modified to operate in Virindi Views.<br />
<br />
* Route-finding between any location by coordinates, searching locations, or manipulating the map.<br />
* Arrow HUD to show you the direction of your next waypoint or endpoint. <br />
* Filter options and ranges to display locations/npcs in your vicinity<br />
<br />
[[GoArrow_(VVS_Edition)|More]]<br />
<br />
<br />
= SSSort (VVS) [[image:SSSort_VVS_Icon.PNG]]=<br />
SSSort sorts the scrolls, salvage, or mana stones in your main pack or side packs.<br />
<br />
It has a number of specialized sorting criteria for scrolls, salvage, and mana stones. <br />
<br />
[[SSSort_(VVS_Edition)|More]]<br />
<br />
<br />
=Non-Bundle VVS Plugins=<br />
Available for download on the [http://www.virindi.net/plugins/ Virindi Plugins] page.<br />
== Virindi Armor Color Tool [[image:VACT_Icon.PNG]] ==<br />
A DCS-like utility for viewing the colors of armor. <br />
* The colors it displays are the same as found in Virindi Tank propertydumps<br />
* Simply open the plugin and ID an item to retrieve the palette list. <br />
<br />
[[Virindi_Armor_Color_Tool|More]]<br />
<br />
== SkunkVision (VVS) [[image:SkunkVision_Icon.PNG]] ==<br />
The SkunkVision control panel has three toggles for enabling or disabling the following features:<br />
* Unclimbable slopes: Highlights those areas of a mountain or cliff that are too steep to climb.<br />
* Impassable water: Highlights those areas of open water that are too deep to wade.<br />
* Dungeon light: Lights up dark dungeon caverns.<br />
<br />
[[SkunkVision_VVS_Edition|More]]<br />
<br />
<br />
== Virindi XP Helper [[image:XPHelper_Icon.PNG]]==<br />
Virindi XP Helper assists in determining how much your character's primary attributes (strength, endurance, etc) should cost to raise based on the costs of your skills and secondary attributes (health, stamina, mana). <br />
<br />
[[Virindi_XPHelper|More]]<br />
<br />
<br />
== Virindi Old Comp System [[image:Virindi_OCS_Icon.PNG]]==<br />
VirindiOCS (Old Comp System) tracks the burning of components, predicts runtime, and allows you to purchase the proper ratios of components for a particular approximate runtime. <br />
<br />
The goal is to make it easier for you to use old components (with peas).<br />
<br />
[[Virindi_OCS|More]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=BeginnerBundleGuide&diff=1617BeginnerBundleGuide2022-03-25T01:28:18Z<p>The Guru: /* Macro Setting Profiles */</p>
<hr />
<div>WORK IN PROGRESS<br />
<br />
A Quick Reference Guide for the Virindi Tank Bundle - Compiled by [http://www.virindi.net/wiki/index.php?title=Special:Contributions/The_Guru&limit=500&target=The+Guru Hell's Wrath]<br />
<br />
Before diving in you may want to [[Customize Your View]]<br />
<br />
= Virindi Tank [[image:TankIcon.PNG]] =<br />
Click the Tank icon [[image:TankIcon.PNG]] on the [[Virindi Views]](VVS) bar to open the main Virindi Tank plugin.<br />
<br />
== Options tab ==<br />
The main options page handles basic Vtank ranges and a multitude of easy-access options.<br />
<br />
[[image:Vtank_Main.PNG]] <br />
<br />
For detailed explanations of the individual options on the main tab, visit the [[Virindi_Tank_Standard_Options#Options|Standard Options]] page<br />
<br />
You can also view the entire [[Virindi_Tank_Advanced_Options|Advanced Options]] which will be linked to throughout this guide. <br />
<br />
<br />
== Profiles tab==<br />
<br />
[[image:Vtank_Profiles.PNG]]<br />
<br />
=== Macro Setting Profiles ===<br />
Understanding how profiles are managed is vital to running an organized macro. You will likely have many profiles for different locations and tasks.<br />
There are two types of profiles we will talk about: Those with Mine Only enabled, and those without.<br />
<br />
* Click the Macro Settings dropdown list<br />
* You will see [Default] and [ByChar] -- You never want to edit settings within these, think of them as templates. You load one, make a save with a specific name, then edit and use the new save. <br />
* [Default] profile settings will always reset on logout.<br />
* [ByChar] is associated with the Mine Only radio button. This is the profile type you will use the most. <br />
* When creating a new character specific profile you want to have the Mine Only radio button enabled, selecting the [ByChar] profile automatically enables Mine Only.<br />
<br />
==== Saving [Char] Macro Settings ====<br />
* Select [ByChar] from the Macro Settings dropdown then click the "CopyTo" button.<br />
* Your chat bar will be filled with the string "/vt settings savechar" -- Type a name after "savechar" and press Enter. (eg. "/vt settings savechar ProfileName")<br />
* You will now have a "[Char]ProfileName" profile in the Macro Settings dropdown - You can now safely begin making changes to the settings.<br />
** Changes made within profiles are saved immediately and automatically. You do not have to save after making alterations. This is the reason for using [ByChar] as a template to make new profiles.<br />
<br />
==== Transferring [Char] Profiles to Alt Char. ====<br />
* To transfer a [Char] setting profile over to another character you will need to load the [Char]profile, disable Mine Only and click CopyTo. <br />
* In your chat bar you will see the string "/vt settings save" - type a profile name and click enter. (eg. "/vt settings save TuskerIsland")<br />
* On the character you want the profile transferred to, uncheck Mine Only and select the Macro Settings dropdown. You will see "TuskerIsland" listed without a [Char] tag.<br />
* You now need to save the cross-char profile as a [Char] profile. Select "TuskerIsland" from the dropdown and then enable Mine Only. Click "CopyTo" and the string "/vt settings savechar" should appear in your chat bar. Type TuskerIsland and press Enter. <br />
** You should now see "[Char]TuskerIsland" in your macro settings dropdown list.<br />
**Now you must populate the Items/Consumables tab with your items, and assign any weapon types in the Monster tab that may have become unassigned as a result of transferring the profile.<br />
<br />
=== Auto-Navigation Profiles ===<br />
* To create a new route select [None] from the dropdown and then click the "CopyTo" button - "/vt nav save" will appear in your char bar, type a name and hit Enter<br />
* Build and edit your routes on the Routes tab<br />
<br />
=== Looting Profiles ===<br />
* Displays a list of loot profiles, select one to load it<br />
* Profiles loaded from your \\VirindiPlugins\VirindiTank folder<br />
<br />
* Loot profiles for Virindi Tank are built outside of game using the [[Virindi_Tank_Classic_Loot_System|Virindi Tank Classic Loot System]]<br />
* The classic looter is extremely powerful. Example profiles are available on the above page.<br />
* [http://www.immortalbob.com Immortalbob.com] provides a profile called "Lootsnob" that has hundreds of rules for all manner of armor/weapon/trophies/collectibles.<br />
<br />
** Aside from the Vtank Classic Looter, you can also use [http://asheron.aetherific.com/Alinco Alinco3], [http://asheron.aetherific.com/GearFoundry GearFoundry], or any other plugin that will link its profile to Vtank<br />
** OnLogin, if no loot profile is selected, Vtank will detect if GearFoundry or Alinco is loaded and provide a link you can click to attach your profile to Vtank.<br />
<br />
=== Meta Action Profiles ===<br />
* Select a meta profile from the dropdown list to load it <br />
* You build and edit on the [[BeginnerBundleGuide#Meta tab|Meta tab]]<br />
<br />
== Vitals tab ==<br />
The vitals tab is crucial to your survival. Depending on your skill level you will want to adjust the sliders to best fit your circumstances.<br />
Lower level spells do not revitalize as well so the sliders must be adjusted to give you maximum benefit. Trial and error is the name of the game.<br />
<br />
[[image:Vtank_vitals.PNG]]<br />
<br />
* The first three sliders manage your vitals during combat<br />
<br />
* The second set of sliders manages your Top-off vitals. When there are no combat targets in range you will recharge to these values.<br />
<br />
* The third set of sliders manages your Helper spells<br />
<br />
**[[Virindi_Tank_Advanced_Options#Recharge|Advanced Recharge Options]] can be used to set exact percentages of vitals, enable Helper spells, and set ranges.<br />
<br />
== Monsters tab ==<br />
The monsters tab is where you will manage the different types of attacks, debuffs, and weapons you use against specific monsters.<br />
<br />
[[image:Vtank_monsters.PNG]]<br />
<br />
* Type in a monster name and click Add, or select a monster in the 3D window and click Add Sel.<br />
<br />
* Once you have a monster name entered you can set the ways you want to react. Hovering over each of the letters will show a tooltip. <br />
* Click the text beneath Dmg type / Extra Vuln / Weapon / Offhand / PetDmg to cycle through the available options. <br />
<br />
The monster list can be very simple or quite complex, depending on your needs. <br />
<br />
There are advanced operators and variables you can use to account for very specific situational problems<br />
<br />
Check out [[Virindi_Tank_Monster_List_Matching | Monster List Matching]] for more information.<br />
<br />
== Items tab ==<br />
Within the items tab you add all of your weapons/wands/shields/pets you want to use in your profile. <br />
<br />
[[image:Vtank_items.PNG]]<br />
<br />
*Select an item in your inventory and click "Add" to add it to the list.<br />
<br />
Once an item is listed it can be set in the Monsters tab under the appropriate options. <br />
<br />
<br />
== Consumables tab ==<br />
<br />
<br />
[[image:Vtank_consumables.PNG]]<br />
<br />
* If you use any type of gems/foods/healing kits/potions/lockpicks etc, you can add them to the Consumables list and have Vtank automatically use them at the appropriate times.<br />
* If you don't want to use high level spells you can exclude Scarab types so the spells aren't cast. This is handy for saving on spellcomps when hunting lower level areas on a high level character. <br />
<br />
<br />
[[Virindi_Tank_Advanced_Options#Crafting|Advanced Crafting Options]]<br />
<br />
<br />
* '''Notes''':<br />
** Items that cast spells lasting less than 5 minutes will not work.<br />
<br />
<br />
== Buffs tab ==<br />
Vtank reads your characters skills, spellbook, and available spellcomps to determine which spells to cast. <br />
<br />
[[image:Vtank_buffs.PNG]]<br />
<br />
Creature buffs are always cast. Which ones are used are selected automatically based on the skills that you have trained.<br />
<br />
* The buffs tab is used when you want to Add or Exclude buffs from your buffing profile.<br />
* Normally you will not need to change anything on this tab. <br />
<br />
* Life protections and banes can be selected through the advanced panel by changing the BuffProfile_Prots and BuffProfile_Banes options. The builtin selections are:<br />
<br />
All (Bludgeon, Pierce, Slash, Acid, Lightning, Cold, Fire)<br />
None<br />
B (Bludgeon)<br />
BPS (Bludgeon, Pierce, Slash)<br />
BPSA (Bludgeon, Pierce, Slash, Acid)<br />
ALFC (Acid, Lightning, Fire, Cold)<br />
Custom (see below)<br />
<br />
'Custom' element sets are specified similarly to the above, by selecting among the letters BPSALFC. To do this, set the option in the advanced options panel to 'Custom' and then issue a command like the following, replacing BPSALFC with the letters you want:<br />
<br />
/vt opt set BuffProfile-Prots BPSALFC<br />
/vt opt set BuffProfile-Banes BPSALFC<br />
<br />
Set [[Virindi_Plugins_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use.2C_and_how_can_I_change_it.3F|skill thresholds]] so you can pick up scrolls and attempt to cast spells above your skill level<br />
<br />
[[Virindi_Tank_Advanced_Options#Buffing|Advanced Buffing Options]]<br />
<br />
<br />
* '''Notes''':<br />
** "/filter -magic" will cause Vtank to loop and continuously cast a single spell. You can "/filter -spellcasting" without issues. <br />
** You can safely filter the chat using the AC Chat options instead of the /filter commands. <br />
<br />
<br />
== Route tab == <br />
This is where you will build all of your auto-navigation routes.<br />
<br />
[[image:Route_tab.PNG]]<br />
<br />
* Turn your character with [[Virindi_Plugins_FAQ#My_character_stops_at_each_Nav_point_in_my_route_and_won.27t_proceed_until_I_press_a_key._What.27s_wrong.3F|camera turning]] must be disabled for auto-navigation to function<br />
* Default movement keys must be used in your keyboard configuration<br />
<br />
<br />
There are 4 types of routes you can build:<br />
* Circular routes traverse waypoints in the order ABC-ABC.(After last waypoint, will return to first waypoint)<br />
* Linear routes traverse waypoints in the order ABC-CBA. (Will run back and forth from beginning to end)<br />
* Once routes traverse a route just once. Waypoints in the route tab will appear to delete themselves, reloading the route reloads the waypoints (Good for ToVendor/ToDungeon routes.)<br />
* Follow routes follow another player-character. See [[BeginnerBundleGuide#Virindi_Follower|Mini Remote]] <br />
<br />
<br />
* To build a route you simply run while clicking the "Add" button to add waypoints. <br />
* Aside from waypoints you can input Recalls, Use Portal/NPC, Pauses, Chat commands and Jumps.<br />
<br />
<br />
Jumps<br />
* Jumps can be executed by a chat command, or added to a navroute using a different command<br />
* Execute a jump: "/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar]<br />
* Add a jump to a route: "/vt addnavjump [heading] [shift] [milliseconds]"<br />
* Execute a strafe jump: "/vt addnavjump [heading] [shift: true or false] [milliseconds] [strafeleft/straferight/forward]"<br />
** For example "/vt jump 360 true 500 strafeleft" will make you face north and do a left-strafe shift jump at half power. <br />
<br />
<br />
*Note: /vt addnavjump will automatically pause and issue the jump. If you use the /vt jump command you must add the pauses yourself<br />
<br />
<br />
Checkpoints<br />
* Add to routes with "/vt addnavcheckpoint"<br />
* Functions as a normal waypoint, except that when reaching it the macro pauses until the server reports back your location as being near the point. (Normally, your client sees your location as a bit ahead of what the server sees, due to communication latency.) This point type can ensure that you really made it around a corner or through a doorway. Once the server reports that you are in a location you will not be "rubber-banded" back. Sometimes you will stop and wait and the server will disagree on your final location, so if you have been waiting awhile the macro will inch forward.<br />
<br />
<br />
Route Editing<br />
* You can edit routes by using the drop-down menu containing "Add to End", "Insert Above" and "Insert Below"<br />
* The curly green arrow [[image:GreenTurnDownArrow.PNG ]] sets the route to the nearest waypoint to your location. You can use the green and red up/down arrows to change the waypoint.<br />
* You must change your route to circular to use the curly green arrow. It will not work for once and linear routes. Change back once finished editing.<br />
<br />
<br />
<br />
* [[Virindi_Tank_Standard_Options#Route_tab|Standard Options]]<br />
* [[Virindi_Tank_Advanced_Options#Navigation|Advanced Navigation Options]] have tweaks for approach corpse distance, opendoors enable/disable, nav priority boost and others.<br />
<br />
== Meta tab ==<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. <br />
<br />
With meta you can create Hunt / Recomp / Return On Death routines, automate entire quests, control multiple characters through chat commands and much more.<br />
<br />
Check out the [[Virindi_Tank_Meta_System|Meta System]] page for more information.<br />
<br />
<br />
= Virindi Classic Looter =<br />
<br />
Virindi Tank provides a standalone loot editor called Virindi Classic Looter<br />
* Found in your VirindiPlugins\VirindiTankClassicLooter folder (typically C:\Games\VirindiPlugins\VirindiTankClassicLooter)<br />
** Run "uTank2 Settings Editor.exe"<br />
<br />
The Classic Looter is quite extensive and requires detailed explanations.<br />
<br />
Information can be found on the following pages<br />
* [[VTClassic_Tutorial |Tutorial]]<br />
* [[VTClassic_Advanced_Tips |Advanced Tips]]<br />
* [[VTClassic_Sample_Profiles |Sample Profiles]]<br />
* [http://acpedia.org/wiki/User:Immortalbob/Guides/Beginner%27s_Guide_to_looting_with_VTank VTClassic Guide] - by Immortalbob<br />
<br />
If you don't like the Classic Looter or feel it is too complicated for your needs you can use an alternate plugin for loot profiles<br />
<br />
At login, Vtank will auto-detect if you are running Alinco or GearFoundry without a loot profile loaded. <br />
If so, it will provide a link to connect the plugins.<br />
** [http://asheron.aetherific.com/GearFoundry GearFoundry]<br />
** [http://asheron.aetherific.com/Alinco Alinco3] - How to [[Virindi_Plugins_FAQ#How_do_I_use_Alinco_with_Virindi_Tank.3F |connect Alinco]] (Alinco does not recognize tier8 loot)<br />
<br />
= Virindi Integrator2 [[image:I2_Icon_inactive.PNG]] [[image:I2_Icon_Active.PNG]] =<br />
* VI2 connects to a central server in order to provide fellow-like groups, friends notifications, tells, automated mapping and ally location awareness. <br />
* Friends and /tells in VI2 operate through an account-based system; sent tells go to every character logged in under the same VI2 account, and friends logging on to their VI2 account appear as online regardless of which AC character or server they are logged in to.<br />
* VI2 is completely AC-world independent, allowing communication and even questing to function easily across different game worlds. <br />
<br />
* Fellow Members prefer to attack vulned/imped mobs first.<br />
* Fellow members will try not to double-vuln mobs<br />
* Fellow Members heal each other without the need for the AC Fellow Panel to be open<br />
<br />
<br />
Visit the [[Virindi Integrator 2 |Virindi Integrator2]] page for a detailed breakdown of the plugin.<br />
<br />
<br />
= Virindi Reporter [[image:Reporter_Icon.PNG]] =<br />
* Reports XP/Lum Earnings to yourself, fellowship chat, or allegiance chat. <br />
* Must be running for XP/Lum Earning properties to appear on the Status HUD<br />
<br />
[[Virindi_Reporter |More]]<br />
<br />
<br />
= Virindi Chat System 5 [[image:VCS_Icon.PNG]]=<br />
* A filtering plugin for text in the AC chatboxes. It allows you to define rules that specify where matching text will go, and what color it will become, with the option for corresponding sound alerts. <br />
* These rules apply not only to AC's text, but also to the text output of all Virindi Bundle plugins.<br />
<br />
[[Virindi_Chat_System_5|More]]<br />
<br />
<br />
= Virindi Item Tool [[image:VIT_Icon.PNG]] = <br />
* The Give tab is used to hand large quantities of the same type item, quickly, to another character or NPC<br />
* The Buy tab has options to select which item you need to buy, how many, and which items to sell to cover the costs(pea's/mmds) <br />
* The GiveVT tab has the Go button for pre-built Buy/Sell profiles to be triggered<br />
* The Chest tab allows you to automatically use keys on a chest and transfer looted items to a mule.<br />
* The Comps tab stores a list of user selected items to automatically purchase from vendors <br />
<br />
* [http://magtools.codeplex.com Mag-Tools] calls on VIT to handle item transfer for its Auto Buy/Sell feature. <br />
<br />
[[Virindi_Item_Tool |More]]<br />
<br />
<br />
= Virindi Follower =<br />
<br />
Follow Character is built in to the [[Virindi HUDs]] MiniRemote<br />
<br />
* Select who you want to follow and Press the "FC" button [[image:Follow_Char.PNG]] on the MiniRemote.<br />
* "C" toggles "Follow character around corners"<br />
** Enabled: Follows the leaders exact route - Mostly used inside<br />
** Disabled: Runs directly at the leader - Mostly used outside<br />
<br />
<br />
The stand-alone version of [[Virindi Follower]] is unlikely to be updated in the future.<br />
<br />
<br />
= Virindi HUDs [[image:VirindiUIsIcon.png]]= <br />
Currently included:<br />
* Comps HUD<br />
* VTank Remote Control<br />
* VVS Chat Window<br />
* Status HUD<br />
* H/S/M Bar. <br />
* Old Style H/S/M Bar<br />
* ItemTool Comps HUD<br />
<br />
More information on the [[Virindi HUDs]] or [[Customize Your View]] page<br />
<br />
<br />
= Virindi Hotkey System [[image:Virindi_Hotkey_System_Icon.PNG]] =<br />
* Allows you to set hotkeys to perform functions created by different plugins. <br />
* As an alternative to Decal Hotkey System, VHS uses Virindi Views<br />
* Supports assigning hotkeys to joystick/gamepad buttons. <br />
<br />
[[Virindi Hotkey System|More]]<br />
<br />
<br />
= Virindi Sense [[image:Virindi_Sense_Icon.PNG]]=<br />
A simple 6th Sense style plugin.<br />
* Input items you wish to track on the Setup tab<br />
* If something is detected you will be alerted in chat and the item will be listed on the Detected tab<br />
<br />
[[Virindi_Sense|More]]<br />
<br />
<br />
= Virindi Window Tool [[image:VWTIcon.png]] = <br />
* Used to manage multiple UI Layouts<br />
* Save and load UI captures with a GUI rather than the AC chat commands.<br />
* Saves location of all VVS plugins<br />
* Offers the "Old AC UI" option<br />
<br />
[[Virindi_Window_Tool|More]]<br />
<br />
<br />
= Virindi Global Inventory [[image:VGI_Icon.PNG]] =<br />
A simple tool for managing armor, weapons and misc items on mules. <br />
* You must log on each character who's inventory you would like to track and choose a Tracking style, then wait for it to read all items.<br />
* You can search by item name/spells/sets and others. It will display all items matching the query and the character each item is on.<br />
* Suit Search application helps you filter through and match your gear to create the best possible suits.<br />
* World View application lists all weapons and pets for each character in a spreadsheet for easy viewing. <br />
<br />
[[Virindi_Global_Inventory|More]]<br />
<br />
<br />
= GoArrow (VVS) [[image:GoArrow_Icon.PNG]] =<br />
A version of Digero's GoArrow plugin which has been modified to operate in Virindi Views.<br />
<br />
* Route-finding between any location by coordinates, searching locations, or manipulating the map.<br />
* Arrow HUD to show you the direction of your next waypoint or endpoint. <br />
* Filter options and ranges to display locations/npcs in your vicinity<br />
<br />
[[GoArrow_(VVS_Edition)|More]]<br />
<br />
<br />
= SSSort (VVS) [[image:SSSort_VVS_Icon.PNG]]=<br />
SSSort sorts the scrolls, salvage, or mana stones in your main pack or side packs.<br />
<br />
It has a number of specialized sorting criteria for scrolls, salvage, and mana stones. <br />
<br />
[[SSSort_(VVS_Edition)|More]]<br />
<br />
<br />
=Non-Bundle VVS Plugins=<br />
Available for download on the [http://www.virindi.net/plugins/ Virindi Plugins] page.<br />
== Virindi Armor Color Tool [[image:VACT_Icon.PNG]] ==<br />
A DCS-like utility for viewing the colors of armor. <br />
* The colors it displays are the same as found in Virindi Tank propertydumps<br />
* Simply open the plugin and ID an item to retrieve the palette list. <br />
<br />
[[Virindi_Armor_Color_Tool|More]]<br />
<br />
== SkunkVision (VVS) [[image:SkunkVision_Icon.PNG]] ==<br />
The SkunkVision control panel has three toggles for enabling or disabling the following features:<br />
* Unclimbable slopes: Highlights those areas of a mountain or cliff that are too steep to climb.<br />
* Impassable water: Highlights those areas of open water that are too deep to wade.<br />
* Dungeon light: Lights up dark dungeon caverns.<br />
<br />
[[SkunkVision_VVS_Edition|More]]<br />
<br />
<br />
== Virindi XP Helper [[image:XPHelper_Icon.PNG]]==<br />
Virindi XP Helper assists in determining how much your character's primary attributes (strength, endurance, etc) should cost to raise based on the costs of your skills and secondary attributes (health, stamina, mana). <br />
<br />
[[Virindi_XPHelper|More]]<br />
<br />
<br />
== Virindi Old Comp System [[image:Virindi_OCS_Icon.PNG]]==<br />
VirindiOCS (Old Comp System) tracks the burning of components, predicts runtime, and allows you to purchase the proper ratios of components for a particular approximate runtime. <br />
<br />
The goal is to make it easier for you to use old components (with peas).<br />
<br />
[[Virindi_OCS|More]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=BeginnerBundleGuide&diff=1616BeginnerBundleGuide2022-03-25T01:20:09Z<p>The Guru: /* Monsters tab */</p>
<hr />
<div>WORK IN PROGRESS<br />
<br />
A Quick Reference Guide for the Virindi Tank Bundle - Compiled by [http://www.virindi.net/wiki/index.php?title=Special:Contributions/The_Guru&limit=500&target=The+Guru Hell's Wrath]<br />
<br />
Before diving in you may want to [[Customize Your View]]<br />
<br />
= Virindi Tank [[image:TankIcon.PNG]] =<br />
Click the Tank icon [[image:TankIcon.PNG]] on the [[Virindi Views]](VVS) bar to open the main Virindi Tank plugin.<br />
<br />
== Options tab ==<br />
The main options page handles basic Vtank ranges and a multitude of easy-access options.<br />
<br />
[[image:Vtank_Main.PNG]] <br />
<br />
For detailed explanations of the individual options on the main tab, visit the [[Virindi_Tank_Standard_Options#Options|Standard Options]] page<br />
<br />
You can also view the entire [[Virindi_Tank_Advanced_Options|Advanced Options]] which will be linked to throughout this guide. <br />
<br />
<br />
== Profiles tab==<br />
<br />
[[image:Vtank_Profiles.PNG]]<br />
<br />
=== Macro Setting Profiles ===<br />
Understanding how profiles are managed is vital to running an organized macro. You will likely have many profiles for different locations and tasks.<br />
There are two types of profiles we will talk about: Those with Mine Only enabled, and those without.<br />
<br />
* Click the Macro Settings dropdown list<br />
* You will see [Default] and [ByChar] -- You never want to edit settings within these, think of them as templates. You load one, make a save with a specific name, then edit and use the new save. <br />
* [Default] profile settings will always reset on logout.<br />
* [ByChar] is associated with the Mine Only radio button. This is the profile type you will use the most. <br />
* When creating a new character specific profile you want to have the Mine Only radio button enabled, selecting the [ByChar] profile automatically enables Mine Only.<br />
<br />
==== Saving [Char] Macro Settings ====<br />
* Select [ByChar] from the Macro Settings dropdown then click the "CopyTo" button.<br />
* Your chat bar will be filled with the string "/vt settings savechar" -- Type a name after "savechar" and press Enter. (eg. "/vt settings savechar TuskerIsland")<br />
* You will now have a "[Char]TuskerIsland" profile in the Macro Settings dropdown - You can now safely begin making changes to the settings.<br />
** Changes made within profiles are saved immediately and automatically. You do not have to save after making alterations. This is the reason for using [ByChar] as a template to make new profiles.<br />
<br />
==== Transferring [Char] Profiles to Alt Char. ====<br />
* To transfer a [Char] setting profile over to another character you will need to load the [Char]profile, disable Mine Only and click CopyTo. <br />
* In your chat bar you will see the string "/vt settings save" - type a profile name and click enter. (eg. "/vt settings save TuskerIsland")<br />
* On the character you want the profile transferred to, uncheck Mine Only and select the Macro Settings dropdown. You will see "TuskerIsland" listed without a [Char] tag.<br />
* You now need to save the cross-char profile as a [Char] profile. Select "TuskerIsland" from the dropdown and then enable Mine Only. Click "CopyTo" and the string "/vt settings savechar" should appear in your chat bar. Type TuskerIsland and press Enter. <br />
** You should now see "[Char]TuskerIsland" in your macro settings dropdown list.<br />
**Now you must populate the Items/Consumables tab with your items, and assign any weapon types in the Monster tab that may have become unassigned as a result of transferring the profile.<br />
<br />
=== Auto-Navigation Profiles ===<br />
* To create a new route select [None] from the dropdown and then click the "CopyTo" button - "/vt nav save" will appear in your char bar, type a name and hit Enter<br />
* Build and edit your routes on the Routes tab<br />
<br />
=== Looting Profiles ===<br />
* Displays a list of loot profiles, select one to load it<br />
* Profiles loaded from your \\VirindiPlugins\VirindiTank folder<br />
<br />
* Loot profiles for Virindi Tank are built outside of game using the [[Virindi_Tank_Classic_Loot_System|Virindi Tank Classic Loot System]]<br />
* The classic looter is extremely powerful. Example profiles are available on the above page.<br />
* [http://www.immortalbob.com Immortalbob.com] provides a profile called "Lootsnob" that has hundreds of rules for all manner of armor/weapon/trophies/collectibles.<br />
<br />
** Aside from the Vtank Classic Looter, you can also use [http://asheron.aetherific.com/Alinco Alinco3], [http://asheron.aetherific.com/GearFoundry GearFoundry], or any other plugin that will link its profile to Vtank<br />
** OnLogin, if no loot profile is selected, Vtank will detect if GearFoundry or Alinco is loaded and provide a link you can click to attach your profile to Vtank.<br />
<br />
=== Meta Action Profiles ===<br />
* Select a meta profile from the dropdown list to load it <br />
* You build and edit on the [[BeginnerBundleGuide#Meta tab|Meta tab]]<br />
<br />
== Vitals tab ==<br />
The vitals tab is crucial to your survival. Depending on your skill level you will want to adjust the sliders to best fit your circumstances.<br />
Lower level spells do not revitalize as well so the sliders must be adjusted to give you maximum benefit. Trial and error is the name of the game.<br />
<br />
[[image:Vtank_vitals.PNG]]<br />
<br />
* The first three sliders manage your vitals during combat<br />
<br />
* The second set of sliders manages your Top-off vitals. When there are no combat targets in range you will recharge to these values.<br />
<br />
* The third set of sliders manages your Helper spells<br />
<br />
**[[Virindi_Tank_Advanced_Options#Recharge|Advanced Recharge Options]] can be used to set exact percentages of vitals, enable Helper spells, and set ranges.<br />
<br />
== Monsters tab ==<br />
The monsters tab is where you will manage the different types of attacks, debuffs, and weapons you use against specific monsters.<br />
<br />
[[image:Vtank_monsters.PNG]]<br />
<br />
* Type in a monster name and click Add, or select a monster in the 3D window and click Add Sel.<br />
<br />
* Once you have a monster name entered you can set the ways you want to react. Hovering over each of the letters will show a tooltip. <br />
* Click the text beneath Dmg type / Extra Vuln / Weapon / Offhand / PetDmg to cycle through the available options. <br />
<br />
The monster list can be very simple or quite complex, depending on your needs. <br />
<br />
There are advanced operators and variables you can use to account for very specific situational problems<br />
<br />
Check out [[Virindi_Tank_Monster_List_Matching | Monster List Matching]] for more information.<br />
<br />
== Items tab ==<br />
Within the items tab you add all of your weapons/wands/shields/pets you want to use in your profile. <br />
<br />
[[image:Vtank_items.PNG]]<br />
<br />
*Select an item in your inventory and click "Add" to add it to the list.<br />
<br />
Once an item is listed it can be set in the Monsters tab under the appropriate options. <br />
<br />
<br />
== Consumables tab ==<br />
<br />
<br />
[[image:Vtank_consumables.PNG]]<br />
<br />
* If you use any type of gems/foods/healing kits/potions/lockpicks etc, you can add them to the Consumables list and have Vtank automatically use them at the appropriate times.<br />
* If you don't want to use high level spells you can exclude Scarab types so the spells aren't cast. This is handy for saving on spellcomps when hunting lower level areas on a high level character. <br />
<br />
<br />
[[Virindi_Tank_Advanced_Options#Crafting|Advanced Crafting Options]]<br />
<br />
<br />
* '''Notes''':<br />
** Items that cast spells lasting less than 5 minutes will not work.<br />
<br />
<br />
== Buffs tab ==<br />
Vtank reads your characters skills, spellbook, and available spellcomps to determine which spells to cast. <br />
<br />
[[image:Vtank_buffs.PNG]]<br />
<br />
Creature buffs are always cast. Which ones are used are selected automatically based on the skills that you have trained.<br />
<br />
* The buffs tab is used when you want to Add or Exclude buffs from your buffing profile.<br />
* Normally you will not need to change anything on this tab. <br />
<br />
* Life protections and banes can be selected through the advanced panel by changing the BuffProfile_Prots and BuffProfile_Banes options. The builtin selections are:<br />
<br />
All (Bludgeon, Pierce, Slash, Acid, Lightning, Cold, Fire)<br />
None<br />
B (Bludgeon)<br />
BPS (Bludgeon, Pierce, Slash)<br />
BPSA (Bludgeon, Pierce, Slash, Acid)<br />
ALFC (Acid, Lightning, Fire, Cold)<br />
Custom (see below)<br />
<br />
'Custom' element sets are specified similarly to the above, by selecting among the letters BPSALFC. To do this, set the option in the advanced options panel to 'Custom' and then issue a command like the following, replacing BPSALFC with the letters you want:<br />
<br />
/vt opt set BuffProfile-Prots BPSALFC<br />
/vt opt set BuffProfile-Banes BPSALFC<br />
<br />
Set [[Virindi_Plugins_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use.2C_and_how_can_I_change_it.3F|skill thresholds]] so you can pick up scrolls and attempt to cast spells above your skill level<br />
<br />
[[Virindi_Tank_Advanced_Options#Buffing|Advanced Buffing Options]]<br />
<br />
<br />
* '''Notes''':<br />
** "/filter -magic" will cause Vtank to loop and continuously cast a single spell. You can "/filter -spellcasting" without issues. <br />
** You can safely filter the chat using the AC Chat options instead of the /filter commands. <br />
<br />
<br />
== Route tab == <br />
This is where you will build all of your auto-navigation routes.<br />
<br />
[[image:Route_tab.PNG]]<br />
<br />
* Turn your character with [[Virindi_Plugins_FAQ#My_character_stops_at_each_Nav_point_in_my_route_and_won.27t_proceed_until_I_press_a_key._What.27s_wrong.3F|camera turning]] must be disabled for auto-navigation to function<br />
* Default movement keys must be used in your keyboard configuration<br />
<br />
<br />
There are 4 types of routes you can build:<br />
* Circular routes traverse waypoints in the order ABC-ABC.(After last waypoint, will return to first waypoint)<br />
* Linear routes traverse waypoints in the order ABC-CBA. (Will run back and forth from beginning to end)<br />
* Once routes traverse a route just once. Waypoints in the route tab will appear to delete themselves, reloading the route reloads the waypoints (Good for ToVendor/ToDungeon routes.)<br />
* Follow routes follow another player-character. See [[BeginnerBundleGuide#Virindi_Follower|Mini Remote]] <br />
<br />
<br />
* To build a route you simply run while clicking the "Add" button to add waypoints. <br />
* Aside from waypoints you can input Recalls, Use Portal/NPC, Pauses, Chat commands and Jumps.<br />
<br />
<br />
Jumps<br />
* Jumps can be executed by a chat command, or added to a navroute using a different command<br />
* Execute a jump: "/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar]<br />
* Add a jump to a route: "/vt addnavjump [heading] [shift] [milliseconds]"<br />
* Execute a strafe jump: "/vt addnavjump [heading] [shift: true or false] [milliseconds] [strafeleft/straferight/forward]"<br />
** For example "/vt jump 360 true 500 strafeleft" will make you face north and do a left-strafe shift jump at half power. <br />
<br />
<br />
*Note: /vt addnavjump will automatically pause and issue the jump. If you use the /vt jump command you must add the pauses yourself<br />
<br />
<br />
Checkpoints<br />
* Add to routes with "/vt addnavcheckpoint"<br />
* Functions as a normal waypoint, except that when reaching it the macro pauses until the server reports back your location as being near the point. (Normally, your client sees your location as a bit ahead of what the server sees, due to communication latency.) This point type can ensure that you really made it around a corner or through a doorway. Once the server reports that you are in a location you will not be "rubber-banded" back. Sometimes you will stop and wait and the server will disagree on your final location, so if you have been waiting awhile the macro will inch forward.<br />
<br />
<br />
Route Editing<br />
* You can edit routes by using the drop-down menu containing "Add to End", "Insert Above" and "Insert Below"<br />
* The curly green arrow [[image:GreenTurnDownArrow.PNG ]] sets the route to the nearest waypoint to your location. You can use the green and red up/down arrows to change the waypoint.<br />
* You must change your route to circular to use the curly green arrow. It will not work for once and linear routes. Change back once finished editing.<br />
<br />
<br />
<br />
* [[Virindi_Tank_Standard_Options#Route_tab|Standard Options]]<br />
* [[Virindi_Tank_Advanced_Options#Navigation|Advanced Navigation Options]] have tweaks for approach corpse distance, opendoors enable/disable, nav priority boost and others.<br />
<br />
== Meta tab ==<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. <br />
<br />
With meta you can create Hunt / Recomp / Return On Death routines, automate entire quests, control multiple characters through chat commands and much more.<br />
<br />
Check out the [[Virindi_Tank_Meta_System|Meta System]] page for more information.<br />
<br />
<br />
= Virindi Classic Looter =<br />
<br />
Virindi Tank provides a standalone loot editor called Virindi Classic Looter<br />
* Found in your VirindiPlugins\VirindiTankClassicLooter folder (typically C:\Games\VirindiPlugins\VirindiTankClassicLooter)<br />
** Run "uTank2 Settings Editor.exe"<br />
<br />
The Classic Looter is quite extensive and requires detailed explanations.<br />
<br />
Information can be found on the following pages<br />
* [[VTClassic_Tutorial |Tutorial]]<br />
* [[VTClassic_Advanced_Tips |Advanced Tips]]<br />
* [[VTClassic_Sample_Profiles |Sample Profiles]]<br />
* [http://acpedia.org/wiki/User:Immortalbob/Guides/Beginner%27s_Guide_to_looting_with_VTank VTClassic Guide] - by Immortalbob<br />
<br />
If you don't like the Classic Looter or feel it is too complicated for your needs you can use an alternate plugin for loot profiles<br />
<br />
At login, Vtank will auto-detect if you are running Alinco or GearFoundry without a loot profile loaded. <br />
If so, it will provide a link to connect the plugins.<br />
** [http://asheron.aetherific.com/GearFoundry GearFoundry]<br />
** [http://asheron.aetherific.com/Alinco Alinco3] - How to [[Virindi_Plugins_FAQ#How_do_I_use_Alinco_with_Virindi_Tank.3F |connect Alinco]] (Alinco does not recognize tier8 loot)<br />
<br />
= Virindi Integrator2 [[image:I2_Icon_inactive.PNG]] [[image:I2_Icon_Active.PNG]] =<br />
* VI2 connects to a central server in order to provide fellow-like groups, friends notifications, tells, automated mapping and ally location awareness. <br />
* Friends and /tells in VI2 operate through an account-based system; sent tells go to every character logged in under the same VI2 account, and friends logging on to their VI2 account appear as online regardless of which AC character or server they are logged in to.<br />
* VI2 is completely AC-world independent, allowing communication and even questing to function easily across different game worlds. <br />
<br />
* Fellow Members prefer to attack vulned/imped mobs first.<br />
* Fellow members will try not to double-vuln mobs<br />
* Fellow Members heal each other without the need for the AC Fellow Panel to be open<br />
<br />
<br />
Visit the [[Virindi Integrator 2 |Virindi Integrator2]] page for a detailed breakdown of the plugin.<br />
<br />
<br />
= Virindi Reporter [[image:Reporter_Icon.PNG]] =<br />
* Reports XP/Lum Earnings to yourself, fellowship chat, or allegiance chat. <br />
* Must be running for XP/Lum Earning properties to appear on the Status HUD<br />
<br />
[[Virindi_Reporter |More]]<br />
<br />
<br />
= Virindi Chat System 5 [[image:VCS_Icon.PNG]]=<br />
* A filtering plugin for text in the AC chatboxes. It allows you to define rules that specify where matching text will go, and what color it will become, with the option for corresponding sound alerts. <br />
* These rules apply not only to AC's text, but also to the text output of all Virindi Bundle plugins.<br />
<br />
[[Virindi_Chat_System_5|More]]<br />
<br />
<br />
= Virindi Item Tool [[image:VIT_Icon.PNG]] = <br />
* The Give tab is used to hand large quantities of the same type item, quickly, to another character or NPC<br />
* The Buy tab has options to select which item you need to buy, how many, and which items to sell to cover the costs(pea's/mmds) <br />
* The GiveVT tab has the Go button for pre-built Buy/Sell profiles to be triggered<br />
* The Chest tab allows you to automatically use keys on a chest and transfer looted items to a mule.<br />
* The Comps tab stores a list of user selected items to automatically purchase from vendors <br />
<br />
* [http://magtools.codeplex.com Mag-Tools] calls on VIT to handle item transfer for its Auto Buy/Sell feature. <br />
<br />
[[Virindi_Item_Tool |More]]<br />
<br />
<br />
= Virindi Follower =<br />
<br />
Follow Character is built in to the [[Virindi HUDs]] MiniRemote<br />
<br />
* Select who you want to follow and Press the "FC" button [[image:Follow_Char.PNG]] on the MiniRemote.<br />
* "C" toggles "Follow character around corners"<br />
** Enabled: Follows the leaders exact route - Mostly used inside<br />
** Disabled: Runs directly at the leader - Mostly used outside<br />
<br />
<br />
The stand-alone version of [[Virindi Follower]] is unlikely to be updated in the future.<br />
<br />
<br />
= Virindi HUDs [[image:VirindiUIsIcon.png]]= <br />
Currently included:<br />
* Comps HUD<br />
* VTank Remote Control<br />
* VVS Chat Window<br />
* Status HUD<br />
* H/S/M Bar. <br />
* Old Style H/S/M Bar<br />
* ItemTool Comps HUD<br />
<br />
More information on the [[Virindi HUDs]] or [[Customize Your View]] page<br />
<br />
<br />
= Virindi Hotkey System [[image:Virindi_Hotkey_System_Icon.PNG]] =<br />
* Allows you to set hotkeys to perform functions created by different plugins. <br />
* As an alternative to Decal Hotkey System, VHS uses Virindi Views<br />
* Supports assigning hotkeys to joystick/gamepad buttons. <br />
<br />
[[Virindi Hotkey System|More]]<br />
<br />
<br />
= Virindi Sense [[image:Virindi_Sense_Icon.PNG]]=<br />
A simple 6th Sense style plugin.<br />
* Input items you wish to track on the Setup tab<br />
* If something is detected you will be alerted in chat and the item will be listed on the Detected tab<br />
<br />
[[Virindi_Sense|More]]<br />
<br />
<br />
= Virindi Window Tool [[image:VWTIcon.png]] = <br />
* Used to manage multiple UI Layouts<br />
* Save and load UI captures with a GUI rather than the AC chat commands.<br />
* Saves location of all VVS plugins<br />
* Offers the "Old AC UI" option<br />
<br />
[[Virindi_Window_Tool|More]]<br />
<br />
<br />
= Virindi Global Inventory [[image:VGI_Icon.PNG]] =<br />
A simple tool for managing armor, weapons and misc items on mules. <br />
* You must log on each character who's inventory you would like to track and choose a Tracking style, then wait for it to read all items.<br />
* You can search by item name/spells/sets and others. It will display all items matching the query and the character each item is on.<br />
* Suit Search application helps you filter through and match your gear to create the best possible suits.<br />
* World View application lists all weapons and pets for each character in a spreadsheet for easy viewing. <br />
<br />
[[Virindi_Global_Inventory|More]]<br />
<br />
<br />
= GoArrow (VVS) [[image:GoArrow_Icon.PNG]] =<br />
A version of Digero's GoArrow plugin which has been modified to operate in Virindi Views.<br />
<br />
* Route-finding between any location by coordinates, searching locations, or manipulating the map.<br />
* Arrow HUD to show you the direction of your next waypoint or endpoint. <br />
* Filter options and ranges to display locations/npcs in your vicinity<br />
<br />
[[GoArrow_(VVS_Edition)|More]]<br />
<br />
<br />
= SSSort (VVS) [[image:SSSort_VVS_Icon.PNG]]=<br />
SSSort sorts the scrolls, salvage, or mana stones in your main pack or side packs.<br />
<br />
It has a number of specialized sorting criteria for scrolls, salvage, and mana stones. <br />
<br />
[[SSSort_(VVS_Edition)|More]]<br />
<br />
<br />
=Non-Bundle VVS Plugins=<br />
Available for download on the [http://www.virindi.net/plugins/ Virindi Plugins] page.<br />
== Virindi Armor Color Tool [[image:VACT_Icon.PNG]] ==<br />
A DCS-like utility for viewing the colors of armor. <br />
* The colors it displays are the same as found in Virindi Tank propertydumps<br />
* Simply open the plugin and ID an item to retrieve the palette list. <br />
<br />
[[Virindi_Armor_Color_Tool|More]]<br />
<br />
== SkunkVision (VVS) [[image:SkunkVision_Icon.PNG]] ==<br />
The SkunkVision control panel has three toggles for enabling or disabling the following features:<br />
* Unclimbable slopes: Highlights those areas of a mountain or cliff that are too steep to climb.<br />
* Impassable water: Highlights those areas of open water that are too deep to wade.<br />
* Dungeon light: Lights up dark dungeon caverns.<br />
<br />
[[SkunkVision_VVS_Edition|More]]<br />
<br />
<br />
== Virindi XP Helper [[image:XPHelper_Icon.PNG]]==<br />
Virindi XP Helper assists in determining how much your character's primary attributes (strength, endurance, etc) should cost to raise based on the costs of your skills and secondary attributes (health, stamina, mana). <br />
<br />
[[Virindi_XPHelper|More]]<br />
<br />
<br />
== Virindi Old Comp System [[image:Virindi_OCS_Icon.PNG]]==<br />
VirindiOCS (Old Comp System) tracks the burning of components, predicts runtime, and allows you to purchase the proper ratios of components for a particular approximate runtime. <br />
<br />
The goal is to make it easier for you to use old components (with peas).<br />
<br />
[[Virindi_OCS|More]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Advanced_Options&diff=1615Virindi Tank Advanced Options2017-07-09T20:10:22Z<p>The Guru: /* Misc */</p>
<hr />
<div>The Virindi Tank Advanced Options allow you to tweak specific macro actions<br><br />
Many of the Advanced Options can be set via the ''/vt opt list/set/get'' [[Virindi Tank Commands|chat commands]]<br />
<br />
<br />
''*Note: When viewing individual tabs within the advanced options, several options will appear in multiple locations.<br><br />
''The duplicates are not shown when viewing all tabs at once. Making changes in one location will change it overall. <br />
<br />
<br />
*Ranges are displayed in yards on the main options page. To use /vt opt to change range settings you must use (range/240). A range of 5 translates to 0.0208333<br />
<br />
* Do not use the brackets when issuing a command. <br />
**"/vt opt set DoJiggle true"<br />
**"/vt opt set AttackDistance 0.0208333"<br />
<br />
<br />
==Misc==<br />
<br />
'''AutoCram [true/false]''': Moves items from the main pack to side packs<br />
<br />
'''AutoStack [true/false]''': Stacks items towards the bottom-most item in the pack, and into side packs. This means that the partial stack of an item will always be the top-most one in your inventory, which is the order that the game burns components. This prevents having to stack every spell cast, and prevents stacking from pulling items from side packs.<br />
<br />
'''RandomHelperBuffs [true/false]''': Casts random buffs on nearby players<br />
<br />
'''RandomHelperIntervalSeconds [##]''': Sets the timer for RandomHelperBuffs in seconds. <br />
<br />
'''IdlePeaceMode [true/false]''': Loots, navigates, and salvages in peace mode. <br />
<br />
'''StopMacroOnDeath [true/false]''': Causes the macro to become disabled when the character dies<br />
<br />
'''RefillWornMana [true/false]''': Uses mana charge types specified in the Consumables panel to refill worn items<br />
<br />
'''RefillWornMana-Item-ManaPercent [##]''': Sets the minimum percentage of mana left on an item at which to refill<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''ManaChargesWhenOff [true/false]''': When true, mana charges and stones are used to keep equipped mana filled even when the macro is disabled<br />
<br />
'''AutoFellowManagement [true/false]''': When true, automatically recruits players on request, and manages waiting lists and votes when acting as the fellowship leader (See [[Virindi Tank Fellowship Commands]])<br />
<br />
'''DeleteGhostMonsters [true/false]''': Attempts to detect when monsters appear to be there but really do not exist, and signals the client to delete them<br />
<br />
'''GhostMonsterSpellAttemptCount [##]''': The number of times the macro must attempt to cast a spell on a monster, without the spell starting, before the monster is marked as ghost<br />
<br />
'''WhoYouGonnaCall [true/false]''': No Function<br />
<br />
'''BlacklistMonsterAttemptCount [##]''': The number of successful attacks that must miss a target before it is blacklisted<br />
<br />
'''BlacklistMonsterTimeoutSeconds [##]''': The amount of time a monster is blacklisted for being unhittable<br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method to force the deletion of ghost monsters which works for melee, missile and mage attacks.<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''EnableMeta [true/false]''': Enables meta<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''BlacklistCorpseOpenAttemptCount [##]''': The number of times the macro must attempt to open a corpse before it is blacklisted.<br />
<br />
'''BlacklistCorpseOpenTimeoutSeconds [##]''': The number of seconds an unopenable corpse is blacklisted for<br />
<br />
==Recharge==<br />
<br />
'''Recharge-Norm-HitP [##]''': Sets the percentage at which the macro will Heal during combat<br />
<br />
'''Recharge-Norm-Stam [##]''': Sets the percentage at which the macro will Re-stam during combat<br />
<br />
'''Recharge-Norm-Mana [##]''': Sets the percentage at which the macro will get Re-mana during combat<br />
<br />
'''Recharge-NoTarg-HitP [##]''': Sets the percentage to which the macro will Heal when Idle<br />
<br />
'''Recharge-NoTarg-Stam [##]''': Sets the percentage to which the macro will Re-stam when Idle<br />
<br />
'''Recharge-NoTarg-Mana [##]''': Sets the percentage to which the macro will Re-mana when Idle<br />
<br />
'''Recharge-Helper-HitP [##]''': Sets the percentage at which the macro will Heal a fellow<br />
<br />
'''Recharge-Helper-Stam [##]''': Sets the percentage at which the macro will give stamina to a fellow<br />
<br />
'''Recharge-Helper-Mana [##]''': Sets the percentage at which the macro will give mana to a fellow<br />
<br />
'''DoHelp [true/false]''': If true, allies are healed/restamed/given mana. The fellowship window must be open to help fellows (or be in a [[Virindi Integrator 2]] fellowship)<br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows<br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows<br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows<br />
<br />
'''CastDispelSelf [true/false]''': Casts dispel life magic self VII when the macro has a vuln on it<br />
<br />
'''UseDispelItems [true/false]''': Uses either a Gem of Stillness or a Condensed Dispel Potion when the macro has a vuln on it<br />
<br />
'''UseDispelDrum [true/false]''':<br />
<br />
'''UseHealersHeart [true/false]''': When set to true and you have a healer's heart in your item list, the macro uses it for Helper<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up.<br />
<br />
'''RechargeBoostTimeSeconds [##]''': Maximum time for the recharge boost effect to last. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''RechargeBoostAmount [##]''': Number of h/s/m points used for recharge boost. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''MinimumHealKitSuccessChance [##]''': The lowest chance of success, in percent, that the macro will accept when attempting a heal with a health kit <br />
<br />
'''UseKitsInMagicMode [true/false]''': When true, the macro uses available healing kits to heal while in magic mode (with a higher priority than spells)<br />
<br />
'''StaminaToHealthMultiplier [##]''': For a Stamina to Health spell to be used, it must be this much better than a normal healing spell<br />
<br />
'''ManaToHealthMultiplier [##]''': For a Mana to Health spell to be used, it must be thism uch better than a normal healing spell<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''ClearLevelBoostFlagOnCast [true/false]''': When true, RechargeBoost only applies to the first spell cast after switching to magic mode<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
==Melee Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/Disable Combat<br />
<br />
'''DefaultMeleeAttackHeight [1/2/3]''': Sets the default melee attack height. 1 = high, 2 = mid, 3 = low<br />
<br />
'''TargetLock[true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range<br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority<br />
<br />
'''AutoAttackPower [true/false]''': When true, the macro sets melee attack power automatically based on the weapon damage type<br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonsterByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''UseRecklessness [true/false]''': When true, attacks using recklessness if available.<br />
<br />
<br />
==Spell Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/disable Combat<br />
<br />
'''SpellDiffExcessThreshold-Hunt [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]] A positive number raises the skill necessary to cast spells, a negative number lowers it. To attempt higher spells at a low level use a negative number. <br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells<br />
<br />
'''MinimumRingTargets [##]''': The minimum amount of targets necesary within RingDistance for the macro to cast ring spells<br />
<br />
'''SwitchWandToDebuff [true/false]''': If enabled, themacro forces a wand switch to the appropriately selected wand for the monster, even to debuff it. Without this setting, wands are only switched when a war attack is required<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up. <br />
<br />
'''DoJiggle [true/false]''': Secret spell dodge mode<br />
<br />
'''TargetLock [true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead <br />
<br />
'''UseArcs [true/false]''': Arc war spells are used rather than bolts, if both are known for the best level the macro is able to cast<br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority <br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks <br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''DebuffPrecastSeconds [##]''': The number of seconds before a target's debuff is set to expire before the macro will want to recast it. Does not apply to DoT spells.<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''SummonPets [true/false]''': When enabled, the macro summons pets if available and listed in items.<br />
<br />
'''PetRangeMode [0/1]''': Determines what monster range is used when summoning a combat pet. 0 = AttackDistance, 1 = PetCustomRange<br />
<br />
'''PetCustomRange [##]: Custom settings for PetRange. <br />
<br />
'''PetRefillCount-Idle [##]''': If a pet summon item has this many charges or fewer, it will be refilled when idle.<br />
<br />
'''PetRefillCount-Normal [##]''': If a pet summon item has this many charges or fewer, it will be refilled in combat.<br />
<br />
'''PetMonsterDensity [##]''': The minimum number of monsters (configured for summon) that must be in pet range before a pet is summoned.<br />
<br />
==Ranges==<br />
<br />
'''AttackDistance [##]''': Sets the maximum attack distance. Controlled by Monster Range on the [[Virindi Tank Standard Options]]<br />
<br />
'''AttackMinimumDistance [##]''': Sets the minimum attack distance. Default is 0.<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance<br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting<br />
<br />
'''CorpeApproachRange-Min [##]''': The minimum approach distance for corpse looting<br />
<br />
'''NavCloseStopRange [##]''': Follow/Nav Min<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''': <br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows <br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows <br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows <br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells <br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door<br />
<br />
'''DoorOpenRange [##]''': The distance at which the macro attempts to open doors<br />
<br />
==Navigation==<br />
<br />
'''EnableNav [true/false]''': Enable/Disable Navigation<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting <br />
<br />
'''CorpseApproachRange-Min [##]''': The minimum approach distance for corpse looting <br />
<br />
'''NavCloseStopRange [##]''':<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''':<br />
<br />
'''CorpseCacheTimeoutMinutes [##]''': The time in minutes after which a corpse will be removed from the corpse cache<br />
<br />
'''OpenDoors [true/false]''': When True, will cause the macro to open doors within range<br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door <br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficuty that is required for a door to be considered pickable<br />
<br />
'''NavPriorityBoost [true/false]''': Causes the macro to navigate before attacking<br />
<br />
'''FollowAroundCorners [true/false]''': When following a character, if True the follower runs the exact route as leader, if False the follower runs directly at the leader.<br />
<br />
==Buffing==<br />
<br />
'''EnableBuffing [true/false]''': Turns on Buffing<br />
<br />
'''SpellDiffExcessThreshold-Buff [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]]<br />
<br />
'''IdleBuffTOpoff [true/false]''': When the macro is idle, it recasts buffs<br />
<br />
'''IdleBuffTopoffTimeSeconds [##]''': Sets the time left on buffs to begin an IdleBuffTopOff<br />
<br />
'''RebuffTimeRemainingSeconds [##]''': Sets the time left on buffs to rebuff normally<br />
<br />
'''BuffProfile_Prots''': Specifies which self prots are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffProfile_Banes''': Specifies which self banes are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffCastRecast_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
'''BuffCastRecastReset_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
<br />
==Crafting==<br />
<br />
'''ArrowheadFletchDiffExcessTheshold [##]''': <br />
<br />
'''AutoCraftItems [true/false]''': When enabled, the macro crafts known components that result in items in the Consumables panel, if your character has none. For instance, this allows the macro to create blue kits out of bobo comps if "Plentiful Healing Kit" is listed in the Consumables panel<br />
<br />
'''SplitPeas [true/false]''': Specifies if the macro should automatically split peas. Components you would like to keep supplied by splitting peas should be add to your Consumables panel.<br />
<br />
'''SpellCompMin-Critical [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Critical" splitting is higher priority than healing<br />
<br />
'''SpellCompMin-Normal [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Normal" splitting has a lower priority than normal buffing<br />
<br />
'''SpellCompMin-Idle [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Idle" spltting is only done when idle<br />
<br />
'''UseSpecialAmmo [0/1/2/3]''': Specifies whether the macro should craft and use special ammunition types. "Raider" indicates Raider Lightning ammo, and "SCurrency" indicates ammo from Colosseum, Graveyard, and Paradox-touched Olthoi Infested Area. 0 = None, 1 = Raider, 2 = SCurrency, 3 = Both<br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficulty that is required for a door to be considered pickable<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
<br />
==Looting==<br />
<br />
'''EnableLooting [true/false]''': Enable/Disable Looting<br />
<br />
'''ReadUnknownScrolls [true/false]''': Loots and reads unknown scrolls (looting must be enabled) See [[Virindi_Tank_FAQ#Why_are_some_unknown_scrolls_looted_and_not_others?|here]] <br />
<br />
'''LootAllCorpses [true/false]''': Causes the macro to loot corpses killed by neither you nor your fellows<br />
<br />
'''LootFellowCorpses [true/false]''': Causes the macro to loot the corpses killed by your fellows<br />
<br />
'''LootPriorityBoost [true/false]''': When true, corpses are looted before attacking monsters<br />
<br />
'''CorpseItemAppearanceTimeoutSeconds [##]''': The time in seconds the macro will wait for all items on a corpse to appear<br />
<br />
'''CorpseItemIDTimeoutSeconds [##]''': The time in seconds the macro will wait for all the needed items on a corpse to be ID'd<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''CombineSalvage [true/false]''': When true and looting is enabled, salvage bags are combined according to the range specified by the current loot profile<br />
<br />
'''LootOnlyRareCorpses [true/false]''': When true, only rare-generating corpses are looted<br />
<br />
'''CorpseOpenTimeoutSeconds [##]''': Time after trying to open a corpse before the macro will retry<br />
<br />
'''CorpseLootItemMaxAttempts [##]''': Number of attempts to loot an item before blacklisting.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=GoArrow_(VVS_Edition)&diff=1614GoArrow (VVS Edition)2017-04-10T16:30:11Z<p>The Guru: </p>
<hr />
<div><b><font color=red>---Page Work In Progress---</font></b><br />
<br />
This is a version of Digero's GoArrow plugin which has been modified to operate in [[Virindi Views]]. It is included in the Bundle.<br />
<br />
Original Tutorial and Description on [http://decal.acasylum.com/goarrow.php Digero's] website<br />
<br />
Visit [http://maps.roogon.com maps.roogon.com] for up to date location files. <br />
<br />
==GoArrow Features:==<br />
* '''Search Option for NPCs/Towns/Lifestones/Portals/Dungeons as well as Specific Coordinates<br />
* '''Enhanced Dereth Map''' <br />
**''(Zoomable with mousewheel, Left click icons to set Destination. Right click icons for more information such as dungeon level req)<br />
* '''3D Rotating Arrow'''<br />
** ''(5 designs available for the floating arrow)<br />
* '''Click-able coordinates in chat''' ''(Sets destination on Map and points 3D arrow)<br />
* '''Static dungeon maps from ACMaps'''<br />
** ''(Use [[Virindi Integrator 2]] maps as an alternative, you can see yourself as an icon moving through the map)<br />
* '''Multiple Route Options'''<br />
** ''(By default, searches for the shortest route. Can click "Next Longer" to view more routes)<br />
<br />
<br />
'''''GoArrow has the ability to find a route between any two locations in Dereth, as well as look up locations' details from either the Crossroads of Dereth atlas or the ACSpedia atlas .<br />
<br />
==HUDS==<br />
===Arrow===<br />
[[File:ArrowHUD.JPG]]<br />
[[File:3dArrow.JPG]]<br />
<br />
'''Options to manipulate the 3D arrow include:<br />
* '''Show Arrow / Show Arrow Indoors<br />
* '''Show Destination Coordinates under Arrow<br />
* '''Require Ctrl Key to move the Arrow<br />
* '''Automatically Track Corpses''' <br />
**''(The Arrow will target your corpse upon death)<br />
* '''Arrow Image''' <br />
**''{Five designs to choose from)<br />
* '''Text Options''' <br />
**''(For manipulating the size and color of the text that appears around the Arrow)<br />
<br />
<br />
<br />
===Dereth===<br />
[[File:DerethHUD.JPG]]<br />
[[File:MapHUD.JPG]]<br />
[[File:MapZoomHUD.JPG]]<br />
<br />
''Locations on the map will appear/disappear as you zoom in and out.<br />
<br />
'''Options for the Map (Globe icon):<br />
* '''Show Map<br />
* '''Center on Player<br />
* '''Show Route on Map<br />
* '''Show Locations on Map<br />
* '''With Labels''' ''(labels locations as they appear on zoom)<br />
* '''Show ALL locations on map''' ''(not recommended for slow processors) <br />
* '''Label Everything On Map''' ''(not recommended for slow processor)<br />
<br />
<br />
<br />
'''Use MouseClick HotKeys to:<br />
* '''Pan (Drag) the Map''' ''(left click and drag)<br />
* '''Select Location''' ''(left click)<br />
* '''Context Menu''' ''(right click)<br />
** ''Allows you to set Start/End points directly on the map, and open Details of locations<br />
* '''Show Details<br />
** ''No hotkey by default, use Context Menu or set a hotkey<br />
<br />
<br />
<br />
'''Custom Mouseclick Hotkeys on GoArrow Dereth Map<br><br />
'''The buttons are:<br />
* '''L''' = Left Mouse Button<br><br />
* '''M''' = Middle Mouse Button ''(click the scroll wheel)<br><br />
* '''R''' = Right Mouse Button<br><br />
* '''X1''' = X-Button 1 ''(only on some Microsoft mice)<br><br />
* '''X2''' = X-Button 2 ''(only on some Microsoft mice)<br><br />
<br />
<br />
<br />
===Dungeon===<br />
[[File:DungeonHUD.JPG]]<br />
<br />
<br />
* '''Show Dungeon Map'''<br />
* '''Select a Map'''<br />
** ''Can use the "This Dungeon" button to attempt the load of your current location<br />
** ''Can select a dungeon map from the drop-down list<br />
* '''Map Orientation<br />
** ''Use the NSEW buttons to manually orient the dungeon map<br />
** ''Auto-Rotate map<br />
** ''Move map with player<br />
<br />
* '''Configuration for MouseClick HotKeys on Dungeon Map<br />
** ''The buttons are the same as [[GoArrow_(VVS_Edition)#Dereth|above]]<br />
<br />
===General===<br />
[[File:GeneralHUD.JPG]]<br />
<br />
'''This tab can be used to open the GoArrow HUD and choose its position<br><br />
''Since the plugin buttons are now on VVS this HUD is no longer necessary<br />
<br />
==Atlas==<br />
<br />
===Search===<br />
[[File:SearchHUD.JPG]]<br />
<br />
There are two types of searches in GoArrow<br />
* '''Text''' - search by '''Name''', '''Description''' or '''Both'''.<br />
* '''Nearby''' - view all locations within a radius of your location<br />
''Use'' '''Limit to''' ''to filter the type of locations that will appear within the Nearby Radius(towns/npcs/lifestones ect.)<br />
<br />
<br />
Turn on '''Relative Coordinates''' to view the coordinates in a "distance to target" format<br><br />
''(like the coordinates that appear under the Rotating Arrow)<br />
<br />
<br />
<br />
===Route===<br />
<br />
<br />
===Details===<br />
<br />
[[File:DetailsHUD.JPG]]<br />
<br />
===Favorites===<br />
<br />
<br />
===Recent===<br />
<br />
<br />
===Updates===<br />
<br />
<br />
==Settings==<br />
<br />
<br />
===Chat===<br />
<br />
===Route Finding===<br />
[[File:RouteHUD.JPG]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Meta_System&diff=1613Virindi Tank Meta System2016-12-10T22:08:04Z<p>The Guru: /* Adding a Rule */</p>
<hr />
<div>= Introduction =<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. It is designed to automate quests. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.<br />
<br />
= Subtopics =<br />
* [[Meta Expressions]]<br />
* [[Meta ChatMessageCapture Condition]]<br />
* [[Meta Views]]<br />
* [[Public Meta Repository]]<br />
<br />
= Rules and States =<br />
<br />
A state is merely a name that you assign for some stage the macro will be in. For example, "hunting", <br />
"buying comps", or "died running back". The macro is only in one state at a time. When you first log in, it is in the "Default" state. You can manually change the current state using the dropdown box in the bottom left corner of the meta tab.<br />
<br />
A rule consists of a state, a condition, and an action. Rules are only checked if their state is the same as the current macro state. Each rule only happens once per time the macro is in a particular state (rules that have already run are listed in red in the main list).<br />
<br />
As the macro runs, it looks at all the rules which haven't run yet with the same state as the current state. If the condition is true, the action listed in the rule is run.<br />
<br />
<br />
Note: Meta conditions in the current state are evaluated approximately three times a second while the macro is enabled (once every 293 milliseconds and whenever the macro needs to decide what to do next). This check is done before the normal operation of the macro.<br />
<br />
= Adding a Rule =<br />
<br />
[[Image:vtguide-meta.png]]<br />
<br />
When you add a rule, you get this interface. The left side of the panel is where you define the rule's condition and state, and on the right side you define the rule's action. Condition is the upper left box and state is below it.<br />
<br />
'''Conditions (Left Side)<br />
<br />
* '''Never''': Never act upon.<br />
* '''Always''': Always act upon.<br />
* '''Any''': Act upon any.<br />
* '''All''': Act upon all.<br />
* '''Chat Message''': Act upon Chat Message.<br />
* '''Pack Slots <=''': Act upon Pack Slots less than or equal to X.<br />
* '''Seconds in State >=''': Act upon Seconds in State greater than or equal to X. Resets when macro is turned off and on.<br />
* '''Navroute Empty''': Act upon an empty Navroute.<br />
* '''Character Death''': Act upon Character Death.<br />
* '''Any Vendor Open''': Act upon Any Vendor Opened.<br />
* '''Vendor Closed''': Act upon Any Vendor Closed.<br />
* '''Inventory Item Count <=''': Act upon Inventory Item Count less than or equal to X of item.<br />
* '''Inventory Item Count >=''': Act upon Inventory Item Count greater than or equal to X of item.<br />
* '''Monster Name Count Within Distance''': Act upon X number of specific monster name within range of X.<br />
* '''Monster Priority Count Within Distance''': Act upon X number of priority monsters within range of X.<br />
* '''Need to Buff''': Act upon need to buff.<br />
* '''No Monsters Within Distance''': Act upon no monsters within range.<br />
* '''Landblock ==''': Act upon specific landblock (larger area).<br />
* '''Landcell ==''': Act upon specific landcell (smaller area).<br />
* '''Portalspace Entered''': Act upon entering portalspace.<br />
* '''Portalspace Exited''': Act upon exiting portalspace.<br />
* '''Not''': <br />
* '''Seconds in state (P) >=''': Act upon Seconds in State greater than or equal to X. Does NOT reset when macro is turned off and on.<br />
* '''Time Left On Spell >=''': Act if a spell on your character has greater than a certain amount of time left on it.<br />
* '''Burden Percent >=''': Act if Burden Percent is greater or equal to a specified value<br />
* '''Dist Any Route Pt >=''': Act if your character moves a certain distance away from any point in your route. <br />
* '''Expression''': Act upon an expression<br />
* '''Chat Message Capture''': Allows you to perform a Regular Expression match on incoming chatbox text and save matched substrings to Meta variables for later use - See [[Meta ChatMessageCapture Condition]]<br />
<br />
<br />
'''Actions (Right Side)<br />
<br />
* '''Set Meta State''': Allows you to set/change Meta state after X Action has occurred. <br />
* '''Chat Command''': On Action do X Chat Command. (eg. On Character Death do Chat Command /f I have died =( )<br />
* '''All''': Allows multiple Reactions to Occur.<br />
* '''Load Embedded Navroute''': Allows you to embed a navroute in to a meta<br />
* '''Call Meta State''': Switches to another state and adds a return state to the call stack.<br />
* '''Return From Call''': Switches to the last state on the call stack, and removes it from the stack. If the call stack is empty, an error is raised and meta is disabled.<br />
* '''Expression Action''': Perform an expression action<br />
* '''Chat Expression''': Output a chat expression<br />
* '''Set Watchdog''': When you enter a state, you can set a watchdog. If at any time during that state your character has not moved from where they are for a certain amount of time, a second state is called.<br />
* '''Clear Watchdog''': Clears the current watchdog.<br />
* '''Get VT Option''': Gets the current value from the specified option and stores it in an expression variable<br />
* '''Set VT Option''': Sets a VT option value based on the return value of an expression<br />
* '''Create View''': Creates a new Meta View using XML - See [[Meta Views]]<br />
* '''Destroy View''': Destroys the specified meta view<br />
* '''Destroy All Views''': Destroys all meta views<br />
<br />
= Example =<br />
<br />
For example, you might want your character to run back to the battle when they die. You would have two routes: "runback" is a "once" route that takes you from your lifestone to the battlefield, and "fighting" is a normal route that is used while you are at the hunting area.<br />
<br />
The first rule you need sets the state when you die, so you can begin performing actions. So you'd make a rule like this:<br />
<br />
State: "Default", Condition: "Character Death", Action: "Set Meta State: dead"<br />
<br />
Once your character dies the macro will switch the state to "dead", and when that happens you want to immediately perform a series of actions, like this:<br />
<br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt nav load runback"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablebuffing true"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablenav true"<br><br />
<br />
When the "once" route "runback" has been run to the end, the nav route will be empty and it is time to resume hunting. Check for that like this:<br />
<br />
State: "dead", Condition: "Navroute empty", Action: "Set Meta State: back"<br><br />
<br />
To resume hunting, you need to do some more actions...<br />
<br />
State: "back", Condition: "Always", Action: "/vt nav load fighting"<br><br />
State: "back", Condition: "Always", Action: "/vt opt set enablecombat true"<br><br />
<br />
And return the macro to the starting state.<br />
<br />
State: "back", Condition: "Always", Action: "Set Meta State: Default"<br><br />
<br />
The result should look something like this:<br />
<br />
[[Image:Meta_example_profile.png]]<br />
<br />
A copy of the profile for this example can be found [http://www.virindi.net/junk/runbackwhendead.zip here]. To use it, extract the .met file to your Virindi Tank profile directory (typically c:\games\virindiplugins\virinditank).<br />
<br />
<br />
= Community Examples =<br />
<i>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions.</i><br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for questions regarding Meta profiles (not plugins themselves)<br />
<br />
<br />
There are many different types of meta profiles that can be created. From simple hunting profiles that run back to your dungeon on death(see above), to more complex systems of control and automation.<br />
<br />
Over time, this section will be updated with example meta's of all types.<br><br />
<br />
Some may work for you immediately, others may require a bit of customization<br />
<br />
<br />
In Meta, RegEx is used to identify and react on chat messages sent or heard by your client.<br />
<br />
<br />
Beware: Chat commands in the examples will be open ended. Meaning, anyone can trigger the commands that are in place. <br />
To protect yourself, you can make them character specific so you only accept them from approved names.<br />
<br />
The following examples may or may not work as intended, use at your own risk.<br />
<br />
<br />
'''Anyone in any chat channel:'''<br />
<br />
^.*().* (say|says|tells you), \"YourCommandHere\"$<br />
<br />
<br />
'''Specific names in any chat channel''' - By Validus of Morningthaw<br />
<br />
(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1|Char2|Char3)\>.+\<\\Tell\>) (say|says|tells you), \"Your Command Here\"$<br />
<br />
''Simply add names within the () and separate with |''<br />
<br />
<br />
'''Specific chat channel'''<br />
<br />
^\[ChannelNameHere\] (|).* (say|says), \"YourCommandHere\"$<br />
<br />
''(example: ^\[Allegiance\] (|).* (say|says), \"YourCommandHere\"$)''<br />
<br />
<br />
'''Green Messages'''<br />
<br />
Simply place a ^ before the green text in your chat message box. <br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
<br />
'''NPC Chat'''<br />
<br />
Place ^ before the start of the NPC chat in the chat message box.<br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
for quotation or question marks you will need to type \" or \? in order for it to match " or ?<br />
<br />
''(example: ^Master Arbitrator tells you, \"If you wish to fight as a gladiator in the Arena I will require you to purchase a ticket from the Ticket Vendors over there. We do need to keep the place running don't we\?\")''<br />
<br />
<br />
<br />
-----<br />
<br />
Examples:<br />
<br />
[[Media:TownPortals.zip|Town Network Routes]] - By The Art of War - Routes to any portal within the TN. All routes start from Annex side drop, Say !townname to route. <br />
<br />
[[Media:CeldisethRestock.zip|Celdiseth Recomp]] - Recalls Sanctuary, uses Celdiseth Gem and attempts to recomp. Requires current Mag-tools, Sanctuary recall, Celdiseth gems and a Celdiseth VTclassic profile. <br><i> You must edit the "Return" state and add your "runback" meta to /vt meta load</i><br />
<br />
[[Media:LocationSplit.zip|SplitProfile]] - One profile that launches in to multiple profiles based on character inventory (to reduce amount of commands.)<br />
<br />
[[Media:Withered_Hill_Portal.zip|Withered Hill Portal Drag]] - If pulled in to portal on withered hill, recalls primary and resets route (input your routes)<br><br />
<br />
[[Media:DangerousPortalDevice.zip|Dangerous Portal Device Auto Nav]] - Auto Nav to destination of choice (AL, OP, or VOD) (/hom to Yanshi Mansion)<br />
<br />
[[Media:DPD.zip|Dangerous Portal Device Auto Nav (Magtools cmds)]] - Auto nav to destination of choice (AL, OP, or VOD). Requires current mag-tools and DPD device either on patio, or hook near your mansion portal drop. Read the default state for commands.<br />
<br />
[[Media:CharacterCheck.zip|Character Check Example]] - Example for how to make sure all characters are in proper state before sending a command.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Meta_System&diff=1612Virindi Tank Meta System2016-12-10T22:00:28Z<p>The Guru: /* Adding a Rule */</p>
<hr />
<div>= Introduction =<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. It is designed to automate quests. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.<br />
<br />
= Subtopics =<br />
* [[Meta Expressions]]<br />
* [[Meta ChatMessageCapture Condition]]<br />
* [[Meta Views]]<br />
* [[Public Meta Repository]]<br />
<br />
= Rules and States =<br />
<br />
A state is merely a name that you assign for some stage the macro will be in. For example, "hunting", <br />
"buying comps", or "died running back". The macro is only in one state at a time. When you first log in, it is in the "Default" state. You can manually change the current state using the dropdown box in the bottom left corner of the meta tab.<br />
<br />
A rule consists of a state, a condition, and an action. Rules are only checked if their state is the same as the current macro state. Each rule only happens once per time the macro is in a particular state (rules that have already run are listed in red in the main list).<br />
<br />
As the macro runs, it looks at all the rules which haven't run yet with the same state as the current state. If the condition is true, the action listed in the rule is run.<br />
<br />
<br />
Note: Meta conditions in the current state are evaluated approximately three times a second while the macro is enabled (once every 293 milliseconds and whenever the macro needs to decide what to do next). This check is done before the normal operation of the macro.<br />
<br />
= Adding a Rule =<br />
<br />
[[Image:vtguide-meta.png]]<br />
<br />
When you add a rule, you get this interface. The left side of the panel is where you define the rule's condition and state, and on the right side you define the rule's action. Condition is the upper left box and state is below it.<br />
<br />
'''Conditions (Left Side)<br />
<br />
* '''Never''': Never act upon.<br />
* '''Always''': Always act upon.<br />
* '''Any''': Act upon any.<br />
* '''All''': Act upon all.<br />
* '''Chat Message''': Act upon Chat Message.<br />
* '''Pack Slots <=''': Act upon Pack Slots less than or equal to X.<br />
* '''Seconds in State >=''': Act upon Seconds in State greater than or equal to X. Resets when macro is turned off and on.<br />
* '''Navroute Empty''': Act upon an empty Navroute.<br />
* '''Character Death''': Act upon Character Death.<br />
* '''Any Vendor Open''': Act upon Any Vendor Opened.<br />
* '''Vendor Closed''': Act upon Any Vendor Closed.<br />
* '''Inventory Item Count <=''': Act upon Inventory Item Count less than or equal to X of item.<br />
* '''Inventory Item Count >=''': Act upon Inventory Item Count greater than or equal to X of item.<br />
* '''Monster Name Count Within Distance''': Act upon X number of specific monster name within range of X.<br />
* '''Monster Priority Count Within Distance''': Act upon X number of priority monsters within range of X.<br />
* '''Need to Buff''': Act upon need to buff.<br />
* '''No Monsters Within Distance''': Act upon no monsters within range.<br />
* '''Landblock ==''': Act upon specific landblock (larger area).<br />
* '''Landcell ==''': Act upon specific landcell (smaller area).<br />
* '''Portalspace Entered''': Act upon entering portalspace.<br />
* '''Portalspace Exited''': Act upon exiting portalspace.<br />
* '''Not''': <br />
* '''Seconds in state (P) >=''': Act upon Seconds in State greater than or equal to X. Does NOT reset when macro is turned off and on.<br />
* '''Time Left On Spell >=''': Act if a spell on your character has greater than a certain amount of time left on it.<br />
* '''Burden Percent >=''': Act if Burden Percent is greater or equal to a specified value<br />
* '''Dist Any Route Pt >=''': Act if your character moves a certain distance away from any point in your route. <br />
* '''Expression''': Act upon an expression<br />
* '''Chat Message Capture''': Allows you to perform a Regular Expression match on incoming chatbox text and save matched substrings to Meta variables for later use - See [[Meta ChatMessageCapture Condition]]<br />
<br />
<br />
'''Actions (Right Side)<br />
<br />
* '''Set Meta State''': Allows you to set/change Meta state after X Action has occurred. <br />
* '''Chat Command''': On Action do X Chat Command. (eg. On Character Death do Chat Command /f I have died =( )<br />
* '''All''': Allows multiple Reactions to Occur.<br />
* '''Load Embedded Navroute''': Allows you to embed a navroute in to a meta<br />
* '''Call Meta State''': Switches to another state and adds a return state to the call stack.<br />
* '''Return From Call''': Switches to the last state on the call stack, and removes it from the stack. If the call stack is empty, an error is raised and meta is disabled.<br />
* '''Expression Action''': Perform an expression action<br />
* '''Chat Expression''': Output a chat expression<br />
* '''Set Watchdog''': When you enter a state, you can set a watchdog. If at any time during that state your character has not moved from where they are for a certain amount of time, a second state is called.<br />
* '''Clear Watchdog''': Clears the current watchdog.<br />
* '''Get VT Option''': Gets the current value from the specified option and stores it in an expression variable<br />
* '''Set VT Option''': Sets a VT option value and stores it in an expression variable<br />
* '''Create View''': Creates a new Meta View using XML - See [[Meta Views]]<br />
* '''Destroy View''': Destroys the specified meta view<br />
* '''Destroy All Views''': Destroys all meta views<br />
<br />
= Example =<br />
<br />
For example, you might want your character to run back to the battle when they die. You would have two routes: "runback" is a "once" route that takes you from your lifestone to the battlefield, and "fighting" is a normal route that is used while you are at the hunting area.<br />
<br />
The first rule you need sets the state when you die, so you can begin performing actions. So you'd make a rule like this:<br />
<br />
State: "Default", Condition: "Character Death", Action: "Set Meta State: dead"<br />
<br />
Once your character dies the macro will switch the state to "dead", and when that happens you want to immediately perform a series of actions, like this:<br />
<br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt nav load runback"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablebuffing true"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablenav true"<br><br />
<br />
When the "once" route "runback" has been run to the end, the nav route will be empty and it is time to resume hunting. Check for that like this:<br />
<br />
State: "dead", Condition: "Navroute empty", Action: "Set Meta State: back"<br><br />
<br />
To resume hunting, you need to do some more actions...<br />
<br />
State: "back", Condition: "Always", Action: "/vt nav load fighting"<br><br />
State: "back", Condition: "Always", Action: "/vt opt set enablecombat true"<br><br />
<br />
And return the macro to the starting state.<br />
<br />
State: "back", Condition: "Always", Action: "Set Meta State: Default"<br><br />
<br />
The result should look something like this:<br />
<br />
[[Image:Meta_example_profile.png]]<br />
<br />
A copy of the profile for this example can be found [http://www.virindi.net/junk/runbackwhendead.zip here]. To use it, extract the .met file to your Virindi Tank profile directory (typically c:\games\virindiplugins\virinditank).<br />
<br />
<br />
= Community Examples =<br />
<i>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions.</i><br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for questions regarding Meta profiles (not plugins themselves)<br />
<br />
<br />
There are many different types of meta profiles that can be created. From simple hunting profiles that run back to your dungeon on death(see above), to more complex systems of control and automation.<br />
<br />
Over time, this section will be updated with example meta's of all types.<br><br />
<br />
Some may work for you immediately, others may require a bit of customization<br />
<br />
<br />
In Meta, RegEx is used to identify and react on chat messages sent or heard by your client.<br />
<br />
<br />
Beware: Chat commands in the examples will be open ended. Meaning, anyone can trigger the commands that are in place. <br />
To protect yourself, you can make them character specific so you only accept them from approved names.<br />
<br />
The following examples may or may not work as intended, use at your own risk.<br />
<br />
<br />
'''Anyone in any chat channel:'''<br />
<br />
^.*().* (say|says|tells you), \"YourCommandHere\"$<br />
<br />
<br />
'''Specific names in any chat channel''' - By Validus of Morningthaw<br />
<br />
(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1|Char2|Char3)\>.+\<\\Tell\>) (say|says|tells you), \"Your Command Here\"$<br />
<br />
''Simply add names within the () and separate with |''<br />
<br />
<br />
'''Specific chat channel'''<br />
<br />
^\[ChannelNameHere\] (|).* (say|says), \"YourCommandHere\"$<br />
<br />
''(example: ^\[Allegiance\] (|).* (say|says), \"YourCommandHere\"$)''<br />
<br />
<br />
'''Green Messages'''<br />
<br />
Simply place a ^ before the green text in your chat message box. <br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
<br />
'''NPC Chat'''<br />
<br />
Place ^ before the start of the NPC chat in the chat message box.<br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
for quotation or question marks you will need to type \" or \? in order for it to match " or ?<br />
<br />
''(example: ^Master Arbitrator tells you, \"If you wish to fight as a gladiator in the Arena I will require you to purchase a ticket from the Ticket Vendors over there. We do need to keep the place running don't we\?\")''<br />
<br />
<br />
<br />
-----<br />
<br />
Examples:<br />
<br />
[[Media:TownPortals.zip|Town Network Routes]] - By The Art of War - Routes to any portal within the TN. All routes start from Annex side drop, Say !townname to route. <br />
<br />
[[Media:CeldisethRestock.zip|Celdiseth Recomp]] - Recalls Sanctuary, uses Celdiseth Gem and attempts to recomp. Requires current Mag-tools, Sanctuary recall, Celdiseth gems and a Celdiseth VTclassic profile. <br><i> You must edit the "Return" state and add your "runback" meta to /vt meta load</i><br />
<br />
[[Media:LocationSplit.zip|SplitProfile]] - One profile that launches in to multiple profiles based on character inventory (to reduce amount of commands.)<br />
<br />
[[Media:Withered_Hill_Portal.zip|Withered Hill Portal Drag]] - If pulled in to portal on withered hill, recalls primary and resets route (input your routes)<br><br />
<br />
[[Media:DangerousPortalDevice.zip|Dangerous Portal Device Auto Nav]] - Auto Nav to destination of choice (AL, OP, or VOD) (/hom to Yanshi Mansion)<br />
<br />
[[Media:DPD.zip|Dangerous Portal Device Auto Nav (Magtools cmds)]] - Auto nav to destination of choice (AL, OP, or VOD). Requires current mag-tools and DPD device either on patio, or hook near your mansion portal drop. Read the default state for commands.<br />
<br />
[[Media:CharacterCheck.zip|Character Check Example]] - Example for how to make sure all characters are in proper state before sending a command.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Views&diff=1611Meta Views2016-12-10T21:58:48Z<p>The Guru: </p>
<hr />
<div>= Introduction = <br />
<br />
Meta views allow you to build command and control panels that can send actions via button click<br />
<br />
To create a view you select the Create View meta action, set a name, and input XML<br />
<br />
== Writing the XML ==<br />
To create a simple Meta View you will need to write the XML. It is advised to use notepad then copy/paste in to meta. Make sure WordWrap is disabled.<br />
<br />
Meta Views have two controls called '''button''' and '''layout''':<br />
<br />
'''button''' has text, actionexpr, and setstate attributes<br />
<br />
'''button''' and '''layout''' both have left, top, width, height, and name attributes<br />
<br />
<br />
Sample XML for a 2 button view:<br />
<?xml version="1.0"?><br />
<view width="300" height="200" title="Test View"><br />
<control type="layout"><br />
<control type="button" name="btnTest1" left="20" top="10" width="50" height="20" text="Button1" actionexpr="chatbox[\/vt echo Button1\!]" setstate="teststate1" /><br />
<control type="button" name="btnTest2" left="20" top="40" width="50" height="20" text="Button2" actionexpr="chatbox[\/vt echo Hi there\!]" setstate="teststate2"/><br />
</control><br />
</view><br />
<br />
When copying your XML make sure there are no line breaks, otherwise it will not paste properly.<br />
<br />
<?xml version="1.0"?><view width="300" height="200" title="Test View"><control type="layout"><control type="button" name="btnTest1" left="20" top="10" width="50" height="20" text="Button1" actionexpr="chatbox[\/vt echo Button1\!]" setstate="teststate1" /><control type="button" name="btnTest2" left="20" top="40" width="50" height="20" text="Button2" actionexpr="chatbox[\/vt echo Hi there\!]" setstate="teststate2"/></control></view></div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Views&diff=1610Meta Views2016-12-10T21:58:06Z<p>The Guru: Created page with "= Introduction = Meta views allow you to build command and control panels that can send actions via button click To create a view you select the Create View meta action, se..."</p>
<hr />
<div>= Introduction = <br />
<br />
Meta views allow you to build command and control panels that can send actions via button click<br />
<br />
To create a view you select the Create View meta action, set a name, and input XML<br />
<br />
== Writing the XML ==<br />
To create a simple Meta View you will need to write the XML. It is advised to use notepad then copy/paste in to meta. Make sure WordWrap is disabled.<br />
<br />
Meta Views have two controls called '''button''' and '''layout''':<br />
<br />
'''button''' has text, actionexpr, and setstate attributes<br />
<br />
'''button''' and '''layout''' both have left, top, width, height, and name attributes<br />
<br />
<br />
Sample XML for a 2 button view:<br />
<?xml version="1.0"?><br />
<view width="300" height="200" title="Test View"><br />
<control type="layout"><br />
<control type="button" name="btnTest1" left="20" top="10" width="50" height="20" text="Button1" actionexpr="chatbox[\/vt echo Button1\!]" setstate="teststate1" /><br />
<control type="button" name="btnTest2" left="20" top="40" width="50" height="20" text="Button2" actionexpr="chatbox[\/vt echo Hi there\!]" setstate="teststate2"/><br />
</control><br />
</view><br />
<br />
When copying your XML make sure there are no line breaks, otherwise it will not paste properly.<br />
<br />
<?xml version="1.0"?><view width="300" height="200" title="testy view"><control type="layout"><control type="button" name="btnTest1" left="20" top="10" width="50" height="20" text="Button1" actionexpr="chatbox[\/vt echo Button1\!]" setstate="teststate1" /><control type="button" name="btnTest2" left="20" top="40" width="50" height="20" text="Button2" actionexpr="chatbox[\/vt echo Hi there\!]" setstate="teststate2"/></control></view></div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Meta_System&diff=1609Virindi Tank Meta System2016-12-10T21:41:19Z<p>The Guru: /* Subtopics */</p>
<hr />
<div>= Introduction =<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. It is designed to automate quests. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.<br />
<br />
= Subtopics =<br />
* [[Meta Expressions]]<br />
* [[Meta ChatMessageCapture Condition]]<br />
* [[Meta Views]]<br />
* [[Public Meta Repository]]<br />
<br />
= Rules and States =<br />
<br />
A state is merely a name that you assign for some stage the macro will be in. For example, "hunting", <br />
"buying comps", or "died running back". The macro is only in one state at a time. When you first log in, it is in the "Default" state. You can manually change the current state using the dropdown box in the bottom left corner of the meta tab.<br />
<br />
A rule consists of a state, a condition, and an action. Rules are only checked if their state is the same as the current macro state. Each rule only happens once per time the macro is in a particular state (rules that have already run are listed in red in the main list).<br />
<br />
As the macro runs, it looks at all the rules which haven't run yet with the same state as the current state. If the condition is true, the action listed in the rule is run.<br />
<br />
<br />
Note: Meta conditions in the current state are evaluated approximately three times a second while the macro is enabled (once every 293 milliseconds and whenever the macro needs to decide what to do next). This check is done before the normal operation of the macro.<br />
<br />
= Adding a Rule =<br />
<br />
[[Image:vtguide-meta.png]]<br />
<br />
When you add a rule, you get this interface. The left side of the panel is where you define the rule's condition and state, and on the right side you define the rule's action. Condition is the upper left box and state is below it.<br />
<br />
'''Conditions (Left Side)<br />
<br />
* '''Never''': Never act upon.<br />
* '''Always''': Always act upon.<br />
* '''Any''': Act upon any.<br />
* '''All''': Act upon all.<br />
* '''Chat Message''': Act upon Chat Message.<br />
* '''Pack Slots <=''': Act upon Pack Slots less than or equal to X.<br />
* '''Seconds in State >=''': Act upon Seconds in State greater than or equal to X. Resets when macro is turned off and on.<br />
* '''Navroute Empty''': Act upon an empty Navroute.<br />
* '''Character Death''': Act upon Character Death.<br />
* '''Any Vendor Open''': Act upon Any Vendor Opened.<br />
* '''Vendor Closed''': Act upon Any Vendor Closed.<br />
* '''Inventory Item Count <=''': Act upon Inventory Item Count less than or equal to X of item.<br />
* '''Inventory Item Count >=''': Act upon Inventory Item Count greater than or equal to X of item.<br />
* '''Monster Name Count Within Distance''': Act upon X number of specific monster name within range of X.<br />
* '''Monster Priority Count Within Distance''': Act upon X number of priority monsters within range of X.<br />
* '''Need to Buff''': Act upon need to buff.<br />
* '''No Monsters Within Distance''': Act upon no monsters within range.<br />
* '''Landblock ==''': Act upon specific landblock (larger area).<br />
* '''Landcell ==''': Act upon specific landcell (smaller area).<br />
* '''Portalspace Entered''': Act upon entering portalspace.<br />
* '''Portalspace Exited''': Act upon exiting portalspace.<br />
* '''Not''': <br />
* '''Seconds in state (P) >=''': Act upon Seconds in State greater than or equal to X. Does NOT reset when macro is turned off and on.<br />
* '''Time Left On Spell >=''': Act if a spell on your character has greater than a certain amount of time left on it.<br />
* '''Burden Percent >=''': Act if Burden Percent is greater or equal to a specified value<br />
* '''Dist Any Route Pt >=''': Act if your character moves a certain distance away from any point in your route. <br />
* '''Expression''': Act upon an expression<br />
* '''Chat Message Capture''': Allows you to perform a Regular Expression match on incoming chatbox text and save matched substrings to Meta variables for later use - See [[Meta ChatMessageCapture Condition]]<br />
<br />
<br />
'''Actions (Right Side)<br />
<br />
* '''Set Meta State''': Allows you to set/change Meta state after X Action has occurred. <br />
* '''Chat Command''': On Action do X Chat Command. (eg. On Character Death do Chat Command /f I have died =( )<br />
* '''All''': Allows multiple Reactions to Occur.<br />
* '''Load Embedded Navroute''': Allows you to embed a navroute in to a meta<br />
* '''Call Meta State''': Switches to another state and adds a return state to the call stack.<br />
* '''Return From Call''': Switches to the last state on the call stack, and removes it from the stack. If the call stack is empty, an error is raised and meta is disabled.<br />
* '''Expression Action''': Perform an expression action<br />
* '''Chat Expression''': Output a chat expression<br />
* '''Set Watchdog''': When you enter a state, you can set a watchdog. If at any time during that state your character has not moved from where they are for a certain amount of time, a second state is called.<br />
* '''Clear Watchdog''': Clears the current watchdog.<br />
* '''Get VT Option''': Gets the current value from the specified option and stores it in an expression variable<br />
* '''Set VT Option''': Sets a VT option value and stores it in an expression variable<br />
* '''Create View''': Creates a Meta View using XML<br />
* '''Destroy View''': Destroys the specified meta view<br />
* '''Destroy All Views''': Destroys all meta views<br />
<br />
= Example =<br />
<br />
For example, you might want your character to run back to the battle when they die. You would have two routes: "runback" is a "once" route that takes you from your lifestone to the battlefield, and "fighting" is a normal route that is used while you are at the hunting area.<br />
<br />
The first rule you need sets the state when you die, so you can begin performing actions. So you'd make a rule like this:<br />
<br />
State: "Default", Condition: "Character Death", Action: "Set Meta State: dead"<br />
<br />
Once your character dies the macro will switch the state to "dead", and when that happens you want to immediately perform a series of actions, like this:<br />
<br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt nav load runback"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablebuffing true"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablenav true"<br><br />
<br />
When the "once" route "runback" has been run to the end, the nav route will be empty and it is time to resume hunting. Check for that like this:<br />
<br />
State: "dead", Condition: "Navroute empty", Action: "Set Meta State: back"<br><br />
<br />
To resume hunting, you need to do some more actions...<br />
<br />
State: "back", Condition: "Always", Action: "/vt nav load fighting"<br><br />
State: "back", Condition: "Always", Action: "/vt opt set enablecombat true"<br><br />
<br />
And return the macro to the starting state.<br />
<br />
State: "back", Condition: "Always", Action: "Set Meta State: Default"<br><br />
<br />
The result should look something like this:<br />
<br />
[[Image:Meta_example_profile.png]]<br />
<br />
A copy of the profile for this example can be found [http://www.virindi.net/junk/runbackwhendead.zip here]. To use it, extract the .met file to your Virindi Tank profile directory (typically c:\games\virindiplugins\virinditank).<br />
<br />
<br />
= Community Examples =<br />
<i>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions.</i><br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for questions regarding Meta profiles (not plugins themselves)<br />
<br />
<br />
There are many different types of meta profiles that can be created. From simple hunting profiles that run back to your dungeon on death(see above), to more complex systems of control and automation.<br />
<br />
Over time, this section will be updated with example meta's of all types.<br><br />
<br />
Some may work for you immediately, others may require a bit of customization<br />
<br />
<br />
In Meta, RegEx is used to identify and react on chat messages sent or heard by your client.<br />
<br />
<br />
Beware: Chat commands in the examples will be open ended. Meaning, anyone can trigger the commands that are in place. <br />
To protect yourself, you can make them character specific so you only accept them from approved names.<br />
<br />
The following examples may or may not work as intended, use at your own risk.<br />
<br />
<br />
'''Anyone in any chat channel:'''<br />
<br />
^.*().* (say|says|tells you), \"YourCommandHere\"$<br />
<br />
<br />
'''Specific names in any chat channel''' - By Validus of Morningthaw<br />
<br />
(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1|Char2|Char3)\>.+\<\\Tell\>) (say|says|tells you), \"Your Command Here\"$<br />
<br />
''Simply add names within the () and separate with |''<br />
<br />
<br />
'''Specific chat channel'''<br />
<br />
^\[ChannelNameHere\] (|).* (say|says), \"YourCommandHere\"$<br />
<br />
''(example: ^\[Allegiance\] (|).* (say|says), \"YourCommandHere\"$)''<br />
<br />
<br />
'''Green Messages'''<br />
<br />
Simply place a ^ before the green text in your chat message box. <br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
<br />
'''NPC Chat'''<br />
<br />
Place ^ before the start of the NPC chat in the chat message box.<br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
for quotation or question marks you will need to type \" or \? in order for it to match " or ?<br />
<br />
''(example: ^Master Arbitrator tells you, \"If you wish to fight as a gladiator in the Arena I will require you to purchase a ticket from the Ticket Vendors over there. We do need to keep the place running don't we\?\")''<br />
<br />
<br />
<br />
-----<br />
<br />
Examples:<br />
<br />
[[Media:TownPortals.zip|Town Network Routes]] - By The Art of War - Routes to any portal within the TN. All routes start from Annex side drop, Say !townname to route. <br />
<br />
[[Media:CeldisethRestock.zip|Celdiseth Recomp]] - Recalls Sanctuary, uses Celdiseth Gem and attempts to recomp. Requires current Mag-tools, Sanctuary recall, Celdiseth gems and a Celdiseth VTclassic profile. <br><i> You must edit the "Return" state and add your "runback" meta to /vt meta load</i><br />
<br />
[[Media:LocationSplit.zip|SplitProfile]] - One profile that launches in to multiple profiles based on character inventory (to reduce amount of commands.)<br />
<br />
[[Media:Withered_Hill_Portal.zip|Withered Hill Portal Drag]] - If pulled in to portal on withered hill, recalls primary and resets route (input your routes)<br><br />
<br />
[[Media:DangerousPortalDevice.zip|Dangerous Portal Device Auto Nav]] - Auto Nav to destination of choice (AL, OP, or VOD) (/hom to Yanshi Mansion)<br />
<br />
[[Media:DPD.zip|Dangerous Portal Device Auto Nav (Magtools cmds)]] - Auto nav to destination of choice (AL, OP, or VOD). Requires current mag-tools and DPD device either on patio, or hook near your mansion portal drop. Read the default state for commands.<br />
<br />
[[Media:CharacterCheck.zip|Character Check Example]] - Example for how to make sure all characters are in proper state before sending a command.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1607Meta Expressions2016-12-10T21:27:52Z<p>The Guru: </p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 67 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the base value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_current[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the current value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_buffedmax[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the buffed maximum value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_traininglevel[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's current training level for a skill. 0 = Unusable, 1 = Untrained, 2 = Trained, 3 = Specialized.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's base ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_buffed[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's buffed ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''chatbox[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sends a string to the chatbox.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to send.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''chatboxpaste[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Pastes a partial string to the chatbox so that the user can complete typing it. Returns true if succeeded.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to send.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''statushud[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Updates an entry in the Virindi HUDs Status HUD.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The key<br />
<br />
'''Param 1 (String)''': The value</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''statushudcolored[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Updates an entry in the Virindi HUDs Status HUD.<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (String)''': The key<br />
<br />
'''Param 1 (String)''': The value<br />
<br />
'''Param 2 (String)''': The color, in RGB number format. For example, pure red is 16711680 (0xFF0000).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''uigetcontrol[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Gets a control reference for a control in a Meta View.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The window name.<br />
<br />
'''Param 1 (String)''': The control name.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''uisetlabel[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the text label of a Meta View control. Works on Buttons.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (ViewControl)''': The control object.<br />
<br />
'''Param 1 (String)''': The label text.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and (max - 1)<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum<br />
<br />
'''Example''': <br />
<br />
Randint[0,2] will return 0 or 1, but never 2.<br />
<br />
Randint[5,10] will return 5, 6, 7, 8, or 9, but never 10.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''Skill IDs'''<br />
|<br />
|-<br />
|Melee Defense<br />
|6<br />
|-<br />
|Missile Defense<br />
|7<br />
|-<br />
|Arcane Lore<br />
|14<br />
|-<br />
|Magic Defense<br />
|15<br />
|-<br />
|Mana Conversion<br />
|16<br />
|-<br />
|Item Tinkering<br />
|18<br />
|-<br />
|Assess Person<br />
|19<br />
|-<br />
|Deception<br />
|20<br />
|-<br />
|Healing<br />
|21<br />
|-<br />
|Jump<br />
|22<br />
|-<br />
|Lockpick<br />
|23<br />
|-<br />
|Run<br />
|24<br />
|-<br />
|Assess Creature<br />
|27<br />
|-<br />
|Weapon Tinkering<br />
|28<br />
|-<br />
|Armor Tinkering<br />
|29<br />
|-<br />
|Magic Item Tinkering<br />
|30<br />
|-<br />
|Creature Enchantment<br />
|31<br />
|-<br />
|Item Enchantment<br />
|32<br />
|-<br />
|Life Magic<br />
|33<br />
|-<br />
|War Magic<br />
|34<br />
|-<br />
|Leadership<br />
|35<br />
|-<br />
|Loyalty<br />
|36<br />
|-<br />
|Fletching<br />
|37<br />
|-<br />
|Alchemy<br />
|38<br />
|-<br />
|Cooking<br />
|39<br />
|-<br />
|Salvaging<br />
|40<br />
|-<br />
|Two-Handed Combat<br />
|41<br />
|-<br />
|Void<br />
|43<br />
|-<br />
|Heavy Weapons<br />
|44<br />
|-<br />
|Light Weapons<br />
|45<br />
|-<br />
|Finesse Weapons<br />
|46<br />
|-<br />
|Missile Weapons<br />
|47<br />
|-<br />
|Summoning<br />
|54<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1606Meta Expressions2016-12-10T21:25:40Z<p>The Guru: </p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 67 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. <br />
<br />
Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, <br />
<br />
or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to <br />
<br />
false if the variable was previously undefined. Returns true if the variable was previously <br />
<br />
defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. <br />
<br />
Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, <br />
<br />
or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue <br />
<br />
property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, <br />
<br />
or false if the property is not defined. Because expression variables are doubles, precision <br />
<br />
will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, <br />
<br />
or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue <br />
<br />
property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is <br />
<br />
learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using <br />
<br />
the current VTank settings. This examines scarab count, buffed skill, and presence in the <br />
<br />
spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using <br />
<br />
the current VTank settings. This examines scarab count, buffed skill, and presence in the <br />
<br />
spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the base value of the character's <br />
<br />
health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_current[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the current value of the <br />
<br />
character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_buffedmax[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the buffed maximum value of the <br />
<br />
character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_traininglevel[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's current training <br />
<br />
level for a skill. 0 = Unusable, 1 = Untrained, 2 = Trained, 3 = Specialized.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's base ability for a <br />
<br />
skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_buffed[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's buffed ability for <br />
<br />
a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is <br />
<br />
currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for <br />
<br />
the player's current location, based on the game physics prediction model. Returns a <br />
<br />
coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a <br />
<br />
coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a <br />
<br />
coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a <br />
<br />
coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation <br />
<br />
of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a <br />
<br />
string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns <br />
<br />
false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two <br />
<br />
coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item <br />
<br />
Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two <br />
<br />
coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction <br />
<br />
model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given <br />
<br />
world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given <br />
<br />
world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a <br />
<br />
given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a <br />
<br />
door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. <br />
<br />
It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first <br />
<br />
inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first <br />
<br />
inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first <br />
<br />
inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected <br />
<br />
object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
object whose name matches a given regular expression and whose objectclass is a particular <br />
<br />
value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by <br />
<br />
itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on <br />
<br />
another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player <br />
<br />
or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards <br />
<br />
equipping any wand from the current profile's items list. Returns true if a wand is already <br />
<br />
equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell <br />
<br />
without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' <br />
<br />
spell. If the character is not in magic mode, one step is taken towards equipping any wand. <br />
<br />
Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the <br />
<br />
attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on <br />
<br />
a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the <br />
<br />
character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the <br />
<br />
attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''chatbox[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sends a string to the chatbox.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to send.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''chatboxpaste[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Pastes a partial string to the chatbox <br />
<br />
so that the user can complete typing it. Returns true if succeeded.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to send.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''statushud[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Updates an entry in the Virindi HUDs <br />
<br />
Status HUD.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The key<br />
<br />
'''Param 1 (String)''': The value</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''statushudcolored[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Updates an entry in the Virindi HUDs <br />
<br />
Status HUD.<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (String)''': The key<br />
<br />
'''Param 1 (String)''': The value<br />
<br />
'''Param 2 (String)''': The color, in RGB number format. For example, pure red is 16711680 <br />
<br />
(0xFF0000).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''uigetcontrol[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Gets a control reference for a control <br />
<br />
in a Meta View.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The window name.<br />
<br />
'''Param 1 (String)''': The control name.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''uisetlabel[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the text label of a Meta View <br />
<br />
control. Works on Buttons.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (ViewControl)''': The control object.<br />
<br />
'''Param 1 (String)''': The label text.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and <br />
<br />
only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and <br />
<br />
only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is <br />
<br />
true, the second parameter is returned. Otherwise, the third parameter is returned. (If the <br />
<br />
first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min <br />
<br />
and (max - 1)<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum<br />
<br />
'''Example''': <br />
<br />
Randint[0,2] will return 0 or 1, but never 2.<br />
<br />
Randint[5,10] will return 5, 6, 7, 8, or 9, but never 10.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a <br />
<br />
string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given <br />
<br />
object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a <br />
<br />
specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-<br />
<br />
us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. <br />
<br />
Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns <br />
<br />
the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns <br />
<br />
the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed <br />
<br />
on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating <br />
<br />
point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less <br />
<br />
than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater <br />
<br />
than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole <br />
<br />
integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a <br />
<br />
number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''Skill IDs'''<br />
|<br />
|-<br />
|Melee Defense<br />
|6<br />
|-<br />
|Missile Defense<br />
|7<br />
|-<br />
|Arcane Lore<br />
|14<br />
|-<br />
|Magic Defense<br />
|15<br />
|-<br />
|Mana Conversion<br />
|16<br />
|-<br />
|Item Tinkering<br />
|18<br />
|-<br />
|Assess Person<br />
|19<br />
|-<br />
|Deception<br />
|20<br />
|-<br />
|Healing<br />
|21<br />
|-<br />
|Jump<br />
|22<br />
|-<br />
|Lockpick<br />
|23<br />
|-<br />
|Run<br />
|24<br />
|-<br />
|Assess Creature<br />
|27<br />
|-<br />
|Weapon Tinkering<br />
|28<br />
|-<br />
|Armor Tinkering<br />
|29<br />
|-<br />
|Magic Item Tinkering<br />
|30<br />
|-<br />
|Creature Enchantment<br />
|31<br />
|-<br />
|Item Enchantment<br />
|32<br />
|-<br />
|Life Magic<br />
|33<br />
|-<br />
|War Magic<br />
|34<br />
|-<br />
|Leadership<br />
|35<br />
|-<br />
|Loyalty<br />
|36<br />
|-<br />
|Fletching<br />
|37<br />
|-<br />
|Alchemy<br />
|38<br />
|-<br />
|Cooking<br />
|39<br />
|-<br />
|Salvaging<br />
|40<br />
|-<br />
|Two-Handed Combat<br />
|41<br />
|-<br />
|Void<br />
|43<br />
|-<br />
|Heavy Weapons<br />
|44<br />
|-<br />
|Light Weapons<br />
|45<br />
|-<br />
|Finesse Weapons<br />
|46<br />
|-<br />
|Missile Weapons<br />
|47<br />
|-<br />
|Summoning<br />
|54<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass<br />
<br />
[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname<br />
<br />
[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype<br />
<br />
[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to <br />
<br />
obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Meta_System&diff=1605Virindi Tank Meta System2016-12-10T21:22:53Z<p>The Guru: /* Adding a Rule */</p>
<hr />
<div>= Introduction =<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. It is designed to automate quests. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.<br />
<br />
= Subtopics =<br />
* [[Meta Expressions]]<br />
* [[Meta ChatMessageCapture Condition]]<br />
* [[Public Meta Repository]]<br />
<br />
= Rules and States =<br />
<br />
A state is merely a name that you assign for some stage the macro will be in. For example, "hunting", <br />
"buying comps", or "died running back". The macro is only in one state at a time. When you first log in, it is in the "Default" state. You can manually change the current state using the dropdown box in the bottom left corner of the meta tab.<br />
<br />
A rule consists of a state, a condition, and an action. Rules are only checked if their state is the same as the current macro state. Each rule only happens once per time the macro is in a particular state (rules that have already run are listed in red in the main list).<br />
<br />
As the macro runs, it looks at all the rules which haven't run yet with the same state as the current state. If the condition is true, the action listed in the rule is run.<br />
<br />
<br />
Note: Meta conditions in the current state are evaluated approximately three times a second while the macro is enabled (once every 293 milliseconds and whenever the macro needs to decide what to do next). This check is done before the normal operation of the macro.<br />
<br />
= Adding a Rule =<br />
<br />
[[Image:vtguide-meta.png]]<br />
<br />
When you add a rule, you get this interface. The left side of the panel is where you define the rule's condition and state, and on the right side you define the rule's action. Condition is the upper left box and state is below it.<br />
<br />
'''Conditions (Left Side)<br />
<br />
* '''Never''': Never act upon.<br />
* '''Always''': Always act upon.<br />
* '''Any''': Act upon any.<br />
* '''All''': Act upon all.<br />
* '''Chat Message''': Act upon Chat Message.<br />
* '''Pack Slots <=''': Act upon Pack Slots less than or equal to X.<br />
* '''Seconds in State >=''': Act upon Seconds in State greater than or equal to X. Resets when macro is turned off and on.<br />
* '''Navroute Empty''': Act upon an empty Navroute.<br />
* '''Character Death''': Act upon Character Death.<br />
* '''Any Vendor Open''': Act upon Any Vendor Opened.<br />
* '''Vendor Closed''': Act upon Any Vendor Closed.<br />
* '''Inventory Item Count <=''': Act upon Inventory Item Count less than or equal to X of item.<br />
* '''Inventory Item Count >=''': Act upon Inventory Item Count greater than or equal to X of item.<br />
* '''Monster Name Count Within Distance''': Act upon X number of specific monster name within range of X.<br />
* '''Monster Priority Count Within Distance''': Act upon X number of priority monsters within range of X.<br />
* '''Need to Buff''': Act upon need to buff.<br />
* '''No Monsters Within Distance''': Act upon no monsters within range.<br />
* '''Landblock ==''': Act upon specific landblock (larger area).<br />
* '''Landcell ==''': Act upon specific landcell (smaller area).<br />
* '''Portalspace Entered''': Act upon entering portalspace.<br />
* '''Portalspace Exited''': Act upon exiting portalspace.<br />
* '''Not''': <br />
* '''Seconds in state (P) >=''': Act upon Seconds in State greater than or equal to X. Does NOT reset when macro is turned off and on.<br />
* '''Time Left On Spell >=''': Act if a spell on your character has greater than a certain amount of time left on it.<br />
* '''Burden Percent >=''': Act if Burden Percent is greater or equal to a specified value<br />
* '''Dist Any Route Pt >=''': Act if your character moves a certain distance away from any point in your route. <br />
* '''Expression''': Act upon an expression<br />
* '''Chat Message Capture''': Allows you to perform a Regular Expression match on incoming chatbox text and save matched substrings to Meta variables for later use - See [[Meta ChatMessageCapture Condition]]<br />
<br />
<br />
'''Actions (Right Side)<br />
<br />
* '''Set Meta State''': Allows you to set/change Meta state after X Action has occurred. <br />
* '''Chat Command''': On Action do X Chat Command. (eg. On Character Death do Chat Command /f I have died =( )<br />
* '''All''': Allows multiple Reactions to Occur.<br />
* '''Load Embedded Navroute''': Allows you to embed a navroute in to a meta<br />
* '''Call Meta State''': Switches to another state and adds a return state to the call stack.<br />
* '''Return From Call''': Switches to the last state on the call stack, and removes it from the stack. If the call stack is empty, an error is raised and meta is disabled.<br />
* '''Expression Action''': Perform an expression action<br />
* '''Chat Expression''': Output a chat expression<br />
* '''Set Watchdog''': When you enter a state, you can set a watchdog. If at any time during that state your character has not moved from where they are for a certain amount of time, a second state is called.<br />
* '''Clear Watchdog''': Clears the current watchdog.<br />
* '''Get VT Option''': Gets the current value from the specified option and stores it in an expression variable<br />
* '''Set VT Option''': Sets a VT option value and stores it in an expression variable<br />
* '''Create View''': Creates a Meta View using XML<br />
* '''Destroy View''': Destroys the specified meta view<br />
* '''Destroy All Views''': Destroys all meta views<br />
<br />
= Example =<br />
<br />
For example, you might want your character to run back to the battle when they die. You would have two routes: "runback" is a "once" route that takes you from your lifestone to the battlefield, and "fighting" is a normal route that is used while you are at the hunting area.<br />
<br />
The first rule you need sets the state when you die, so you can begin performing actions. So you'd make a rule like this:<br />
<br />
State: "Default", Condition: "Character Death", Action: "Set Meta State: dead"<br />
<br />
Once your character dies the macro will switch the state to "dead", and when that happens you want to immediately perform a series of actions, like this:<br />
<br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt nav load runback"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablebuffing true"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablenav true"<br><br />
<br />
When the "once" route "runback" has been run to the end, the nav route will be empty and it is time to resume hunting. Check for that like this:<br />
<br />
State: "dead", Condition: "Navroute empty", Action: "Set Meta State: back"<br><br />
<br />
To resume hunting, you need to do some more actions...<br />
<br />
State: "back", Condition: "Always", Action: "/vt nav load fighting"<br><br />
State: "back", Condition: "Always", Action: "/vt opt set enablecombat true"<br><br />
<br />
And return the macro to the starting state.<br />
<br />
State: "back", Condition: "Always", Action: "Set Meta State: Default"<br><br />
<br />
The result should look something like this:<br />
<br />
[[Image:Meta_example_profile.png]]<br />
<br />
A copy of the profile for this example can be found [http://www.virindi.net/junk/runbackwhendead.zip here]. To use it, extract the .met file to your Virindi Tank profile directory (typically c:\games\virindiplugins\virinditank).<br />
<br />
<br />
= Community Examples =<br />
<i>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions.</i><br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for questions regarding Meta profiles (not plugins themselves)<br />
<br />
<br />
There are many different types of meta profiles that can be created. From simple hunting profiles that run back to your dungeon on death(see above), to more complex systems of control and automation.<br />
<br />
Over time, this section will be updated with example meta's of all types.<br><br />
<br />
Some may work for you immediately, others may require a bit of customization<br />
<br />
<br />
In Meta, RegEx is used to identify and react on chat messages sent or heard by your client.<br />
<br />
<br />
Beware: Chat commands in the examples will be open ended. Meaning, anyone can trigger the commands that are in place. <br />
To protect yourself, you can make them character specific so you only accept them from approved names.<br />
<br />
The following examples may or may not work as intended, use at your own risk.<br />
<br />
<br />
'''Anyone in any chat channel:'''<br />
<br />
^.*().* (say|says|tells you), \"YourCommandHere\"$<br />
<br />
<br />
'''Specific names in any chat channel''' - By Validus of Morningthaw<br />
<br />
(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1|Char2|Char3)\>.+\<\\Tell\>) (say|says|tells you), \"Your Command Here\"$<br />
<br />
''Simply add names within the () and separate with |''<br />
<br />
<br />
'''Specific chat channel'''<br />
<br />
^\[ChannelNameHere\] (|).* (say|says), \"YourCommandHere\"$<br />
<br />
''(example: ^\[Allegiance\] (|).* (say|says), \"YourCommandHere\"$)''<br />
<br />
<br />
'''Green Messages'''<br />
<br />
Simply place a ^ before the green text in your chat message box. <br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
<br />
'''NPC Chat'''<br />
<br />
Place ^ before the start of the NPC chat in the chat message box.<br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
for quotation or question marks you will need to type \" or \? in order for it to match " or ?<br />
<br />
''(example: ^Master Arbitrator tells you, \"If you wish to fight as a gladiator in the Arena I will require you to purchase a ticket from the Ticket Vendors over there. We do need to keep the place running don't we\?\")''<br />
<br />
<br />
<br />
-----<br />
<br />
Examples:<br />
<br />
[[Media:TownPortals.zip|Town Network Routes]] - By The Art of War - Routes to any portal within the TN. All routes start from Annex side drop, Say !townname to route. <br />
<br />
[[Media:CeldisethRestock.zip|Celdiseth Recomp]] - Recalls Sanctuary, uses Celdiseth Gem and attempts to recomp. Requires current Mag-tools, Sanctuary recall, Celdiseth gems and a Celdiseth VTclassic profile. <br><i> You must edit the "Return" state and add your "runback" meta to /vt meta load</i><br />
<br />
[[Media:LocationSplit.zip|SplitProfile]] - One profile that launches in to multiple profiles based on character inventory (to reduce amount of commands.)<br />
<br />
[[Media:Withered_Hill_Portal.zip|Withered Hill Portal Drag]] - If pulled in to portal on withered hill, recalls primary and resets route (input your routes)<br><br />
<br />
[[Media:DangerousPortalDevice.zip|Dangerous Portal Device Auto Nav]] - Auto Nav to destination of choice (AL, OP, or VOD) (/hom to Yanshi Mansion)<br />
<br />
[[Media:DPD.zip|Dangerous Portal Device Auto Nav (Magtools cmds)]] - Auto nav to destination of choice (AL, OP, or VOD). Requires current mag-tools and DPD device either on patio, or hook near your mansion portal drop. Read the default state for commands.<br />
<br />
[[Media:CharacterCheck.zip|Character Check Example]] - Example for how to make sure all characters are in proper state before sending a command.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1602Meta Expressions2016-12-10T18:17:47Z<p>The Guru: </p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and <br />
<br />
combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" <br />
<br />
meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. <br />
<br />
It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec <br />
<br />
[expression]". This can be useful if you want to issue the command without using a meta rule, <br />
<br />
or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and <br />
<br />
"Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met <br />
<br />
then it will initiate the action. You can use this to detect world objects, character <br />
<br />
properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use <br />
<br />
regex and meta functions to format an expression. When outputting numbers from a variable you <br />
<br />
must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster <br />
<br />
expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types <br />
<br />
and simply returns the value of the first one. It has the lowest possible precedence. The idea <br />
<br />
is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: <br />
<br />
http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" <br />
<br />
yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For <br />
<br />
instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item <br />
<br />
after the # is the regex and the one before it is the string to match against. For instance, <br />
<br />
abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or <br />
<br />
false. The two expressions to be compared must be of the same type. String comparisons are not <br />
<br />
case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two <br />
<br />
numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. <br />
<br />
Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 67 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. <br />
<br />
Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, <br />
<br />
or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to <br />
<br />
false if the variable was previously undefined. Returns true if the variable was previously <br />
<br />
defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. <br />
<br />
Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, <br />
<br />
or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue <br />
<br />
property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, <br />
<br />
or false if the property is not defined. Because expression variables are doubles, precision <br />
<br />
will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, <br />
<br />
or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue <br />
<br />
property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is <br />
<br />
learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using <br />
<br />
the current VTank settings. This examines scarab count, buffed skill, and presence in the <br />
<br />
spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using <br />
<br />
the current VTank settings. This examines scarab count, buffed skill, and presence in the <br />
<br />
spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the base value of the character's <br />
<br />
health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_current[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the current value of the <br />
<br />
character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_buffedmax[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the buffed maximum value of the <br />
<br />
character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_traininglevel[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's current training <br />
<br />
level for a skill. 0 = Unusable, 1 = Untrained, 2 = Trained, 3 = Specialized.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's base ability for a <br />
<br />
skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_buffed[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's buffed ability for <br />
<br />
a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is <br />
<br />
currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for <br />
<br />
the player's current location, based on the game physics prediction model. Returns a <br />
<br />
coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a <br />
<br />
coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a <br />
<br />
coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a <br />
<br />
coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation <br />
<br />
of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a <br />
<br />
string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns <br />
<br />
false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two <br />
<br />
coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item <br />
<br />
Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two <br />
<br />
coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction <br />
<br />
model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given <br />
<br />
world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given <br />
<br />
world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a <br />
<br />
given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a <br />
<br />
door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. <br />
<br />
It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first <br />
<br />
inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first <br />
<br />
inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first <br />
<br />
inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected <br />
<br />
object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest <br />
<br />
object whose name matches a given regular expression and whose objectclass is a particular <br />
<br />
value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by <br />
<br />
itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on <br />
<br />
another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player <br />
<br />
or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards <br />
<br />
equipping any wand from the current profile's items list. Returns true if a wand is already <br />
<br />
equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell <br />
<br />
without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' <br />
<br />
spell. If the character is not in magic mode, one step is taken towards equipping any wand. <br />
<br />
Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the <br />
<br />
attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on <br />
<br />
a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the <br />
<br />
character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the <br />
<br />
attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''chatbox[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sends a string to the chatbox.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to send.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''chatboxpaste[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Pastes a partial string to the chatbox <br />
<br />
so that the user can complete typing it. Returns true if succeeded.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to send.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''statushud[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Updates an entry in the Virindi HUDs <br />
<br />
Status HUD.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The key<br />
<br />
'''Param 1 (String)''': The value</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''statushudcolored[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Updates an entry in the Virindi HUDs <br />
<br />
Status HUD.<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (String)''': The key<br />
<br />
'''Param 1 (String)''': The value<br />
<br />
'''Param 2 (String)''': The color, in RGB number format. For example, pure red is 16711680 <br />
<br />
(0xFF0000).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''uigetcontrol[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Gets a control reference for a control <br />
<br />
in a Meta View.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The window name.<br />
<br />
'''Param 1 (String)''': The control name.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''uisetlabel[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the text label of a Meta View <br />
<br />
control. Works on Buttons.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (ViewControl)''': The control object.<br />
<br />
'''Param 1 (String)''': The label text.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and <br />
<br />
only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and <br />
<br />
only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is <br />
<br />
true, the second parameter is returned. Otherwise, the third parameter is returned. (If the <br />
<br />
first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min <br />
<br />
and (max - 1)<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum<br />
<br />
'''Example''': <br />
<br />
Randint[0,2] will return 0 or 1, but never 2.<br />
<br />
Randint[5,10] will return 5, 6, 7, 8, or 9, but never 10.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a <br />
<br />
string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given <br />
<br />
object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a <br />
<br />
specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-<br />
<br />
us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. <br />
<br />
Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns <br />
<br />
the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns <br />
<br />
the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed <br />
<br />
on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating <br />
<br />
point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less <br />
<br />
than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater <br />
<br />
than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole <br />
<br />
integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a <br />
<br />
number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''Skill IDs'''<br />
|<br />
|-<br />
|Melee Defense<br />
|6<br />
|-<br />
|Missile Defense<br />
|7<br />
|-<br />
|Arcane Lore<br />
|14<br />
|-<br />
|Magic Defense<br />
|15<br />
|-<br />
|Mana Conversion<br />
|16<br />
|-<br />
|Item Tinkering<br />
|18<br />
|-<br />
|Assess Person<br />
|19<br />
|-<br />
|Deception<br />
|20<br />
|-<br />
|Healing<br />
|21<br />
|-<br />
|Jump<br />
|22<br />
|-<br />
|Lockpick<br />
|23<br />
|-<br />
|Run<br />
|24<br />
|-<br />
|Assess Creature<br />
|27<br />
|-<br />
|Weapon Tinkering<br />
|28<br />
|-<br />
|Armor Tinkering<br />
|29<br />
|-<br />
|Magic Item Tinkering<br />
|30<br />
|-<br />
|Creature Enchantment<br />
|31<br />
|-<br />
|Item Enchantment<br />
|32<br />
|-<br />
|Life Magic<br />
|33<br />
|-<br />
|War Magic<br />
|34<br />
|-<br />
|Leadership<br />
|35<br />
|-<br />
|Loyalty<br />
|36<br />
|-<br />
|Fletching<br />
|37<br />
|-<br />
|Alchemy<br />
|38<br />
|-<br />
|Cooking<br />
|39<br />
|-<br />
|Salvaging<br />
|40<br />
|-<br />
|Two-Handed Combat<br />
|41<br />
|-<br />
|Void<br />
|43<br />
|-<br />
|Heavy Weapons<br />
|44<br />
|-<br />
|Light Weapons<br />
|45<br />
|-<br />
|Finesse Weapons<br />
|46<br />
|-<br />
|Missile Weapons<br />
|47<br />
|-<br />
|Summoning<br />
|54<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass<br />
<br />
[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname<br />
<br />
[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype<br />
<br />
[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to <br />
<br />
obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Commands&diff=1601Virindi Tank Commands2016-12-10T18:15:52Z<p>The Guru: /* /vt commands - Debug */</p>
<hr />
<div>== /vt commands - Profiles ==<br />
<br />
* '''/vt settings [save/load/savechar/loadchar] [filename]''' - Saves or loads character setting profiles. Savechar/loadchar apply to MineOnly profiles.<br />
<br />
* '''/vt nav [save/load] [filename]''' - Saves or loads a navigation profile.<br />
* '''/vt loot [save/load] [filename]''' - Saves or loads a loot profile.<br />
* '''/vt meta [save/load] [filename]''' - Saves or loads a meta profile.<br />
* '''/vt opt [list/get/set/setinall]''' - lists, gets, or sets an [[Virindi_Tank_Advanced_Options|advanced option]]. Setinall affects ALL profiles - [[Options List]]<br />
* '''/vt testitem''' - Checks the currently selected item against the current loot rules, and tells you what the action would be if the item were found on a corpse.<br />
* '''/vt propertydump''' - Displays the raw game properties for the currently selected item.<br />
* '''/vt refresh''' - Refreshes the UI. This also causes the list of profile files in the profile dropdowns to be updated.<br />
* '''/vt getdb''' - Attempts redownload of the latest game information database.<br />
* '''/vt addnavpt [coords]''' - Adds a navigation waypoint at the specified coordinates to the end of the current navigation profile.<br />
* '''/vt addnavjump [heading] [shift: true or false] [milliseconds]''' - Adds a jump to the current route. Example: /vt addnavjump 360 true 500<br />
* '''/vt addnavcheckpoint''' - Adds a checkpoint to the current route. Checkpoints are like normal waypoints, except the plugin waits for the server to verify you reached the location before continuing.<br />
<br />
==/vt commands - Actions ==<br />
* '''/vt start''' - Turns the macro on<br />
* '''/vt stop''' - Turns the macro off <br />
* '''/vt forcebuff''' - Initiates a forcebuff<br />
* '''/vt cancelforcebuff''' - Cancels a forcebuff<br />
* '''/vt setmetastate [statename]''' - Sets the meta state to the statename<br />
* '''/vt fakedeath''' - Used to test the Character Death trigger in meta, rather than killing yourself<br />
* '''/vt deletemonster''' - Select a monster, then do /vt deletemonster to force the client to delete it.<br />
* '''/vt reverseroute [true/false]''' - Reverses the currently loaded navroute<br />
* '''/vt reverseroutequery''' - Returns the value of /vt reverseroute (true/false)<br />
* '''/vt equipitemsfor [monstername]''' - each use of this command will invoke one step of the process, such as going to peace mode or equipping a weapon. Multiple calls to this command will probably be required for expected operation. (Rules that contain operators will not work.)<br />
* '''/vt mexec [expression]''' - Evaluates an expression. Used to test expressions before using in a meta. (Setting variables this way is the same as setting in a meta)<br />
* '''/vt echo [text]''' - Simply outputs the text given to it back to the user, with a custom VCS preset. Makes it easier to color meta feedback messages.<br />
* '''/vt tapjump''' - Taps jumps <br />
* '''/vt jump [heading] [shift: true or false] [milliseconds]''' - Issues a single jump. Example: /vt jump 360 true 500<br />
* '''/vt setattackbar [0 to 1]''' - Sets the attack bar slider position.<br />
<br />
==/vt commands - Game Info ==<br />
* '''/vt dumpspells''' - Dumps the client spell table to C:\spelldump.txt<br />
* '''/vt dumpspecies''' - Dumps the client species table to C:\speciesdump.txt<br />
* '''/vt dumpmats''' - Dumps the client material table to C:\matdump.txt<br />
* '''/vt dumpskills''' - Dumps the client skill table to C:\skilldump.txt<br />
<br />
<br />
==/vt commands - Debug ==<br />
* '''/vt log''' - Displays the current logging state.<br />
* '''/vt log [type] [on/off]''' - Sets or unsets logging of a particular type. Valid types are ActiveRule, SalvageList, SpellCast, RuleInfo, Timers, CastInfo, DebuffChoice, Loot, CharProps, Misc<br />
* '''/vt testmonster''' - Select a monster and issue the command to evaluate the selected monster against your Monster List Match rules<br />
* '''/vt lockdump''' - <br />
* '''/vt dumptracker''' - <br />
* '''/vt clearlocks''' -<br />
* '''/vt clearbusy''' -<br />
* '''/vt listmonstervariables''' - Lists the supported monster expression variables (true, false, name, typeid, species, maxhp, range, hasshield, metastate)<br />
* '''/vt dumpmetavars''' - Lists the currently set meta variables<br />
* '''/vt listmetafunctions''' - Lists all [[Meta Functions]]<br />
* '''/vt metafunchelp [function]''' - Gives detailed information for each function<br />
* '''/vt fakeimp''' - Marks a monster as imped<br />
* '''/vt pscount''' - Portal debugging info<br />
* '''/vt testspell [spellid]''' - Tests whether you know a spell and if you can cast it based on your threshold mods. Example: /vt testspell 567<br />
* '''/vt testpet''' - Tests whether a pet can be summoned in the current location.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Public_Meta_Repository&diff=1600Public Meta Repository2016-10-20T14:39:14Z<p>The Guru: </p>
<hr />
<div><b>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions before starting.</b><br />
<br />
To install a meta:<br />
<br />
1. Download the meta<br />
<br />
2. If contained within a .zip, extract to your Virindi Tank folder (typically C:\Games\VirindiPlugins\VirindiTank)<br />
<br />
3. All .met .usd and .utl files must be placed in your Virindi Tank folder. (Unless the Help.txt states otherwise, as for mag-tools buy/sell profiles)<br />
<br />
4. Type /vt refresh in AC - the Profiles tab drop-down lists will repopulate with the new files. There is no need to relog. <br />
<br />
5. Select your meta from the dropdown. View it in the Meta tab. <br />
<br />
<br />
Many of the public metas require a current version of [http://magtools.codeplex.com Mag-Tools]<br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for help with your meta, a meta on the wiki, or to submit a meta to the public repository.<br />
<br><br />
<br />
<br />
<b>First time meta users please visit [http://immortalbob.com/phpBB3/viewtopic.php?f=6&t=39 this thread]</b><br />
<br />
<br />
= Quests =<br />
<b>Please stay at the keys while quest automation is in progress - some states may require player interaction.</b><br />
<br />
<b>It is suggested that you relog prior to using any meta that uses commands related to jumping or handing items to a NPC.</b><br />
<br />
<br />
== Luminance ==<br />
<br />
[[Media:Eihbil.zip|Book of Eihbil]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:Phainor.zip|Count Phainor's Amulet (Graverobber)]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:Deewain.zip|Deewain]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:FalatacotDepot.zip|Falatacot Depot]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:Foundry.zip|Foundry of Izexi]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:HermitDW.zip|Hermit's Death Wish]] - By Dmdtt/Furtim - Requires 1.5 follow nav min and Town Network gems <br />
<br />
<br />
-----<br />
[[Media:Society.zip|Society Tasks]] - By Dmdtt - Requires Adept in any society. Help file included.<br />
<br />
<br />
== Non-Luminance ==<br />
<br />
[[Media:AutoColo.zip|Advanced Colo]] - By Dmdtt - Advanced state usage for colosseum navigation. includes general character profile - Read all included instructions before using.<br />
<br />
<br />
-----<br />
<br />
[[Media:AunRalirea.zip|Aun Ralirea]] - By Dmdtt - Runs Hunting Aun Ralirea quest. Character Profile, Loot profile and Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:BellasAug.zip|Bellas Augmentation]] - By Dmdtt - Runs Bellas Augmentation. Loot Profile and Help file Included.<br />
<br />
<br />
-----<br />
<br />
[[Media:Bobo.zip|Bobo]] - By Narzull - Runs Bobo for Blue Kits. Requires Bobo flag prior to running. Starting the meta in default will recall /hom and attempt to use DPD until at Aphus. If you don't have a DPD near your /hom drop, use one until you get to Aphus drop and set the meta to the Waterfall state. If you don't want to automatically attempt blue kits remove the Gotryforkits state.<br />
<br />
<br />
-----<br />
<br />
[[Media:SingFallen.zip|Caul Fallen]] - By Dmdtt - Searches for and kills a Fallen on Singularity Caul. Help file, loot profile, and two macro settings profiles included.<br />
<br />
WARNING - In order to use singularity caul recall you will need to purchase a Carrot.<br />
<br />
<br />
-----<br />
<br />
[[Media:Caul_Rambler.zip|Caul Rambler]] - By Immortalbob - Runs quadrants of the Singularity Caul. Useful for finding rare spawns, fallen's, and completing the Rift Kill Tasks. - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=190 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:Cave_Penguin_Eggs.zip|Cave Penguin Eggs]] - By Immortalbob - Collects Cave Penguin Eggs and turns in to NPC for reward - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=231 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:ChasingOswald.zip|Chasing Oswald]] - By Joxer - Runs the Chasing Oswald quest for extra skill credit. Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:CowTipper.zip|Cow Tipper]] - By Hell's Wrath - Replacement for Khaotipper. Stand in front of Dwennon and start the meta.<br />
<br />
<br />
-----<br />
<br />
[[Media:DiemosFlag.zip|Diemos Flagging]] - By Tacit - Flags for Gladiator Diemos - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=217 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:DyePlant.zip|Dye Plant Collection]] - By Dmdtt - Routes in several locations and collects dye plants using expressions. For a detailed explanation of the expressions used and how to apply them in your own meta visit [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=119 this thread] - Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:EnergyCrystal.zip|Energy Crystal]] - By Hell's Wrath - Runs the Preparation for the Ritus quest for the Energy Crystal. Does <i>not</i> do Bracelet of Dark Essence or the Living Tome (parts 2 and 3). Requires Town Network Portal Gems<br><br />
<i>**Set range/approach to 5 and attack default monsters with auto weapon</i><br />
<br />
<i>Approximate Run-time: 15-20 minutes</i><br />
<br />
<br />
-----<br />
<br />
[[Media:GuardianoftheDeruTrees.zip|Guardian of the Deru Trees of Marae Lassel]] - By Rahmanan - Runs the Guardian of the Deru Tree quest. Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:FetishoftheDarkIdols.zip|Fetish of the Dark Idols]] - By Dmdtt - Runs the Fetish of the Dark Idols quest. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:SimpleColoByDmdtt.zip|Simple Colo]] - By Dmdtt - Route through arena, ring bell, turn in after runs, position at door and rebuff. Does not include character profiles. Trigger start by handing in a Colo Ticket. Commands are !buff and !cancelbuff. <br />
<br />
<br />
-----<br />
<br />
[[Media:SkillTemples.zip|Skill Temples]] - By Joxer - Navigates to either the Temple of Enlightenment or Temple of Forgetfulness. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:StonedWrits.zip|Stoned Writs]] - By Strider - Collects elemental stones to turn in for writs. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:Bellenesse.zip|Sword of Bellenesse]] - By Joxer - Runs the Sword of Bellenesse quest, excluding shields. Requires TN portal gems. Say !start in fellowship chat to begin.<br />
<br />
<br />
-----<br />
<br />
[[Media:TownStamp.zip|Town Stamps]] - By Joxer - Requires TN portal gems. Say !start to begin.<br />
<br />
<br />
-----<br />
<br />
[[Media:TumerokMeats.zip|Tumerok Salted Meats]] - By Hell's Wrath - Renegade Bone Charm quest for salted meats. Requires auto loot chests on, tumerok salted meats in loot profile, and town network portal gems. Trigger the meta by portaling in to Tufa.<br />
<br />
<br />
-----<br />
<br />
[[Media:VirindiSpells.zip|Virindi Spells]] - By Hell's Wrath - Runs the Virindi Spells quest for Dark Flame, Arcane Restoration, and Unnatural Persistence. Requires Town Network Portal Gems. Start the meta in an open area.<br><br />
<i>**Set range/approach to 5 and attack default monsters with auto weapon</i><br />
<br />
<i>You will not receive a scroll to use after turn-in. The spells appear automatically in your spellbook.</i><br />
<br />
<br />
<i> Approximate Run-time: 10 minutes </i><br />
<br />
<br />
-----<br />
<br />
[[Media:WhisperingBladeMetaPack.zip|Whispering Blade Series MetaPack]] - By Hell's Wrath - Requires Town Network Portal Gems.<br />
<br />
<i>**Set your range/approach to 5 and attack default monsters with auto weapon</i><br><br />
<i>**Must have an empty ring slot for quest 5</i><br><br />
<br />
- [[Media:DericostRuin.zip|Dericost Ruin]] - The first quest in the Whispering Blade series. Say !start at Westwatch portal drop. <br />
<br />
- [[Media:KnightsOfKarlun.zip|Knights of Karlun]] - The second quest in the Whispering Blade series. Will trigger automatically upon completion of Dericost Ruin.<br />
<br />
- [[Media:MaraudersLair.zip|Marauder's Lair]] - The third quest in the Whispering Blade series. Will trigger automatically upon completion of Knights of Karlun.<br />
<br />
- [[Media:ShadeIron.zip|Shade Iron]] - The fourth quest in the Whispering Blade series. Will trigger automatically upon completion of Marauder's Lair<br />
<br />
- [[Media:WBChapterhouse.zip|Whispering Blade Chapterhouse Access]] - The fifth quest in the Whispering Blade series. Will trigger automatically upon completion of Shade Iron. <br />
<br />
- [[Media:WhisperingBladeLoot.zip|Loot profile]] - Loot profile if downloading individually.<br />
<br />
<i>Approximate Run-time: 75 minutes</i><br />
<br />
<br />
= Tools/Other =<br />
<br />
<br />
[[Media:LegendKeys.zip|Arwic AutoChest]] - By Hell's Wrath - Attempts to loot the arwic chests. Requires Mag-Tools Auto Loot Chests ON and a Legendary Loot profile loaded in Vtank.<br />
<br />
Stand directly in front of a chest and select it<br />
<br />
Turn Vtank and Meta On<br />
<br />
Place the meta in the "Check" state (dropdown at bottom of meta tab)<br />
<br />
<br />
-----<br />
<br />
[[Media:ArwicAutoSalvage.zip|Arwic AutoSalvage]] - By Hell's Wrath - Mod of the AutoChest meta. Attempts to loot and salvage from the arwic chests. Requires "L" as VHS hotkey for LootThisCont. Help file included.<br />
<br />
Stand directly in front of a chest and select it<br />
<br />
Turn Vtank and Meta On<br />
<br />
Place the meta in the "Check" state (dropdown at bottom of meta tab)<br />
<br />
<br />
-----<br />
<br />
[[Media:DerethNavigation.zip|Dereth Navigation]] - By Immortalbob - Utilizes portal routes/recall spells to navigate multiple characters. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:BellasAutobot.zip|Bellas AutoBot]] - By Olorin the Istari of HG - Meta Add-on for Ting's Portalbot - Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:ManaForge.zip|Mana Forge AutoChest]] - By Hell's Wrath - Attempts to loot the Mana Forge chests. Requires Mag-Tools Auto Loot Chests on and a Loot profile loaded. Must use default keyboard configuration.<br />
<br />
Stand directly in front of a chest and select it <i>(you must keep the chest selected during looting</i>)<br />
<br />
Turn Vtank and Meta On<br />
<br />
Place the meta in the "Check" state<br />
<br />
<br />
-----<br />
<br />
[[Media:MetaPortal.zip|MetaPortal]] - By Hell's Wrath - Simple portal bot. Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:OlthoiSoldier.zip|Olthoi Soldier]] - By Hell's Wrath - Allows you to hunt as an Olthoi Soldier and collect Slag. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:Rare_Exchanger.zip|Rare Exchanger]] - By Immortalbob - Exchanges Rares at the Casino - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=262 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:SpellResearch.zip|Spell Research]] - By Hell's Wrath - Level 8 component combiner. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:StipendCollection.zip|Stipend Collection]] - By Narzull - Relogs all characters on account and collects stipend. Multiple metas. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:StipendsIB.zip|Stipends]] - By Immortalbob - Single meta stipend collection for multiple accounts - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=260 Instructions]<br />
<br />
<br />
<br />
= Multi-Char Control =<br />
<br />
Check out [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=282 Chaos Helper] for customizable HUDS to issue commands. <br />
-----<br />
<br />
<br />
[[Media:ChaosControlv2.zip|ChaosControl v2]] - By Hell's Wrath - Control meta to manipulate followers with a manual leader. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:ChaosCommandv2.zip|ChaosCommand]] - By Hell's Wrath - Companion meta for ChaosControl. Run on leader and issue chat commands by hotkey. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:DmdttControl.zip|DmdttControl]] - By Dmdtt - Control meta to manipulate followers with a manual leader. Help File Included.<br />
<br />
<br />
-----<br />
<br />
[[Media:IBControl1.1.2.zip|IBControl v1.1.2]] - By Immortalbob - Control meta, ChaosHelper layouts included. [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=291 Help thread]<br />
<br />
<br />
<br />
= Retired / Old =<br />
<br />
<br />
[[Media:GiftBoxes.zip|Gift Boxes 2013]] - By Dmdtt - Routes to all 12 Gift Boxes - Help file included<br />
<br />
<br />
-----<br />
<br />
[[Media:PackageDelivery.zip|Package Delivery]] - By Dmdtt - Requires 5 TN gems, ability to cast portal recall and pass level requirements for all associated portals.<br />
<br />
<br />
-----<br />
Report any issues to the author.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1599Meta Expressions2016-10-01T21:37:37Z<p>The Guru: /* Function Information */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 67 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the base value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_current[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the current value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_buffedmax[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the buffed maximum value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_traininglevel[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's current training level for a skill. 0 = Unusable, 1 = Untrained, 2 = Trained, 3 = Specialized.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's base ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_buffed[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's buffed ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and (max - 1)<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum<br />
<br />
'''Example''': <br />
<br />
Randint[0,2] will return 0 or 1, but never 2.<br />
<br />
Randint[5,10] will return 5, 6, 7, 8, or 9, but never 10.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''Skill IDs'''<br />
|<br />
|-<br />
|Melee Defense<br />
|6<br />
|-<br />
|Missile Defense<br />
|7<br />
|-<br />
|Arcane Lore<br />
|14<br />
|-<br />
|Magic Defense<br />
|15<br />
|-<br />
|Mana Conversion<br />
|16<br />
|-<br />
|Item Tinkering<br />
|18<br />
|-<br />
|Assess Person<br />
|19<br />
|-<br />
|Deception<br />
|20<br />
|-<br />
|Healing<br />
|21<br />
|-<br />
|Jump<br />
|22<br />
|-<br />
|Lockpick<br />
|23<br />
|-<br />
|Run<br />
|24<br />
|-<br />
|Assess Creature<br />
|27<br />
|-<br />
|Weapon Tinkering<br />
|28<br />
|-<br />
|Armor Tinkering<br />
|29<br />
|-<br />
|Magic Item Tinkering<br />
|30<br />
|-<br />
|Creature Enchantment<br />
|31<br />
|-<br />
|Item Enchantment<br />
|32<br />
|-<br />
|Life Magic<br />
|33<br />
|-<br />
|War Magic<br />
|34<br />
|-<br />
|Leadership<br />
|35<br />
|-<br />
|Loyalty<br />
|36<br />
|-<br />
|Fletching<br />
|37<br />
|-<br />
|Alchemy<br />
|38<br />
|-<br />
|Cooking<br />
|39<br />
|-<br />
|Salvaging<br />
|40<br />
|-<br />
|Two-Handed Combat<br />
|41<br />
|-<br />
|Void<br />
|43<br />
|-<br />
|Heavy Weapons<br />
|44<br />
|-<br />
|Light Weapons<br />
|45<br />
|-<br />
|Finesse Weapons<br />
|46<br />
|-<br />
|Missile Weapons<br />
|47<br />
|-<br />
|Summoning<br />
|54<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Cloak_Set_Ids&diff=1598Cloak Set Ids2016-09-25T04:14:10Z<p>The Guru: </p>
<hr />
<div>Specific Cloak Set IDs<br />
<br />
{| cellpadding="2" style="border:1px solid darkgray;"<br />
|-<br />
!width="150"|ID<br />
! Set<br />
<br />
|-<br />
|49<br />
|Alchemy<br />
|-<br />
|50<br />
|Arcane Lore<br />
|-<br />
|51<br />
|Armor Tinkering<br />
|-<br />
|52 <br />
|Assess Person<br />
|-<br />
|53<br />
|Light Weapons<br />
|-<br />
|54 <br />
|Missle Weapons<br />
|-<br />
|55<br />
|Cooking<br />
|-<br />
|56<br />
|Creature Enchantment<br />
|-<br />
|58<br />
|Finesse Weapons<br />
|-<br />
|59<br />
|Deception<br />
|-<br />
|60 <br />
|Fletching<br />
|-<br />
|61<br />
|Healing<br />
|-<br />
|62 <br />
|Item Enchantment<br />
|-<br />
|63<br />
|Item Tinkering<br />
|-<br />
|64<br />
|Leadership<br />
|-<br />
|65 <br />
|Life Magic<br />
|-<br />
|66<br />
|Loyalty<br />
|-<br />
|68 <br />
|Magic Defense<br />
|-<br />
|69 <br />
|Magic Item Tinkering<br />
|-<br />
|70<br />
|Mana Conversion<br />
|-<br />
|71 <br />
|Melee Defense<br />
|-<br />
|72<br />
|Missile Defense<br />
|-<br />
|73 <br />
|Salvaging<br />
|-<br />
|76 <br />
|Heavy Weapons<br />
|-<br />
|78 <br />
|Two Handed Combat<br />
|-<br />
|80 <br />
|Void Magic<br />
|-<br />
|81<br />
|War Magic<br />
|-<br />
|82 <br />
|Weapon Tinkering<br />
|-<br />
|83 <br />
|Assess Creature<br />
|-<br />
|84<br />
|Dirty Fighting<br />
|-<br />
|85<br />
|Dual Wield<br />
|-<br />
|86<br />
|Recklessness<br />
|-<br />
|87<br />
|Shield<br />
|-<br />
|88<br />
|Sneak Attack<br />
|-<br />
|90<br />
|Summoning<br />
|}<br />
<br />
Missing Skills:<br />
<br />
*Gearcraft <== skill doesn't exist anymore<br />
*Jump<br />
*Lockpick<br />
*Run<br />
<br />
Retired Skill IDs (These ID #'s still exist on pre-feb cloaks but they don't drop anymore in loot):<br />
{| cellpadding="2" style="border:1px solid darkgray;"<br />
|-<br />
!width="150"|ID<br />
! Set<br />
<br />
|-<br />
|57 <br />
|Crossbow (converted into Missle Weapons)<br />
|-<br />
|67 <br />
|Mace (converted into Light Weapons)<br />
|-<br />
|74 <br />
|Spear (converted into Light Weapons)<br />
|-<br />
|75<br />
|Staff (converted into Light Weapons)<br />
|-<br />
|77 <br />
|Thrown Weapons (converted into Missle Weapons)<br />
|-<br />
|79<br />
|Unarmed Combat (converted into Light Weapons)<br />
|-<br />
|}</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Cloak_Set_Ids&diff=1597Cloak Set Ids2016-09-25T04:05:11Z<p>The Guru: </p>
<hr />
<div>Specific Cloak Set IDs<br />
<br />
{| cellpadding="2" style="border:1px solid darkgray;"<br />
|-<br />
!width="150"|ID<br />
! Set<br />
<br />
|-<br />
|49<br />
|Alchemy<br />
|-<br />
|50<br />
|Arcane Lore<br />
|-<br />
|51<br />
|Armor Tinkering<br />
|-<br />
|52 <br />
|Assess Person<br />
|-<br />
|53<br />
|Light Weapons<br />
|-<br />
|54 <br />
|Missle Weapons<br />
|-<br />
|55<br />
|Cooking<br />
|-<br />
|56<br />
|Creature Enchantment<br />
|-<br />
|58<br />
|Finesse Weapons<br />
|-<br />
|59<br />
|Deception<br />
|-<br />
|60 <br />
|Fletching<br />
|-<br />
|61<br />
|Healing<br />
|-<br />
|62 <br />
|Item Enchantment<br />
|-<br />
|63<br />
|Item Tinkering<br />
|-<br />
|64<br />
|Leadership<br />
|-<br />
|65 <br />
|Life Magic<br />
|-<br />
|66<br />
|Loyalty<br />
|-<br />
|68 <br />
|Magic Defense<br />
|-<br />
|69 <br />
|Magic Item Tinkering<br />
|-<br />
|70<br />
|Mana Conversion<br />
|-<br />
|71 <br />
|Melee Defense<br />
|-<br />
|72<br />
|Missile Defense<br />
|-<br />
|73 <br />
|Salvaging<br />
|-<br />
|76 <br />
|Heavy Weapons<br />
|-<br />
|78 <br />
|Two Handed Combat<br />
|-<br />
|80 <br />
|Void Magic<br />
|-<br />
|81<br />
|War Magic<br />
|-<br />
|82 <br />
|Weapon Tinkering<br />
|-<br />
|83 <br />
|Assess Creature<br />
|-<br />
|84<br />
|Dirty Fighting<br />
|-<br />
|85<br />
|Dual Wield<br />
|-<br />
|86<br />
|Recklessness<br />
|-<br />
|88<br />
|Sneak Attack<br />
|-<br />
|90<br />
|Summoning<br />
|}<br />
<br />
Missing Skills:<br />
<br />
*Gearcraft <== skill doesn't exist anymore<br />
*Jump<br />
*Lockpick<br />
*Run<br />
<br />
Retired Skill IDs (These ID #'s still exist on pre-feb cloaks but they don't drop anymore in loot):<br />
{| cellpadding="2" style="border:1px solid darkgray;"<br />
|-<br />
!width="150"|ID<br />
! Set<br />
<br />
|-<br />
|57 <br />
|Crossbow (converted into Missle Weapons)<br />
|-<br />
|67 <br />
|Mace (converted into Light Weapons)<br />
|-<br />
|74 <br />
|Spear (converted into Light Weapons)<br />
|-<br />
|75<br />
|Staff (converted into Light Weapons)<br />
|-<br />
|77 <br />
|Thrown Weapons (converted into Missle Weapons)<br />
|-<br />
|79<br />
|Unarmed Combat (converted into Light Weapons)<br />
|-<br />
|}</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1596Meta Expressions2016-09-10T21:09:56Z<p>The Guru: /* Object Properties */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 67 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the base value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_current[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the current value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_buffedmax[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the buffed maximum value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_traininglevel[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's current training level for a skill. 0 = Unusable, 1 = Untrained, 2 = Trained, 3 = Specialized.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's base ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_buffed[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's buffed ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''Skill IDs'''<br />
|<br />
|-<br />
|Melee Defense<br />
|6<br />
|-<br />
|Missile Defense<br />
|7<br />
|-<br />
|Arcane Lore<br />
|14<br />
|-<br />
|Magic Defense<br />
|15<br />
|-<br />
|Mana Conversion<br />
|16<br />
|-<br />
|Item Tinkering<br />
|18<br />
|-<br />
|Assess Person<br />
|19<br />
|-<br />
|Deception<br />
|20<br />
|-<br />
|Healing<br />
|21<br />
|-<br />
|Jump<br />
|22<br />
|-<br />
|Lockpick<br />
|23<br />
|-<br />
|Run<br />
|24<br />
|-<br />
|Assess Creature<br />
|27<br />
|-<br />
|Weapon Tinkering<br />
|28<br />
|-<br />
|Armor Tinkering<br />
|29<br />
|-<br />
|Magic Item Tinkering<br />
|30<br />
|-<br />
|Creature Enchantment<br />
|31<br />
|-<br />
|Item Enchantment<br />
|32<br />
|-<br />
|Life Magic<br />
|33<br />
|-<br />
|War Magic<br />
|34<br />
|-<br />
|Leadership<br />
|35<br />
|-<br />
|Loyalty<br />
|36<br />
|-<br />
|Fletching<br />
|37<br />
|-<br />
|Alchemy<br />
|38<br />
|-<br />
|Cooking<br />
|39<br />
|-<br />
|Salvaging<br />
|40<br />
|-<br />
|Two-Handed Combat<br />
|41<br />
|-<br />
|Void<br />
|43<br />
|-<br />
|Heavy Weapons<br />
|44<br />
|-<br />
|Light Weapons<br />
|45<br />
|-<br />
|Finesse Weapons<br />
|46<br />
|-<br />
|Missile Weapons<br />
|47<br />
|-<br />
|Summoning<br />
|54<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1595Meta Expressions2016-09-10T20:20:33Z<p>The Guru: /* Function Information */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 67 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the base value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_current[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the current value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharvital_buffedmax[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the buffed maximum value of the character's health, stamina, or mana.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which vital to examine. 1 = Health, 2 = Stamina, 3 = Mana. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_traininglevel[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's current training level for a skill. 0 = Unusable, 1 = Untrained, 2 = Trained, 3 = Specialized.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_base[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's base ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharskill_buffed[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Get the character's buffed ability for a skill.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': Which skillid to examine. </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Commands&diff=1593Virindi Tank Commands2016-09-10T14:28:13Z<p>The Guru: /* /vt commands - Actions */</p>
<hr />
<div>== /vt commands - Profiles ==<br />
<br />
* '''/vt settings [save/load/savechar/loadchar] [filename]''' - Saves or loads character setting profiles. Savechar/loadchar apply to MineOnly profiles.<br />
<br />
* '''/vt nav [save/load] [filename]''' - Saves or loads a navigation profile.<br />
* '''/vt loot [save/load] [filename]''' - Saves or loads a loot profile.<br />
* '''/vt meta [save/load] [filename]''' - Saves or loads a meta profile.<br />
* '''/vt opt [list/get/set/setinall]''' - lists, gets, or sets an [[Virindi_Tank_Advanced_Options|advanced option]]. Setinall affects ALL profiles - [[Options List]]<br />
* '''/vt testitem''' - Checks the currently selected item against the current loot rules, and tells you what the action would be if the item were found on a corpse.<br />
* '''/vt propertydump''' - Displays the raw game properties for the currently selected item.<br />
* '''/vt refresh''' - Refreshes the UI. This also causes the list of profile files in the profile dropdowns to be updated.<br />
* '''/vt getdb''' - Attempts redownload of the latest game information database.<br />
* '''/vt addnavpt [coords]''' - Adds a navigation waypoint at the specified coordinates to the end of the current navigation profile.<br />
* '''/vt addnavjump [heading] [shift: true or false] [milliseconds]''' - Adds a jump to the current route. Example: /vt addnavjump 360 true 500<br />
* '''/vt addnavcheckpoint''' - Adds a checkpoint to the current route. Checkpoints are like normal waypoints, except the plugin waits for the server to verify you reached the location before continuing.<br />
<br />
==/vt commands - Actions ==<br />
* '''/vt start''' - Turns the macro on<br />
* '''/vt stop''' - Turns the macro off <br />
* '''/vt forcebuff''' - Initiates a forcebuff<br />
* '''/vt cancelforcebuff''' - Cancels a forcebuff<br />
* '''/vt setmetastate [statename]''' - Sets the meta state to the statename<br />
* '''/vt fakedeath''' - Used to test the Character Death trigger in meta, rather than killing yourself<br />
* '''/vt deletemonster''' - Select a monster, then do /vt deletemonster to force the client to delete it.<br />
* '''/vt reverseroute [true/false]''' - Reverses the currently loaded navroute<br />
* '''/vt reverseroutequery''' - Returns the value of /vt reverseroute (true/false)<br />
* '''/vt equipitemsfor [monstername]''' - each use of this command will invoke one step of the process, such as going to peace mode or equipping a weapon. Multiple calls to this command will probably be required for expected operation. (Rules that contain operators will not work.)<br />
* '''/vt mexec [expression]''' - Evaluates an expression. Used to test expressions before using in a meta. (Setting variables this way is the same as setting in a meta)<br />
* '''/vt echo [text]''' - Simply outputs the text given to it back to the user, with a custom VCS preset. Makes it easier to color meta feedback messages.<br />
* '''/vt tapjump''' - Taps jumps <br />
* '''/vt jump [heading] [shift: true or false] [milliseconds]''' - Issues a single jump. Example: /vt jump 360 true 500<br />
* '''/vt setattackbar [0 to 1]''' - Sets the attack bar slider position.<br />
<br />
==/vt commands - Game Info ==<br />
* '''/vt dumpspells''' - Dumps the client spell table to C:\spelldump.txt<br />
* '''/vt dumpspecies''' - Dumps the client species table to C:\speciesdump.txt<br />
* '''/vt dumpmats''' - Dumps the client material table to C:\matdump.txt<br />
* '''/vt dumpskills''' - Dumps the client skill table to C:\skilldump.txt<br />
<br />
<br />
==/vt commands - Debug ==<br />
* '''/vt log''' - Displays the current logging state.<br />
* '''/vt log [type] [on/off]''' - Sets or unsets logging of a particular type. Valid types are ActiveRule, SalvageList, SpellCast, RuleInfo, Timers, CastInfo, DebuffChoice, Loot, CharProps, Misc<br />
* '''/vt testmonster''' - Select a monster and issue the command to evaluate the selected monster against your Monster List Match rules<br />
* '''/vt lockdump''' - <br />
* '''/vt dumptracker''' - <br />
* '''/vt clearlocks''' -<br />
* '''/vt clearbusy''' -<br />
* '''/vt listmonstervariables''' - Lists the supported monster expression variables (true, false, name, typeid, species, maxhp, range, hasshield, metastate)<br />
* '''/vt dumpmetavars''' - Lists the currently set meta variables<br />
* '''/vt listmetafunctions''' - Lists all [[Meta Functions]]<br />
* '''/vt metafunchelp [function]''' - Gives detailed information for each function<br />
* '''/vt fakeimp''' - Marks a monster as imped<br />
* '''/vt pscount''' - Portal debugging info<br />
* '''/vt testspell [spellid]''' - Tests whether you know a spell and if you can cast it based on your threshold mods. Example: /vt testspell 567</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1582Meta Expressions2016-09-09T14:33:54Z<p>The Guru: /* Function Information */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 61 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1581Meta Expressions2016-09-09T14:32:54Z<p>The Guru: /* Function Information */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 56 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cnumber[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a string to a number (floating point). Returns 0 if the format is invalid.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''floor[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the largest integer less than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''ceiling[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the smallest integer greater than or equal to the input value.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''round[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Rounds a number to the nearest whole integer.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''abs[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Determines the absolute value of a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1562Meta Expressions2016-09-08T18:07:51Z<p>The Guru: /* Function Information */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Language Details: Operators ==<br />
The following operators are recognized (listed in order of precedence): <br />
<br />
* \ escapes a special character so that it is treated as part of a string. For instance, ".\*" yields the string ".*" rather than attempting to multiply.<br />
* ( and ) allow grouping of expressions to change precedence.<br />
* % performs integer [http://en.wikipedia.org/wiki/Modulo_operation modulo division]. For instance, 13%3 yields 1.<br />
* / performs division.<br />
* * performs multiplication.<br />
* + performs addition on numbers, or concatenates two strings.<br />
* - performs subtraction.<br />
* # performs a regex match, yielding true if the match succeeded or false otherwise. The item after the # is the regex and the one before it is the string to match against. For instance, abc#b returns true, because 'abc' contains b.<br />
* !=, ==, >, <, >=, <= comparison operators: compares two expressions and yields true or false. The two expressions to be compared must be of the same type. String comparisons are not case sensitive.<br />
* && yields true if two boolean expressions are both true.<br />
* || yields true if either of two boolean expressions are true.<br />
* ^ performs a bitwise [https://en.wikipedia.org/wiki/Exclusive_or exclusive or] on two numbers, treating them as integers.<br />
<br />
<br />
== Language Details: Strings ==<br />
Strings in an expression are a continuous series of letters, spaces, and escaped characters. Anything other than a letter or a space should be escaped by adding a \ in front of it.<br />
<br />
Examples:<br />
* Desired string: "hello world" Expression string: "hello world"<br />
* Desired string: "a-b" Expression string: "a\-b"<br />
* Desired string: "a! b-~! c123'." Expression string: "a\! b\-\~\! c\1\2\3\'\."<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 56 meta functions.<br />
<br />
See the [[Virindi Tank Changelog]] for the most recent additions. <br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getisspellknown[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns true if a given spell id is learned, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_hunt[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Hunt.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcancastspell_buff[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries if a spell can be cast using the current VTank settings. This examines scarab count, buffed skill, and presence in the spellbook. Skill is checked against SpellDiffExcessThreshold-Buff.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''':The SpellId to query </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Notes''': As of Virindi Tank 0.3.1.172 this function no longer returns the current player. It will return the nearest player to you.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbynameandobjectclass[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object whose name matches a given regular expression and whose objectclass is a particular value.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.<br />
<br />
'''Param 1 (String)''': The name of the object to search for. This parameter is a regex.<br />
</div></div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrygiveitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to hand an item to a player or NPC. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to give.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be given to (ie. player or NPC).</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryequipanywand[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to take one step towards equipping any wand from the current profile's items list. Returns true if a wand is already equipped, otherwise false.<br><br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyid[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell without a target (like a self spell). Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontrycastbyidontarget[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to cast a particular spell on a target WorldObject. Checks the spell requirements as if it were a 'hunting' spell. If the character is not in magic mode, one step is taken towards equipping any wand. Returns 1 if the attempt has begun, 0 if the attempt has not yet been made, or 2 if the attempt is impossible.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The spell ID to cast.<br />
<br />
'''Param 1 (WorldObject)''': The object to target with the spell.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Standard_Options&diff=1561Virindi Tank Standard Options2016-09-08T17:23:59Z<p>The Guru: /* Route tab */</p>
<hr />
<div>==Options tab==<br />
[[Image:Vtank_Main.PNG]]<br />
<br />
<br />
* '''Advanced Options''': Displays the advanced options list, allowing control of all internal macro variables.<br />
* '''Run Macro''': Enables macro action. Turning tank On/Off functions more like a Pause. <br />
<br />
<br />
*'''Force Buff''': Use this to force a rebuff, turn the macro On/Off to Pause the buffing sequence, it will resume where it left off<br />
*'''Cancel Force Buff''': Cancels a Force Buff sequence.<br />
<br />
<br />
* '''Monster Range''': The maximum range at which the macro will attempt to engage targets.<br />
* '''Ring Range''': The range that ring damage is expected to carry.<br />
* '''Approach Range''': When navigation is enabled, the macro will run towards a monster that is within approach range until it is within monster range.<br />
* '''Follow/Nav Min''': The range from a waypoint at which the macro considers the waypoint to be reached.<br />
<br />
<br />
* '''Enable Buffing''': Enables the buffing subsystem. When this is disabled, no self buffs will be cast.<br />
* '''Enable Combat''': Enables macro combat. When this is disabled, the macro will not attack or debuff targets. HOWEVER, the macro will continue to heal itself, navigate, and loot.<br />
<br />
<br />
* '''Enable Autostack''': Automatically stacks stackable items in your inventory.<br />
* '''Enable Autocram''': Automatically moves items from your main pack to side packs.<br />
* '''Use Dispel Items''': Causes the macro to use Gems of Stillness/Condensed Dispel/Society Dispel/Black Potions when a level 7 vuln is present on your character.<br />
* '''Cast dispel self''': Causes the macro to cast Eradicate Life Magic Self when a level 7 vuln is present on your character.<br />
<br />
<br />
* '''Auto Fellow Mgmt.''': Automatically Recruits when /t XP. See [[Virindi Tank Fellowship Commands]]<br />
* '''M. Charges when off''': Allows Vtank to recharge Mana on items even if Vtank is Off.<br />
<br />
<br />
* '''Boost Nav. Priority''': Causes the macro to navigate before attacking.<br />
* '''Boost Loot Priority''': Loots corpses before attacking the next monster. Use this option when you care more about loot than kills, and you are not able to clear the spawn fast enough to finish looting everything.<br />
* '''Peace Mode When Idle''': Switches to peace mode when not attacking. Usually used to improve regeneration rates when waiting for a respawn.<br />
* '''Rebuff When Idle''': Causes the macro to recast buffs that are running low early, when it is not doing anything else. This prevents buff timers from running out in the middle of combat.<br />
<br />
<br />
* '''Summon Pets''': Enables the SummonPets advanced option<br />
* '''Custom Pet Range''': When Enabled, summons pets at the custom range rather than Monster Range<br />
* '''Pet Min. Monsters''': The minimum number of allowed pet targets within pet range before a pet is summoned. (based on either Monster Range or Custom Pet Range)<br />
<br />
== Profiles tab ==<br />
[[Image:Vtank_Profiles.PNG]]<br />
<br />
''Whenever any setting is changed in Virindi Tank, it is immediately saved to the current profile (unless the current profile is default, which cannot be changed).<br />
<br />
<br />
* '''Macro Settings''': Your current settings file that is active, can be changed using dropdown.<br />
** [By char]: Creates a profile for that character only, same as Toggling Mine Only.<br />
** [Char]: Character Only Profile.<br />
** To create a new profile, click save as, enter a new profile name (no spaces), and then change the settings appropriately.<br />
* '''Mine Only''': Profile created only for that specific character.<br />
* '''Enable Auto-Navigation''': Toggles Navigation on/off. Routes are Created on the Route Tab, and Saved on the Profile Tab.<br />
* '''Enable Looting''': Toggles Looting on/off. Profiles are created using the VT Classic Looter or Using the Alinco3 connector File.<br />
* '''Show Editor''': No Function/Depreciated.<br />
<br />
<br />
'''Usage for Alinco3 Connector File:<br />
'''/vt loot new Alinco.los<br />
<br />
== Vitals tab ==<br />
[[Image:Vtank_vitals.PNG]]<br />
<br />
'''Top-off levels<br />
* Levels to which the macro will recharge when there is no active combat target.<br />
<br />
<br />
''Note**<br><br />
''For helper to work, your Fellow Panel must be open, or be joined in a [[Virindi Integrator 2]] fellowship.<br />
<br />
== Monsters tab ==<br />
[[Image:Vtank_monsters.PNG]]<br />
<br />
This list defines what you want to do with each monster. You can put monster names in here, or define [[Virindi Tank Monster List Matching|Monster Expressions]].<br />
<br />
The columns mean the following:<br />
* '''F''': Fester.<br />
* '''B''': Broadside of a Barn.<br />
* '''G''': Gravity Well.<br />
* '''I: '''Imperil.<br />
* '''Y''': Yield.<br />
* '''V''': Vuln.<br />
* '''A''': Primary attack (aka war). Causes the monster to be attack via the primary attack method of the chosen weapon: war for wands, melee for melee weapons, etc. If this is not selected, the macro will debuff only unless the R box is checked (see below).<br />
* '''R''': Ring. If WR are both selected, the macro will ring when 4 or more monsters are within ring range. If R is selected but not '''W''', the macro will ring as long as any R monster is within ring range, but if no monsters are within ring range it will use standard war on ones outside of ring range.<br />
* '''S''': Streak.<br />
* '''WC''': Weakening Curse.<br />
* '''FC''': Festering Curse.<br />
* '''Cp''': Corruption.<br />
* '''DC''': Destructive Curse.<br />
* '''Cs''': Corrosion.<br />
* '''P''': Priority. Priority -1 means ignore completely, while 0-4 are attack. (Higher Number = Higher Priority)<br />
<br />
<br />
* '''Damage Type''': The Damage Type you would like to use, or set to <Auto> to have Vtank Decide.<br />
* '''Ex. Vuln''': An additional element vuln of a user-specified type that will be cast in addition to the listed spells.<br />
* '''Weapon''': The Weapon/Caster to use if added to the Items tab.<br />
* '''Offhand''': the offhand weapon or shield, for melees.<br />
* '''PetDmg''': Sets the elemental pet type to be summoned<br />
<br />
== Items tab ==<br />
[[Image:Vtank_items.PNG]]<br />
<br />
* '''Add''': Select an item in your inventory and press this button.<br />
* '''Add (No Buffs)''': To add the selected Item and have Vtank skip it when buffing.<br />
<br />
<br />
'''Combat items go here. Allowed types include:<br />
<br />
* ''Wands/Staves/Orbs<br />
* ''Melee Weapons<br />
* ''Missile Weapons<br />
* ''Shields<br />
* ''Pets<br />
<br />
== Consumables tab ==<br />
[[Image:Vtank_consumables.PNG]]<br />
<br />
'''Types of Items the macro can use during the course of play:<br><br />
* Items the macro uses to cast buffs on you such as beers and foodstuffs. <br />
* Healing kits, stamina kits, healing foods, stamina foods, potions, etc.<br />
* Mana charges/mana stones<br />
* Alchemical grenades<br />
* Spell components for which peas should be split<br />
* Lockpicks for auto picking doors<br />
<br />
''Since all buff spells are recast when they go below 5 minutes, buff items that last less than 5 minutes are not allowed.<br />
<br />
== Buffs tab ==<br />
[[Image:Vtank_buffs.PNG]]<br />
<br />
''By default, Virindi Tank automatically buffs every Attribute and Skill you have trained, as well as every Protection and Bane.<br />
<br />
<br />
* '''Use this tab to buff an additional skill you do not have trained, such as leadership.<br />
* '''To modify the protections and banes that are cast, see entry #2.7 in the [[Virindi Plugins FAQ]].<br />
<br />
== Route tab ==<br />
[[Image:Vtank_route.PNG]]<br />
<br />
'''The following types of routes are supported:<br />
<br />
* '''Circular Route''': Plugin traverses waypoints in the order ABC-ABC.''(After last waypoint, will return to first waypoint)<br />
* '''Linear Route''': Plugin traverses waypoints in the order ABC-CBA. ''(Will run back and forth from beginning to end)<br />
* '''Follow Route''': Follows another Player.<br />
* '''Once Route''': Runs a route just once. ''(Good for ToVendor/ToDungeon routes.) <br />
<br />
<br />
'''Buttons:<br />
<br />
* '''Add''': Adds the current location or selected portal as a waypoint, unless Follow mode is selected, in which case the follow target is set to the current selection.<br />
* '''Open Vendor''': Opens selected/named Vendor.<br />
* '''Add Portal/NPC''': Opens/Uses selected Portal or NPC.<br />
* '''Add NPC Talk''': Tries to use an NPC until it sees a "tell" message from them.<br />
* '''Add Recall''': Adds a recall waypoint to the waypoints list.<br />
* '''Add Pause''': X Seconds to add pause to Navroute.<br />
* '''Add Chat''': / commands. (/ls for example) You can input any type of chat or /command, including other plugin commands. <br />
<br />
<br />
'''Editing routes:<br />
<br />
* Select the dropdown menu at the bottom of the page and select from "'''Add to End'''", "'''Insert Above'''", or "'''Insert Below'''"<br />
* Use the curly green arrow to set the current waypoint [[image:GreenTurnDownArrow.PNG]] ‎, or the up/down red and green arrows to change it.<br />
* Add your new waypoint<br />
<br />
<br />
'''Command Line:<br />
<br />
'''/vt nav save filename - Saves the current waypoint list as a new navigation profile.<br />
'''/vt nav load filename - Loads a navigation profile. <br />
'''/vt addnavpt coords - Adds a navigation waypoint at the specified coordinates to the end of the current navigation profile<br />
'''/vt addnavcheckpoint - Adds a checkpoint waypoint at the current location. Checkpoints wait for the server to verify your location before continuing. <br />
'''/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar (0 is minimum, 1000 is maximum)]<br />
'''/vt addnavjump [heading] [shift] [charge]<br />
'''/vt addnavjump [heading] [shift] [charge] [strafeleft/straferight/forward]<br />
'''/vt reverseroute [true/false] - Reverses the currently loaded navroute<br />
'''/vt reverseroutequery - Returns the value of /vt reverseroute (true/false)<br />
<br />
'''example: "/vt jump 360 true 500 strafeleft"<br />
<br />
<br />
''Example Route:<br />
<br />
''* [http://www.virindi.net/junk/Aerbax.nav Aerbax (The silly long tunnel)] - Right-click, Save-as. Place the file in your Virindi Tank folder inside the Virindi Plugins folder.<br />
<br />
== Meta tab ==<br />
<br />
See [[Virindi_Tank_Meta_System| Virindi Tank Meta System]]<br />
<br />
=== Introduction ===<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Standard_Options&diff=1560Virindi Tank Standard Options2016-09-08T17:23:28Z<p>The Guru: /* Route tab */</p>
<hr />
<div>==Options tab==<br />
[[Image:Vtank_Main.PNG]]<br />
<br />
<br />
* '''Advanced Options''': Displays the advanced options list, allowing control of all internal macro variables.<br />
* '''Run Macro''': Enables macro action. Turning tank On/Off functions more like a Pause. <br />
<br />
<br />
*'''Force Buff''': Use this to force a rebuff, turn the macro On/Off to Pause the buffing sequence, it will resume where it left off<br />
*'''Cancel Force Buff''': Cancels a Force Buff sequence.<br />
<br />
<br />
* '''Monster Range''': The maximum range at which the macro will attempt to engage targets.<br />
* '''Ring Range''': The range that ring damage is expected to carry.<br />
* '''Approach Range''': When navigation is enabled, the macro will run towards a monster that is within approach range until it is within monster range.<br />
* '''Follow/Nav Min''': The range from a waypoint at which the macro considers the waypoint to be reached.<br />
<br />
<br />
* '''Enable Buffing''': Enables the buffing subsystem. When this is disabled, no self buffs will be cast.<br />
* '''Enable Combat''': Enables macro combat. When this is disabled, the macro will not attack or debuff targets. HOWEVER, the macro will continue to heal itself, navigate, and loot.<br />
<br />
<br />
* '''Enable Autostack''': Automatically stacks stackable items in your inventory.<br />
* '''Enable Autocram''': Automatically moves items from your main pack to side packs.<br />
* '''Use Dispel Items''': Causes the macro to use Gems of Stillness/Condensed Dispel/Society Dispel/Black Potions when a level 7 vuln is present on your character.<br />
* '''Cast dispel self''': Causes the macro to cast Eradicate Life Magic Self when a level 7 vuln is present on your character.<br />
<br />
<br />
* '''Auto Fellow Mgmt.''': Automatically Recruits when /t XP. See [[Virindi Tank Fellowship Commands]]<br />
* '''M. Charges when off''': Allows Vtank to recharge Mana on items even if Vtank is Off.<br />
<br />
<br />
* '''Boost Nav. Priority''': Causes the macro to navigate before attacking.<br />
* '''Boost Loot Priority''': Loots corpses before attacking the next monster. Use this option when you care more about loot than kills, and you are not able to clear the spawn fast enough to finish looting everything.<br />
* '''Peace Mode When Idle''': Switches to peace mode when not attacking. Usually used to improve regeneration rates when waiting for a respawn.<br />
* '''Rebuff When Idle''': Causes the macro to recast buffs that are running low early, when it is not doing anything else. This prevents buff timers from running out in the middle of combat.<br />
<br />
<br />
* '''Summon Pets''': Enables the SummonPets advanced option<br />
* '''Custom Pet Range''': When Enabled, summons pets at the custom range rather than Monster Range<br />
* '''Pet Min. Monsters''': The minimum number of allowed pet targets within pet range before a pet is summoned. (based on either Monster Range or Custom Pet Range)<br />
<br />
== Profiles tab ==<br />
[[Image:Vtank_Profiles.PNG]]<br />
<br />
''Whenever any setting is changed in Virindi Tank, it is immediately saved to the current profile (unless the current profile is default, which cannot be changed).<br />
<br />
<br />
* '''Macro Settings''': Your current settings file that is active, can be changed using dropdown.<br />
** [By char]: Creates a profile for that character only, same as Toggling Mine Only.<br />
** [Char]: Character Only Profile.<br />
** To create a new profile, click save as, enter a new profile name (no spaces), and then change the settings appropriately.<br />
* '''Mine Only''': Profile created only for that specific character.<br />
* '''Enable Auto-Navigation''': Toggles Navigation on/off. Routes are Created on the Route Tab, and Saved on the Profile Tab.<br />
* '''Enable Looting''': Toggles Looting on/off. Profiles are created using the VT Classic Looter or Using the Alinco3 connector File.<br />
* '''Show Editor''': No Function/Depreciated.<br />
<br />
<br />
'''Usage for Alinco3 Connector File:<br />
'''/vt loot new Alinco.los<br />
<br />
== Vitals tab ==<br />
[[Image:Vtank_vitals.PNG]]<br />
<br />
'''Top-off levels<br />
* Levels to which the macro will recharge when there is no active combat target.<br />
<br />
<br />
''Note**<br><br />
''For helper to work, your Fellow Panel must be open, or be joined in a [[Virindi Integrator 2]] fellowship.<br />
<br />
== Monsters tab ==<br />
[[Image:Vtank_monsters.PNG]]<br />
<br />
This list defines what you want to do with each monster. You can put monster names in here, or define [[Virindi Tank Monster List Matching|Monster Expressions]].<br />
<br />
The columns mean the following:<br />
* '''F''': Fester.<br />
* '''B''': Broadside of a Barn.<br />
* '''G''': Gravity Well.<br />
* '''I: '''Imperil.<br />
* '''Y''': Yield.<br />
* '''V''': Vuln.<br />
* '''A''': Primary attack (aka war). Causes the monster to be attack via the primary attack method of the chosen weapon: war for wands, melee for melee weapons, etc. If this is not selected, the macro will debuff only unless the R box is checked (see below).<br />
* '''R''': Ring. If WR are both selected, the macro will ring when 4 or more monsters are within ring range. If R is selected but not '''W''', the macro will ring as long as any R monster is within ring range, but if no monsters are within ring range it will use standard war on ones outside of ring range.<br />
* '''S''': Streak.<br />
* '''WC''': Weakening Curse.<br />
* '''FC''': Festering Curse.<br />
* '''Cp''': Corruption.<br />
* '''DC''': Destructive Curse.<br />
* '''Cs''': Corrosion.<br />
* '''P''': Priority. Priority -1 means ignore completely, while 0-4 are attack. (Higher Number = Higher Priority)<br />
<br />
<br />
* '''Damage Type''': The Damage Type you would like to use, or set to <Auto> to have Vtank Decide.<br />
* '''Ex. Vuln''': An additional element vuln of a user-specified type that will be cast in addition to the listed spells.<br />
* '''Weapon''': The Weapon/Caster to use if added to the Items tab.<br />
* '''Offhand''': the offhand weapon or shield, for melees.<br />
* '''PetDmg''': Sets the elemental pet type to be summoned<br />
<br />
== Items tab ==<br />
[[Image:Vtank_items.PNG]]<br />
<br />
* '''Add''': Select an item in your inventory and press this button.<br />
* '''Add (No Buffs)''': To add the selected Item and have Vtank skip it when buffing.<br />
<br />
<br />
'''Combat items go here. Allowed types include:<br />
<br />
* ''Wands/Staves/Orbs<br />
* ''Melee Weapons<br />
* ''Missile Weapons<br />
* ''Shields<br />
* ''Pets<br />
<br />
== Consumables tab ==<br />
[[Image:Vtank_consumables.PNG]]<br />
<br />
'''Types of Items the macro can use during the course of play:<br><br />
* Items the macro uses to cast buffs on you such as beers and foodstuffs. <br />
* Healing kits, stamina kits, healing foods, stamina foods, potions, etc.<br />
* Mana charges/mana stones<br />
* Alchemical grenades<br />
* Spell components for which peas should be split<br />
* Lockpicks for auto picking doors<br />
<br />
''Since all buff spells are recast when they go below 5 minutes, buff items that last less than 5 minutes are not allowed.<br />
<br />
== Buffs tab ==<br />
[[Image:Vtank_buffs.PNG]]<br />
<br />
''By default, Virindi Tank automatically buffs every Attribute and Skill you have trained, as well as every Protection and Bane.<br />
<br />
<br />
* '''Use this tab to buff an additional skill you do not have trained, such as leadership.<br />
* '''To modify the protections and banes that are cast, see entry #2.7 in the [[Virindi Plugins FAQ]].<br />
<br />
== Route tab ==<br />
[[Image:Vtank_route.PNG]]<br />
<br />
'''The following types of routes are supported:<br />
<br />
* '''Circular Route''': Plugin traverses waypoints in the order ABC-ABC.''(After last waypoint, will return to first waypoint)<br />
* '''Linear Route''': Plugin traverses waypoints in the order ABC-CBA. ''(Will run back and forth from beginning to end)<br />
* '''Follow Route''': Follows another Player.<br />
* '''Once Route''': Runs a route just once. ''(Good for ToVendor/ToDungeon routes.) <br />
<br />
<br />
'''Buttons:<br />
<br />
* '''Add''': Adds the current location or selected portal as a waypoint, unless Follow mode is selected, in which case the follow target is set to the current selection.<br />
* '''Open Vendor''': Opens selected/named Vendor.<br />
* '''Add Portal/NPC''': Opens/Uses selected Portal or NPC.<br />
* '''Add NPC Talk''': Tries to use an NPC until it sees a "tell" message from them.<br />
* '''Add Recall''': Adds a recall waypoint to the waypoints list.<br />
* '''Add Pause''': X Seconds to add pause to Navroute.<br />
* '''Add Chat''': / commands. (/ls for example) You can input any type of chat or /command, including other plugin commands. <br />
<br />
<br />
'''Editing routes:<br />
<br />
* Select the dropdown menu at the bottom of the page and select from "'''Add to End'''", "'''Insert Above'''", or "'''Insert Below'''"<br />
* Use the curly green arrow to set the current waypoint [[image:GreenTurnDownArrow.PNG]] ‎, or the up/down red and green arrows to change it.<br />
* Add your new waypoint<br />
<br />
<br />
'''Command Line:<br />
<br />
'''/vt nav save filename - Saves the current waypoint list as a new navigation profile.<br />
'''/vt nav load filename - Loads a navigation profile. <br />
'''/vt addnavpt coords - Adds a navigation waypoint at the specified coordinates to the end of the current navigation profile<br />
'''/vt addnavcheckpoint - Adds a checkpoint waypoint at the current location. Checkpoints wait for the server to verify your location before continuing. <br />
'''/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar (0 is minimum, 1000 is maximum)]<br />
'''/vt addnavjump [heading] [shift] [charge]<br />
'''/vt addnavjump [heading] [shift] [charge\ [strafeleft/straferight/forward]<br />
'''/vt reverseroute [true/false] - Reverses the currently loaded navroute<br />
'''/vt reverseroutequery - Returns the value of /vt reverseroute (true/false)<br />
<br />
'''example: "/vt jump 360 true 500 strafeleft"<br />
<br />
<br />
''Example Route:<br />
<br />
''* [http://www.virindi.net/junk/Aerbax.nav Aerbax (The silly long tunnel)] - Right-click, Save-as. Place the file in your Virindi Tank folder inside the Virindi Plugins folder.<br />
<br />
== Meta tab ==<br />
<br />
See [[Virindi_Tank_Meta_System| Virindi Tank Meta System]]<br />
<br />
=== Introduction ===<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=BeginnerBundleGuide&diff=1559BeginnerBundleGuide2016-09-08T17:21:05Z<p>The Guru: /* Route tab */</p>
<hr />
<div>WORK IN PROGRESS<br />
<br />
A Quick Reference Guide for the Virindi Tank Bundle - Compiled by [http://www.virindi.net/wiki/index.php?title=Special:Contributions/The_Guru&limit=500&target=The+Guru Hell's Wrath]<br />
<br />
Before diving in you may want to [[Customize Your View]]<br />
<br />
= Virindi Tank [[image:TankIcon.PNG]] =<br />
Click the Tank icon [[image:TankIcon.PNG]] on the [[Virindi Views]](VVS) bar to open the main Virindi Tank plugin.<br />
<br />
== Options tab ==<br />
The main options page handles basic Vtank ranges and a multitude of easy-access options.<br />
<br />
[[image:Vtank_Main.PNG]] <br />
<br />
For detailed explanations of the individual options on the main tab, visit the [[Virindi_Tank_Standard_Options#Options|Standard Options]] page<br />
<br />
You can also view the entire [[Virindi_Tank_Advanced_Options|Advanced Options]] which will be linked to throughout this guide. <br />
<br />
<br />
== Profiles tab==<br />
<br />
[[image:Vtank_Profiles.PNG]]<br />
<br />
=== Macro Setting Profiles ===<br />
Understanding how profiles are managed is vital to running an organized macro. You will likely have many profiles for different locations and tasks.<br />
There are two types of profiles we will talk about: Those with Mine Only enabled, and those without.<br />
<br />
* Click the Macro Settings dropdown list<br />
* You will see [Default] and [ByChar] -- You never want to edit settings within these, think of them as templates. You load one, make a save with a specific name, then edit and use the new save. <br />
* [Default] profile settings will always reset on logout.<br />
* [ByChar] is associated with the Mine Only radio button. This is the profile type you will use the most. <br />
* When creating a new character specific profile you want to have the Mine Only radio button enabled, selecting the [ByChar] profile automatically enables Mine Only.<br />
<br />
==== Saving [Char] Macro Settings ====<br />
* Select [ByChar] from the Macro Settings dropdown then click the "CopyTo" button.<br />
* Your chat bar will be filled with the string "/vt settings savechar" -- Type a name after "savechar" and press Enter. (eg. "/vt settings savechar TuskerIsland")<br />
* You will now have a "[Char]TuskerIsland" profile in the Macro Settings dropdown - You can now safely begin making changes to the settings.<br />
** Changes made within profiles are saved immediately and automatically. You do not have to save after making alterations. This is the reason for using [ByChar] as a template to make new profiles.<br />
<br />
==== Transferring [Char] Profiles to Alt Char. ====<br />
* To transfer a [Char] setting profile over to another character you will need to load the [Char]profile, disable Mine Only and click CopyTo. <br />
* In your chat bar you will see the string "/vt settings save" - type a profile name and click enter. (eg. "/vt settings save TuskerIsland")<br />
* On the character you want the profile transferred to, uncheck Mine Only and select the Macro Settings dropdown. You will see "TuskerIsland" listed without a [Char] tag.<br />
* You now need to save the cross-char profile as a [Char] profile. Select "TuskerIsland" from the dropdown and then enable Mine Only. Click "CopyTo" and the string "/vt settings savechar" should appear in your chat bar. Type TuskerIsland and press Enter. <br />
** You should now see "[Char]TuskerIsland" in your macro settings dropdown list.<br />
**Now you must populate the Items/Consumables tab with your items, and assign any weapon types in the Monster tab that may have become unassigned as a result of transferring the profile.<br />
<br />
=== Auto-Navigation Profiles ===<br />
* To create a new route select [None] from the dropdown and then click the "CopyTo" button - "/vt nav save" will appear in your char bar, type a name and hit Enter<br />
* Build and edit your routes on the Routes tab<br />
<br />
=== Looting Profiles ===<br />
* Displays a list of loot profiles, select one to load it<br />
* Profiles loaded from your \\VirindiPlugins\VirindiTank folder<br />
<br />
* Loot profiles for Virindi Tank are built outside of game using the [[Virindi_Tank_Classic_Loot_System|Virindi Tank Classic Loot System]]<br />
* The classic looter is extremely powerful. Example profiles are available on the above page.<br />
* [http://www.immortalbob.com Immortalbob.com] provides a profile called "Lootsnob" that has hundreds of rules for all manner of armor/weapon/trophies/collectibles.<br />
<br />
** Aside from the Vtank Classic Looter, you can also use [http://asheron.aetherific.com/Alinco Alinco3], [http://asheron.aetherific.com/GearFoundry GearFoundry], or any other plugin that will link its profile to Vtank<br />
** OnLogin, if no loot profile is selected, Vtank will detect if GearFoundry or Alinco is loaded and provide a link you can click to attach your profile to Vtank.<br />
<br />
=== Meta Action Profiles ===<br />
* Select a meta profile from the dropdown list to load it <br />
* You build and edit on the [[BeginnerBundleGuide#Meta tab|Meta tab]]<br />
<br />
== Vitals tab ==<br />
The vitals tab is crucial to your survival. Depending on your skill level you will want to adjust the sliders to best fit your circumstances.<br />
Lower level spells do not revitalize as well so the sliders must be adjusted to give you maximum benefit. Trial and error is the name of the game.<br />
<br />
[[image:Vtank_vitals.PNG]]<br />
<br />
* The first three sliders manage your vitals during combat<br />
<br />
* The second set of sliders manages your Top-off vitals. When there are no combat targets in range you will recharge to these values.<br />
<br />
* The third set of sliders manages your Helper spells<br />
<br />
**[[Virindi_Tank_Advanced_Options#Recharge|Advanced Recharge Options]] can be used to set exact percentages of vitals, enable Helper spells, and set ranges.<br />
<br />
== Monsters tab ==<br />
The monsters tab is where you will manage the different types of attacks, debuffs, and weapons you use against specific monsters.<br />
<br />
[[image:Vtank_monsters.PNG]]<br />
<br />
* Type in a monster name and click Add, or select a monster in the 3D window and click Add Sel.<br />
<br />
* Once you have a monster name entered you can set the ways you want to react. Hovering over each of the letters will show a tooltip. <br />
* Click the text beneath Dmg type / Extra Vuln / Weapon / Offhand / PetDmg to cycle through the available options. <br />
<br />
The monster list can be very simple or quite complex, depending on your needs and desires. <br />
<br />
There are advanced operators and variables you can use to account for very specific situational problems<br />
<br />
Check out [[Virindi_Tank_Monster_List_Matching | Monster List Matching]] for more information.<br />
<br />
<br />
== Items tab ==<br />
Within the items tab you add all of your weapons/wands/shields/pets you want to use in your profile. <br />
<br />
[[image:Vtank_items.PNG]]<br />
<br />
*Select an item in your inventory and click "Add" to add it to the list.<br />
<br />
Once an item is listed it can be set in the Monsters tab under the appropriate options. <br />
<br />
<br />
== Consumables tab ==<br />
<br />
<br />
[[image:Vtank_consumables.PNG]]<br />
<br />
* If you use any type of gems/foods/healing kits/potions/lockpicks etc, you can add them to the Consumables list and have Vtank automatically use them at the appropriate times.<br />
* If you don't want to use high level spells you can exclude Scarab types so the spells aren't cast. This is handy for saving on spellcomps when hunting lower level areas on a high level character. <br />
<br />
<br />
[[Virindi_Tank_Advanced_Options#Crafting|Advanced Crafting Options]]<br />
<br />
<br />
* '''Notes''':<br />
** Items that cast spells lasting less than 5 minutes will not work.<br />
<br />
<br />
== Buffs tab ==<br />
Vtank reads your characters skills, spellbook, and available spellcomps to determine which spells to cast. <br />
<br />
[[image:Vtank_buffs.PNG]]<br />
<br />
Creature buffs are always cast. Which ones are used are selected automatically based on the skills that you have trained.<br />
<br />
* The buffs tab is used when you want to Add or Exclude buffs from your buffing profile.<br />
* Normally you will not need to change anything on this tab. <br />
<br />
* Life protections and banes can be selected through the advanced panel by changing the BuffProfile_Prots and BuffProfile_Banes options. The builtin selections are:<br />
<br />
All (Bludgeon, Pierce, Slash, Acid, Lightning, Cold, Fire)<br />
None<br />
B (Bludgeon)<br />
BPS (Bludgeon, Pierce, Slash)<br />
BPSA (Bludgeon, Pierce, Slash, Acid)<br />
ALFC (Acid, Lightning, Fire, Cold)<br />
Custom (see below)<br />
<br />
'Custom' element sets are specified similarly to the above, by selecting among the letters BPSALFC. To do this, set the option in the advanced options panel to 'Custom' and then issue a command like the following, replacing BPSALFC with the letters you want:<br />
<br />
/vt opt set BuffProfile-Prots BPSALFC<br />
/vt opt set BuffProfile-Banes BPSALFC<br />
<br />
Set [[Virindi_Plugins_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use.2C_and_how_can_I_change_it.3F|skill thresholds]] so you can pick up scrolls and attempt to cast spells above your skill level<br />
<br />
[[Virindi_Tank_Advanced_Options#Buffing|Advanced Buffing Options]]<br />
<br />
<br />
* '''Notes''':<br />
** "/filter -magic" will cause Vtank to loop and continuously cast a single spell. You can "/filter -spellcasting" without issues. <br />
** You can safely filter the chat using the AC Chat options instead of the /filter commands. <br />
<br />
<br />
== Route tab == <br />
This is where you will build all of your auto-navigation routes.<br />
<br />
[[image:Route_tab.PNG]]<br />
<br />
* Turn your character with [[Virindi_Plugins_FAQ#My_character_stops_at_each_Nav_point_in_my_route_and_won.27t_proceed_until_I_press_a_key._What.27s_wrong.3F|camera turning]] must be disabled for auto-navigation to function<br />
* Default movement keys must be used in your keyboard configuration<br />
<br />
<br />
There are 4 types of routes you can build:<br />
* Circular routes traverse waypoints in the order ABC-ABC.(After last waypoint, will return to first waypoint)<br />
* Linear routes traverse waypoints in the order ABC-CBA. (Will run back and forth from beginning to end)<br />
* Once routes traverse a route just once. Waypoints in the route tab will appear to delete themselves, reloading the route reloads the waypoints (Good for ToVendor/ToDungeon routes.)<br />
* Follow routes follow another player-character. See [[BeginnerBundleGuide#Virindi_Follower|Mini Remote]] <br />
<br />
<br />
* To build a route you simply run while clicking the "Add" button to add waypoints. <br />
* Aside from waypoints you can input Recalls, Use Portal/NPC, Pauses, Chat commands and Jumps.<br />
<br />
<br />
Jumps<br />
* Jumps can be executed by a chat command, or added to a navroute using a different command<br />
* Execute a jump: "/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar]<br />
* Add a jump to a route: "/vt addnavjump [heading] [shift] [milliseconds]"<br />
* Execute a strafe jump: "/vt addnavjump [heading] [shift: true or false] [milliseconds] [strafeleft/straferight/forward]"<br />
** For example "/vt jump 360 true 500 strafeleft" will make you face north and do a left-strafe shift jump at half power. <br />
<br />
<br />
*Note: /vt addnavjump will automatically pause and issue the jump. If you use the /vt jump command you must add the pauses yourself<br />
<br />
<br />
Checkpoints<br />
* Add to routes with "/vt addnavcheckpoint"<br />
* Functions as a normal waypoint, except that when reaching it the macro pauses until the server reports back your location as being near the point. (Normally, your client sees your location as a bit ahead of what the server sees, due to communication latency.) This point type can ensure that you really made it around a corner or through a doorway. Once the server reports that you are in a location you will not be "rubber-banded" back. Sometimes you will stop and wait and the server will disagree on your final location, so if you have been waiting awhile the macro will inch forward.<br />
<br />
<br />
Route Editing<br />
* You can edit routes by using the drop-down menu containing "Add to End", "Insert Above" and "Insert Below"<br />
* The curly green arrow [[image:GreenTurnDownArrow.PNG ]] sets the route to the nearest waypoint to your location. You can use the green and red up/down arrows to change the waypoint.<br />
* You must change your route to circular to use the curly green arrow. It will not work for once and linear routes. Change back once finished editing.<br />
<br />
<br />
<br />
* [[Virindi_Tank_Standard_Options#Route_tab|Standard Options]]<br />
* [[Virindi_Tank_Advanced_Options#Navigation|Advanced Navigation Options]] have tweaks for approach corpse distance, opendoors enable/disable, nav priority boost and others.<br />
<br />
== Meta tab ==<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. <br />
<br />
With meta you can create Hunt / Recomp / Return On Death routines, automate entire quests, control multiple characters through chat commands and much more.<br />
<br />
Check out the [[Virindi_Tank_Meta_System|Meta System]] page for more information.<br />
<br />
<br />
= Virindi Classic Looter =<br />
<br />
Virindi Tank provides a standalone loot editor called Virindi Classic Looter<br />
* Found in your VirindiPlugins\VirindiTankClassicLooter folder (typically C:\Games\VirindiPlugins\VirindiTankClassicLooter)<br />
** Run "uTank2 Settings Editor.exe"<br />
<br />
The Classic Looter is quite extensive and requires detailed explanations.<br />
<br />
Information can be found on the following pages<br />
* [[VTClassic_Tutorial |Tutorial]]<br />
* [[VTClassic_Advanced_Tips |Advanced Tips]]<br />
* [[VTClassic_Sample_Profiles |Sample Profiles]]<br />
* [http://acpedia.org/wiki/User:Immortalbob/Guides/Beginner%27s_Guide_to_looting_with_VTank VTClassic Guide] - by Immortalbob<br />
<br />
If you don't like the Classic Looter or feel it is too complicated for your needs you can use an alternate plugin for loot profiles<br />
<br />
At login, Vtank will auto-detect if you are running Alinco or GearFoundry without a loot profile loaded. <br />
If so, it will provide a link to connect the plugins.<br />
** [http://asheron.aetherific.com/GearFoundry GearFoundry]<br />
** [http://asheron.aetherific.com/Alinco Alinco3] - How to [[Virindi_Plugins_FAQ#How_do_I_use_Alinco_with_Virindi_Tank.3F |connect Alinco]] (Alinco does not recognize tier8 loot)<br />
<br />
= Virindi Integrator2 [[image:I2_Icon_inactive.PNG]] [[image:I2_Icon_Active.PNG]] =<br />
* VI2 connects to a central server in order to provide fellow-like groups, friends notifications, tells, automated mapping and ally location awareness. <br />
* Friends and /tells in VI2 operate through an account-based system; sent tells go to every character logged in under the same VI2 account, and friends logging on to their VI2 account appear as online regardless of which AC character or server they are logged in to.<br />
* VI2 is completely AC-world independent, allowing communication and even questing to function easily across different game worlds. <br />
<br />
* Fellow Members prefer to attack vulned/imped mobs first.<br />
* Fellow members will try not to double-vuln mobs<br />
* Fellow Members heal each other without the need for the AC Fellow Panel to be open<br />
<br />
<br />
Visit the [[Virindi Integrator 2 |Virindi Integrator2]] page for a detailed breakdown of the plugin.<br />
<br />
<br />
= Virindi Reporter [[image:Reporter_Icon.PNG]] =<br />
* Reports XP/Lum Earnings to yourself, fellowship chat, or allegiance chat. <br />
* Must be running for XP/Lum Earning properties to appear on the Status HUD<br />
<br />
[[Virindi_Reporter |More]]<br />
<br />
<br />
= Virindi Chat System 5 [[image:VCS_Icon.PNG]]=<br />
* A filtering plugin for text in the AC chatboxes. It allows you to define rules that specify where matching text will go, and what color it will become, with the option for corresponding sound alerts. <br />
* These rules apply not only to AC's text, but also to the text output of all Virindi Bundle plugins.<br />
<br />
[[Virindi_Chat_System_5|More]]<br />
<br />
<br />
= Virindi Item Tool [[image:VIT_Icon.PNG]] = <br />
* The Give tab is used to hand large quantities of the same type item, quickly, to another character or NPC<br />
* The Buy tab has options to select which item you need to buy, how many, and which items to sell to cover the costs(pea's/mmds) <br />
* The GiveVT tab has the Go button for pre-built Buy/Sell profiles to be triggered<br />
* The Chest tab allows you to automatically use keys on a chest and transfer looted items to a mule.<br />
* The Comps tab stores a list of user selected items to automatically purchase from vendors <br />
<br />
* [http://magtools.codeplex.com Mag-Tools] calls on VIT to handle item transfer for its Auto Buy/Sell feature. <br />
<br />
[[Virindi_Item_Tool |More]]<br />
<br />
<br />
= Virindi Follower =<br />
<br />
Follow Character is built in to the [[Virindi HUDs]] MiniRemote<br />
<br />
* Select who you want to follow and Press the "FC" button [[image:Follow_Char.PNG]] on the MiniRemote.<br />
* "C" toggles "Follow character around corners"<br />
** Enabled: Follows the leaders exact route - Mostly used inside<br />
** Disabled: Runs directly at the leader - Mostly used outside<br />
<br />
<br />
The stand-alone version of [[Virindi Follower]] is unlikely to be updated in the future.<br />
<br />
<br />
= Virindi HUDs [[image:VirindiUIsIcon.png]]= <br />
Currently included:<br />
* Comps HUD<br />
* VTank Remote Control<br />
* VVS Chat Window<br />
* Status HUD<br />
* H/S/M Bar. <br />
* Old Style H/S/M Bar<br />
* ItemTool Comps HUD<br />
<br />
More information on the [[Virindi HUDs]] or [[Customize Your View]] page<br />
<br />
<br />
= Virindi Hotkey System [[image:Virindi_Hotkey_System_Icon.PNG]] =<br />
* Allows you to set hotkeys to perform functions created by different plugins. <br />
* As an alternative to Decal Hotkey System, VHS uses Virindi Views<br />
* Supports assigning hotkeys to joystick/gamepad buttons. <br />
<br />
[[Virindi Hotkey System|More]]<br />
<br />
<br />
= Virindi Sense [[image:Virindi_Sense_Icon.PNG]]=<br />
A simple 6th Sense style plugin.<br />
* Input items you wish to track on the Setup tab<br />
* If something is detected you will be alerted in chat and the item will be listed on the Detected tab<br />
<br />
[[Virindi_Sense|More]]<br />
<br />
<br />
= Virindi Window Tool [[image:VWTIcon.png]] = <br />
* Used to manage multiple UI Layouts<br />
* Save and load UI captures with a GUI rather than the AC chat commands.<br />
* Saves location of all VVS plugins<br />
* Offers the "Old AC UI" option<br />
<br />
[[Virindi_Window_Tool|More]]<br />
<br />
<br />
= Virindi Global Inventory [[image:VGI_Icon.PNG]] =<br />
A simple tool for managing armor, weapons and misc items on mules. <br />
* You must log on each character who's inventory you would like to track and choose a Tracking style, then wait for it to read all items.<br />
* You can search by item name/spells/sets and others. It will display all items matching the query and the character each item is on.<br />
* Suit Search application helps you filter through and match your gear to create the best possible suits.<br />
* World View application lists all weapons and pets for each character in a spreadsheet for easy viewing. <br />
<br />
[[Virindi_Global_Inventory|More]]<br />
<br />
<br />
= GoArrow (VVS) [[image:GoArrow_Icon.PNG]] =<br />
A version of Digero's GoArrow plugin which has been modified to operate in Virindi Views.<br />
<br />
* Route-finding between any location by coordinates, searching locations, or manipulating the map.<br />
* Arrow HUD to show you the direction of your next waypoint or endpoint. <br />
* Filter options and ranges to display locations/npcs in your vicinity<br />
<br />
[[GoArrow_(VVS_Edition)|More]]<br />
<br />
<br />
= SSSort (VVS) [[image:SSSort_VVS_Icon.PNG]]=<br />
SSSort sorts the scrolls, salvage, or mana stones in your main pack or side packs.<br />
<br />
It has a number of specialized sorting criteria for scrolls, salvage, and mana stones. <br />
<br />
[[SSSort_(VVS_Edition)|More]]<br />
<br />
<br />
=Non-Bundle VVS Plugins=<br />
Available for download on the [http://www.virindi.net/plugins/ Virindi Plugins] page.<br />
== Virindi Armor Color Tool [[image:VACT_Icon.PNG]] ==<br />
A DCS-like utility for viewing the colors of armor. <br />
* The colors it displays are the same as found in Virindi Tank propertydumps<br />
* Simply open the plugin and ID an item to retrieve the palette list. <br />
<br />
[[Virindi_Armor_Color_Tool|More]]<br />
<br />
== SkunkVision (VVS) [[image:SkunkVision_Icon.PNG]] ==<br />
The SkunkVision control panel has three toggles for enabling or disabling the following features:<br />
* Unclimbable slopes: Highlights those areas of a mountain or cliff that are too steep to climb.<br />
* Impassable water: Highlights those areas of open water that are too deep to wade.<br />
* Dungeon light: Lights up dark dungeon caverns.<br />
<br />
[[SkunkVision_VVS_Edition|More]]<br />
<br />
<br />
== Virindi XP Helper [[image:XPHelper_Icon.PNG]]==<br />
Virindi XP Helper assists in determining how much your character's primary attributes (strength, endurance, etc) should cost to raise based on the costs of your skills and secondary attributes (health, stamina, mana). <br />
<br />
[[Virindi_XPHelper|More]]<br />
<br />
<br />
== Virindi Old Comp System [[image:Virindi_OCS_Icon.PNG]]==<br />
VirindiOCS (Old Comp System) tracks the burning of components, predicts runtime, and allows you to purchase the proper ratios of components for a particular approximate runtime. <br />
<br />
The goal is to make it easier for you to use old components (with peas).<br />
<br />
[[Virindi_OCS|More]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Meta_System&diff=1558Virindi Tank Meta System2016-09-08T17:14:32Z<p>The Guru: /* Adding a Rule */</p>
<hr />
<div>= Introduction =<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.<br />
<br />
= Subtopics =<br />
* [[Meta Expressions]]<br />
* [[Meta ChatMessageCapture Condition]]<br />
* [[Public Meta Repository]]<br />
<br />
= Rules and States =<br />
<br />
A state is merely a name that you assign for some stage the macro will be in. For example, "hunting", <br />
"buying comps", or "died running back". The macro is only in one state at a time. When you first log in, it is in the "Default" state. You can manually change the current state using the dropdown box in the bottom left corner of the meta tab.<br />
<br />
A rule consists of a state, a condition, and an action. Rules are only checked if their state is the same as the current macro state. Each rule only happens once per time the macro is in a particular state (rules that have already run are listed in red in the main list).<br />
<br />
As the macro runs, it looks at all the rules which haven't run yet with the same state as the current state. If the condition is true, the action listed in the rule is run.<br />
<br />
= Adding a Rule =<br />
<br />
[[Image:vtguide-meta.png]]<br />
<br />
When you add a rule, you get this interface. The left side of the panel is where you define the rule's condition and state, and on the right side you define the rule's action. Condition is the upper left box and state is below it.<br />
<br />
'''Conditions (Left Side)<br />
<br />
* '''Never''': Never act upon.<br />
* '''Always''': Always act upon.<br />
* '''Any''': Act upon any.<br />
* '''All''': Act upon all.<br />
* '''Chat Message''': Act upon Chat Message.<br />
* '''Pack Slots <=''': Act upon Pack Slots less than or equal to X.<br />
* '''Seconds in State >=''': Act upon Seconds in State greater than or equal to X. Resets when macro is turned off and on.<br />
* '''Navroute Empty''': Act upon an empty Navroute.<br />
* '''Character Death''': Act upon Character Death.<br />
* '''Any Vendor Open''': Act upon Any Vendor Opened.<br />
* '''Vendor Closed''': Act upon Any Vendor Closed.<br />
* '''Inventory Item Count <=''': Act upon Inventory Item Count less than or equal to X of item.<br />
* '''Inventory Item Count >=''': Act upon Inventory Item Count greater than or equal to X of item.<br />
* '''Monster Name Count Within Distance''': Act upon X number of specific monster name within range of X.<br />
* '''Monster Priority Count Within Distance''': Act upon X number of priority monsters within range of X.<br />
* '''Need to Buff''': Act upon need to buff.<br />
* '''No Monsters Within Distance''': Act upon no monsters within range.<br />
* '''Landblock ==''': Act upon specific landblock (larger area).<br />
* '''Landcell ==''': Act upon specific landcell (smaller area).<br />
* '''Portalspace Entered''': Act upon entering portalspace.<br />
* '''Portalspace Exited''': Act upon exiting portalspace.<br />
* '''Not''': <br />
* '''Seconds in state (P) >=''': Act upon Seconds in State greater than or equal to X. Does NOT reset when macro is turned off and on.<br />
* '''Time Left On Spell >=''': Act if a spell on your character has greater than a certain amount of time left on it.<br />
* '''Burden Percent >=''': Act if Burden Percent is greater or equal to a specified value<br />
* '''Dist Any Route Pt >=''': Act if your character moves a certain distance away from any point in your route. <br />
* '''Expression''': Act upon an expression<br />
* '''Chat Message Capture''': Allows you to perform a Regular Expression match on incoming chatbox text and save matched substrings to Meta variables for later use - See [[Meta ChatMessageCapture Condition]]<br />
<br />
<br />
'''Actions (Right Side)<br />
<br />
* '''Set Meta State''': Allows you to set/change Meta state after X Action has occurred. <br />
* '''Chat Command''': On Action do X Chat Command. (eg. On Character Death do Chat Command /f I have died =( )<br />
* '''All''': Allows multiple Reactions to Occur.<br />
* '''Load Embedded Navroute''': Allows you to embed a navroute in to a meta<br />
* '''Call Meta State''': Switches to another state and adds a return state to the call stack.<br />
* '''Return From Call''': Switches to the last state on the call stack, and removes it from the stack. If the call stack is empty, an error is raised and meta is disabled.<br />
* '''Expression Action''': Perform an expression action<br />
* '''Chat Expression''': Output a chat expression<br />
* '''Set Watchdog''': When you enter a state, you can set a watchdog. If at any time during that state your character has not moved from where they are for a certain amount of time, a second state is called.<br />
* '''Clear Watchdog''': Clears the current watchdog.<br />
<br />
= Example =<br />
<br />
For example, you might want your character to run back to the battle when they die. You would have two routes: "runback" is a "once" route that takes you from your lifestone to the battlefield, and "fighting" is a normal route that is used while you are at the hunting area.<br />
<br />
The first rule you need sets the state when you die, so you can begin performing actions. So you'd make a rule like this:<br />
<br />
State: "Default", Condition: "Character Death", Action: "Set Meta State: dead"<br />
<br />
Once your character dies the macro will switch the state to "dead", and when that happens you want to immediately perform a series of actions, like this:<br />
<br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt nav load runback"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablebuffing true"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablenav true"<br><br />
<br />
When the "once" route "runback" has been run to the end, the nav route will be empty and it is time to resume hunting. Check for that like this:<br />
<br />
State: "dead", Condition: "Navroute empty", Action: "Set Meta State: back"<br><br />
<br />
To resume hunting, you need to do some more actions...<br />
<br />
State: "back", Condition: "Always", Action: "/vt nav load fighting"<br><br />
State: "back", Condition: "Always", Action: "/vt opt set enablecombat true"<br><br />
<br />
And return the macro to the starting state.<br />
<br />
State: "back", Condition: "Always", Action: "Set Meta State: Default"<br><br />
<br />
The result should look something like this:<br />
<br />
[[Image:Meta_example_profile.png]]<br />
<br />
A copy of the profile for this example can be found [http://www.virindi.net/junk/runbackwhendead.zip here]. To use it, extract the .met file to your Virindi Tank profile directory (typically c:\games\virindiplugins\virinditank).<br />
<br />
<br />
= Community Examples =<br />
<i>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions.</i><br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for questions regarding Meta profiles (not plugins themselves)<br />
<br />
<br />
There are many different types of meta profiles that can be created. From simple hunting profiles that run back to your dungeon on death(see above), to more complex systems of control and automation.<br />
<br />
Over time, this section will be updated with example meta's of all types.<br><br />
<br />
Some may work for you immediately, others may require a bit of customization<br />
<br />
<br />
In Meta, RegEx is used to identify and react on chat messages sent or heard by your client.<br />
<br />
<br />
Beware: Chat commands in the examples will be open ended. Meaning, anyone can trigger the commands that are in place. <br />
To protect yourself, you can make them character specific so you only accept them from approved names.<br />
<br />
The following examples may or may not work as intended, use at your own risk.<br />
<br />
<br />
'''Anyone in any chat channel:'''<br />
<br />
^.*().* (say|says|tells you), \"YourCommandHere\"$<br />
<br />
<br />
'''Specific names in any chat channel''' - By Validus of Morningthaw<br />
<br />
(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1|Char2|Char3)\>.+\<\\Tell\>) (say|says|tells you), \"Your Command Here\"$<br />
<br />
''Simply add names within the () and separate with |''<br />
<br />
<br />
'''Specific chat channel'''<br />
<br />
^\[ChannelNameHere\] (|).* (say|says), \"YourCommandHere\"$<br />
<br />
''(example: ^\[Allegiance\] (|).* (say|says), \"YourCommandHere\"$)''<br />
<br />
<br />
'''Green Messages'''<br />
<br />
Simply place a ^ before the green text in your chat message box. <br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
<br />
'''NPC Chat'''<br />
<br />
Place ^ before the start of the NPC chat in the chat message box.<br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
for quotation or question marks you will need to type \" or \? in order for it to match " or ?<br />
<br />
''(example: ^Master Arbitrator tells you, \"If you wish to fight as a gladiator in the Arena I will require you to purchase a ticket from the Ticket Vendors over there. We do need to keep the place running don't we\?\")''<br />
<br />
<br />
<br />
-----<br />
<br />
Examples:<br />
<br />
[[Media:TownPortals.zip|Town Network Routes]] - By The Art of War - Routes to any portal within the TN. All routes start from Annex side drop, Say !townname to route. <br />
<br />
[[Media:CeldisethRestock.zip|Celdiseth Recomp]] - Recalls Sanctuary, uses Celdiseth Gem and attempts to recomp. Requires current Mag-tools, Sanctuary recall, Celdiseth gems and a Celdiseth VTclassic profile. <br><i> You must edit the "Return" state and add your "runback" meta to /vt meta load</i><br />
<br />
[[Media:LocationSplit.zip|SplitProfile]] - One profile that launches in to multiple profiles based on character inventory (to reduce amount of commands.)<br />
<br />
[[Media:Withered_Hill_Portal.zip|Withered Hill Portal Drag]] - If pulled in to portal on withered hill, recalls primary and resets route (input your routes)<br><br />
<br />
[[Media:DangerousPortalDevice.zip|Dangerous Portal Device Auto Nav]] - Auto Nav to destination of choice (AL, OP, or VOD) (/hom to Yanshi Mansion)<br />
<br />
[[Media:DPD.zip|Dangerous Portal Device Auto Nav (Magtools cmds)]] - Auto nav to destination of choice (AL, OP, or VOD). Requires current mag-tools and DPD device either on patio, or hook near your mansion portal drop. Read the default state for commands.<br />
<br />
[[Media:CharacterCheck.zip|Character Check Example]] - Example for how to make sure all characters are in proper state before sending a command.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Meta_System&diff=1550Virindi Tank Meta System2016-09-06T20:24:22Z<p>The Guru: </p>
<hr />
<div>= Introduction =<br />
<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. For Meta to operate, the Enable Meta Actions checkbox on the Profiles tab must be checked.<br />
<br />
= Subtopics =<br />
* [[Meta Functions]] (AKA Expressions)<br />
* [[Meta ChatMessageCapture Condition]]<br />
* [[Public Meta Repository]]<br />
<br />
= Rules and States =<br />
<br />
A state is merely a name that you assign for some stage the macro will be in. For example, "hunting", <br />
"buying comps", or "died running back". The macro is only in one state at a time. When you first log in, it is in the "Default" state. You can manually change the current state using the dropdown box in the bottom left corner of the meta tab.<br />
<br />
A rule consists of a state, a condition, and an action. Rules are only checked if their state is the same as the current macro state. Each rule only happens once per time the macro is in a particular state (rules that have already run are listed in red in the main list).<br />
<br />
As the macro runs, it looks at all the rules which haven't run yet with the same state as the current state. If the condition is true, the action listed in the rule is run.<br />
<br />
= Adding a Rule =<br />
<br />
[[Image:vtguide-meta.png]]<br />
<br />
When you add a rule, you get this interface. The left side of the panel is where you define the rule's condition and state, and on the right side you define the rule's action. Condition is the upper left box and state is below it.<br />
<br />
'''Conditions (Left Side)<br />
<br />
* '''Never''': Never act upon.<br />
* '''Always''': Always act upon.<br />
* '''Any''': Act upon any.<br />
* '''All''': Act upon all.<br />
* '''Chat Message''': Act upon Chat Message.<br />
* '''Pack Slots <=''': Act upon Pack Slots less than or equal to X.<br />
* '''Seconds in State >=''': Act upon Seconds in State greater than or equal to X. Resets when macro is turned off and on.<br />
* '''Navroute Empty''': Act upon an empty Navroute.<br />
* '''Character Death''': Act upon Character Death.<br />
* '''Any Vendor Open''': Act upon Any Vendor Opened.<br />
* '''Vendor Closed''': Act upon Any Vendor Closed.<br />
* '''Inventory Item Count <=''': Act upon Inventory Item Count less than or equal to X of item.<br />
* '''Inventory Item Count >=''': Act upon Inventory Item Count greater than or equal to X of item.<br />
* '''Monster Name Count Within Distance''': Act upon X number of specific monster name within range of X.<br />
* '''Monster Priority Count Within Distance''': Act upon X number of priority monsters within range of X.<br />
* '''Need to Buff''': Act upon need to buff.<br />
* '''No Monsters Within Distance''': Act upon no monsters within range.<br />
* '''Landblock ==''': Act upon specific landblock (larger area).<br />
* '''Landcell ==''': Act upon specific landcell (smaller area).<br />
* '''Portalspace Entered''': Act upon entering portalspace.<br />
* '''Portalspace Exited''': Act upon exiting portalspace.<br />
* '''Not''': <br />
* '''Seconds in state (P) >=''': Act upon Seconds in State greater than or equal to X. Does NOT reset when macro is turned off and on.<br />
* '''Time Left On Spell >=''': Act if a spell on your character has greater than a certain amount of time left on it.<br />
* '''Burden Percent >=''': Act if Burden Percent is greater or equal to a specified value<br />
* '''Dist Any Route Pt >=''': Act if your character moves a certain distance away from any point in your route. <br />
* '''Expression''': Act upon an expression<br />
<br />
<br />
'''Actions (Right Side)<br />
<br />
* '''Set Meta State''': Allows you to set/change Meta state after X Action has occurred. <br />
* '''Chat Command''': On Action do X Chat Command. (eg. On Character Death do Chat Command /f I have died =( )<br />
* '''All''': Allows multiple Reactions to Occur.<br />
* '''Load Embedded Navroute''': Allows you to embed a navroute in to a meta<br />
* '''Call Meta State''': Switches to another state and adds a return state to the call stack.<br />
* '''Return From Call''': Switches to the last state on the call stack, and removes it from the stack. If the call stack is empty, an error is raised and meta is disabled.<br />
* '''Expression Action''': Perform an expression action<br />
* '''Chat Expression''': Output a chat expression<br />
* '''Set Watchdog''': When you enter a state, you can set a watchdog. If at any time during that state your character has not moved from where they are for a certain amount of time, a second state is called.<br />
* '''Clear Watchdog''': Clears the current watchdog.<br />
<br />
<br />
= Example =<br />
<br />
For example, you might want your character to run back to the battle when they die. You would have two routes: "runback" is a "once" route that takes you from your lifestone to the battlefield, and "fighting" is a normal route that is used while you are at the hunting area.<br />
<br />
The first rule you need sets the state when you die, so you can begin performing actions. So you'd make a rule like this:<br />
<br />
State: "Default", Condition: "Character Death", Action: "Set Meta State: dead"<br />
<br />
Once your character dies the macro will switch the state to "dead", and when that happens you want to immediately perform a series of actions, like this:<br />
<br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt nav load runback"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablebuffing true"<br><br />
State: "dead", Condition: "Always", Action: "Chat Command: /vt opt set enablenav true"<br><br />
<br />
When the "once" route "runback" has been run to the end, the nav route will be empty and it is time to resume hunting. Check for that like this:<br />
<br />
State: "dead", Condition: "Navroute empty", Action: "Set Meta State: back"<br><br />
<br />
To resume hunting, you need to do some more actions...<br />
<br />
State: "back", Condition: "Always", Action: "/vt nav load fighting"<br><br />
State: "back", Condition: "Always", Action: "/vt opt set enablecombat true"<br><br />
<br />
And return the macro to the starting state.<br />
<br />
State: "back", Condition: "Always", Action: "Set Meta State: Default"<br><br />
<br />
The result should look something like this:<br />
<br />
[[Image:Meta_example_profile.png]]<br />
<br />
A copy of the profile for this example can be found [http://www.virindi.net/junk/runbackwhendead.zip here]. To use it, extract the .met file to your Virindi Tank profile directory (typically c:\games\virindiplugins\virinditank).<br />
<br />
<br />
= Community Examples =<br />
<i>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions.</i><br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for questions regarding Meta profiles (not plugins themselves)<br />
<br />
<br />
There are many different types of meta profiles that can be created. From simple hunting profiles that run back to your dungeon on death(see above), to more complex systems of control and automation.<br />
<br />
Over time, this section will be updated with example meta's of all types.<br><br />
<br />
Some may work for you immediately, others may require a bit of customization<br />
<br />
<br />
In Meta, RegEx is used to identify and react on chat messages sent or heard by your client.<br />
<br />
<br />
Beware: Chat commands in the examples will be open ended. Meaning, anyone can trigger the commands that are in place. <br />
To protect yourself, you can make them character specific so you only accept them from approved names.<br />
<br />
The following examples may or may not work as intended, use at your own risk.<br />
<br />
<br />
'''Anyone in any chat channel:'''<br />
<br />
^.*().* (say|says|tells you), \"YourCommandHere\"$<br />
<br />
<br />
'''Specific names in any chat channel''' - By Validus of Morningthaw<br />
<br />
(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(Char1|Char2|Char3)\>.+\<\\Tell\>) (say|says|tells you), \"Your Command Here\"$<br />
<br />
''Simply add names within the () and separate with |''<br />
<br />
<br />
'''Specific chat channel'''<br />
<br />
^\[ChannelNameHere\] (|).* (say|says), \"YourCommandHere\"$<br />
<br />
''(example: ^\[Allegiance\] (|).* (say|says), \"YourCommandHere\"$)''<br />
<br />
<br />
'''Green Messages'''<br />
<br />
Simply place a ^ before the green text in your chat message box. <br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
<br />
'''NPC Chat'''<br />
<br />
Place ^ before the start of the NPC chat in the chat message box.<br />
<br />
The ^ denotes that the string must begin with the first word in the text. This protects you from accidental triggers by other players. <br />
<br />
for quotation or question marks you will need to type \" or \? in order for it to match " or ?<br />
<br />
''(example: ^Master Arbitrator tells you, \"If you wish to fight as a gladiator in the Arena I will require you to purchase a ticket from the Ticket Vendors over there. We do need to keep the place running don't we\?\")''<br />
<br />
<br />
<br />
-----<br />
<br />
Examples:<br />
<br />
[[Media:TownPortals.zip|Town Network Routes]] - By The Art of War - Routes to any portal within the TN. All routes start from Annex side drop, Say !townname to route. <br />
<br />
[[Media:CeldisethRestock.zip|Celdiseth Recomp]] - Recalls Sanctuary, uses Celdiseth Gem and attempts to recomp. Requires current Mag-tools, Sanctuary recall, Celdiseth gems and a Celdiseth VTclassic profile. <br><i> You must edit the "Return" state and add your "runback" meta to /vt meta load</i><br />
<br />
[[Media:LocationSplit.zip|SplitProfile]] - One profile that launches in to multiple profiles based on character inventory (to reduce amount of commands.)<br />
<br />
[[Media:Withered_Hill_Portal.zip|Withered Hill Portal Drag]] - If pulled in to portal on withered hill, recalls primary and resets route (input your routes)<br><br />
<br />
[[Media:DangerousPortalDevice.zip|Dangerous Portal Device Auto Nav]] - Auto Nav to destination of choice (AL, OP, or VOD) (/hom to Yanshi Mansion)<br />
<br />
[[Media:DPD.zip|Dangerous Portal Device Auto Nav (Magtools cmds)]] - Auto nav to destination of choice (AL, OP, or VOD). Requires current mag-tools and DPD device either on patio, or hook near your mansion portal drop. Read the default state for commands.<br />
<br />
[[Media:CharacterCheck.zip|Character Check Example]] - Example for how to make sure all characters are in proper state before sending a command.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=BeginnerBundleGuide&diff=1544BeginnerBundleGuide2016-05-14T13:27:28Z<p>The Guru: /* Virindi Classic Looter */</p>
<hr />
<div>WORK IN PROGRESS<br />
<br />
A Quick Reference Guide for the Virindi Tank Bundle - Compiled by [http://www.virindi.net/wiki/index.php?title=Special:Contributions/The_Guru&limit=500&target=The+Guru Hell's Wrath]<br />
<br />
Before diving in you may want to [[Customize Your View]]<br />
<br />
= Virindi Tank [[image:TankIcon.PNG]] =<br />
Click the Tank icon [[image:TankIcon.PNG]] on the [[Virindi Views]](VVS) bar to open the main Virindi Tank plugin.<br />
<br />
== Options tab ==<br />
The main options page handles basic Vtank ranges and a multitude of easy-access options.<br />
<br />
[[image:Vtank_Main.PNG]] <br />
<br />
For detailed explanations of the individual options on the main tab, visit the [[Virindi_Tank_Standard_Options#Options|Standard Options]] page<br />
<br />
You can also view the entire [[Virindi_Tank_Advanced_Options|Advanced Options]] which will be linked to throughout this guide. <br />
<br />
<br />
== Profiles tab==<br />
<br />
[[image:Vtank_Profiles.PNG]]<br />
<br />
=== Macro Setting Profiles ===<br />
Understanding how profiles are managed is vital to running an organized macro. You will likely have many profiles for different locations and tasks.<br />
There are two types of profiles we will talk about: Those with Mine Only enabled, and those without.<br />
<br />
* Click the Macro Settings dropdown list<br />
* You will see [Default] and [ByChar] -- You never want to edit settings within these, think of them as templates. You load one, make a save with a specific name, then edit and use the new save. <br />
* [Default] profile settings will always reset on logout.<br />
* [ByChar] is associated with the Mine Only radio button. This is the profile type you will use the most. <br />
* When creating a new character specific profile you want to have the Mine Only radio button enabled, selecting the [ByChar] profile automatically enables Mine Only.<br />
<br />
==== Saving [Char] Macro Settings ====<br />
* Select [ByChar] from the Macro Settings dropdown then click the "CopyTo" button.<br />
* Your chat bar will be filled with the string "/vt settings savechar" -- Type a name after "savechar" and press Enter. (eg. "/vt settings savechar TuskerIsland")<br />
* You will now have a "[Char]TuskerIsland" profile in the Macro Settings dropdown - You can now safely begin making changes to the settings.<br />
** Changes made within profiles are saved immediately and automatically. You do not have to save after making alterations. This is the reason for using [ByChar] as a template to make new profiles.<br />
<br />
==== Transferring [Char] Profiles to Alt Char. ====<br />
* To transfer a [Char] setting profile over to another character you will need to load the [Char]profile, disable Mine Only and click CopyTo. <br />
* In your chat bar you will see the string "/vt settings save" - type a profile name and click enter. (eg. "/vt settings save TuskerIsland")<br />
* On the character you want the profile transferred to, uncheck Mine Only and select the Macro Settings dropdown. You will see "TuskerIsland" listed without a [Char] tag.<br />
* You now need to save the cross-char profile as a [Char] profile. Select "TuskerIsland" from the dropdown and then enable Mine Only. Click "CopyTo" and the string "/vt settings savechar" should appear in your chat bar. Type TuskerIsland and press Enter. <br />
** You should now see "[Char]TuskerIsland" in your macro settings dropdown list.<br />
**Now you must populate the Items/Consumables tab with your items, and assign any weapon types in the Monster tab that may have become unassigned as a result of transferring the profile.<br />
<br />
=== Auto-Navigation Profiles ===<br />
* To create a new route select [None] from the dropdown and then click the "CopyTo" button - "/vt nav save" will appear in your char bar, type a name and hit Enter<br />
* Build and edit your routes on the Routes tab<br />
<br />
=== Looting Profiles ===<br />
* Displays a list of loot profiles, select one to load it<br />
* Profiles loaded from your \\VirindiPlugins\VirindiTank folder<br />
<br />
* Loot profiles for Virindi Tank are built outside of game using the [[Virindi_Tank_Classic_Loot_System|Virindi Tank Classic Loot System]]<br />
* The classic looter is extremely powerful. Example profiles are available on the above page.<br />
* [http://www.immortalbob.com Immortalbob.com] provides a profile called "Lootsnob" that has hundreds of rules for all manner of armor/weapon/trophies/collectibles.<br />
<br />
** Aside from the Vtank Classic Looter, you can also use [http://asheron.aetherific.com/Alinco Alinco3], [http://asheron.aetherific.com/GearFoundry GearFoundry], or any other plugin that will link its profile to Vtank<br />
** OnLogin, if no loot profile is selected, Vtank will detect if GearFoundry or Alinco is loaded and provide a link you can click to attach your profile to Vtank.<br />
<br />
=== Meta Action Profiles ===<br />
* Select a meta profile from the dropdown list to load it <br />
* You build and edit on the [[BeginnerBundleGuide#Meta tab|Meta tab]]<br />
<br />
== Vitals tab ==<br />
The vitals tab is crucial to your survival. Depending on your skill level you will want to adjust the sliders to best fit your circumstances.<br />
Lower level spells do not revitalize as well so the sliders must be adjusted to give you maximum benefit. Trial and error is the name of the game.<br />
<br />
[[image:Vtank_vitals.PNG]]<br />
<br />
* The first three sliders manage your vitals during combat<br />
<br />
* The second set of sliders manages your Top-off vitals. When there are no combat targets in range you will recharge to these values.<br />
<br />
* The third set of sliders manages your Helper spells<br />
<br />
**[[Virindi_Tank_Advanced_Options#Recharge|Advanced Recharge Options]] can be used to set exact percentages of vitals, enable Helper spells, and set ranges.<br />
<br />
== Monsters tab ==<br />
The monsters tab is where you will manage the different types of attacks, debuffs, and weapons you use against specific monsters.<br />
<br />
[[image:Vtank_monsters.PNG]]<br />
<br />
* Type in a monster name and click Add, or select a monster in the 3D window and click Add Sel.<br />
<br />
* Once you have a monster name entered you can set the ways you want to react. Hovering over each of the letters will show a tooltip. <br />
* Click the text beneath Dmg type / Extra Vuln / Weapon / Offhand / PetDmg to cycle through the available options. <br />
<br />
The monster list can be very simple or quite complex, depending on your needs and desires. <br />
<br />
There are advanced operators and variables you can use to account for very specific situational problems<br />
<br />
Check out [[Virindi_Tank_Monster_List_Matching | Monster List Matching]] for more information.<br />
<br />
<br />
== Items tab ==<br />
Within the items tab you add all of your weapons/wands/shields/pets you want to use in your profile. <br />
<br />
[[image:Vtank_items.PNG]]<br />
<br />
*Select an item in your inventory and click "Add" to add it to the list.<br />
<br />
Once an item is listed it can be set in the Monsters tab under the appropriate options. <br />
<br />
<br />
== Consumables tab ==<br />
<br />
<br />
[[image:Vtank_consumables.PNG]]<br />
<br />
* If you use any type of gems/foods/healing kits/potions/lockpicks etc, you can add them to the Consumables list and have Vtank automatically use them at the appropriate times.<br />
* If you don't want to use high level spells you can exclude Scarab types so the spells aren't cast. This is handy for saving on spellcomps when hunting lower level areas on a high level character. <br />
<br />
<br />
[[Virindi_Tank_Advanced_Options#Crafting|Advanced Crafting Options]]<br />
<br />
<br />
* '''Notes''':<br />
** Items that cast spells lasting less than 5 minutes will not work.<br />
<br />
<br />
== Buffs tab ==<br />
Vtank reads your characters skills, spellbook, and available spellcomps to determine which spells to cast. <br />
<br />
[[image:Vtank_buffs.PNG]]<br />
<br />
Creature buffs are always cast. Which ones are used are selected automatically based on the skills that you have trained.<br />
<br />
* The buffs tab is used when you want to Add or Exclude buffs from your buffing profile.<br />
* Normally you will not need to change anything on this tab. <br />
<br />
* Life protections and banes can be selected through the advanced panel by changing the BuffProfile_Prots and BuffProfile_Banes options. The builtin selections are:<br />
<br />
All (Bludgeon, Pierce, Slash, Acid, Lightning, Cold, Fire)<br />
None<br />
B (Bludgeon)<br />
BPS (Bludgeon, Pierce, Slash)<br />
BPSA (Bludgeon, Pierce, Slash, Acid)<br />
ALFC (Acid, Lightning, Fire, Cold)<br />
Custom (see below)<br />
<br />
'Custom' element sets are specified similarly to the above, by selecting among the letters BPSALFC. To do this, set the option in the advanced options panel to 'Custom' and then issue a command like the following, replacing BPSALFC with the letters you want:<br />
<br />
/vt opt set BuffProfile-Prots BPSALFC<br />
/vt opt set BuffProfile-Banes BPSALFC<br />
<br />
Set [[Virindi_Plugins_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use.2C_and_how_can_I_change_it.3F|skill thresholds]] so you can pick up scrolls and attempt to cast spells above your skill level<br />
<br />
[[Virindi_Tank_Advanced_Options#Buffing|Advanced Buffing Options]]<br />
<br />
<br />
* '''Notes''':<br />
** "/filter -magic" will cause Vtank to loop and continuously cast a single spell. You can "/filter -spellcasting" without issues. <br />
** You can safely filter the chat using the AC Chat options instead of the /filter commands. <br />
<br />
<br />
== Route tab == <br />
This is where you will build all of your auto-navigation routes.<br />
<br />
[[image:Route_tab.PNG]]<br />
<br />
* Turn your character with [[Virindi_Plugins_FAQ#My_character_stops_at_each_Nav_point_in_my_route_and_won.27t_proceed_until_I_press_a_key._What.27s_wrong.3F|camera turning]] must be disabled for auto-navigation to function<br />
* Default movement keys must be used in your keyboard configuration<br />
<br />
<br />
There are 4 types of routes you can build:<br />
* Circular routes traverse waypoints in the order ABC-ABC.(After last waypoint, will return to first waypoint)<br />
* Linear routes traverse waypoints in the order ABC-CBA. (Will run back and forth from beginning to end)<br />
* Once routes traverse a route just once. Waypoints in the route tab will appear to delete themselves, reloading the route reloads the waypoints (Good for ToVendor/ToDungeon routes.)<br />
* Follow routes follow another player-character. See [[BeginnerBundleGuide#Virindi_Follower|Mini Remote]] <br />
<br />
<br />
* To build a route you simply run while clicking the "Add" button to add waypoints. <br />
* Aside from waypoints you can input Recalls, Use Portal/NPC, Pauses, Chat commands and Jumps.<br />
<br />
<br />
Jumps<br />
* Jumps can be executed by a chat command, or added to a navroute using a different command<br />
* Execute a jump: "/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar (0 is minimum, 1000 is maximum)] <br />
* Add a jump to a route: "/vt addnavjump [heading] [shift] [charge]" will append to the end of a route. <br />
** For example "/vt jump 360 true 500" will make you do a shift jump to the north at half power. <br />
<br />
<br />
*Note: /vt addnavjump will automatically pause and issue the jump. If you use the /vt jump command you must add the pauses yourself<br />
<br />
<br />
Checkpoints<br />
* Add to routes with "/vt addnavcheckpoint"<br />
* Functions as a normal waypoint, except that when reaching it the macro pauses until the server reports back your location as being near the point. (Normally, your client sees your location as a bit ahead of what the server sees, due to communication latency.) This point type can ensure that you really made it around a corner or through a doorway. Once the server reports that you are in a location you will not be "rubber-banded" back. Sometimes you will stop and wait and the server will disagree on your final location, so if you have been waiting awhile the macro will inch forward.<br />
<br />
<br />
Route Editing<br />
* You can edit routes by using the drop-down menu containing "Add to End", "Insert Above" and "Insert Below"<br />
* The curly green arrow [[image:GreenTurnDownArrow.PNG ]] sets the route to the nearest waypoint to your location. You can use the green and red up/down arrows to change the waypoint.<br />
* You must change your route to circular to use the curly green arrow. It will not work for once and linear routes. Change back once finished editing.<br />
<br />
<br />
<br />
* [[Virindi_Tank_Standard_Options#Route_tab|Standard Options]]<br />
* [[Virindi_Tank_Advanced_Options#Navigation|Advanced Navigation Options]] have tweaks for approach corpse distance, opendoors enable/disable, nav priority boost and others.<br />
<br />
== Meta tab ==<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. <br />
<br />
With meta you can create Hunt / Recomp / Return On Death routines, automate entire quests, control multiple characters through chat commands and much more.<br />
<br />
Check out the [[Virindi_Tank_Meta_System|Meta System]] page for more information.<br />
<br />
<br />
= Virindi Classic Looter =<br />
<br />
Virindi Tank provides a standalone loot editor called Virindi Classic Looter<br />
* Found in your VirindiPlugins\VirindiTankClassicLooter folder (typically C:\Games\VirindiPlugins\VirindiTankClassicLooter)<br />
** Run "uTank2 Settings Editor.exe"<br />
<br />
The Classic Looter is quite extensive and requires detailed explanations.<br />
<br />
Information can be found on the following pages<br />
* [[VTClassic_Tutorial |Tutorial]]<br />
* [[VTClassic_Advanced_Tips |Advanced Tips]]<br />
* [[VTClassic_Sample_Profiles |Sample Profiles]]<br />
* [http://acpedia.org/wiki/User:Immortalbob/Guides/Beginner%27s_Guide_to_looting_with_VTank VTClassic Guide] - by Immortalbob<br />
<br />
If you don't like the Classic Looter or feel it is too complicated for your needs you can use an alternate plugin for loot profiles<br />
<br />
At login, Vtank will auto-detect if you are running Alinco or GearFoundry without a loot profile loaded. <br />
If so, it will provide a link to connect the plugins.<br />
** [http://asheron.aetherific.com/GearFoundry GearFoundry]<br />
** [http://asheron.aetherific.com/Alinco Alinco3] - How to [[Virindi_Plugins_FAQ#How_do_I_use_Alinco_with_Virindi_Tank.3F |connect Alinco]] (Alinco does not recognize tier8 loot)<br />
<br />
= Virindi Integrator2 [[image:I2_Icon_inactive.PNG]] [[image:I2_Icon_Active.PNG]] =<br />
* VI2 connects to a central server in order to provide fellow-like groups, friends notifications, tells, automated mapping and ally location awareness. <br />
* Friends and /tells in VI2 operate through an account-based system; sent tells go to every character logged in under the same VI2 account, and friends logging on to their VI2 account appear as online regardless of which AC character or server they are logged in to.<br />
* VI2 is completely AC-world independent, allowing communication and even questing to function easily across different game worlds. <br />
<br />
* Fellow Members prefer to attack vulned/imped mobs first.<br />
* Fellow members will try not to double-vuln mobs<br />
* Fellow Members heal each other without the need for the AC Fellow Panel to be open<br />
<br />
<br />
Visit the [[Virindi Integrator 2 |Virindi Integrator2]] page for a detailed breakdown of the plugin.<br />
<br />
<br />
= Virindi Reporter [[image:Reporter_Icon.PNG]] =<br />
* Reports XP/Lum Earnings to yourself, fellowship chat, or allegiance chat. <br />
* Must be running for XP/Lum Earning properties to appear on the Status HUD<br />
<br />
[[Virindi_Reporter |More]]<br />
<br />
<br />
= Virindi Chat System 5 [[image:VCS_Icon.PNG]]=<br />
* A filtering plugin for text in the AC chatboxes. It allows you to define rules that specify where matching text will go, and what color it will become, with the option for corresponding sound alerts. <br />
* These rules apply not only to AC's text, but also to the text output of all Virindi Bundle plugins.<br />
<br />
[[Virindi_Chat_System_5|More]]<br />
<br />
<br />
= Virindi Item Tool [[image:VIT_Icon.PNG]] = <br />
* The Give tab is used to hand large quantities of the same type item, quickly, to another character or NPC<br />
* The Buy tab has options to select which item you need to buy, how many, and which items to sell to cover the costs(pea's/mmds) <br />
* The GiveVT tab has the Go button for pre-built Buy/Sell profiles to be triggered<br />
* The Chest tab allows you to automatically use keys on a chest and transfer looted items to a mule.<br />
* The Comps tab stores a list of user selected items to automatically purchase from vendors <br />
<br />
* [http://magtools.codeplex.com Mag-Tools] calls on VIT to handle item transfer for its Auto Buy/Sell feature. <br />
<br />
[[Virindi_Item_Tool |More]]<br />
<br />
<br />
= Virindi Follower =<br />
<br />
Follow Character is built in to the [[Virindi HUDs]] MiniRemote<br />
<br />
* Select who you want to follow and Press the "FC" button [[image:Follow_Char.PNG]] on the MiniRemote.<br />
* "C" toggles "Follow character around corners"<br />
** Enabled: Follows the leaders exact route - Mostly used inside<br />
** Disabled: Runs directly at the leader - Mostly used outside<br />
<br />
<br />
The stand-alone version of [[Virindi Follower]] is unlikely to be updated in the future.<br />
<br />
<br />
= Virindi HUDs [[image:VirindiUIsIcon.png]]= <br />
Currently included:<br />
* Comps HUD<br />
* VTank Remote Control<br />
* VVS Chat Window<br />
* Status HUD<br />
* H/S/M Bar. <br />
* Old Style H/S/M Bar<br />
* ItemTool Comps HUD<br />
<br />
More information on the [[Virindi HUDs]] or [[Customize Your View]] page<br />
<br />
<br />
= Virindi Hotkey System [[image:Virindi_Hotkey_System_Icon.PNG]] =<br />
* Allows you to set hotkeys to perform functions created by different plugins. <br />
* As an alternative to Decal Hotkey System, VHS uses Virindi Views<br />
* Supports assigning hotkeys to joystick/gamepad buttons. <br />
<br />
[[Virindi Hotkey System|More]]<br />
<br />
<br />
= Virindi Sense [[image:Virindi_Sense_Icon.PNG]]=<br />
A simple 6th Sense style plugin.<br />
* Input items you wish to track on the Setup tab<br />
* If something is detected you will be alerted in chat and the item will be listed on the Detected tab<br />
<br />
[[Virindi_Sense|More]]<br />
<br />
<br />
= Virindi Window Tool [[image:VWTIcon.png]] = <br />
* Used to manage multiple UI Layouts<br />
* Save and load UI captures with a GUI rather than the AC chat commands.<br />
* Saves location of all VVS plugins<br />
* Offers the "Old AC UI" option<br />
<br />
[[Virindi_Window_Tool|More]]<br />
<br />
<br />
= Virindi Global Inventory [[image:VGI_Icon.PNG]] =<br />
A simple tool for managing armor, weapons and misc items on mules. <br />
* You must log on each character who's inventory you would like to track and choose a Tracking style, then wait for it to read all items.<br />
* You can search by item name/spells/sets and others. It will display all items matching the query and the character each item is on.<br />
* Suit Search application helps you filter through and match your gear to create the best possible suits.<br />
* World View application lists all weapons and pets for each character in a spreadsheet for easy viewing. <br />
<br />
[[Virindi_Global_Inventory|More]]<br />
<br />
<br />
= GoArrow (VVS) [[image:GoArrow_Icon.PNG]] =<br />
A version of Digero's GoArrow plugin which has been modified to operate in Virindi Views.<br />
<br />
* Route-finding between any location by coordinates, searching locations, or manipulating the map.<br />
* Arrow HUD to show you the direction of your next waypoint or endpoint. <br />
* Filter options and ranges to display locations/npcs in your vicinity<br />
<br />
[[GoArrow_(VVS_Edition)|More]]<br />
<br />
<br />
= SSSort (VVS) [[image:SSSort_VVS_Icon.PNG]]=<br />
SSSort sorts the scrolls, salvage, or mana stones in your main pack or side packs.<br />
<br />
It has a number of specialized sorting criteria for scrolls, salvage, and mana stones. <br />
<br />
[[SSSort_(VVS_Edition)|More]]<br />
<br />
<br />
=Non-Bundle VVS Plugins=<br />
Available for download on the [http://www.virindi.net/plugins/ Virindi Plugins] page.<br />
== Virindi Armor Color Tool [[image:VACT_Icon.PNG]] ==<br />
A DCS-like utility for viewing the colors of armor. <br />
* The colors it displays are the same as found in Virindi Tank propertydumps<br />
* Simply open the plugin and ID an item to retrieve the palette list. <br />
<br />
[[Virindi_Armor_Color_Tool|More]]<br />
<br />
== SkunkVision (VVS) [[image:SkunkVision_Icon.PNG]] ==<br />
The SkunkVision control panel has three toggles for enabling or disabling the following features:<br />
* Unclimbable slopes: Highlights those areas of a mountain or cliff that are too steep to climb.<br />
* Impassable water: Highlights those areas of open water that are too deep to wade.<br />
* Dungeon light: Lights up dark dungeon caverns.<br />
<br />
[[SkunkVision_VVS_Edition|More]]<br />
<br />
<br />
== Virindi XP Helper [[image:XPHelper_Icon.PNG]]==<br />
Virindi XP Helper assists in determining how much your character's primary attributes (strength, endurance, etc) should cost to raise based on the costs of your skills and secondary attributes (health, stamina, mana). <br />
<br />
[[Virindi_XPHelper|More]]<br />
<br />
<br />
== Virindi Old Comp System [[image:Virindi_OCS_Icon.PNG]]==<br />
VirindiOCS (Old Comp System) tracks the burning of components, predicts runtime, and allows you to purchase the proper ratios of components for a particular approximate runtime. <br />
<br />
The goal is to make it easier for you to use old components (with peas).<br />
<br />
[[Virindi_OCS|More]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=BeginnerBundleGuide&diff=1543BeginnerBundleGuide2016-05-14T13:27:06Z<p>The Guru: /* Virindi Classic Looter */</p>
<hr />
<div>WORK IN PROGRESS<br />
<br />
A Quick Reference Guide for the Virindi Tank Bundle - Compiled by [http://www.virindi.net/wiki/index.php?title=Special:Contributions/The_Guru&limit=500&target=The+Guru Hell's Wrath]<br />
<br />
Before diving in you may want to [[Customize Your View]]<br />
<br />
= Virindi Tank [[image:TankIcon.PNG]] =<br />
Click the Tank icon [[image:TankIcon.PNG]] on the [[Virindi Views]](VVS) bar to open the main Virindi Tank plugin.<br />
<br />
== Options tab ==<br />
The main options page handles basic Vtank ranges and a multitude of easy-access options.<br />
<br />
[[image:Vtank_Main.PNG]] <br />
<br />
For detailed explanations of the individual options on the main tab, visit the [[Virindi_Tank_Standard_Options#Options|Standard Options]] page<br />
<br />
You can also view the entire [[Virindi_Tank_Advanced_Options|Advanced Options]] which will be linked to throughout this guide. <br />
<br />
<br />
== Profiles tab==<br />
<br />
[[image:Vtank_Profiles.PNG]]<br />
<br />
=== Macro Setting Profiles ===<br />
Understanding how profiles are managed is vital to running an organized macro. You will likely have many profiles for different locations and tasks.<br />
There are two types of profiles we will talk about: Those with Mine Only enabled, and those without.<br />
<br />
* Click the Macro Settings dropdown list<br />
* You will see [Default] and [ByChar] -- You never want to edit settings within these, think of them as templates. You load one, make a save with a specific name, then edit and use the new save. <br />
* [Default] profile settings will always reset on logout.<br />
* [ByChar] is associated with the Mine Only radio button. This is the profile type you will use the most. <br />
* When creating a new character specific profile you want to have the Mine Only radio button enabled, selecting the [ByChar] profile automatically enables Mine Only.<br />
<br />
==== Saving [Char] Macro Settings ====<br />
* Select [ByChar] from the Macro Settings dropdown then click the "CopyTo" button.<br />
* Your chat bar will be filled with the string "/vt settings savechar" -- Type a name after "savechar" and press Enter. (eg. "/vt settings savechar TuskerIsland")<br />
* You will now have a "[Char]TuskerIsland" profile in the Macro Settings dropdown - You can now safely begin making changes to the settings.<br />
** Changes made within profiles are saved immediately and automatically. You do not have to save after making alterations. This is the reason for using [ByChar] as a template to make new profiles.<br />
<br />
==== Transferring [Char] Profiles to Alt Char. ====<br />
* To transfer a [Char] setting profile over to another character you will need to load the [Char]profile, disable Mine Only and click CopyTo. <br />
* In your chat bar you will see the string "/vt settings save" - type a profile name and click enter. (eg. "/vt settings save TuskerIsland")<br />
* On the character you want the profile transferred to, uncheck Mine Only and select the Macro Settings dropdown. You will see "TuskerIsland" listed without a [Char] tag.<br />
* You now need to save the cross-char profile as a [Char] profile. Select "TuskerIsland" from the dropdown and then enable Mine Only. Click "CopyTo" and the string "/vt settings savechar" should appear in your chat bar. Type TuskerIsland and press Enter. <br />
** You should now see "[Char]TuskerIsland" in your macro settings dropdown list.<br />
**Now you must populate the Items/Consumables tab with your items, and assign any weapon types in the Monster tab that may have become unassigned as a result of transferring the profile.<br />
<br />
=== Auto-Navigation Profiles ===<br />
* To create a new route select [None] from the dropdown and then click the "CopyTo" button - "/vt nav save" will appear in your char bar, type a name and hit Enter<br />
* Build and edit your routes on the Routes tab<br />
<br />
=== Looting Profiles ===<br />
* Displays a list of loot profiles, select one to load it<br />
* Profiles loaded from your \\VirindiPlugins\VirindiTank folder<br />
<br />
* Loot profiles for Virindi Tank are built outside of game using the [[Virindi_Tank_Classic_Loot_System|Virindi Tank Classic Loot System]]<br />
* The classic looter is extremely powerful. Example profiles are available on the above page.<br />
* [http://www.immortalbob.com Immortalbob.com] provides a profile called "Lootsnob" that has hundreds of rules for all manner of armor/weapon/trophies/collectibles.<br />
<br />
** Aside from the Vtank Classic Looter, you can also use [http://asheron.aetherific.com/Alinco Alinco3], [http://asheron.aetherific.com/GearFoundry GearFoundry], or any other plugin that will link its profile to Vtank<br />
** OnLogin, if no loot profile is selected, Vtank will detect if GearFoundry or Alinco is loaded and provide a link you can click to attach your profile to Vtank.<br />
<br />
=== Meta Action Profiles ===<br />
* Select a meta profile from the dropdown list to load it <br />
* You build and edit on the [[BeginnerBundleGuide#Meta tab|Meta tab]]<br />
<br />
== Vitals tab ==<br />
The vitals tab is crucial to your survival. Depending on your skill level you will want to adjust the sliders to best fit your circumstances.<br />
Lower level spells do not revitalize as well so the sliders must be adjusted to give you maximum benefit. Trial and error is the name of the game.<br />
<br />
[[image:Vtank_vitals.PNG]]<br />
<br />
* The first three sliders manage your vitals during combat<br />
<br />
* The second set of sliders manages your Top-off vitals. When there are no combat targets in range you will recharge to these values.<br />
<br />
* The third set of sliders manages your Helper spells<br />
<br />
**[[Virindi_Tank_Advanced_Options#Recharge|Advanced Recharge Options]] can be used to set exact percentages of vitals, enable Helper spells, and set ranges.<br />
<br />
== Monsters tab ==<br />
The monsters tab is where you will manage the different types of attacks, debuffs, and weapons you use against specific monsters.<br />
<br />
[[image:Vtank_monsters.PNG]]<br />
<br />
* Type in a monster name and click Add, or select a monster in the 3D window and click Add Sel.<br />
<br />
* Once you have a monster name entered you can set the ways you want to react. Hovering over each of the letters will show a tooltip. <br />
* Click the text beneath Dmg type / Extra Vuln / Weapon / Offhand / PetDmg to cycle through the available options. <br />
<br />
The monster list can be very simple or quite complex, depending on your needs and desires. <br />
<br />
There are advanced operators and variables you can use to account for very specific situational problems<br />
<br />
Check out [[Virindi_Tank_Monster_List_Matching | Monster List Matching]] for more information.<br />
<br />
<br />
== Items tab ==<br />
Within the items tab you add all of your weapons/wands/shields/pets you want to use in your profile. <br />
<br />
[[image:Vtank_items.PNG]]<br />
<br />
*Select an item in your inventory and click "Add" to add it to the list.<br />
<br />
Once an item is listed it can be set in the Monsters tab under the appropriate options. <br />
<br />
<br />
== Consumables tab ==<br />
<br />
<br />
[[image:Vtank_consumables.PNG]]<br />
<br />
* If you use any type of gems/foods/healing kits/potions/lockpicks etc, you can add them to the Consumables list and have Vtank automatically use them at the appropriate times.<br />
* If you don't want to use high level spells you can exclude Scarab types so the spells aren't cast. This is handy for saving on spellcomps when hunting lower level areas on a high level character. <br />
<br />
<br />
[[Virindi_Tank_Advanced_Options#Crafting|Advanced Crafting Options]]<br />
<br />
<br />
* '''Notes''':<br />
** Items that cast spells lasting less than 5 minutes will not work.<br />
<br />
<br />
== Buffs tab ==<br />
Vtank reads your characters skills, spellbook, and available spellcomps to determine which spells to cast. <br />
<br />
[[image:Vtank_buffs.PNG]]<br />
<br />
Creature buffs are always cast. Which ones are used are selected automatically based on the skills that you have trained.<br />
<br />
* The buffs tab is used when you want to Add or Exclude buffs from your buffing profile.<br />
* Normally you will not need to change anything on this tab. <br />
<br />
* Life protections and banes can be selected through the advanced panel by changing the BuffProfile_Prots and BuffProfile_Banes options. The builtin selections are:<br />
<br />
All (Bludgeon, Pierce, Slash, Acid, Lightning, Cold, Fire)<br />
None<br />
B (Bludgeon)<br />
BPS (Bludgeon, Pierce, Slash)<br />
BPSA (Bludgeon, Pierce, Slash, Acid)<br />
ALFC (Acid, Lightning, Fire, Cold)<br />
Custom (see below)<br />
<br />
'Custom' element sets are specified similarly to the above, by selecting among the letters BPSALFC. To do this, set the option in the advanced options panel to 'Custom' and then issue a command like the following, replacing BPSALFC with the letters you want:<br />
<br />
/vt opt set BuffProfile-Prots BPSALFC<br />
/vt opt set BuffProfile-Banes BPSALFC<br />
<br />
Set [[Virindi_Plugins_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use.2C_and_how_can_I_change_it.3F|skill thresholds]] so you can pick up scrolls and attempt to cast spells above your skill level<br />
<br />
[[Virindi_Tank_Advanced_Options#Buffing|Advanced Buffing Options]]<br />
<br />
<br />
* '''Notes''':<br />
** "/filter -magic" will cause Vtank to loop and continuously cast a single spell. You can "/filter -spellcasting" without issues. <br />
** You can safely filter the chat using the AC Chat options instead of the /filter commands. <br />
<br />
<br />
== Route tab == <br />
This is where you will build all of your auto-navigation routes.<br />
<br />
[[image:Route_tab.PNG]]<br />
<br />
* Turn your character with [[Virindi_Plugins_FAQ#My_character_stops_at_each_Nav_point_in_my_route_and_won.27t_proceed_until_I_press_a_key._What.27s_wrong.3F|camera turning]] must be disabled for auto-navigation to function<br />
* Default movement keys must be used in your keyboard configuration<br />
<br />
<br />
There are 4 types of routes you can build:<br />
* Circular routes traverse waypoints in the order ABC-ABC.(After last waypoint, will return to first waypoint)<br />
* Linear routes traverse waypoints in the order ABC-CBA. (Will run back and forth from beginning to end)<br />
* Once routes traverse a route just once. Waypoints in the route tab will appear to delete themselves, reloading the route reloads the waypoints (Good for ToVendor/ToDungeon routes.)<br />
* Follow routes follow another player-character. See [[BeginnerBundleGuide#Virindi_Follower|Mini Remote]] <br />
<br />
<br />
* To build a route you simply run while clicking the "Add" button to add waypoints. <br />
* Aside from waypoints you can input Recalls, Use Portal/NPC, Pauses, Chat commands and Jumps.<br />
<br />
<br />
Jumps<br />
* Jumps can be executed by a chat command, or added to a navroute using a different command<br />
* Execute a jump: "/vt jump [heading in degrees] [shift: true or false] [milliseconds to charge the power bar (0 is minimum, 1000 is maximum)] <br />
* Add a jump to a route: "/vt addnavjump [heading] [shift] [charge]" will append to the end of a route. <br />
** For example "/vt jump 360 true 500" will make you do a shift jump to the north at half power. <br />
<br />
<br />
*Note: /vt addnavjump will automatically pause and issue the jump. If you use the /vt jump command you must add the pauses yourself<br />
<br />
<br />
Checkpoints<br />
* Add to routes with "/vt addnavcheckpoint"<br />
* Functions as a normal waypoint, except that when reaching it the macro pauses until the server reports back your location as being near the point. (Normally, your client sees your location as a bit ahead of what the server sees, due to communication latency.) This point type can ensure that you really made it around a corner or through a doorway. Once the server reports that you are in a location you will not be "rubber-banded" back. Sometimes you will stop and wait and the server will disagree on your final location, so if you have been waiting awhile the macro will inch forward.<br />
<br />
<br />
Route Editing<br />
* You can edit routes by using the drop-down menu containing "Add to End", "Insert Above" and "Insert Below"<br />
* The curly green arrow [[image:GreenTurnDownArrow.PNG ]] sets the route to the nearest waypoint to your location. You can use the green and red up/down arrows to change the waypoint.<br />
* You must change your route to circular to use the curly green arrow. It will not work for once and linear routes. Change back once finished editing.<br />
<br />
<br />
<br />
* [[Virindi_Tank_Standard_Options#Route_tab|Standard Options]]<br />
* [[Virindi_Tank_Advanced_Options#Navigation|Advanced Navigation Options]] have tweaks for approach corpse distance, opendoors enable/disable, nav priority boost and others.<br />
<br />
== Meta tab ==<br />
The Virindi Tank Meta system is a way to control what the macro is doing on a higher level than normal operations. The system allows you to implement a [http://en.wikipedia.org/wiki/Finite-state_machine Finite-state machine]. This machine consists of rules and states. <br />
<br />
With meta you can create Hunt / Recomp / Return On Death routines, automate entire quests, control multiple characters through chat commands and much more.<br />
<br />
Check out the [[Virindi_Tank_Meta_System|Meta System]] page for more information.<br />
<br />
<br />
= Virindi Classic Looter =<br />
<br />
Virindi Tank provides a standalone loot editor called Virindi Classic Looter<br />
* Found in your VirindiPlugins\VirindiTankClassicLooter folder (typically C:\Games\VirindiPlugins\VirindiTankClassicLooter)<br />
** Run "uTank2 Settings Editor.exe"<br />
<br />
The Classic Looter is quite extensive and requires detailed explanations.<br />
<br />
Information can be found on the following pages<br />
* [[VTClassic_Tutorial |Tutorial]]<br />
* [[VTClassic_Advanced_Tips |Advanced Tips]]<br />
* [[VTClassic_Sample_Profiles |Sample Profiles]]<br />
* [http://acpedia.org/wiki/User:Immortalbob/Guides/Beginner%27s_Guide_to_looting_with_VTank VTClassic Guide] - by Immortalbob<br />
<br />
If you don't like the Classic Looter or feel it is too complicated for your needs you can use an alternate plugin for loot profiles<br />
<br />
At login, Vtank will auto-detect if you are running Alinco or GearFoundry without a loot profile loaded. <br />
If so, it will provide a link to connect the plugins.<br />
** [http://asheron.aetherific.com/GearFoundry GearFoundry]<br />
** [http://asheron.aetherific.com/Alinco Alinco3] - How to [[Virindi_Plugins_FAQ#How_do_I_use_Alinco_with_Virindi_Tank.3F |connect Alinco]] (alinco is unsupported, it does not recognize tier8 loot)<br />
<br />
= Virindi Integrator2 [[image:I2_Icon_inactive.PNG]] [[image:I2_Icon_Active.PNG]] =<br />
* VI2 connects to a central server in order to provide fellow-like groups, friends notifications, tells, automated mapping and ally location awareness. <br />
* Friends and /tells in VI2 operate through an account-based system; sent tells go to every character logged in under the same VI2 account, and friends logging on to their VI2 account appear as online regardless of which AC character or server they are logged in to.<br />
* VI2 is completely AC-world independent, allowing communication and even questing to function easily across different game worlds. <br />
<br />
* Fellow Members prefer to attack vulned/imped mobs first.<br />
* Fellow members will try not to double-vuln mobs<br />
* Fellow Members heal each other without the need for the AC Fellow Panel to be open<br />
<br />
<br />
Visit the [[Virindi Integrator 2 |Virindi Integrator2]] page for a detailed breakdown of the plugin.<br />
<br />
<br />
= Virindi Reporter [[image:Reporter_Icon.PNG]] =<br />
* Reports XP/Lum Earnings to yourself, fellowship chat, or allegiance chat. <br />
* Must be running for XP/Lum Earning properties to appear on the Status HUD<br />
<br />
[[Virindi_Reporter |More]]<br />
<br />
<br />
= Virindi Chat System 5 [[image:VCS_Icon.PNG]]=<br />
* A filtering plugin for text in the AC chatboxes. It allows you to define rules that specify where matching text will go, and what color it will become, with the option for corresponding sound alerts. <br />
* These rules apply not only to AC's text, but also to the text output of all Virindi Bundle plugins.<br />
<br />
[[Virindi_Chat_System_5|More]]<br />
<br />
<br />
= Virindi Item Tool [[image:VIT_Icon.PNG]] = <br />
* The Give tab is used to hand large quantities of the same type item, quickly, to another character or NPC<br />
* The Buy tab has options to select which item you need to buy, how many, and which items to sell to cover the costs(pea's/mmds) <br />
* The GiveVT tab has the Go button for pre-built Buy/Sell profiles to be triggered<br />
* The Chest tab allows you to automatically use keys on a chest and transfer looted items to a mule.<br />
* The Comps tab stores a list of user selected items to automatically purchase from vendors <br />
<br />
* [http://magtools.codeplex.com Mag-Tools] calls on VIT to handle item transfer for its Auto Buy/Sell feature. <br />
<br />
[[Virindi_Item_Tool |More]]<br />
<br />
<br />
= Virindi Follower =<br />
<br />
Follow Character is built in to the [[Virindi HUDs]] MiniRemote<br />
<br />
* Select who you want to follow and Press the "FC" button [[image:Follow_Char.PNG]] on the MiniRemote.<br />
* "C" toggles "Follow character around corners"<br />
** Enabled: Follows the leaders exact route - Mostly used inside<br />
** Disabled: Runs directly at the leader - Mostly used outside<br />
<br />
<br />
The stand-alone version of [[Virindi Follower]] is unlikely to be updated in the future.<br />
<br />
<br />
= Virindi HUDs [[image:VirindiUIsIcon.png]]= <br />
Currently included:<br />
* Comps HUD<br />
* VTank Remote Control<br />
* VVS Chat Window<br />
* Status HUD<br />
* H/S/M Bar. <br />
* Old Style H/S/M Bar<br />
* ItemTool Comps HUD<br />
<br />
More information on the [[Virindi HUDs]] or [[Customize Your View]] page<br />
<br />
<br />
= Virindi Hotkey System [[image:Virindi_Hotkey_System_Icon.PNG]] =<br />
* Allows you to set hotkeys to perform functions created by different plugins. <br />
* As an alternative to Decal Hotkey System, VHS uses Virindi Views<br />
* Supports assigning hotkeys to joystick/gamepad buttons. <br />
<br />
[[Virindi Hotkey System|More]]<br />
<br />
<br />
= Virindi Sense [[image:Virindi_Sense_Icon.PNG]]=<br />
A simple 6th Sense style plugin.<br />
* Input items you wish to track on the Setup tab<br />
* If something is detected you will be alerted in chat and the item will be listed on the Detected tab<br />
<br />
[[Virindi_Sense|More]]<br />
<br />
<br />
= Virindi Window Tool [[image:VWTIcon.png]] = <br />
* Used to manage multiple UI Layouts<br />
* Save and load UI captures with a GUI rather than the AC chat commands.<br />
* Saves location of all VVS plugins<br />
* Offers the "Old AC UI" option<br />
<br />
[[Virindi_Window_Tool|More]]<br />
<br />
<br />
= Virindi Global Inventory [[image:VGI_Icon.PNG]] =<br />
A simple tool for managing armor, weapons and misc items on mules. <br />
* You must log on each character who's inventory you would like to track and choose a Tracking style, then wait for it to read all items.<br />
* You can search by item name/spells/sets and others. It will display all items matching the query and the character each item is on.<br />
* Suit Search application helps you filter through and match your gear to create the best possible suits.<br />
* World View application lists all weapons and pets for each character in a spreadsheet for easy viewing. <br />
<br />
[[Virindi_Global_Inventory|More]]<br />
<br />
<br />
= GoArrow (VVS) [[image:GoArrow_Icon.PNG]] =<br />
A version of Digero's GoArrow plugin which has been modified to operate in Virindi Views.<br />
<br />
* Route-finding between any location by coordinates, searching locations, or manipulating the map.<br />
* Arrow HUD to show you the direction of your next waypoint or endpoint. <br />
* Filter options and ranges to display locations/npcs in your vicinity<br />
<br />
[[GoArrow_(VVS_Edition)|More]]<br />
<br />
<br />
= SSSort (VVS) [[image:SSSort_VVS_Icon.PNG]]=<br />
SSSort sorts the scrolls, salvage, or mana stones in your main pack or side packs.<br />
<br />
It has a number of specialized sorting criteria for scrolls, salvage, and mana stones. <br />
<br />
[[SSSort_(VVS_Edition)|More]]<br />
<br />
<br />
=Non-Bundle VVS Plugins=<br />
Available for download on the [http://www.virindi.net/plugins/ Virindi Plugins] page.<br />
== Virindi Armor Color Tool [[image:VACT_Icon.PNG]] ==<br />
A DCS-like utility for viewing the colors of armor. <br />
* The colors it displays are the same as found in Virindi Tank propertydumps<br />
* Simply open the plugin and ID an item to retrieve the palette list. <br />
<br />
[[Virindi_Armor_Color_Tool|More]]<br />
<br />
== SkunkVision (VVS) [[image:SkunkVision_Icon.PNG]] ==<br />
The SkunkVision control panel has three toggles for enabling or disabling the following features:<br />
* Unclimbable slopes: Highlights those areas of a mountain or cliff that are too steep to climb.<br />
* Impassable water: Highlights those areas of open water that are too deep to wade.<br />
* Dungeon light: Lights up dark dungeon caverns.<br />
<br />
[[SkunkVision_VVS_Edition|More]]<br />
<br />
<br />
== Virindi XP Helper [[image:XPHelper_Icon.PNG]]==<br />
Virindi XP Helper assists in determining how much your character's primary attributes (strength, endurance, etc) should cost to raise based on the costs of your skills and secondary attributes (health, stamina, mana). <br />
<br />
[[Virindi_XPHelper|More]]<br />
<br />
<br />
== Virindi Old Comp System [[image:Virindi_OCS_Icon.PNG]]==<br />
VirindiOCS (Old Comp System) tracks the burning of components, predicts runtime, and allows you to purchase the proper ratios of components for a particular approximate runtime. <br />
<br />
The goal is to make it easier for you to use old components (with peas).<br />
<br />
[[Virindi_OCS|More]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1542Meta Expressions2016-04-24T20:33:07Z<p>The Guru: /* Function Information */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 48 meta functions.<br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.<br />
<br />
'''Example''': [http://www.immortalbob.com/phpBB3/viewtopic.php?f=24&t=120 Landscape Item Pickup Tutorial] </div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0<br />
</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
'''Parameter count''': 1<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Commands&diff=1541Virindi Tank Commands2016-03-19T19:51:05Z<p>The Guru: /* /vt commands - Actions */</p>
<hr />
<div>== /vt commands - Profiles ==<br />
<br />
* '''/vt settings [save/load/savechar/loadchar] [filename]''' - Saves or loads character setting profiles. Savechar/loadchar apply to MineOnly profiles.<br />
<br />
* '''/vt nav [save/load] [filename]''' - Saves or loads a navigation profile.<br />
* '''/vt loot [save/load] [filename]''' - Saves or loads a loot profile.<br />
* '''/vt meta [save/load] [filename]''' - Saves or loads a meta profile.<br />
* '''/vt opt [list/get/set/setinall]''' - lists, gets, or sets an [[Virindi_Tank_Advanced_Options|advanced option]]. Setinall affects ALL profiles - [[Options List]]<br />
* '''/vt testitem''' - Checks the currently selected item against the current loot rules, and tells you what the action would be if the item were found on a corpse.<br />
* '''/vt propertydump''' - Displays the raw game properties for the currently selected item.<br />
* '''/vt refresh''' - Refreshes the UI. This also causes the list of profile files in the profile dropdowns to be updated.<br />
* '''/vt getdb''' - Attempts redownload of the latest game information database.<br />
* '''/vt addnavpt [coords]''' - Adds a navigation waypoint at the specified coordinates to the end of the current navigation profile.<br />
* '''/vt addnavjump [heading] [shift: true or false] [milliseconds]''' - Adds a jump to the current route. Example: /vt addnavjump 360 true 500<br />
* '''/vt addnavcheckpoint''' - Adds a checkpoint to the current route. Checkpoints are like normal waypoints, except the plugin waits for the server to verify you reached the location before continuing.<br />
<br />
==/vt commands - Actions ==<br />
* '''/vt start''' - Turns the macro on<br />
* '''/vt stop''' - Turns the macro off <br />
* '''/vt forcebuff''' - Initiates a forcebuff<br />
* '''/vt cancelforcebuff''' - Cancels a forcebuff<br />
* '''/vt setmetastate [statename]''' - Sets the meta state to the statename<br />
* '''/vt fakedeath''' - Used to test the Character Death trigger in meta, rather than killing yourself<br />
* '''/vt deletemonster''' - Select a monster, then do /vt deletemonster to force the client to delete it.<br />
* '''/vt reverseroute [true/false]''' - Reverses the currently loaded navroute<br />
* '''/vt reverseroutequery''' - Returns the value of /vt reverseroute (true/false)<br />
* '''/vt equipitemsfor [monstername]''' - each use of this command will invoke one step of the process, such as going to peace mode or equipping a weapon. Multiple calls to this command will probably be required for expected operation. (Rules that contain operators will not work.)<br />
* '''/vt mexec [expression]''' - Evaluates an expression. Used to test expressions before using in a meta. (Setting variables this way is the same as setting in a meta)<br />
* '''/vt echo [text]''' - Simply outputs the text given to it back to the user, with a custom VCS preset. Makes it easier to color meta feedback messages.<br />
* '''/vt tapjump''' - Taps jumps <br />
* '''/vt jump [heading] [shift: true or false] [milliseconds]''' - Issues a single jump. Example: /vt jump 360 true 500<br />
<br />
==/vt commands - Game Info ==<br />
* '''/vt dumpspells''' - Dumps the client spell table to C:\spelldump.txt<br />
* '''/vt dumpspecies''' - Dumps the client species table to C:\speciesdump.txt<br />
* '''/vt dumpmats''' - Dumps the client material table to C:\matdump.txt<br />
* '''/vt dumpskills''' - Dumps the client skill table to C:\skilldump.txt<br />
<br />
<br />
==/vt commands - Debug ==<br />
* '''/vt log''' - Displays the current logging state.<br />
* '''/vt log [type] [on/off]''' - Sets or unsets logging of a particular type. Valid types are ActiveRule, SalvageList, SpellCast, RuleInfo, Timers, CastInfo, DebuffChoice, Loot, CharProps, Misc<br />
* '''/vt testmonster''' - Select a monster and issue the command to evaluate the selected monster against your Monster List Match rules<br />
* '''/vt lockdump''' - <br />
* '''/vt dumptracker''' - <br />
* '''/vt clearlocks''' -<br />
* '''/vt clearbusy''' -<br />
* '''/vt listmonstervariables''' - Lists the supported monster expression variables (true, false, name, typeid, species, maxhp, range, hasshield, metastate)<br />
* '''/vt dumpmetavars''' - Lists the currently set meta variables<br />
* '''/vt listmetafunctions''' - Lists all [[Meta Functions]]<br />
* '''/vt metafunchelp [function]''' - Gives detailed information for each function<br />
* '''/vt fakeimp''' - Marks a monster as imped<br />
* '''/vt pscount''' - Portal debugging info<br />
* '''/vt testspell [spellid]''' - Tests whether you know a spell and if you can cast it based on your threshold mods. Example: /vt testspell 567</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Commands&diff=1540Virindi Tank Commands2016-03-19T16:56:44Z<p>The Guru: /* /vt commands - Profiles */</p>
<hr />
<div>== /vt commands - Profiles ==<br />
<br />
* '''/vt settings [save/load/savechar/loadchar] [filename]''' - Saves or loads character setting profiles. Savechar/loadchar apply to MineOnly profiles.<br />
<br />
* '''/vt nav [save/load] [filename]''' - Saves or loads a navigation profile.<br />
* '''/vt loot [save/load] [filename]''' - Saves or loads a loot profile.<br />
* '''/vt meta [save/load] [filename]''' - Saves or loads a meta profile.<br />
* '''/vt opt [list/get/set/setinall]''' - lists, gets, or sets an [[Virindi_Tank_Advanced_Options|advanced option]]. Setinall affects ALL profiles - [[Options List]]<br />
* '''/vt testitem''' - Checks the currently selected item against the current loot rules, and tells you what the action would be if the item were found on a corpse.<br />
* '''/vt propertydump''' - Displays the raw game properties for the currently selected item.<br />
* '''/vt refresh''' - Refreshes the UI. This also causes the list of profile files in the profile dropdowns to be updated.<br />
* '''/vt getdb''' - Attempts redownload of the latest game information database.<br />
* '''/vt addnavpt [coords]''' - Adds a navigation waypoint at the specified coordinates to the end of the current navigation profile.<br />
* '''/vt addnavjump [heading] [shift: true or false] [milliseconds]''' - Adds a jump to the current route. Example: /vt addnavjump 360 true 500<br />
* '''/vt addnavcheckpoint''' - Adds a checkpoint to the current route. Checkpoints are like normal waypoints, except the plugin waits for the server to verify you reached the location before continuing.<br />
<br />
==/vt commands - Actions ==<br />
* '''/vt start''' - Turns the macro on<br />
* '''/vt stop''' - Turns the macro off <br />
* '''/vt forcebuff''' - Initiates a forcebuff<br />
* '''/vt cancelforcebuff''' - Cancels a forcebuff<br />
* '''/vt setmetastate [statename]''' - Sets the meta state to the statename<br />
* '''/vt fakedeath''' - Used to test the Character Death trigger in meta, rather than killing yourself<br />
* '''/vt deletemonster''' - Select a monster, then do /vt deletemonster to force the client to delete it.<br />
* '''/vt reverseroute [true/false]''' - Reverses the currently loaded navroute<br />
* '''/vt reverseroutequery''' - Returns the value of /vt reverseroute (true/false)<br />
* '''/vt equipitemsfor [monstername]''' - each use of this command will invoke one step of the process, such as going to peace mode or equipping a weapon. Multiple calls to this command will probably be required for expected operation.<br />
* '''/vt mexec [expression]''' - Evaluates an expression. Used to test expressions before using in a meta. (Setting variables this way is the same as setting in a meta)<br />
* '''/vt echo [text]''' - Simply outputs the text given to it back to the user, with a custom VCS preset. Makes it easier to color meta feedback messages.<br />
* '''/vt tapjump''' - Taps jumps <br />
* '''/vt jump [heading] [shift: true or false] [milliseconds]''' - Issues a single jump. Example: /vt jump 360 true 500<br />
<br />
<br />
==/vt commands - Game Info ==<br />
* '''/vt dumpspells''' - Dumps the client spell table to C:\spelldump.txt<br />
* '''/vt dumpspecies''' - Dumps the client species table to C:\speciesdump.txt<br />
* '''/vt dumpmats''' - Dumps the client material table to C:\matdump.txt<br />
* '''/vt dumpskills''' - Dumps the client skill table to C:\skilldump.txt<br />
<br />
<br />
==/vt commands - Debug ==<br />
* '''/vt log''' - Displays the current logging state.<br />
* '''/vt log [type] [on/off]''' - Sets or unsets logging of a particular type. Valid types are ActiveRule, SalvageList, SpellCast, RuleInfo, Timers, CastInfo, DebuffChoice, Loot, CharProps, Misc<br />
* '''/vt testmonster''' - Select a monster and issue the command to evaluate the selected monster against your Monster List Match rules<br />
* '''/vt lockdump''' - <br />
* '''/vt dumptracker''' - <br />
* '''/vt clearlocks''' -<br />
* '''/vt clearbusy''' -<br />
* '''/vt listmonstervariables''' - Lists the supported monster expression variables (true, false, name, typeid, species, maxhp, range, hasshield, metastate)<br />
* '''/vt dumpmetavars''' - Lists the currently set meta variables<br />
* '''/vt listmetafunctions''' - Lists all [[Meta Functions]]<br />
* '''/vt metafunchelp [function]''' - Gives detailed information for each function<br />
* '''/vt fakeimp''' - Marks a monster as imped<br />
* '''/vt pscount''' - Portal debugging info<br />
* '''/vt testspell [spellid]''' - Tests whether you know a spell and if you can cast it based on your threshold mods. Example: /vt testspell 567</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Advanced_Options&diff=1539Virindi Tank Advanced Options2016-03-14T18:40:55Z<p>The Guru: /* Spell Combat */</p>
<hr />
<div>The Virindi Tank Advanced Options allow you to tweak specific macro actions<br><br />
Many of the Advanced Options can be set via the ''/vt opt list/set/get'' [[Virindi Tank Commands|chat commands]]<br />
<br />
<br />
''*Note: When viewing individual tabs within the advanced options, several options will appear in multiple locations.<br><br />
''The duplicates are not shown when viewing all tabs at once. Making changes in one location will change it overall. <br />
<br />
<br />
*Ranges are displayed in yards on the main options page. To use /vt opt to change range settings you must use (range/240). A range of 5 translates to 0.0208333<br />
<br />
* Do not use the brackets when issuing a command. <br />
**"/vt opt set DoJiggle true"<br />
**"/vt opt set AttackDistance 0.0208333"<br />
<br />
<br />
==Misc==<br />
<br />
'''AutoCram [true/false]''': Moves items from the main pack to side packs<br />
<br />
'''AutoStack [true/false]''': Stacks items towards the bottom-most item in the pack, and into side packs. This means that the partial stack of an item will always be the top-most one in your inventory, which is the order that the game burns components. This prevents having to stack every spell cast, and prevents stacking from pulling items from side packs.<br />
<br />
'''RandomHelperBuffs [true/false]''': Casts random buffs on nearby players<br />
<br />
'''RandomHelperIntervalSeconds [##]''': Sets the timer for RandomHelperBuffs in seconds. <br />
<br />
'''IdlePeaceMode [true/false]''': Loots, navigates, and salvages in peace mode. <br />
<br />
'''StopMacroOnDeath [true/false]''': Causes the macro to become disabled when the character dies<br />
<br />
'''RefillWornMana [true/false]''': Uses mana charge types specified in the Consumables panel to refill worn items<br />
<br />
'''RefillWornMana-Item-ManaPercent [##]''': Sets the minimum percentage of mana left on an item at which to refill<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''ManaChargesWhenOff [true/false]''': When true, mana charges and stones are used to keep equipped mana filled even when the macro is disabled<br />
<br />
'''AutoFellowManagement [true/false]''': When true, automatically recruits players on request, and manages waiting lists and votes when acting as the fellowship leader (See [[Virindi Tank Fellowship Commands]])<br />
<br />
'''DeleteGhostMonsters [true/false]''': Attempts to detect when monsters appear to be there but really do not exist, and signals the client to delete them<br />
<br />
'''GhostMonsterSpellAttemptCount [##]''': The number of times the macro must attempt to cast a spell on a monster, without the spell starting, before the monster is marked as ghost<br />
<br />
'''WhoYouGonnaCall [true/false]''': No Function<br />
<br />
'''BlacklistMonsterAttemptCount [##]''': The number of successful attacks that must miss a target before it is blacklisted<br />
<br />
'''BlacklistMonsterTimeoutSeconds [##]''': The amount of time a monster is blacklisted for being unhittable<br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method to force the deletion of ghost monsters which works for melee, missile and mage attacks.<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''EnableMeta [true/false]''': Enables meta<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''BlacklistCorpseOpenAttemptCount [##]''': The number oftimes the macro must attempt to open a corpse before it is blacklisted.<br />
<br />
'''BlacklistCorpseOpenTimeoutSeconds [##]''': The number of seconds an unopenable corpse is blacklisted for<br />
<br />
<br />
==Recharge==<br />
<br />
'''Recharge-Norm-HitP [##]''': Sets the percentage at which the macro will Heal during combat<br />
<br />
'''Recharge-Norm-Stam [##]''': Sets the percentage at which the macro will Re-stam during combat<br />
<br />
'''Recharge-Norm-Mana [##]''': Sets the percentage at which the macro will get Re-mana during combat<br />
<br />
'''Recharge-NoTarg-HitP [##]''': Sets the percentage to which the macro will Heal when Idle<br />
<br />
'''Recharge-NoTarg-Stam [##]''': Sets the percentage to which the macro will Re-stam when Idle<br />
<br />
'''Recharge-NoTarg-Mana [##]''': Sets the percentage to which the macro will Re-mana when Idle<br />
<br />
'''Recharge-Helper-HitP [##]''': Sets the percentage at which the macro will Heal a fellow<br />
<br />
'''Recharge-Helper-Stam [##]''': Sets the percentage at which the macro will give stamina to a fellow<br />
<br />
'''Recharge-Helper-Mana [##]''': Sets the percentage at which the macro will give mana to a fellow<br />
<br />
'''DoHelp [true/false]''': If true, allies are healed/restamed/given mana. The fellowship window must be open to help fellows (or be in a [[Virindi Integrator 2]] fellowship)<br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows<br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows<br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows<br />
<br />
'''CastDispelSelf [true/false]''': Casts dispel life magic self VII when the macro has a vuln on it<br />
<br />
'''UseDispelItems [true/false]''': Uses either a Gem of Stillness or a Condensed Dispel Potion when the macro has a vuln on it<br />
<br />
'''UseDispelDrum [true/false]''':<br />
<br />
'''UseHealersHeart [true/false]''': When set to true and you have a healer's heart in your item list, the macro uses it for Helper<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up.<br />
<br />
'''RechargeBoostTimeSeconds [##]''': Maximum time for the recharge boost effect to last. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''RechargeBoostAmount [##]''': Number of h/s/m points used for recharge boost. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''MinimumHealKitSuccessChance [##]''': The lowest chance of success, in percent, that the macro will accept when attempting a heal with a health kit <br />
<br />
'''UseKitsInMagicMode [true/false]''': When true, the macro uses available healing kits to heal while in magic mode (with a higher priority than spells)<br />
<br />
'''StaminaToHealthMultiplier [##]''': For a Stamina to Health spell to be used, it must be this much better than a normal healing spell<br />
<br />
'''ManaToHealthMultiplier [##]''': For a Mana to Health spell to be used, it must be thism uch better than a normal healing spell<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''ClearLevelBoostFlagOnCast [true/false]''': When true, RechargeBoost only applies to the first spell cast after switching to magic mode<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
==Melee Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/Disable Combat<br />
<br />
'''DefaultMeleeAttackHeight [1/2/3]''': Sets the default melee attack height. 1 = high, 2 = mid, 3 = low<br />
<br />
'''TargetLock[true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range<br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority<br />
<br />
'''AutoAttackPower [true/false]''': When true, the macro sets melee attack power automatically based on the weapon damage type<br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonsterByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''UseRecklessness [true/false]''': When true, attacks using recklessness if available.<br />
<br />
<br />
==Spell Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/disable Combat<br />
<br />
'''SpellDiffExcessThreshold-Hunt [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]] A positive number raises the skill necessary to cast spells, a negative number lowers it. To attempt higher spells at a low level use a negative number. <br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells<br />
<br />
'''MinimumRingTargets [##]''': The minimum amount of targets necesary within RingDistance for the macro to cast ring spells<br />
<br />
'''SwitchWandToDebuff [true/false]''': If enabled, themacro forces a wand switch to the appropriately selected wand for the monster, even to debuff it. Without this setting, wands are only switched when a war attack is required<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up. <br />
<br />
'''DoJiggle [true/false]''': Secret spell dodge mode<br />
<br />
'''TargetLock [true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead <br />
<br />
'''UseArcs [true/false]''': Arc war spells are used rather than bolts, if both are known for the best level the macro is able to cast<br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority <br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks <br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''DebuffPrecastSeconds [##]''': The number of seconds before a target's debuff is set to expire before the macro will want to recast it. Does not apply to DoT spells.<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''SummonPets [true/false]''': When enabled, the macro summons pets if available and listed in items.<br />
<br />
'''PetRangeMode [0/1]''': Determines what monster range is used when summoning a combat pet. 0 = AttackDistance, 1 = PetCustomRange<br />
<br />
'''PetCustomRange [##]: Custom settings for PetRange. <br />
<br />
'''PetRefillCount-Idle [##]''': If a pet summon item has this many charges or fewer, it will be refilled when idle.<br />
<br />
'''PetRefillCount-Normal [##]''': If a pet summon item has this many charges or fewer, it will be refilled in combat.<br />
<br />
'''PetMonsterDensity [##]''': The minimum number of monsters (configured for summon) that must be in pet range before a pet is summoned.<br />
<br />
==Ranges==<br />
<br />
'''AttackDistance [##]''': Sets the maximum attack distance. Controlled by Monster Range on the [[Virindi Tank Standard Options]]<br />
<br />
'''AttackMinimumDistance [##]''': Sets the minimum attack distance. Default is 0.<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance<br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting<br />
<br />
'''CorpeApproachRange-Min [##]''': The minimum approach distance for corpse looting<br />
<br />
'''NavCloseStopRange [##]''': Follow/Nav Min<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''': <br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows <br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows <br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows <br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells <br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door<br />
<br />
'''DoorOpenRange [##]''': The distance at which the macro attempts to open doors<br />
<br />
==Navigation==<br />
<br />
'''EnableNav [true/false]''': Enable/Disable Navigation<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting <br />
<br />
'''CorpseApproachRange-Min [##]''': The minimum approach distance for corpse looting <br />
<br />
'''NavCloseStopRange [##]''':<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''':<br />
<br />
'''CorpseCacheTimeoutMinutes [##]''': The time in minutes after which a corpse will be removed from the corpse cache<br />
<br />
'''OpenDoors [true/false]''': When True, will cause the macro to open doors within range<br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door <br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficuty that is required for a door to be considered pickable<br />
<br />
'''NavPriorityBoost [true/false]''': Causes the macro to navigate before attacking<br />
<br />
'''FollowAroundCorners [true/false]''': When following a character, if True the follower runs the exact route as leader, if False the follower runs directly at the leader.<br />
<br />
==Buffing==<br />
<br />
'''EnableBuffing [true/false]''': Turns on Buffing<br />
<br />
'''SpellDiffExcessThreshold-Buff [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]]<br />
<br />
'''IdleBuffTOpoff [true/false]''': When the macro is idle, it recasts buffs<br />
<br />
'''IdleBuffTopoffTimeSeconds [##]''': Sets the time left on buffs to begin an IdleBuffTopOff<br />
<br />
'''RebuffTimeRemainingSeconds [##]''': Sets the time left on buffs to rebuff normally<br />
<br />
'''BuffProfile_Prots''': Specifies which self prots are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffProfile_Banes''': Specifies which self banes are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffCastRecast_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
'''BuffCastRecastReset_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
<br />
==Crafting==<br />
<br />
'''ArrowheadFletchDiffExcessTheshold [##]''': <br />
<br />
'''AutoCraftItems [true/false]''': When enabled, the macro crafts known components that result in items in the Consumables panel, if your character has none. For instance, this allows the macro to create blue kits out of bobo comps if "Plentiful Healing Kit" is listed in the Consumables panel<br />
<br />
'''SplitPeas [true/false]''': Specifies if the macro should automatically split peas. Components you would like to keep supplied by splitting peas should be add to your Consumables panel.<br />
<br />
'''SpellCompMin-Critical [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Critical" splitting is higher priority than healing<br />
<br />
'''SpellCompMin-Normal [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Normal" splitting has a lower priority than normal buffing<br />
<br />
'''SpellCompMin-Idle [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Idle" spltting is only done when idle<br />
<br />
'''UseSpecialAmmo [0/1/2/3]''': Specifies whether the macro should craft and use special ammunition types. "Raider" indicates Raider Lightning ammo, and "SCurrency" indicates ammo from Colosseum, Graveyard, and Paradox-touched Olthoi Infested Area. 0 = None, 1 = Raider, 2 = SCurrency, 3 = Both<br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficulty that is required for a door to be considered pickable<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
<br />
==Looting==<br />
<br />
'''EnableLooting [true/false]''': Enable/Disable Looting<br />
<br />
'''ReadUnknownScrolls [true/false]''': Loots and reads unknown scrolls (looting must be enabled) See [[Virindi_Tank_FAQ#Why_are_some_unknown_scrolls_looted_and_not_others?|here]] <br />
<br />
'''LootAllCorpses [true/false]''': Causes the macro to loot corpses killed by neither you nor your fellows<br />
<br />
'''LootFellowCorpses [true/false]''': Causes the macro to loot the corpses killed by your fellows<br />
<br />
'''LootPriorityBoost [true/false]''': When true, corpses are looted before attacking monsters<br />
<br />
'''CorpseItemAppearanceTimeoutSeconds [##]''': The time in seconds the macro will wait for all items on a corpse to appear<br />
<br />
'''CorpseItemIDTimeoutSeconds [##]''': The time in seconds the macro will wait for all the needed items on a corpse to be ID'd<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''CombineSalvage [true/false]''': When true and looting is enabled, salvage bags are combined according to the range specified by the current loot profile<br />
<br />
'''LootOnlyRareCorpses [true/false]''': When true, only rare-generating corpses are looted<br />
<br />
'''CorpseOpenTimeoutSeconds [##]''': Time after trying to open a corpse before the macro will retry<br />
<br />
'''CorpseLootItemMaxAttempts [##]''': Number of attempts to loot an item before blacklisting.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Views&diff=1538Virindi Views2016-02-26T21:20:21Z<p>The Guru: /* Plugins currently known to support Virindi Views */</p>
<hr />
<div>Virindi Views is a Decal service that provides an alternative to the builtin Decal windowing system, for plugins that support it.<br />
<br />
Virindi Views supports [[Virindi Views#Themes|window themes]], custom titlebar buttons, low-level HUD drawing in derived controls, window resizing, multiple windows displayed at once, partial and whole-window transparency, font shadowing, window decoration hiding, tooltips, and dynamic control addition/deletion. It renders directly to managed DirectX textures, giving impressive framerate performance and a high degree of control to implementing plugins. In addition to low-level drawing options, many optional high-level drawing controls are provided.<br />
<br />
Plugins built on Virindi Views can optionally use the [[Virindi View Service Connector]], an abstraction layer which allows them to fall-back to using Decal windows if Virindi Views are not available.<br />
<br />
Virindi Views is a part of the [[Virindi Plugin Bundle]].<br />
<br />
Like all Virindi Plugins Bundle components, Virindi Views is currently under development. Virindi Views is written in C# .NET 2.0.<br />
<br />
For support, please visit the [http://forums.decaldev.com/phpBB2/ Decal Boards].<br />
<br />
Source code to aid plugin developers in using Virindi Views is located in the [http://www.virindi.net/repos/virindi_public/trunk/ViewServiceConnector/ Virindi Public Repository].<br />
<br />
[[Known Bugs In Virindi Plugins]]<br />
<br />
=== Plugins currently known to support Virindi Views ===<br />
* [[Virindi Tank]]<br />
* [[Virindi Integrator 2]]<br />
* [[Virindi Reporter]]<br />
* [[Virindi Chat System 5]]<br />
* [[Virindi XPHelper]]<br />
* [[Virindi Item Tool]]<br />
* [[Virindi HUDs]]<br />
* [[Virindi OCS]]<br />
* [[Virindi Hotkey System]]<br />
* [[Virindi Sense]]<br />
* [[Virindi Window Tool]]<br />
* [[Virindi Global Inventory]]<br />
* [[Virindi Armor Color Tool]]<br />
* [[SkunkVision VVS Edition]] (Originally written by [http://sourceforge.net/projects/skunkworks GKusnick], ported to VVS by Virindi)<br />
* [[GoArrow (VVS Edition)]] (Originally written by Digero, ported to VVS by Virindi)<br />
* [[SSSort (VVS Edition)]] (Originally written by Digero, ported to VVS by Virindi)<br />
* [http://ac.ranta.info/ScrollReader3 ScrollReader3] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/Screenr Screenr] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/CompHud CompHud] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/ColoHelper ColoHelper] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/DecalDev CovenantAdvisor] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/LockesArmyKnife LockesArmyKnife] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/DecalDev MuleThis] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/Sellvage Sellvage] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/DecalDev StuffExchanger] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://ac.ranta.info/WandMonkey WandMonkey] (By [http://vnboards.ign.com/ASP/pm_send.asp?usr=43194 -Lino-])<br />
* [http://vnboards.ign.com/ac_utilities/b5432/114157061/p1/?1 Rare Exchanger] (By [http://vnboards.ign.com/PrivateMessages/SendMessage.aspx?usr=70706 Paraduck])<br />
* [http://forums.decaldev.com/phpBB2/viewtopic.php?f=18&t=8670 Make It! (Beta version)] (By [http://vnboards.ign.com/PrivateMessages/SendMessage.aspx?usr=150954 Gouru])<br />
* [http://forums.decaldev.com/phpBB2/viewtopic.php?f=18&t=8739 Defective] (By [http://vnboards.ign.com/PrivateMessages/SendMessage.aspx?usr=74558 Hazridi])<br />
* [http://forums.decaldev.com/phpBB2/viewtopic.php?f=18&t=8670 Hex] (By [http://vnboards.ign.com/PrivateMessages/SendMessage.aspx?usr=74558 Hazridi])<br />
* [http://magtools.codeplex.com/ Mag-tools] (By [http://vnboards.ign.com/PrivateMessages/SendMessage.aspx?usr=1427568 Mag-nus])<br />
* [http://www.smithers.co.za/Decal/ Target Hud] (By [http://forums.decaldev.com/phpBB2/memberlist.php?mode=viewprofile&u=4815 Baskill])<br />
* [http://www.smithers.co.za/Decal/ ShoppingCart] (By [http://forums.decaldev.com/phpBB2/memberlist.php?mode=viewprofile&u=4815 Baskill])<br />
* [http://asheron.aetherific.com/Octagram Octagram] (By [http://forums.ac.turbine.com/member.php?u=75171 Irquk])<br />
* [http://asheron.aetherific.com/GearFoundry GearFoundry] (By [http://forums.ac.turbine.com/member.php?u=75171 Irquk])<br />
* [http://www.asheronscall.net/ CommanderRadar] (By Mania)<br />
* [http://www.asheronscall.net/ Scrolls] (By Mania)<br />
* [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=282 ChaosHelper] (By Invisible Fire of MT)<br />
* [http://www.immortalbob.com/phpBB3/viewtopic.php?f=25&t=298 RareHunter] (By Invisible Fire of MT)<br />
<br />
=== Themes ===<br />
<br />
As of Virindi Views 1.0.0.22, XML-based user themes are supported. This means that anyone can create a complete custom skin for Virindi Views.<br />
<br />
Custom themes are installed by placing the theme XML and associated files in the Virindi Views install directory. Note: A restart of the AC client is required both 1) when you place a new theme in the Virindi Views directory and 2) if you make a change to the theme.<br />
<br />
Available themes:<br />
* [[:file:VVSTheme_ExampleXMLThemes_GoofyWhite.zip|ExampleXMLThemes_GoofyWhite]] ([[:image:Vvsthemeviewerscreenshot.png|Screenshot]])<br />
<br />
See [[Virindi Views XML Theme Development]] for further details.<br />
<br />
=== Disabling Virindi Views ===<br />
<br />
In case of issues, Virindi Views can be disabled in Decal. To do so, open the Decal Agent (the Decal icon in the system tray), scroll down to 'Services', and uncheck 'Virindi View Service'.<br />
<br />
=== Uninstalling ===<br />
<br />
WARNING: do not simply delete the VVS install directory. Decal expects all enabled services to load properly. If a service fails to start, Decal will not load.<br />
<br />
To properly uninstall Virindi Views, the Decal service entry must be removed from the registry. A program which does this for you is [http://www.virindi.net/junk/VVS_Clean.zip here] (run it as administrator on Windows Vista/7). After VVS has been removed from the registry, you may safely delete the VVS install directory (default is ''c:\Program Files\VirindiPlugins\Virindi View Service'' on Windows XP, or ''c:\games\VirindiPlugins\Virindi View Service'' on Windows Vista/7).<br />
<br />
=== Advanced tweaking ===<br />
<br />
For users who wish to use ''only'' VVS-compatible plugins (or plugins which have no icon in the Decal bar, such as [[AC+]]), the regular Decal bar can be disabled, further improving game performance. To do this open Decal, click options, and check 'Disable View Rendering'.<br />
<br />
Note: with Decal windows disabled, Decal View plugins still run, you just can't access their UIs. Decal HUDs also still draw.<br />
<br />
=== Screenshot ===<br />
<br />
[[image:Pack1.png]]</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Public_Meta_Repository&diff=1537Public Meta Repository2016-02-26T21:03:00Z<p>The Guru: </p>
<hr />
<div><b>Disclaimer: Use at your own risk. The authors take no responsibility for any effect on your characters. Read all instructions before starting.</b><br />
<br />
To install a meta:<br />
<br />
1. Download the meta<br />
<br />
2. If contained within a .zip, extract to your Virindi Tank folder (typically C:\Games\VirindiPlugins\VirindiTank)<br />
<br />
3. All .met .usd and .utl files must be placed in your Virindi Tank folder. (Unless the Help.txt states otherwise, as for mag-tools buy/sell profiles)<br />
<br />
4. Type /vt refresh in AC - the Profiles tab drop-down lists will repopulate with the new files. There is no need to relog. <br />
<br />
5. Read the included help file if available. <br />
<br />
<br />
Many of the public metas require a current version of [http://magtools.codeplex.com Mag-Tools]<br />
<br />
Visit the [http://immortalbob.com/phpBB3/ Community Support forum] for help with your meta, a meta on the wiki, or to submit a meta to the public repository.<br />
<br><br />
<br />
<br />
<b>First time meta users please visit [http://immortalbob.com/phpBB3/viewtopic.php?f=6&t=39 this thread]</b><br />
<br />
<br />
= Quests =<br />
<b>Please stay at the keys while quest automation is in progress - some states may require player interaction.</b><br />
<br />
<b>It is suggested that you relog prior to using any meta that uses commands related to jumping or handing items to a NPC.</b><br />
<br />
<br />
== Luminance ==<br />
<br />
[[Media:Eihbil.zip|Book of Eihbil]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:Phainor.zip|Count Phainor's Amulet (Graverobber)]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:Deewain.zip|Deewain]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:FalatacotDepot.zip|Falatacot Depot]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:Foundry.zip|Foundry of Izexi]] - By Dmdtt - Help file included<br />
<br />
<br />
-----<br />
[[Media:HermitDW.zip|Hermit's Death Wish]] - By Dmdtt/Furtim - Requires 1.5 follow nav min and Town Network gems <br />
<br />
<br />
-----<br />
[[Media:Society.zip|Society Tasks]] - By Dmdtt - Requires Adept in any society. Help file included.<br />
<br />
<br />
== Non-Luminance ==<br />
<br />
[[Media:AutoColo.zip|Advanced Colo]] - By Dmdtt - Advanced state usage for colosseum navigation. includes general character profile - Read all included instructions before using.<br />
<br />
<br />
-----<br />
<br />
[[Media:AunRalirea.zip|Aun Ralirea]] - By Dmdtt - Runs Hunting Aun Ralirea quest. Character Profile, Loot profile and Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:BellasAug.zip|Bellas Augmentation]] - By Dmdtt - Runs Bellas Augmentation. Loot Profile and Help file Included.<br />
<br />
<br />
-----<br />
<br />
[[Media:Bobo.zip|Bobo]] - By Narzull - Runs Bobo for Blue Kits. Requires Bobo flag prior to running. Starting the meta in default will recall /hom and attempt to use DPD until at Aphus. If you don't have a DPD near your /hom drop, use one until you get to Aphus drop and set the meta to the Waterfall state. If you don't want to automatically attempt blue kits remove the Gotryforkits state.<br />
<br />
<br />
-----<br />
<br />
[[Media:SingFallen.zip|Caul Fallen]] - By Dmdtt - Searches for and kills a Fallen on Singularity Caul. Help file, loot profile, and two macro settings profiles included.<br />
<br />
WARNING - In order to use singularity caul recall you will need to purchase a Carrot.<br />
<br />
<br />
-----<br />
<br />
[[Media:Caul_Rambler.zip|Caul Rambler]] - By Immortalbob - Runs quadrants of the Singularity Caul. Useful for finding rare spawns, fallen's, and completing the Rift Kill Tasks. - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=190 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:Cave_Penguin_Eggs.zip|Cave Penguin Eggs]] - By Immortalbob - Collects Cave Penguin Eggs and turns in to NPC for reward - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=231 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:ChasingOswald.zip|Chasing Oswald]] - By Joxer - Runs the Chasing Oswald quest for extra skill credit. Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:CowTipper.zip|Cow Tipper]] - By Hell's Wrath - Replacement for Khaotipper. Stand in front of Dwennon and start the meta.<br />
<br />
<br />
-----<br />
<br />
[[Media:DiemosFlag.zip|Diemos Flagging]] - By Tacit - Flags for Gladiator Diemos - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=217 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:DyePlant.zip|Dye Plant Collection]] - By Dmdtt - Routes in several locations and collects dye plants using expressions. For a detailed explanation of the expressions used and how to apply them in your own meta visit [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=119 this thread] - Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:EnergyCrystal.zip|Energy Crystal]] - By Hell's Wrath - Runs the Preparation for the Ritus quest for the Energy Crystal. Does <i>not</i> do Bracelet of Dark Essence or the Living Tome (parts 2 and 3). Requires Town Network Portal Gems<br><br />
<i>**Set range/approach to 5 and attack default monsters with auto weapon</i><br />
<br />
<i>Approximate Run-time: 15-20 minutes</i><br />
<br />
<br />
-----<br />
<br />
[[Media:GuardianoftheDeruTrees.zip|Guardian of the Deru Trees of Marae Lassel]] - By Rahmanan - Runs the Guardian of the Deru Tree quest. Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:FetishoftheDarkIdols.zip|Fetish of the Dark Idols]] - By Dmdtt - Runs the Fetish of the Dark Idols quest. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:SimpleColoByDmdtt.zip|Simple Colo]] - By Dmdtt - Route through arena, ring bell, turn in after runs, position at door and rebuff. Does not include character profiles. Trigger start by handing in a Colo Ticket. Commands are !buff and !cancelbuff. <br />
<br />
<br />
-----<br />
<br />
[[Media:SkillTemples.zip|Skill Temples]] - By Joxer - Navigates to either the Temple of Enlightenment or Temple of Forgetfulness. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:StonedWrits.zip|Stoned Writs]] - By Strider - Collects elemental stones to turn in for writs. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:Bellenesse.zip|Sword of Bellenesse]] - By Joxer - Runs the Sword of Bellenesse quest, excluding shields. Requires TN portal gems. Say !start in fellowship chat to begin.<br />
<br />
<br />
-----<br />
<br />
[[Media:TownStamp.zip|Town Stamps]] - By Joxer - Requires TN portal gems. Say !start to begin.<br />
<br />
<br />
-----<br />
<br />
[[Media:TumerokMeats.zip|Tumerok Salted Meats]] - By Hell's Wrath - Renegade Bone Charm quest for salted meats. Requires auto loot chests on, tumerok salted meats in loot profile, and town network portal gems. Trigger the meta by portaling in to Tufa.<br />
<br />
<br />
-----<br />
<br />
[[Media:VirindiSpells.zip|Virindi Spells]] - By Hell's Wrath - Runs the Virindi Spells quest for Dark Flame, Arcane Restoration, and Unnatural Persistence. Requires Town Network Portal Gems. Start the meta in an open area.<br><br />
<i>**Set range/approach to 5 and attack default monsters with auto weapon</i><br />
<br />
<i>You will not receive a scroll to use after turn-in. The spells appear automatically in your spellbook.</i><br />
<br />
<br />
<i> Approximate Run-time: 10 minutes </i><br />
<br />
<br />
-----<br />
<br />
[[Media:WhisperingBladeMetaPack.zip|Whispering Blade Series MetaPack]] - By Hell's Wrath - Requires Town Network Portal Gems.<br />
<br />
<i>**Set your range/approach to 5 and attack default monsters with auto weapon</i><br><br />
<i>**Must have an empty ring slot for quest 5</i><br><br />
<br />
- [[Media:DericostRuin.zip|Dericost Ruin]] - The first quest in the Whispering Blade series. Say !start at Westwatch portal drop. <br />
<br />
- [[Media:KnightsOfKarlun.zip|Knights of Karlun]] - The second quest in the Whispering Blade series. Will trigger automatically upon completion of Dericost Ruin.<br />
<br />
- [[Media:MaraudersLair.zip|Marauder's Lair]] - The third quest in the Whispering Blade series. Will trigger automatically upon completion of Knights of Karlun.<br />
<br />
- [[Media:ShadeIron.zip|Shade Iron]] - The fourth quest in the Whispering Blade series. Will trigger automatically upon completion of Marauder's Lair<br />
<br />
- [[Media:WBChapterhouse.zip|Whispering Blade Chapterhouse Access]] - The fifth quest in the Whispering Blade series. Will trigger automatically upon completion of Shade Iron. <br />
<br />
- [[Media:WhisperingBladeLoot.zip|Loot profile]] - Loot profile if downloading individually.<br />
<br />
<i>Approximate Run-time: 75 minutes</i><br />
<br />
<br />
= Tools/Other =<br />
<br />
<br />
[[Media:LegendKeys.zip|Arwic AutoChest]] - By Hell's Wrath - Attempts to loot the arwic chests. Requires Mag-Tools Auto Loot Chests ON and a Legendary Loot profile loaded in Vtank.<br />
<br />
Stand directly in front of a chest and select it<br />
<br />
Turn Vtank and Meta On<br />
<br />
Place the meta in the "Check" state (dropdown at bottom of meta tab)<br />
<br />
<br />
-----<br />
<br />
[[Media:ArwicAutoSalvage.zip|Arwic AutoSalvage]] - By Hell's Wrath - Mod of the AutoChest meta. Attempts to loot and salvage from the arwic chests. Requires "L" as VHS hotkey for LootThisCont. Help file included.<br />
<br />
Stand directly in front of a chest and select it<br />
<br />
Turn Vtank and Meta On<br />
<br />
Place the meta in the "Check" state (dropdown at bottom of meta tab)<br />
<br />
<br />
-----<br />
<br />
[[Media:DerethNavigation.zip|Dereth Navigation]] - By Immortalbob - Utilizes portal routes/recall spells to navigate multiple characters. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:BellasAutobot.zip|Bellas AutoBot]] - By Olorin the Istari of HG - Meta Add-on for Ting's Portalbot - Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:ManaForge.zip|Mana Forge AutoChest]] - By Hell's Wrath - Attempts to loot the Mana Forge chests. Requires Mag-Tools Auto Loot Chests on and a Loot profile loaded. Must use default keyboard configuration.<br />
<br />
Stand directly in front of a chest and select it <i>(you must keep the chest selected during looting</i>)<br />
<br />
Turn Vtank and Meta On<br />
<br />
Place the meta in the "Check" state<br />
<br />
<br />
-----<br />
<br />
[[Media:MetaPortal.zip|MetaPortal]] - By Hell's Wrath - Simple portal bot. Help file included. <br />
<br />
<br />
-----<br />
<br />
[[Media:OlthoiSoldier.zip|Olthoi Soldier]] - By Hell's Wrath - Allows you to hunt as an Olthoi Soldier and collect Slag. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:Rare_Exchanger.zip|Rare Exchanger]] - By Immortalbob - Exchanges Rares at the Casino - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=262 Instructions]<br />
<br />
<br />
-----<br />
<br />
[[Media:SpellResearch.zip|Spell Research]] - By Hell's Wrath - Level 8 component combiner. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:StipendCollection.zip|Stipend Collection]] - By Narzull - Relogs all characters on account and collects stipend. Multiple metas. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:StipendsIB.zip|Stipends]] - By Immortalbob - Single meta stipend collection for multiple accounts - [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=260 Instructions]<br />
<br />
<br />
<br />
= Multi-Char Control =<br />
<br />
Check out [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=282 Chaos Helper] for customizable HUDS to issue commands. <br />
-----<br />
<br />
<br />
[[Media:ChaosControlv2.zip|ChaosControl v2]] - By Hell's Wrath - Control meta to manipulate followers with a manual leader. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:ChaosCommandv2.zip|ChaosCommand]] - By Hell's Wrath - Companion meta for ChaosControl. Run on leader and issue chat commands by hotkey. Help file included.<br />
<br />
<br />
-----<br />
<br />
[[Media:DmdttControl.zip|DmdttControl]] - By Dmdtt - Control meta to manipulate followers with a manual leader. Help File Included.<br />
<br />
<br />
-----<br />
<br />
[[Media:IBControl1.1.2.zip|IBControl v1.1.2]] - By Immortalbob - Control meta, ChaosHelper layouts included. [http://www.immortalbob.com/phpBB3/viewtopic.php?f=6&t=291 Help thread]<br />
<br />
<br />
<br />
= Retired / Old =<br />
<br />
<br />
[[Media:GiftBoxes.zip|Gift Boxes 2013]] - By Dmdtt - Routes to all 12 Gift Boxes - Help file included<br />
<br />
<br />
-----<br />
<br />
[[Media:PackageDelivery.zip|Package Delivery]] - By Dmdtt - Requires 5 TN gems, ability to cast portal recall and pass level requirements for all associated portals.<br />
<br />
<br />
-----<br />
Report any issues to the author.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=File:DiemosFlag.zip&diff=1536File:DiemosFlag.zip2016-02-26T20:59:26Z<p>The Guru: tacit of mt</p>
<hr />
<div>tacit of mt</div>The Guruhttp://white.virindi.net/wiki/index.php?title=File:Caul_Rambler.zip&diff=1535File:Caul Rambler.zip2016-02-26T20:55:55Z<p>The Guru: </p>
<hr />
<div></div>The Guruhttp://white.virindi.net/wiki/index.php?title=File:Cave_Penguin_Eggs.zip&diff=1534File:Cave Penguin Eggs.zip2016-02-26T20:52:39Z<p>The Guru: </p>
<hr />
<div></div>The Guruhttp://white.virindi.net/wiki/index.php?title=File:StipendsIB.zip&diff=1533File:StipendsIB.zip2016-02-26T20:46:48Z<p>The Guru: Stipend meta by Immortalbob</p>
<hr />
<div>Stipend meta by Immortalbob</div>The Guruhttp://white.virindi.net/wiki/index.php?title=File:Rare_Exchanger.zip&diff=1532File:Rare Exchanger.zip2016-02-26T20:42:19Z<p>The Guru: Rare exchanger meta</p>
<hr />
<div>Rare exchanger meta</div>The Guruhttp://white.virindi.net/wiki/index.php?title=File:IBControl1.1.2.zip&diff=1531File:IBControl1.1.2.zip2016-02-26T20:38:37Z<p>The Guru: Immortalbob multi-char control meta</p>
<hr />
<div>Immortalbob multi-char control meta</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1530Meta Expressions2016-02-16T23:43:24Z<p>The Guru: /* Object Properties */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 48 meta functions.<br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0<br />
</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
'''Parameter count''': 1<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraManaInfusion<br />
|340<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1529Meta Expressions2016-02-16T21:46:29Z<p>The Guru: /* Examples */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 48 meta functions.<br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0<br />
</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
'''Parameter count''': 1<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal:'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory:'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected:'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable:'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
<br />
'''Check if your luminance is full (1.5mil):'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Meta_Expressions&diff=1528Meta Expressions2016-02-16T21:45:31Z<p>The Guru: /* Examples */</p>
<hr />
<div>These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.<br />
<br />
This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool. <br />
<br />
<br />
There are two ways to use Expressions, your situation will determine the best choice.<br />
<br />
The first is through sending the command like any other chat command. Ex: "/vt mexec [expression]". This can be useful if you want to issue the command without using a meta rule, or simply want to test an expression without using meta.<br />
<br />
<br />
The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.<br />
<br />
The "Expression" meta condition is like any other meta condition, if the parameters are met then it will initiate the action. You can use this to detect world objects, character properties, react to custom variables and more.<br />
<br />
The "Expression Action" meta action initiates the expression written within.<br />
<br />
The "Expression Chat" meta action is used to output expression strings to chat. You can use regex and meta functions to format an expression. When outputting numbers from a variable you must first convert it to a string.<br />
<br />
<br />
== Notes ==<br />
* true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.<br />
* There are two extra operators added since [[Virindi Tank Monster List Matching|monster expressions]]: the ^ (xor) operator, and the ; operator. The ; operator works on any two types and simply returns the value of the first one. It has the lowest possible precedence. The idea is to use it to string together commands when you don't care about the result.<br />
* Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.<br />
* Set variables persist until cleared by a command or until relog.<br />
* Formatting during the conversion of number to string is a string like this: http://msdn.microsoft.com/en-us/library/kfsatb94%28v=vs.110%29.aspx<br />
* All operator characters which occur in a string must be escaped with \<br />
* All numbers in a string must also be escaped.<br />
<br />
<br />
== Function Information ==<br />
<br />
Expand to view details and available examples.<br />
<br />
There are currently 48 meta functions.<br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''testvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Tests if a meta variable is defined. Returns true if it is, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to test<br />
<br />
'''Example''': ''testvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the value of a meta variable, or false if it is not defined. <br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to get<br />
<br />
'''Example''': ''getvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''setvar[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (String)''': The variable name to set<br />
<br />
'''Example''': variables can be strings or integers<br />
<br />
''setvar[exampleVar, variable]''<br />
<br />
''setvar[exampleVar, 1]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''touchvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Sets the value of a meta variable to false if the variable was previously undefined. Returns true if the variable was previously defined, or false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to touch<br />
<br />
'''Example''': ''touchvar[exampleVar]</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearallvars[]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines all meta variables.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''clearvar[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Undefines a single meta variable. Returns true if the variable was previously defined, otherwise false.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The variable name to clear<br />
<br />
'''Example''': ''clearvar[exampleVar]''</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharintprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character intvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': IntValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getchardoubleprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character doublevalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': DoubleValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharquadprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character quadvalue property, or false if the property is not defined. Because expression variables are doubles, precision will be lost if the value is greater than 2^53-1 (~9 quadrillion)<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': QuadValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharboolprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character boolvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': BoolValueKey property id</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getcharstringprop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a character stringvalue property, or false if the property is not defined.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': StringValueKey property id.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayerlandcell[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the landcell the player is currently standing in as a number, including the landblock portion<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getplayercoordinates[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the global 3d coordinates for the player's current location, based on the game physics prediction model. Returns a coordinates object.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetns[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the north/south portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetwe[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the west/east portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinategetz[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the z (vertical) portion of a coordinates object as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatetostring[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the the string representation of a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Coordinates)''': The coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinateparse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Builds a coordinates object from a string. It should be of the form '00.0N, 00.0W'. Z coordinates are not specified. Returns false in case of parse failure.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The coordinates string.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistancewithz[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 3d distance between two coordinates. The result is a number specified in meters.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''coordinatedistanceflat[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the 2d distance between two coordinates. The result is a number specified in meters. Z coordinates are ignored.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Coordinates)''': The first coordinates object.<br />
<br />
'''Param 1 (Coordinates)''': The second coordinates object.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetphysicscoordinates[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Queries the game's physics prediction model for the coordinates of a given object. Returns a coordinates object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the name string for a given world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the objectclass for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgettemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the game template type for a given world object, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetisdooropen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the a boolean indicating if a door object is open.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The door world object to examine.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestmonster[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest monster, or false if no monsters are visible. Ignores blacklisted monsters.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestdoor[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest door, or false if no doors are visible.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/door.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindnearestbyobjectclass[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the nearest object of a given class number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The objectclass number to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybytemplatetype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given template type number, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The template type number to look for.<br />
<br />
'''Example''': http://www.virindi.net/junk/expr-usingtemplates.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybyname[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectfindininventorybynamerx[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the first inventory object of a given name regex, or false if no matching objects are visible.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The item name to look for. This parameter is a regex.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetselection[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the selected object, or false if nothing is selected.<br><br />
<br />
'''Parameter count''': 0</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''wobjectgetplayer[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a world object for the player.<br />
<br />
'''Parameter count''': 0<br />
</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryselect[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to select a world object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to select.<br />
<br />
'''Example''': http://www.virindi.net/junk/select.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryuseitem[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object by itself (like a potion or door).<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (WorldObject)''': The world object to attempt to use.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''actiontryapplyitem[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Attempts to use a world object on another world object. Returns false if failed and true if the attempt could possibly succeed.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (WorldObject)''': The world object to use first.<br />
<br />
'''Param 1 (WorldObject)''': The world object to be used on.</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''isfalse[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with value 0 (false). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''istrue[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Takes any type and returns true if and only if it is a number with a value other than 0 (true). Returns false otherwise.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''iif[3]'''<br />
<div class="mw-collapsible-content">'''Description''': Examines the first parameter. If it is true, the second parameter is returned. Otherwise, the third parameter is returned. (If the first parameter is not a number, the third parameter is returned.)<br />
<br />
'''Parameter count''': 3<br />
<br />
'''Param 0 (Any)''': The object to examine<br />
<br />
'''Param 1 (Any)''': What to return if the first parameter is true.<br />
<br />
'''Param 2 (Any)''': What to return if the first parameter is not true</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''randint[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns a random integer between min and max<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': Minimum<br />
<br />
'''Param 1 (Number)''': Maximum</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstr[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Number)''': The number to convert</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''strlen[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the number of characters in a string, as a number.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (String)''': The string to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''getobjectinternaltype[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Returns the internal typeid for a given object as a number. Values are: 0=none, 1=number, 3=string, 7=object.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Any)''': The object to examine</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''cstrf[2]'''<br />
<div class="mw-collapsible-content">'''Description''': Converts a number to a string using a specified format.<br />
<br />
'''Parameter count''': 2<br />
<br />
'''Param 0 (Number)''': The number to convert<br />
<br />
'''Param 1 (String)''': The format string to use. See: http://msdn.microsoft.com/en-us/library/kfsatb94.aspx</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchcreate[0]'''<br />
<div class="mw-collapsible-content">'''Description''': Creates and returns a stopwatch object. Counting is not started.<br><br />
<br />
'''Parameter count''': 0<br />
<br />
'''Example''': http://www.virindi.net/junk/stopwatch.jpg</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstart[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to start</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchstop[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Starts counting on a stopwatch. Returns the stopwatch.<br />
'''Parameter count''': 1<br />
'''Param 0 (Stopwatch)''': The stopwatch to stop</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:65%"><br />
'''stopwatchelapsedseconds[1]'''<br />
<div class="mw-collapsible-content">'''Description''': Measures the number of seconds elapsed on a stopwatch.<br />
<br />
'''Parameter count''': 1<br />
<br />
'''Param 0 (Stopwatch)''': The stopwatch to query</div><br />
</div><br />
<br />
== Object Properties ==<br />
[http://pastebin.com/X05rYnYU Vtank Object Prop Enums]<br />
<br />
The following properties have been tested with /vt mexec<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''ObjectClass'''<br />
|<br />
|-<br />
|Unknown<br />
|0<br />
|-<br />
|MeleeWeapon<br />
|1<br />
|-<br />
|Armor<br />
|2<br />
|-<br />
|Clothing<br />
|3<br />
|-<br />
|Jewelry<br />
|4<br />
|-<br />
|Monster<br />
|5<br />
|-<br />
|Food<br />
|6<br />
|-<br />
|Money<br />
|7<br />
|-<br />
|Misc<br />
|8<br />
|-<br />
|MissileWeapon<br />
|9<br />
|-<br />
|Container<br />
|10<br />
|-<br />
|Gem<br />
|11<br />
|-<br />
|SpellComponent<br />
|12<br />
|-<br />
|Key<br />
|13<br />
|-<br />
|Portal<br />
|14<br />
|-<br />
|TradeNote<br />
|15<br />
|-<br />
|ManaStone<br />
|16<br />
|-<br />
|Plant<br />
|17<br />
|-<br />
|BaseCooking<br />
|18<br />
|-<br />
|BaseAlchemy<br />
|19<br />
|-<br />
|BaseFletching<br />
|20<br />
|-<br />
|CraftedCooking<br />
|21<br />
|-<br />
|CraftedAlchemy<br />
|22<br />
|-<br />
|CraftedFletching<br />
|23<br />
|-<br />
|Player<br />
|24<br />
|-<br />
|Vendor<br />
|25<br />
|-<br />
|Door<br />
|26<br />
|-<br />
|Corpse<br />
|27<br />
|-<br />
|Lifestone<br />
|28<br />
|-<br />
|HealingKit<br />
|29<br />
|-<br />
|Lockpick<br />
|30<br />
|-<br />
|WandStaffOrb<br />
|31<br />
|-<br />
|Bundle<br />
|32<br />
|-<br />
|Book<br />
|33<br />
|-<br />
|Journal<br />
|34<br />
|-<br />
|Sign<br />
|35<br />
|-<br />
|Housing<br />
|36<br />
|-<br />
|Npc<br />
|37<br />
|-<br />
|Foci<br />
|38<br />
|-<br />
|Salvage<br />
|39<br />
|-<br />
|Ust<br />
|40<br />
|-<br />
|Services<br />
|41<br />
|-<br />
|Scroll<br />
|42<br />
|-<br />
|CombatPet<br />
|43<br />
|-<br />
| NumObjectClasses<br />
| 44<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharintprop'''<br />
|<br />
|-<br />
|Species<br />
|2<br />
|-<br />
|ContainerSlots<br />
|7<br />
|-<br />
|BurdenUnits<br />
|5<br />
|-<br />
|TotalValue(pyreal)<br />
|20<br />
|-<br />
|SkillCreditsAvail<br />
|24<br />
|-<br />
|Level<br />
|25<br />
|-<br />
|Rank<br />
|30<br />
|-<br />
|Deaths<br />
|43<br />
|-<br />
|DateOfBirth(unix)<br />
|98<br />
|-<br />
|Gender<br />
|11<br />
|-<br />
|Age(seconds)<br />
|125<br />
|-<br />
|XPForVPReduction<br />
|129<br />
|-<br />
|ChessRank<br />
|181<br />
|-<br />
|Heritage<br />
|188<br />
|-<br />
|FishingSkill<br />
|192<br />
|-<br />
|TitlesEarned<br />
|262<br />
|-<br />
|SocRibbonCount(CH)<br />
|287<br />
|-<br />
|SocRibbonCount(WEB)<br />
|288<br />
|-<br />
|SocRibbonCount(RB)<br />
|289<br />
|-<br />
|MeleeMastery<br />
|354<br />
|-<br />
|RangedMastery<br />
|355<br />
|-<br />
|SummoningMastery<br />
|362<br />
|-<br />
|'''Augmentations'''<br />
|-<br />
|Reinforcement of the Lugians<br />
|218<br />
|-<br />
|Bleeargh's Fortitude<br />
|219<br />
|-<br />
|Oswald's Enchantment<br />
|220<br />
|-<br />
|Siraluun's Blessing<br />
|221<br />
|-<br />
|Enduring Calm<br />
|222<br />
|-<br />
|Steadfast Will<br />
|223<br />
|-<br />
|Ciandra's Essence<br />
|224<br />
|-<br />
|Yoshi's Essence<br />
|225<br />
|-<br />
|Jibril's Essence<br />
|226<br />
|-<br />
|Celdiseth's Essence<br />
|227<br />
|-<br />
|Koga's Essence<br />
|228<br />
|-<br />
|Shadow of the Seventh Mule<br />
|229<br />
|-<br />
|Might of the Seventh Mule<br />
|230<br />
|-<br />
|Clutch of the Miser<br />
|231<br />
|-<br />
|Enduring Enchantment<br />
|232<br />
|-<br />
|Critical Protection<br />
|233<br />
|-<br />
|Quick Learner<br />
|234<br />
|-<br />
|Charmed Smith<br />
|236<br />
|-<br />
|Innate Renewal<br />
|237<br />
|-<br />
|Archmage's Endurance<br />
|238<br />
|-<br />
|Enhancement of the Blade Turner<br />
|240<br />
|-<br />
|Enhancement of the Arrow Turner<br />
|241<br />
|-<br />
|Enhancement of the Mace Turner<br />
|242<br />
|-<br />
|Caustic Enhancement<br />
|243<br />
|-<br />
|Fiery Enhancement<br />
|244<br />
|-<br />
|Icy Enhancement<br />
|245<br />
|-<br />
|Storm's Enhancement<br />
|246<br />
|-<br />
|Infused Creature Magic<br />
|294<br />
|-<br />
|Infused Item Magic<br />
|295<br />
|-<br />
|Infused Life Magic<br />
|296<br />
|-<br />
|Infused War Magic<br />
|297<br />
|-<br />
|Eye of the Remorseless<br />
|298<br />
|-<br />
|Hand of the Remorseless<br />
|299<br />
|-<br />
|Master of the Steel Circle<br />
|300<br />
|-<br />
|Master of the Focused Eye<br />
|301<br />
|-<br />
|Master of the Five Fold Path<br />
|302<br />
|-<br />
|Frenzy of the Slayer<br />
|309<br />
|-<br />
|Iron Skin of the Invincible<br />
|310<br />
|-<br />
|Jack of All Trades<br />
|326<br />
|-<br />
|Infused Void Magic<br />
|328<br />
|-<br />
|InfusedVoid<br />
|328<br />
|-<br />
|'''Luminance/Ratings'''<br />
|<br />
|-<br />
|AuraValor<br />
|333<br />
|-<br />
|AuraProtection<br />
|334<br />
|-<br />
|AuraGlory<br />
|335<br />
|-<br />
|AuraTemperance<br />
|336<br />
|-<br />
|AuraAetheria<br />
|338<br />
|-<br />
|AuraManaFlow<br />
|339<br />
|-<br />
|AuraPurity<br />
|342<br />
|-<br />
|AuraCraftsman<br />
|343<br />
|-<br />
|AuraSpecialization<br />
|344<br />
|-<br />
|AuraWorld<br />
|365<br />
|-<br />
|HealBoost Rating(armor/jewelry)<br />
|376<br />
|-<br />
|Vitality Rating(armor/jewelry)<br />
|379<br />
|-<br />
|Total DmgRating<br />
|307 <br />
|-<br />
|Total DmgResist<br />
|308<br />
|-<br />
|Total CritDmg<br />
|314<br />
|-<br />
|Total CritDmgResist<br />
|316<br />
|-<br />
|Total DmgResist from Lum (nali + seer)<br />
|334<br />
|-<br />
|Total CritDmgResist from Lum (nali + seer)<br />
|336<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharquadprop'''<br />
|<br />
|-<br />
|TotalExperience<br />
|1<br />
|-<br />
|UnassignedExperience<br />
|2<br />
|-<br />
|LuminancePointsCurrent<br />
|6<br />
|}<br />
<br />
{| class="mw-collapsible mw-collapsed wikitable" style="width:20%"<br />
|'''getcharstringprop'''<br />
|<br />
|-<br />
|Name<br />
|1<br />
|-<br />
|Title<br />
|5<br />
|-<br />
|FellowshipName<br />
|10<br />
|-<br />
|MonarchName<br />
|21<br />
|-<br />
|Patron<br />
|35<br />
|-<br />
|DateBorn<br />
|43<br />
|-<br />
|MonarchyDescription<br />
|47<br />
|}<br />
<br />
<br />
== Examples ==<br />
<br />
'''Test for proximity to any portal.'''<br />
<br />
coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5<br />
<br />
<br />
'''Check if you have any Aged or Durable Legendary Keys in your inventory.'''<br />
<br />
getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7<br />
<br />
<br />
'''Check if there is any object currently selected.'''<br />
<br />
getobjectinternaltype[wobjectgetselection[]]==7<br />
<br />
<br />
'''Save the selected items name in a variable.'''<br />
<br />
setvar[keyName,wobjectgetname[wobjectgetselection[]]]<br />
<br />
<br />
'''Combine items in inventory by name:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Combine items in inventory by template type:'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]<br />
<br />
Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.<br />
<br />
<br />
'''Select item in inventory by name:'''<br />
<br />
actiontryselect[wobjectfindininventorybyname[itemName]]<br />
<br />
<br />
'''Select Nearest Monster:'''<br />
<br />
actiontryselect[wobjectfindnearestmonster[]]<br />
<br />
<br />
'''Select World Object by ObjectClass:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class<br />
<br />
<br />
'''Select Nearest Vendor:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Select Nearest NPC:'''<br />
<br />
actiontryselect[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest Vendor:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[25]]<br />
<br />
<br />
'''Use Nearest NPC:'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[37]]<br />
<br />
<br />
'''Use Nearest door:'''<br />
<br />
actiontryuseitem[wobjectfindnearestdoor[]]<br />
<br />
<br />
'''Use nearest portal.'''<br />
<br />
actiontryuseitem[wobjectfindnearestbyobjectclass[14]]<br />
<br />
<br />
'''Use a Massive Mana Charge on yourself by name'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]<br />
<br />
<br />
'''Use a Mana Stone on yourself by template type'''<br />
<br />
actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]<br />
<br />
<br />
'''Use inventory item by template type:'''<br />
<br />
actiontryuseitem[wobjectfindininventorybytemplatetype[#]]<br />
<br />
'''Check if your luminance is full (1.5mil)'''<br />
<br />
getcharquadprop[6]==1500000</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Advanced_Options&diff=1525Virindi Tank Advanced Options2016-02-14T19:56:50Z<p>The Guru: </p>
<hr />
<div>The Virindi Tank Advanced Options allow you to tweak specific macro actions<br><br />
Many of the Advanced Options can be set via the ''/vt opt list/set/get'' [[Virindi Tank Commands|chat commands]]<br />
<br />
<br />
''*Note: When viewing individual tabs within the advanced options, several options will appear in multiple locations.<br><br />
''The duplicates are not shown when viewing all tabs at once. Making changes in one location will change it overall. <br />
<br />
<br />
*Ranges are displayed in yards on the main options page. To use /vt opt to change range settings you must use (range/240). A range of 5 translates to 0.0208333<br />
<br />
* Do not use the brackets when issuing a command. <br />
**"/vt opt set DoJiggle true"<br />
**"/vt opt set AttackDistance 0.0208333"<br />
<br />
<br />
==Misc==<br />
<br />
'''AutoCram [true/false]''': Moves items from the main pack to side packs<br />
<br />
'''AutoStack [true/false]''': Stacks items towards the bottom-most item in the pack, and into side packs. This means that the partial stack of an item will always be the top-most one in your inventory, which is the order that the game burns components. This prevents having to stack every spell cast, and prevents stacking from pulling items from side packs.<br />
<br />
'''RandomHelperBuffs [true/false]''': Casts random buffs on nearby players<br />
<br />
'''RandomHelperIntervalSeconds [##]''': Sets the timer for RandomHelperBuffs in seconds. <br />
<br />
'''IdlePeaceMode [true/false]''': Loots, navigates, and salvages in peace mode. <br />
<br />
'''StopMacroOnDeath [true/false]''': Causes the macro to become disabled when the character dies<br />
<br />
'''RefillWornMana [true/false]''': Uses mana charge types specified in the Consumables panel to refill worn items<br />
<br />
'''RefillWornMana-Item-ManaPercent [##]''': Sets the minimum percentage of mana left on an item at which to refill<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''ManaChargesWhenOff [true/false]''': When true, mana charges and stones are used to keep equipped mana filled even when the macro is disabled<br />
<br />
'''AutoFellowManagement [true/false]''': When true, automatically recruits players on request, and manages waiting lists and votes when acting as the fellowship leader (See [[Virindi Tank Fellowship Commands]])<br />
<br />
'''DeleteGhostMonsters [true/false]''': Attempts to detect when monsters appear to be there but really do not exist, and signals the client to delete them<br />
<br />
'''GhostMonsterSpellAttemptCount [##]''': The number of times the macro must attempt to cast a spell on a monster, without the spell starting, before the monster is marked as ghost<br />
<br />
'''WhoYouGonnaCall [true/false]''': No Function<br />
<br />
'''BlacklistMonsterAttemptCount [##]''': The number of successful attacks that must miss a target before it is blacklisted<br />
<br />
'''BlacklistMonsterTimeoutSeconds [##]''': The amount of time a monster is blacklisted for being unhittable<br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method to force the deletion of ghost monsters which works for melee, missile and mage attacks.<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''EnableMeta [true/false]''': Enables meta<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''BlacklistCorpseOpenAttemptCount [##]''': The number oftimes the macro must attempt to open a corpse before it is blacklisted.<br />
<br />
'''BlacklistCorpseOpenTimeoutSeconds [##]''': The number of seconds an unopenable corpse is blacklisted for<br />
<br />
<br />
==Recharge==<br />
<br />
'''Recharge-Norm-HitP [##]''': Sets the percentage at which the macro will Heal during combat<br />
<br />
'''Recharge-Norm-Stam [##]''': Sets the percentage at which the macro will Re-stam during combat<br />
<br />
'''Recharge-Norm-Mana [##]''': Sets the percentage at which the macro will get Re-mana during combat<br />
<br />
'''Recharge-NoTarg-HitP [##]''': Sets the percentage to which the macro will Heal when Idle<br />
<br />
'''Recharge-NoTarg-Stam [##]''': Sets the percentage to which the macro will Re-stam when Idle<br />
<br />
'''Recharge-NoTarg-Mana [##]''': Sets the percentage to which the macro will Re-mana when Idle<br />
<br />
'''Recharge-Helper-HitP [##]''': Sets the percentage at which the macro will Heal a fellow<br />
<br />
'''Recharge-Helper-Stam [##]''': Sets the percentage at which the macro will give stamina to a fellow<br />
<br />
'''Recharge-Helper-Mana [##]''': Sets the percentage at which the macro will give mana to a fellow<br />
<br />
'''DoHelp [true/false]''': If true, allies are healed/restamed/given mana. The fellowship window must be open to help fellows (or be in a [[Virindi Integrator 2]] fellowship)<br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows<br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows<br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows<br />
<br />
'''CastDispelSelf [true/false]''': Casts dispel life magic self VII when the macro has a vuln on it<br />
<br />
'''UseDispelItems [true/false]''': Uses either a Gem of Stillness or a Condensed Dispel Potion when the macro has a vuln on it<br />
<br />
'''UseDispelDrum [true/false]''':<br />
<br />
'''UseHealersHeart [true/false]''': When set to true and you have a healer's heart in your item list, the macro uses it for Helper<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up.<br />
<br />
'''RechargeBoostTimeSeconds [##]''': Maximum time for the recharge boost effect to last. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''RechargeBoostAmount [##]''': Number of h/s/m points used for recharge boost. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''MinimumHealKitSuccessChance [##]''': The lowest chance of success, in percent, that the macro will accept when attempting a heal with a health kit <br />
<br />
'''UseKitsInMagicMode [true/false]''': When true, the macro uses available healing kits to heal while in magic mode (with a higher priority than spells)<br />
<br />
'''StaminaToHealthMultiplier [##]''': For a Stamina to Health spell to be used, it must be this much better than a normal healing spell<br />
<br />
'''ManaToHealthMultiplier [##]''': For a Mana to Health spell to be used, it must be thism uch better than a normal healing spell<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''ClearLevelBoostFlagOnCast [true/false]''': When true, RechargeBoost only applies to the first spell cast after switching to magic mode<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
==Melee Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/Disable Combat<br />
<br />
'''DefaultMeleeAttackHeight [1/2/3]''': Sets the default melee attack height. 1 = high, 2 = mid, 3 = low<br />
<br />
'''TargetLock[true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range<br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority<br />
<br />
'''AutoAttackPower [true/false]''': When true, the macro sets melee attack power automatically based on the weapon damage type<br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonsterByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''UseRecklessness [true/false]''': When true, attacks using recklessness if available.<br />
<br />
<br />
==Spell Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/disable Combat<br />
<br />
'''SpellDiffExcessThreshold-Hunt [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]] A positive number raises the skill necessary to cast spells, a negative number lowers it. To attempt higher spells at a low level use a negative number. <br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells<br />
<br />
'''MinimumRingTargets [##]''': The minimum amount of targets necesary within RingDistance for the macro to cast ring spells<br />
<br />
'''SwitchWandToDebuff [true/false]''': If enabled, themacro forces a wand switch to the appropriately selected wand for the monster, even to debuff it. Without this setting, wands are only switched when a war attack is required<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up. <br />
<br />
'''DoJiggle [true/false]''': Secret spell dodge mode<br />
<br />
'''TargetLock [true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead <br />
<br />
'''UseArcs [true/false]''': Arc war spells are used rather than bolts, if both are known for the best level the macro is able to cast<br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority <br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks <br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''DebuffPrecastSeconds [##]''': The number of seconds before a target's debuff is set to expire before the macro will want to recast it. Does not apply to DoT spells.<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''SummonPets [true/false]''': When enabled, the macro summons pets if available and listed in items.<br />
<br />
'''PetRangeMode [1/2]''': Determines what monster range is used when summoning a combat pet. 1 = AttackDistance, 2 = PetCustomRange<br />
<br />
'''PetCustomRange [##]: Custom settings for PetRange. <br />
<br />
'''PetRefillCount-Idle [##]''': If a pet summon item has this many charges or fewer, it will be refilled when idle.<br />
<br />
'''PetRefillCount-Normal [##]''': If a pet summon item has this many charges or fewer, it will be refilled in combat.<br />
<br />
'''PetMonsterDensity [##]''': The minimum number of monsters (configured for summon) that must be in pet range before a pet is summoned.<br />
<br />
<br />
==Ranges==<br />
<br />
'''AttackDistance [##]''': Sets the maximum attack distance. Controlled by Monster Range on the [[Virindi Tank Standard Options]]<br />
<br />
'''AttackMinimumDistance [##]''': Sets the minimum attack distance. Default is 0.<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance<br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting<br />
<br />
'''CorpeApproachRange-Min [##]''': The minimum approach distance for corpse looting<br />
<br />
'''NavCloseStopRange [##]''': Follow/Nav Min<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''': <br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows <br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows <br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows <br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells <br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door<br />
<br />
'''DoorOpenRange [##]''': The distance at which the macro attempts to open doors<br />
<br />
==Navigation==<br />
<br />
'''EnableNav [true/false]''': Enable/Disable Navigation<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting <br />
<br />
'''CorpseApproachRange-Min [##]''': The minimum approach distance for corpse looting <br />
<br />
'''NavCloseStopRange [##]''':<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''':<br />
<br />
'''CorpseCacheTimeoutMinutes [##]''': The time in minutes after which a corpse will be removed from the corpse cache<br />
<br />
'''OpenDoors [true/false]''': When True, will cause the macro to open doors within range<br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door <br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficuty that is required for a door to be considered pickable<br />
<br />
'''NavPriorityBoost [true/false]''': Causes the macro to navigate before attacking<br />
<br />
'''FollowAroundCorners [true/false]''': When following a character, if True the follower runs the exact route as leader, if False the follower runs directly at the leader.<br />
<br />
==Buffing==<br />
<br />
'''EnableBuffing [true/false]''': Turns on Buffing<br />
<br />
'''SpellDiffExcessThreshold-Buff [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]]<br />
<br />
'''IdleBuffTOpoff [true/false]''': When the macro is idle, it recasts buffs<br />
<br />
'''IdleBuffTopoffTimeSeconds [##]''': Sets the time left on buffs to begin an IdleBuffTopOff<br />
<br />
'''RebuffTimeRemainingSeconds [##]''': Sets the time left on buffs to rebuff normally<br />
<br />
'''BuffProfile_Prots''': Specifies which self prots are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffProfile_Banes''': Specifies which self banes are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffCastRecast_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
'''BuffCastRecastReset_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
<br />
==Crafting==<br />
<br />
'''ArrowheadFletchDiffExcessTheshold [##]''': <br />
<br />
'''AutoCraftItems [true/false]''': When enabled, the macro crafts known components that result in items in the Consumables panel, if your character has none. For instance, this allows the macro to create blue kits out of bobo comps if "Plentiful Healing Kit" is listed in the Consumables panel<br />
<br />
'''SplitPeas [true/false]''': Specifies if the macro should automatically split peas. Components you would like to keep supplied by splitting peas should be add to your Consumables panel.<br />
<br />
'''SpellCompMin-Critical [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Critical" splitting is higher priority than healing<br />
<br />
'''SpellCompMin-Normal [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Normal" splitting has a lower priority than normal buffing<br />
<br />
'''SpellCompMin-Idle [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Idle" spltting is only done when idle<br />
<br />
'''UseSpecialAmmo [0/1/2/3]''': Specifies whether the macro should craft and use special ammunition types. "Raider" indicates Raider Lightning ammo, and "SCurrency" indicates ammo from Colosseum, Graveyard, and Paradox-touched Olthoi Infested Area. 0 = None, 1 = Raider, 2 = SCurrency, 3 = Both<br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficulty that is required for a door to be considered pickable<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
<br />
==Looting==<br />
<br />
'''EnableLooting [true/false]''': Enable/Disable Looting<br />
<br />
'''ReadUnknownScrolls [true/false]''': Loots and reads unknown scrolls (looting must be enabled) See [[Virindi_Tank_FAQ#Why_are_some_unknown_scrolls_looted_and_not_others?|here]] <br />
<br />
'''LootAllCorpses [true/false]''': Causes the macro to loot corpses killed by neither you nor your fellows<br />
<br />
'''LootFellowCorpses [true/false]''': Causes the macro to loot the corpses killed by your fellows<br />
<br />
'''LootPriorityBoost [true/false]''': When true, corpses are looted before attacking monsters<br />
<br />
'''CorpseItemAppearanceTimeoutSeconds [##]''': The time in seconds the macro will wait for all items on a corpse to appear<br />
<br />
'''CorpseItemIDTimeoutSeconds [##]''': The time in seconds the macro will wait for all the needed items on a corpse to be ID'd<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''CombineSalvage [true/false]''': When true and looting is enabled, salvage bags are combined according to the range specified by the current loot profile<br />
<br />
'''LootOnlyRareCorpses [true/false]''': When true, only rare-generating corpses are looted<br />
<br />
'''CorpseOpenTimeoutSeconds [##]''': Time after trying to open a corpse before the macro will retry<br />
<br />
'''CorpseLootItemMaxAttempts [##]''': Number of attempts to loot an item before blacklisting.</div>The Guruhttp://white.virindi.net/wiki/index.php?title=Virindi_Tank_Advanced_Options&diff=1524Virindi Tank Advanced Options2016-02-14T19:55:18Z<p>The Guru: /* Navigation */</p>
<hr />
<div>The Virindi Tank Advanced Options allow you to tweak specific macro actions<br><br />
Many of the Advanced Options can be set via the ''/vt opt list/set/get'' [[Virindi Tank Commands|chat commands]]<br />
<br />
<br />
''*Note: When viewing individual tabs within the advanced options, several options will appear in multiple locations.<br><br />
''The duplicates are not shown when viewing all tabs at once. Making changes in one location will change it overall. <br />
<br />
<br />
*Ranges are displayed in yards on the main options page. To use /vt opt to change range settings you must use the landcell range, (yards/240). A range of 5 translates to 0.0208333<br />
<br />
* Do not use the brackets when issuing a command. <br />
**"/vt opt set DoJiggle true"<br />
**"/vt opt set AttackDistance 0.0208333"<br />
<br />
<br />
==Misc==<br />
<br />
'''AutoCram [true/false]''': Moves items from the main pack to side packs<br />
<br />
'''AutoStack [true/false]''': Stacks items towards the bottom-most item in the pack, and into side packs. This means that the partial stack of an item will always be the top-most one in your inventory, which is the order that the game burns components. This prevents having to stack every spell cast, and prevents stacking from pulling items from side packs.<br />
<br />
'''RandomHelperBuffs [true/false]''': Casts random buffs on nearby players<br />
<br />
'''RandomHelperIntervalSeconds [##]''': Sets the timer for RandomHelperBuffs in seconds. <br />
<br />
'''IdlePeaceMode [true/false]''': Loots, navigates, and salvages in peace mode. <br />
<br />
'''StopMacroOnDeath [true/false]''': Causes the macro to become disabled when the character dies<br />
<br />
'''RefillWornMana [true/false]''': Uses mana charge types specified in the Consumables panel to refill worn items<br />
<br />
'''RefillWornMana-Item-ManaPercent [##]''': Sets the minimum percentage of mana left on an item at which to refill<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''ManaChargesWhenOff [true/false]''': When true, mana charges and stones are used to keep equipped mana filled even when the macro is disabled<br />
<br />
'''AutoFellowManagement [true/false]''': When true, automatically recruits players on request, and manages waiting lists and votes when acting as the fellowship leader (See [[Virindi Tank Fellowship Commands]])<br />
<br />
'''DeleteGhostMonsters [true/false]''': Attempts to detect when monsters appear to be there but really do not exist, and signals the client to delete them<br />
<br />
'''GhostMonsterSpellAttemptCount [##]''': The number of times the macro must attempt to cast a spell on a monster, without the spell starting, before the monster is marked as ghost<br />
<br />
'''WhoYouGonnaCall [true/false]''': No Function<br />
<br />
'''BlacklistMonsterAttemptCount [##]''': The number of successful attacks that must miss a target before it is blacklisted<br />
<br />
'''BlacklistMonsterTimeoutSeconds [##]''': The amount of time a monster is blacklisted for being unhittable<br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method to force the deletion of ghost monsters which works for melee, missile and mage attacks.<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''EnableMeta [true/false]''': Enables meta<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''BlacklistCorpseOpenAttemptCount [##]''': The number oftimes the macro must attempt to open a corpse before it is blacklisted.<br />
<br />
'''BlacklistCorpseOpenTimeoutSeconds [##]''': The number of seconds an unopenable corpse is blacklisted for<br />
<br />
<br />
==Recharge==<br />
<br />
'''Recharge-Norm-HitP [##]''': Sets the percentage at which the macro will Heal during combat<br />
<br />
'''Recharge-Norm-Stam [##]''': Sets the percentage at which the macro will Re-stam during combat<br />
<br />
'''Recharge-Norm-Mana [##]''': Sets the percentage at which the macro will get Re-mana during combat<br />
<br />
'''Recharge-NoTarg-HitP [##]''': Sets the percentage to which the macro will Heal when Idle<br />
<br />
'''Recharge-NoTarg-Stam [##]''': Sets the percentage to which the macro will Re-stam when Idle<br />
<br />
'''Recharge-NoTarg-Mana [##]''': Sets the percentage to which the macro will Re-mana when Idle<br />
<br />
'''Recharge-Helper-HitP [##]''': Sets the percentage at which the macro will Heal a fellow<br />
<br />
'''Recharge-Helper-Stam [##]''': Sets the percentage at which the macro will give stamina to a fellow<br />
<br />
'''Recharge-Helper-Mana [##]''': Sets the percentage at which the macro will give mana to a fellow<br />
<br />
'''DoHelp [true/false]''': If true, allies are healed/restamed/given mana. The fellowship window must be open to help fellows (or be in a [[Virindi Integrator 2]] fellowship)<br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows<br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows<br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows<br />
<br />
'''CastDispelSelf [true/false]''': Casts dispel life magic self VII when the macro has a vuln on it<br />
<br />
'''UseDispelItems [true/false]''': Uses either a Gem of Stillness or a Condensed Dispel Potion when the macro has a vuln on it<br />
<br />
'''UseDispelDrum [true/false]''':<br />
<br />
'''UseHealersHeart [true/false]''': When set to true and you have a healer's heart in your item list, the macro uses it for Helper<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up.<br />
<br />
'''RechargeBoostTimeSeconds [##]''': Maximum time for the recharge boost effect to last. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''RechargeBoostAmount [##]''': Number of h/s/m points used for recharge boost. Boost causes the macro to prefer to recharge once it switches to magic mode to recharge<br />
<br />
'''MinimumHealKitSuccessChance [##]''': The lowest chance of success, in percent, that the macro will accept when attempting a heal with a health kit <br />
<br />
'''UseKitsInMagicMode [true/false]''': When true, the macro uses available healing kits to heal while in magic mode (with a higher priority than spells)<br />
<br />
'''StaminaToHealthMultiplier [##]''': For a Stamina to Health spell to be used, it must be this much better than a normal healing spell<br />
<br />
'''ManaToHealthMultiplier [##]''': For a Mana to Health spell to be used, it must be thism uch better than a normal healing spell<br />
<br />
'''GoToPeaceModeToUseKits [true/false]''': Causes the macro to drop to peace mode before using a healing kit<br />
<br />
'''ClearLevelBoostFlagOnCast [true/false]''': When true, RechargeBoost only applies to the first spell cast after switching to magic mode<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle<br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
==Melee Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/Disable Combat<br />
<br />
'''DefaultMeleeAttackHeight [1/2/3]''': Sets the default melee attack height. 1 = high, 2 = mid, 3 = low<br />
<br />
'''TargetLock[true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range<br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority<br />
<br />
'''AutoAttackPower [true/false]''': When true, the macro sets melee attack power automatically based on the weapon damage type<br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonsterByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks<br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''UseRecklessness [true/false]''': When true, attacks using recklessness if available.<br />
<br />
<br />
==Spell Combat==<br />
<br />
'''EnableCombat [true/false]''': Enable/disable Combat<br />
<br />
'''SpellDiffExcessThreshold-Hunt [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]] A positive number raises the skill necessary to cast spells, a negative number lowers it. To attempt higher spells at a low level use a negative number. <br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells<br />
<br />
'''MinimumRingTargets [##]''': The minimum amount of targets necesary within RingDistance for the macro to cast ring spells<br />
<br />
'''SwitchWandToDebuff [true/false]''': If enabled, themacro forces a wand switch to the appropriately selected wand for the monster, even to debuff it. Without this setting, wands are only switched when a war attack is required<br />
<br />
'''JumpOutWandCasting [true/false]''': For healer's heart, when enabled, the macro jumps right after using the heart. This causes the heal to go out immediately and your character to have to stand there doing nothing until the timer is up. <br />
<br />
'''DoJiggle [true/false]''': Secret spell dodge mode<br />
<br />
'''TargetLock [true/false]''': Causes the macro to attack the selected monster first, as long as it is a valid target. Priority will not take over until target is dead <br />
<br />
'''UseArcs [true/false]''': Arc war spells are used rather than bolts, if both are known for the best level the macro is able to cast<br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells<br />
<br />
'''TargetSelectMethod [1/2/3]''': Selects how targets are given preference. When set to "both", nearby targets are chosen by angle and distant targets are in order of distance . 1 = By Range, 2 = By Angle, 3 = Both<br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DebuffEachFirst [1/2/3]''': Casts debuffs for each valid target before beginning attack. 1 = One: debuffs one monster then attacks it. 2 = Priority: debuffs all monsters of the same priority then attacks. 3 = All: debuffs all monsters before attacking regardless of priority <br />
<br />
'''DebuffSelectionMethod [1/2]''': Selects what the macro prefers when looking for a way to cast debuffs. Select "Skill" when fighting monsters with high magic defense. 1 = Spell Level, 2 = Skill <br />
<br />
'''DeleteGhostMonstersByHPTracker [true/false]''': An alternate method for the deletion of ghost monsters which works for melee, missile, and mage attacks <br />
<br />
'''GhostDeleteHPTrackerSeconds [##]''': The number of seconds that must pass with no received health updates for a target before it is considered a ghost <br />
<br />
'''DebuffPrecastSeconds [##]''': The number of seconds before a target's debuff is set to expire before the macro will want to recast it. Does not apply to DoT spells.<br />
<br />
'''DropToPeaceModeRetryCount [##]''': When trying to switch weapons, the macro will try repeatedly to drop to peace mode. If it fails this many times, assume the client is bugged and try to use a wand. (Default 34)<br />
<br />
'''SummonPets [true/false]''': When enabled, the macro summons pets if available and listed in items.<br />
<br />
'''PetRangeMode [1/2]''': Determines what monster range is used when summoning a combat pet. 1 = AttackDistance, 2 = PetCustomRange<br />
<br />
'''PetCustomRange [##]: Custom settings for PetRange. <br />
<br />
'''PetRefillCount-Idle [##]''': If a pet summon item has this many charges or fewer, it will be refilled when idle.<br />
<br />
'''PetRefillCount-Normal [##]''': If a pet summon item has this many charges or fewer, it will be refilled in combat.<br />
<br />
'''PetMonsterDensity [##]''': The minimum number of monsters (configured for summon) that must be in pet range before a pet is summoned.<br />
<br />
<br />
==Ranges==<br />
<br />
'''AttackDistance [##]''': Sets the maximum attack distance. Controlled by Monster Range on the [[Virindi Tank Standard Options]]<br />
<br />
'''AttackMinimumDistance [##]''': Sets the minimum attack distance. Default is 0.<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance<br />
<br />
'''RingDistance [##]''': The minimum distance a target must be for the macro to use ring spells <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting<br />
<br />
'''CorpeApproachRange-Min [##]''': The minimum approach distance for corpse looting<br />
<br />
'''NavCloseStopRange [##]''': Follow/Nav Min<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''': <br />
<br />
'''HelperDistanceHitP [##]''': Sets the max distance at which the macro will Heal fellows <br />
<br />
'''HelperDistanceStam [##]''': Sets the max distance at which the macro will re-stam fellows <br />
<br />
'''HelperDistanceMana [##]''': Sets the max distance at which the macro will give mana to fellows <br />
<br />
'''ArcRange [##]''': Sets the minimum range to cast arc spells <br />
<br />
'''TargetSelectAngleRange [##]''': Above this range, when target select is "both", targets are selected by range <br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door<br />
<br />
'''DoorOpenRange [##]''': The distance at which the macro attempts to open doors<br />
<br />
==Navigation==<br />
<br />
'''EnableNav [true/false]''': Enable/Disable Navigation<br />
<br />
'''ApproachDistance [##]''': Sets the maximum approach distance <br />
<br />
'''CorpseApproachRange-Max [##]''': The maximum approach distance for corpse looting <br />
<br />
'''CorpseApproachRange-Min [##]''': The minimum approach distance for corpse looting <br />
<br />
'''NavCloseStopRange [##]''':<br />
<br />
'''NavFarStopRange [##]''': Causes navigation to be disabled if the macro runs too far off course<br />
<br />
'''UsePortalDistance [##]''':<br />
<br />
'''CorpseCacheTimeoutMinutes [##]''': The time in minutes after which a corpse will be removed from the corpse cache<br />
<br />
'''OpenDoors [true/false]''': When True, will cause the macro to open doors within range<br />
<br />
'''DoorIDRange [##]''': Minimum distance the macro will ID a door <br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficuty that is required for a door to be considered pickable<br />
<br />
'''NavPriorityBoost [true/false]''': Causes the macro to navigate before attacking<br />
<br />
'''FollowAroundCorners [true/false]''': When following a character, if True the follower runs the exact route as leader, if False the follower runs directly at the leader.<br />
<br />
==Buffing==<br />
<br />
'''EnableBuffing [true/false]''': Turns on Buffing<br />
<br />
'''SpellDiffExcessThreshold-Buff [##]''': See [[Virindi_Tank_FAQ#How_does_Virindi_Tank_know_what_level_of_spells_to_use,_and_how_can_I_change_it?|here]]<br />
<br />
'''IdleBuffTOpoff [true/false]''': When the macro is idle, it recasts buffs<br />
<br />
'''IdleBuffTopoffTimeSeconds [##]''': Sets the time left on buffs to begin an IdleBuffTopOff<br />
<br />
'''RebuffTimeRemainingSeconds [##]''': Sets the time left on buffs to rebuff normally<br />
<br />
'''BuffProfile_Prots''': Specifies which self prots are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffProfile_Banes''': Specifies which self banes are cast. See [[Virindi_Tank_FAQ#How_do_I_choose_which_spells_are_used_to_buff.3F| chat command]]<br />
<br />
'''BuffCastRecast_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
'''BuffCastRecastReset_Seconds [##]''': After casting a single buff, the time until rebuffing every other buff is reduced by BuffCastRecast_Seconds for BuffCastReset_Seconds<br />
<br />
<br />
==Crafting==<br />
<br />
'''ArrowheadFletchDiffExcessTheshold [##]''': <br />
<br />
'''AutoCraftItems [true/false]''': When enabled, the macro crafts known components that result in items in the Consumables panel, if your character has none. For instance, this allows the macro to create blue kits out of bobo comps if "Plentiful Healing Kit" is listed in the Consumables panel<br />
<br />
'''SplitPeas [true/false]''': Specifies if the macro should automatically split peas. Components you would like to keep supplied by splitting peas should be add to your Consumables panel.<br />
<br />
'''SpellCompMin-Critical [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Critical" splitting is higher priority than healing<br />
<br />
'''SpellCompMin-Normal [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Normal" splitting has a lower priority than normal buffing<br />
<br />
'''SpellCompMin-Idle [##]''': The minimum number of each type of spell component. If you have fewer, a pea will be split. "Idle" spltting is only done when idle<br />
<br />
'''UseSpecialAmmo [0/1/2/3]''': Specifies whether the macro should craft and use special ammunition types. "Raider" indicates Raider Lightning ammo, and "SCurrency" indicates ammo from Colosseum, Graveyard, and Paradox-touched Olthoi Infested Area. 0 = None, 1 = Raider, 2 = SCurrency, 3 = Both<br />
<br />
'''DoorLockpickDiffExcessThreshold [##]''': The number of lockpick skill points above a door's pick difficulty that is required for a door to be considered pickable<br />
<br />
'''IdleCraftCount_HealthKits [##]''': The number of health kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamKits [##]''': The number of stamina kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaKits [##]''': The number of mana kits of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_HealthFood [##]''': The number of health foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_StamFood [##]''': The number of stamina foods/potions of each type to craft up to when idle <br />
<br />
'''IdleCraftCount_ManaFood [##]''': The number of mana foods/potions of each type to craft up to when idle<br />
<br />
<br />
==Looting==<br />
<br />
'''EnableLooting [true/false]''': Enable/Disable Looting<br />
<br />
'''ReadUnknownScrolls [true/false]''': Loots and reads unknown scrolls (looting must be enabled) See [[Virindi_Tank_FAQ#Why_are_some_unknown_scrolls_looted_and_not_others?|here]] <br />
<br />
'''LootAllCorpses [true/false]''': Causes the macro to loot corpses killed by neither you nor your fellows<br />
<br />
'''LootFellowCorpses [true/false]''': Causes the macro to loot the corpses killed by your fellows<br />
<br />
'''LootPriorityBoost [true/false]''': When true, corpses are looted before attacking monsters<br />
<br />
'''CorpseItemAppearanceTimeoutSeconds [##]''': The time in seconds the macro will wait for all items on a corpse to appear<br />
<br />
'''CorpseItemIDTimeoutSeconds [##]''': The time in seconds the macro will wait for all the needed items on a corpse to be ID'd<br />
<br />
'''ManaStoneLootCount [##]''': The maximum number of usable mana stones the macro will try to keep in your inventory when looting<br />
<br />
'''ManaTankMinimumMana [##]''': The minimum mana required for an item to be used to fill mana stones<br />
<br />
'''CombineSalvage [true/false]''': When true and looting is enabled, salvage bags are combined according to the range specified by the current loot profile<br />
<br />
'''LootOnlyRareCorpses [true/false]''': When true, only rare-generating corpses are looted<br />
<br />
'''CorpseOpenTimeoutSeconds [##]''': Time after trying to open a corpse before the macro will retry<br />
<br />
'''CorpseLootItemMaxAttempts [##]''': Number of attempts to loot an item before blacklisting.</div>The Guru