Meta Expressions

From VirindiPlugins
Revision as of 13:29, 12 June 2015 by The Guru (talk | contribs) (Examples)
Jump to: navigation, search

These expressions can set and retrieve variables, react to object/char properties, use and combine objects, and more.

This adds the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.

The "/vt mexec [expression]" command can be used instead of the meta rules when appropriate. It is also a great testing tool.


There are two ways to use Expressions, your situation will determine the best choice.

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.


The second is by utilizing the "Expression" meta condition and the "Expression Action" and "Chat Expression" meta actions.

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.

The "Expression Action" meta action initiates the expression written within.

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.


Notes

  • true is the same as 1, false is the same as 0. There are no actual booleans, just numbers.
  • There are two extra operators added since 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.
  • Unlike monster expressions, meta expressions do not trim spaces from the ends of strings.
  • Set variables persist until cleared by a command or until relog.
  • 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
  • All operator characters which occur in a string must be escaped with \
  • All numbers in a string must also be escaped.


Function Information

Expand to view details and available examples.

There are currently 48 meta functions.


[Expand]

testvar[1]

[Expand]

getvar[1]

[Expand]

setvar[2]

[Expand]

touchvar[1]

[Expand]

clearallvars[]

[Expand]

clearvar[1]

[Expand]

getcharintprop[1]

[Expand]

getchardoubleprop[1]

[Expand]

getcharquadprop[1]

[Expand]

getcharboolprop[1]

[Expand]

getcharstringprop[1]

[Expand]

getplayerlandcell[0]

[Expand]

getplayercoordinates[0]

[Expand]

coordinategetns[1]

[Expand]

coordinategetwe[1]

[Expand]

coordinategetz[1]

[Expand]

coordinatetostring[1]

[Expand]

coordinateparse[1]

[Expand]

coordinatedistancewithz[2]

[Expand]

coordinatedistanceflat[2]

[Expand]

wobjectgetphysicscoordinates[1]

[Expand]

wobjectgetname[1]

[Expand]

wobjectgetobjectclass[1]

[Expand]

wobjectgettemplatetype[1]

[Expand]

wobjectgetisdooropen[1]

[Expand]

wobjectfindnearestmonster[0]

[Expand]

wobjectfindnearestdoor[0]

[Expand]

wobjectfindnearestbyobjectclass[1]

[Expand]

wobjectfindininventorybytemplatetype[1]

[Expand]

wobjectfindininventorybyname[1]

[Expand]

wobjectfindininventorybynamerx[1]

[Expand]

wobjectgetselection[0]

[Expand]

wobjectgetplayer[0]

[Expand]

actiontryselect[1]

[Expand]

actiontryuseitem[1]

[Expand]

actiontryapplyitem[2]

[Expand]

isfalse[1]

[Expand]

istrue[1]

[Expand]

iif[3]

[Expand]

randint[2]

[Expand]

cstr[1]

[Expand]

strlen[1]

[Expand]

getobjectinternaltype[1]

[Expand]

cstrf[2]

[Expand]

stopwatchcreate[0]

[Expand]

stopwatchstart[1]

[Expand]

stopwatchstop[1]

[Expand]

stopwatchelapsedseconds[1]


Object Properties

Vtank Object Prop Enums

The following properties have been tested with /vt mexec

