随 Outlands 客户端分发的 Razor 辅助工具是 Razor Community Edition 的分支。如果您需要 Razor 脚本编写的基础帮助,请点击 Quick 文档的链接。http://www.razorce.com/guide/
<br/>
Outlands 还通过以下功能扩展了该脚本引擎。
修改的命令和表达式
按类型搜索的多个命令和表达式已大幅扩展:
dclicktype
dclicktype ('name') OR ('graphic') [source] [hue] [quantity] [range]
findtype
findtype ('name') OR ('graphic') [source] [hue] [quantity] [range]
hue 允许按色相限制。source 可以是特定容器的序列号、'self'(已装备物品)或 'ground'。quantity 是最小数量,range 是与玩家的最大距离。
lifttype 表达式进一步限制为仅对 'backpack'、'self' 或 'ground' 源有效。
findtypelist
功能类似于 findtype,但第一个参数是列表名称。如果列表存在,找到的序列号会添加到列表中。
findtypelist ('listname') ('name of item') OR ('graphic') [src] [hue] [qty] [range]
targettype
targettype ('name') OR ('graphic') [source] [hue] [quantity] [range]
lifttype
lifttype ('name') OR ('graphic') [amount] [src] [hue]
overhead 和 sysmessage 插值
overhead 和 sysmessage(及其别名)现在允许如下字符串插值:
setvar myvar 10
overhead "my var is: <nowiki></nowiki>"
循环和索引变量
所有循环现在都有一个作用域内运行索引变量,名为 'index',起始值为 0。
新别名
ground
'ground' 别名现已可用。这在扩展后的目标命令中作为 "source" 参数非常有用。
新表达式
find
现在可以通过 find 表达式基于序列号进行搜索:
if find (serial) [src] [hue] [qty] [range]
参数的工作方式与 findtype 命令完全相同。
findlayer
现在可以搜索角色已装备的物品:
if findlayer self gloves as mygloves
overhead 'Wearing gloves!'
endif
有效的层位有:
righthand
lefthand
shoes
pants
shirt
head
gloves
ring
talisman
neck
hair
waist
innertorso
bracelet
face
facialhair
middletorso
earrings
arms
cloak
backpack
outertorso
outerlegs
innerlegs
onehandedsecondary
quiver
outerbody
targetexists
一个用于测试客户端当前是否出现目标光标的表达式:
if targetexists ['any'/'beneficial'/'harmful'/'neutral']
followers
一个用于计算当前追随者数量的表达式:
if followers < 5
overhead "Can still tame stuff!"
endif
hue
一个用于获取物品色相的表达式:
if hue someObject = 0x1809
overhead "Found hue of my item!"
endif
name
一个用于获取当前角色姓名的表达式:
if name = 'MyName'
overhead "It's me!"
endif
paralyzed
一个用于测试角色是否被麻痹的表达式:
if paralyzed
overhead "Can't move!"
endif
invul
一个用于测试角色是否受祝福/无敌(黄色生命条)的表达式:
if invul
overhead "I'm gonna live forever!"
endif
warmode
一个用于测试角色是否处于战斗模式的表达式:
if warmode
overhead "Ready to attack!"
endif
noto
一个用于检查任何生物的恶名的表达式:
if noto some_Mobile = hostile
overhead "Safe to attack!"
endif
有效的恶名类型有:
innocent (蓝色)
friend (绿色)
hostile (灰色)
criminal (灰色)
enemy (橙色)
murderer (红色)
invulnerable (黄色)
dead
一个用于检查生物是否死亡的表达式:
if dead someMobile
overhead "He's dead, Jim!"
endif
maxweight
if maxweight > 400
overhead "I have a lot of strength"
endif
diffweight
if diffweight > 20
overhead "I can lift 20 more stone"
endif
diffhits
if diffhits > 40
overhead "I need a heal!"
endif
diffmana
if diffmana > 40
useskill 冥想(Meditation)
endif
diffstam
if diffstam > 30
overhead "Need stamina"
endif
counttype
返回容器中相同类型物品的数量。如果物品可堆叠,则返回堆叠中的物品数量。
if counttype (name or graphic) [src] [hue] [range]
gumpexists
if gumpexists (gumpId/'any')
如果 gump 存在,返回 true。
ingump
if ingump (text) [gumpId/'any']
在给定的 gump 中查找文本。
varexist
检查给定变量(或别名,如果传递了 !)是否已声明。
if varexist someVar
overhead "Select shelf"
setvar someVar
endif
bandaging
检查当前是否正在包扎绷带,并返回剩余时间(秒),适用于 healing 和 veterinary。
if bandaging > 5
overhead "More than 5 seconds till next bandage"
endif
简化版本:
if not bandaging
hotkey "Bandage Self"
endif
cooldown
检查冷却是否激活,可以与持续时间进行比较。
if cooldown "mycooldown"
overhead "cooldown is active"
endif
if cooldown "mycooldown" > 2000
overhead "more than 2 seconds remaining on cooldown"
endif
新命令
setvar
setvar 命令在 Outlands 上已修改以支持更广泛的用例。可选的第二个参数现在是变量的序列号。如果提供,则不会提示目标光标。
setvar my_name 0x123
这可用于图形 ID、色相、序列号、名称等。默认情况下,这会创建一个持久变量,即使应用程序重启也会保留。要使变量仅在当前程序运行期间存在,请追加 '!' 操作符。该变量不会出现在 Razor 变量列表中,但在 Razor 运行期间仍为全局变量,可从任何脚本使用。
setvar! my_name 0x123
unsetvar
此外,已添加一个用于取消设置变量的命令。它支持与 setvar 相同的修饰符:
unsetvar my_name
ignore
已添加忽略列表,以避免在使用各种搜索命令时找到对象:
ignore (serial or list)
这也支持与 setvar 相同的操作符来控制忽略列表的作用域。
unignore
与 ignore 类似,unignore 命令从忽略列表中移除一个序列号(或序列号列表):
unignore (serial or list)
这也支持与 setvar 相同的操作符来控制忽略列表的作用域。
clearignore
清除忽略列表:
clearignore
这也支持与 setvar 相同的操作符来控制忽略列表的作用域。
warmode
已添加一个用于显式设置战斗模式状态的命令:
warmode ('on' / 'off')
getlabel
已添加一个用于获取物品标签(单击时看到的文本)的命令。
getlabel (serial) (name)
这将获取由序列号标识的物品的标签,并创建一个新的变量,变量名由您选择,用于保存文本。
getlabel backpack my_label
overhead my_label
rename
已添加一个用于重命名追随者的命令:
rename myFollower Bob
skill
一个用于使用技能(Skill)的命令
skill discord
一种检查技能等级的方法
if skill anatomy >= 80
有效的主动技能列表:
anatomy
animallore // "动物鉴定(Animal Lore)"
itemidentification // "item identification" // itemid
armslore // "武器学(Arms Lore)"
begging
peacemaking // peacemaking // peace
cartography // cartography
detectinghidden // detect hidden
discord // 压制(Discordance)
evaluatingintelligence // "evaluate intelligence" // evalint
forensicevaluation // "法医物品鉴定(Item Identification)(Forensic Evaluation)" // forensiceval
hiding
provocation // provocation // provo
inscription
poisoning
spiritspeak // "spirit speak" // spirit
stealing
taming // "动物驯服(Animal Taming)"
tasteidentification // "taste id" // tasteid // taste
tracking
meditation
stealth
removetrap
抗魔(Resisting Spells)
setskill
已添加一个用于设置技能增长锁定的命令:
setskill Blacksmithing up
有效选择为 up、down 或 lock。
waitforgump
waitforgump [gumpId]
等待一个 gump 出现。如果提供了 gump ID,则等待特定的 gump。否则,等待下一个 gump。
gumpresponse
gumpresponse (buttonId) [gumpId]
在给定的 gump(或最后一个打开的 gump)上按下给定的按钮。
gumpclose
gumpclose [gumpId]
关闭给定的 gump,如果未指定 gumpId,则关闭最后一个打开的 gump。
cooldown
cooldown <'cooldown name'> [milliseconds]
触发指定名称的冷却。如果未传入毫秒数,则使用冷却的默认值。
新操作符
as
现在有一个 'as' 操作符,用于捕获表达式的结果作为别名。这在 'findtype' 表达式中特别有用,如下所示:
if findtype dagger as mydagger
dclick mydagger
endif
in
此外,还有一个 'in' 操作符,可用于检查一个字符串是否是另一个字符串的子串:
if this in thisthatandtheother
overhead yes
endif
当结合使用来分类物品时,这些尤其强大:
if findtype dagger as mydagger
getlabel mydagger daggerlabel
if blessed in daggerlabel
overhead "Found newbie dagger"
endif
endif
列表
列表支持包含以下命令:
createlist
createlist ('list name')
创建新列表
clearlist
clearlist ('list name')
清空现有列表
removelist
removelist ('list name')
删除列表
pushlist
pushlist ('list name') ('element value') ['front'/'back'] //注释
将项目添加到列表的前面或后面
poplist
poplist ('list name') ('element value'/'front'/'back') //注释
从列表的前面或后面移除一个项目。
如果在表达式中使用,弹出的值可以通过 'as' 保存如下:
if poplist testlist back as popped
overhead popped
endif
listexists
此外,还添加了以下与列表相关的表达式。这些可以在 <code>if</code> 和 <code>while</code> 语句中使用。
listexists ('list name')
如果列表存在则为真
list
list (list name) (operator) (value)
将列表的长度与整数进行比较
inlist
inlist (list name) (element)
测试元素是否在列表中。
atlist
atlist ('list name') (index)
返回列表中给定索引处的项目。索引从 0 开始。
示例:
if atlist mylist 2 as thirdentry
overhead thirdentry
else
overhead "index out of bounds or list item retrieved was no serial"
endif
迭代列表
最后,<code>for</code> 和 <code>foreach</code> 循环可以用于迭代,如下所示:
for 10
say 'hello'
endfor
这将正好迭代 10 次。
foreach x in my_list
say x
endfor
这将迭代 my_list 中的元素,每次迭代将变量 'x' 赋值为下一个元素。
计时器
计时器表示在脚本其余部分运行的后台计时器。所有单位均为毫秒。可以查询它们以检查自启动以来经过的时间,或重置回较早的计数。
已添加以下用于处理计时器的命令:
createtimer
createtimer (timer name)
创建一个新的计时器,从 0 开始。
removetimer
removetimer (timer name)
销毁现有计时器。
settimer
settimer (timer name) (value)
将计时器设置为给定值。它将立即从给定值开始计数。
此外,已为计时器添加了两个表达式:
timer
timer ('timer name') (operator) (value)
将计时器的当前值(自启动以来经过的时间,以毫秒为单位)与给定值进行比较
timerexists
timerexists ('timer name')
检查计时器是否存在
示例:
// 创建一个新计时器
if not timerexists 'sample'
createtimer 'sample'
endif
// 每 10 秒重置
if timer 'sample' > 10000
settimer 'sample' 0
endif
冷却
冷却在 Client patch 1.0.0.14 中引入
可以使用 Razor 脚本命令触发冷却
// 启动名为 "mycooldown" 的冷却,使用其默认冷却时间
cooldown "mycooldown"
// 启动名为 "mycooldown" 的冷却,使用 30 秒的计时器(注意 Razor 中使用毫秒)
cooldown "mycooldown" 30000
在表达式中,cooldown 命令可用于检查冷却的剩余时间
// 检查冷却是否在运行
if cooldown "mycooldown"
// 执行某些操作
endif
// 检查冷却是否还有超过 5 秒
if cooldown "mycooldown" > 5000
// 执行某些操作
endif
PvP 限制
当玩家积极参与结构化 PvP(无论是作为 PvP 事件的一部分,还是在派系标记下进行 PvP)时,将应用 PvP 减益效果。非自愿 PvP(例如 PK)不受影响。
激活时,Razor 脚本、宏和客户端中的以下自动化功能将被禁用:
setvar on players
droprelloc
waitforsysmsg
settimer
removetimer
getlabel
rename
cooldown
wait/pause
表达式:<br/>
bandaging
findbuff/finddebuff
mana
maxmana
diffmana
hits
maxhits
diffhits
stam
maxstam
diffstam
poisoned
paralyzed
hidden
str
dex
int
position
timer
followers
hue
blessed
notoriety
dead (除玩家外的生物上)
maxweight
diffweight
gumpexists
ingump
cooldown
casting
'pvp' 表达式:<br/>
新增了一个 pvp 表达式,用于检查上述 PvP 脚本限制当前是否激活。
if pvp
//这些命令已被禁用
endif
序列号处理:<br/>
在受 PvP 脚本限制影响时,任何属于玩家的序列号在脚本和宏中将解析为 0x0,即被禁用。
示例:玩家将另一个玩家的序列号存储在变量 player 中。当标记为 PvP 时,如果他们对任何命令解析此变量(例如 attack player 或 setlasttarget player),该变量将产生 0x0。
物品处理:<br/>
在受 PvP 脚本限制影响时,所有使用 find 处理(find、findtype、findtypelist、dclicktype、lifttype、counttype)的命令和表达式只能找到玩家穿戴或库存中的物品。
队伍和公会消息:
这些消息现在将永远不会被 Razor 或客户端拾取。