ObjectClass [Expand]
Unknown 0
MeleeWeapon 1
Armor 2
Clothing 3
Jewelry 4
Monster 5
Food 6
Money 7
Misc 8
MissileWeapon 9
Container 10
Gem 11
SpellComponent 12
Key 13
Portal 14
TradeNote 15
ManaStone 16
Plant 17
BaseCooking 18
BaseAlchemy 19
BaseFletching 20
CraftedCooking 21
CraftedAlchemy 22
CraftedFletching 23
Player 24
Vendor 25
Door 26
Corpse 27
Lifestone 28
HealingKit 29
Lockpick 30
WandStaffOrb 31
Bundle 32
Book 33
Journal 34
Sign 35
Housing 36
Npc 37
Foci 38
Salvage 39
Ust 40
Services 41
Scroll 42
CombatPet 43
NumObjectClasses 44
getcharintprop [Expand]
Species 2
ContainerSlots 7
BurdenUnits 5
TotalValue(pyreal) 20
SkillCreditsAvail 24
Level 25
Rank 30
Deaths 43
DateOfBirth(unix) 98
Gender 11
Age(seconds) 125
XPForVPReduction 129
ChessRank 181
Heritage 188
FishingSkill 192
TitlesEarned 262
SocRibbonCount(CH) 287
SocRibbonCount(WEB) 288
SocRibbonCount(RB) 289
MeleeMastery 354
RangedMastery 355
SummoningMastery 362
Augmentations
Reinforcement of the Lugians 218
Bleeargh's Fortitude 219
Oswald's Enchantment 220
Siraluun's Blessing 221
Enduring Calm 222
Steadfast Will 223
Ciandra's Essence 224
Yoshi's Essence 225
Jibril's Essence 226
Celdiseth's Essence 227
Koga's Essence 228
Shadow of the Seventh Mule 229
Might of the Seventh Mule 230
Clutch of the Miser 231
Enduring Enchantment 232
Critical Protection 233
Quick Learner 234
Charmed Smith 236
Innate Renewal 237
Archmage's Endurance 238
Enhancement of the Blade Turner 240
Enhancement of the Arrow Turner 241
Enhancement of the Mace Turner 242
Caustic Enhancement 243
Fiery Enhancement 244
Icy Enhancement 245
Storm's Enhancement 246
Infused Creature Magic 294
Infused Item Magic 295
Infused Life Magic 296
Infused War Magic 297
Eye of the Remorseless 298
Hand of the Remorseless 299
Master of the Steel Circle 300
Master of the Focused Eye 301
Master of the Five Fold Path 302
Frenzy of the Slayer 309
Iron Skin of the Invincible 310
Jack of All Trades 326
Infused Void Magic 328
InfusedVoid 328
Luminance/Ratings
AuraValor 333
AuraProtection 334
AuraGlory 335
AuraTemperance 336
AuraAetheria 338
AuraManaFlow 339
AuraPurity 342
AuraCraftsman 343
AuraSpecialization 344
AuraWorld 365
HealBoost Rating(armor/jewelry) 376
Vitality Rating(armor/jewelry) 379
Total DmgRating 307
Total DmgResist 308
Total CritDmg 314
Total CritDmgResist 316
Total DmgResist from Lum (nali + seer) 334
Total CritDmgResist from Lum (nali + seer) 336
getcharquadprop [Expand]
TotalExperience 1
UnassignedExperience 2
LuminancePointsCurrent 6
getcharstringprop [Expand]
Name 1
Title 5
FellowshipName 10
MonarchName 21
Patron 35
DateBorn 43
MonarchyDescription 47


Examples

Test for proximity to any portal.

coordinatedistancewithz[wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]],getplayercoordinates[]]<5


Check if you have any Aged or Durable Legendary Keys in your inventory.

getobjectinternaltype[wobjectfindininventorybynamerx[\^\(Aged\|Durable\) Legendary Key\$]]==7


Check if there is any object currently selected.

getobjectinternaltype[wobjectgetselection[]]==7


Save the selected items name in a variable.

setvar[keyName,wobjectgetname[wobjectgetselection[]]]


Combine items in inventory by name:

actiontryapplyitem[wobjectfindininventorybyname[itemName], wobjectfindininventorybyname[itemName]]


Combine items in inventory by template type:

actiontryapplyitem[wobjectfindininventorybytemplatetype[#],wobjectfindininventorybytemplatetype[#]]

Where # is the template type number. Use wobjectgettemplatetype[wobjectgetselection[]] to obtain the template type number from an object.


Select item in inventory by name:

actiontryselect[wobjectfindininventorybyname[itemName]]


Select World Object by ObjectClass:

actiontryselect[wobjectfindnearestbyobjectclass[#]] -- Where # is the object class


Select Nearest Vendor:

actiontryselect[wobjectfindnearestbyobjectclass[25]]


Select Nearest NPC:

actiontryselect[wobjectfindnearestbyobjectclass[37]]


Use Nearest Vendor:

actiontryuseitem[wobjectfindnearestbyobjectclass[25]]


Use Nearest NPC:

actiontryuseitem[wobjectfindnearestbyobjectclass[37]]


Use Nearest door:

actiontryuseitem[wobjectfindnearestdoor[]]


Use nearest portal.

actiontryuseitem[wobjectfindnearestbyobjectclass[14]]


Select Nearest Monster:

actiontryselect[wobjectfindnearestmonster[]]


Use a Massive Mana Charge on yourself by name

actiontryapplyitem[wobjectfindininventorybyname[Massive Mana Charge], wobjectgetplayer[]]


Use a Mana Stone on yourself by template type

actiontryapplyitem[wobjectfindininventorybytemplatetype[9060],wobjectgetplayer[]]


Use inventory item by template type:

actiontryuseitem[wobjectfindininventorybytemplatetype[#]]