一、魔兽宏语言都有哪些
/cast
释放一个或多个技能,可以加入一些条件判断,是最常用的命令
/castsequence
依次释放释放数个技能,同样可以加入一些条件判断,常见于所谓的"无脑宏"
/use
使用一个物品,可以直接用物品名称也可以用物品栏位置
2.动作命令
/cancelform
取消变形
/cancelaura
取消状态或增益
/startattack
开始攻击,一般写不写差别不大,释放技能会自动开始攻击的
/stopattack
停止攻击,与startattack相反,用于防止破除控制等功能,也不大会用到
/target/targetenemy
切换目标,用到的也不多,抓贼宏会用到,更多时候需要的反而是不切换目标的情况下对特定目标释放技能
/mount
召唤坐骑
/dismount
解散坐骑
3.语言表情命令
/1/2/3/4
在不同的频道里面说话,1综合,2交易,3本地防务,4寻求组队
/s/y/p/ra/bg
在不同的范围说话,s说,y喊,p小队,ra团队,bg战场
/e
做出一串表情,同时也可以/+内置表情
4.特殊命令
#showtooltip
显示技能描述,可以指定技能名或是缺省,让你的界面更有可读性
/focus
指定某个目标为焦点目标
/clearfocus
清除焦点目标
/stopmacro
停止宏,可加入条件判断
/console/script
控制命令,抓贼宏会用到
1.2常用的条件判断
1.目标条件判断
help noharm
目标为友方
harm nohelp
目标为敌方
exists
目标存在
dead nodead
目标死亡/存活
2.自身条件判断
stance:1/2/3/4/5/6 form:1/2/3/4/5/6
处在某形态中,对应为
野性:1熊,2水栖,3豹,4旅行,5飞行
平衡:1熊,2水栖,3豹,4旅行,5枭兽,6飞行
恢复:1熊,2水栖,3豹,4旅行,5树,6飞行
combat nocombat
战斗中/非战斗中
stealth nostealth
潜行中,非潜行中
mod:alt/shift/ctrl
按下功能键alt/shift/ctrl,可缺省
swimming noswimming
游泳中/非游泳中
flyable noflyable
可飞行/不可飞行
indoors outdoors
室内/室外
3.其他条件判断
@ target=name/player/focus/targettarget/mouseover/raid#/party#/arena#
选定目标指定名字/自己/焦点/目标的目标/鼠标指向/团队#号/小队#号/竞技场#号敌人
reset=#/target/combat/shift/alt/ctrl
用于/castsequence中,设定重置条件,可以是#秒/切换目标/进入战斗/按下shift/按下alt/按下ctrl
1.3简单的宏知识
1.宏内容
宏可以取名和设置图标,如果设置为?图标的话就是自动选择宏技能的图标
宏最长不超过255个字符,每个英文字母是一个字符,汉字是两个字符
如果包含汉字且超过了255个字符但没超过255个字,在保存时是不会出现问题的,但是下线以后会丢失宏内容
2.标点符号
除去技能名之外所有的标点符号英文字母都是半角的
技能名之间一般用";"间隔,而castsequence中队列里的技能名则用","间隔
需要同时满足的条件由中括号"[]"包裹,","间隔
3.技能名
技能名必须正确,可以打开技能书shift+点击技能来获取技能名
如果分辨率不够的话也许会导致技能书和宏菜单不能同时打开,可以尝试调节UI缩放
2.实例
2.1简单宏
1.对特定目标释放技能
#showtooltip
/cast [@目标名,exists] []技能名
此宏会对特定目标释放所定的技能,目标不存在的话就直接释放技能
如果没有同名的那么系统会选择一个"某种程度上比较相近"的人
同时也可以写player,raid#之类的,详见第一部分
例:
Code:
#showtooltip
/cast[@哀木涕,exists][]生命绽放
2.喊话宏
/频道喊话内容
在指定频道喊话
频道可以是:
s(说)y(喊)1(综合)2(交易)3(本地防务)4(组队)p(小队)ra(团队)bg(战场)e(表情)
例:
Code:
/1FL10人便当1-3缺1T,9=1来的带装等成就MMM
3.变形宏
#showtooltip
/cast!变形技能
可以在人形态释放来变形,也可以在变形状态下重新变形来解减速等等
例:
Code:
#showtooltip
/cast!熊形态
简单的循环
#showtooltip
/castsequence reset=条件1/条件2技能1,技能2,技能3
依次释放技能,技能名之间用","间隔
条件可以是
#(秒数)target(切换目标)combat(进入战斗)shift/alt/ctrl(按下shifit/alt/ctrl)
例
Code:
#showtooltip
/castsequencereset=6/combat痛击,横扫,挫志咆哮,横扫
4.双技能宏
#showtooltip
/cast [条件]技能1;技能2
符合条件就释放技能1,否则就释放技能2
技能名之间用";"间隔
条件可以是自身条件也可以是目标条件
可以用来节省空间,制作也极为简单
例1:
Code:
#showtooltip
/cast[stance:1]激怒;猛虎之怒
例2:
Code:
#showtooltip
/cast[harm]安抚;解除腐蚀
5.使用物品宏
#showtooltip
/use物品
使用物品
可以直接打物品名字也可以是物品位置编号
编号对应:
6(腰带)10(手套)13(饰品上)14(饰品下)15(披风)
例:
Code:
showtooltip
/use6
/e绝尘而去
6.取消buff宏
/cancelaura增益名
取消buff用,例如取消保护,疾跑奔窜连放
例:
Code:
#showtooltip
/cancelaura急奔
/cast[stance:3]狂奔怒吼(猎豹形态);狂奔怒吼(熊形态)
2.2进阶
以上是各种最基本的宏,那么我们能不能将这些宏拓展开来呢?
条件更复杂,技能数量更多,多种不同的语句糅杂在一起,那就可以实现更多的功能
1.分支选择宏
"对特定目标释放技能宏"可以实现目标的选择,那么能不能加入判断,使得不同条件下对不同的目标施放呢?
[@player,mod:alt]
按住alt的话对自己释放
用了宏的话系统内置的自我施法按键(alt)就不好用了,所以很多技能都会加上这一个条件来人工实现这个功能
[@mouseover,harm/help,exists]
对鼠标指向的目标释放
这是很多治疗喜爱的宏,可以免去不断切换目标的麻烦
其中,harm和help则根据技能需要改动
[@focus,mod:shift]
按住shift则对焦点目标释放
PvP非常常用且有用,shift也可以换成alt或是ctrl
[@targettarget,harm/help,exists]
对目标的目标释放
这里需要注意的是这个harm和help所指的不是目标的属性,而是目标的目标的属性
例如如果目标是boss,则对目标的目标施放治疗
那么这里应该写的是help而不是harm,很多人都会觉得是:目标是harm的,所以转向目标的目标;这是不对的
以上列举了几个常见的,你也可以自己试着写一写,"在某个条件下则以某人为目标"
条件和目标的词汇则在第1部分里面有详细的介绍
下面便可以把所有你认为会出现的条件写到一起了
条件判断是从左到右的,也就是把你觉得应该先进行判断的条件写到左边
#showtooltip
/cast [@目标1,条件1] [@目标2,条件2] [@目标3,条件3] []技能
最后的结果就是
如果满足条件1,则对目标1释放,否则
如果满足条件2,则对目标2释放,否则
如果满足条件3,则对目标3释放
这里建议最后加上一个空的中括号,来避免条件限制太死,有时候放不出技能的情况
还有如果不写目标的话则默认为@target对当前目标,所以一般"@target"都省略掉了
例:
Code:
#showtooltip
/cast[@player,mod:alt][@mouseover,help,exists][help,exists][@targettarget,help,exists][]回春术
2.复杂变形宏
在"变形宏"上再加上各种条件判断,实现多种变形一键完成
常用的条件有
[swimming]水栖形态
水里用水栖
[flyable,nocombat]迅捷飞行形态
飞行需要能飞且不战斗
[outdoors,noflyable,nocombat]大型棕色科多兽
不能飞那就只能坐骑了
[outdoors,noflyable,combat]旅行形态
要是还是战斗的话就旅行
[indoors]猎豹形态
室内就只能猎豹了
然后我们直接把以上的全部加到一起,就得到了最终的宏
Code:
#showtooltip
/cast[swimming]水栖形态;[flyable,nocombat]迅捷飞行形态;[outdoors,noflyable,nocombat]大型棕色科多兽;[outdoors,noflyable,combat]旅行形态;[indoors]猎豹形态
事实上还有一个化简的问题
例如说/cast [combat]猎豹形态;[nocombat]旅行形态
后面那个nocombat需要吗?不需要
因为判断从左至右进行,判断到第二个的时候就说明第一个没有通过了,那么combat没有通过必然是nocombat了
但由于实际情况有很多条件并列,导致判断某个条件是否需要就比较复杂,有些人可能会绕不过来
下面给出前面宏的化简结果
Code:
#showtooltip
/cast[swimming]水栖形态;[flyable,nocombat]迅捷飞行形态;[outdoors,nocombat]大型棕色科多兽;[outdoors]旅行形态;猎豹形态
当然,还可以加上"!"来防止连按又变回来,注意"!"放在技能名前面
再给一个我自己用的变形宏,尝试下能不能看得懂
Code:
#showtooltip
/cast[flyable,nocombat,nomod]!迅捷飞行形态;[form:4,nomod,outdoors][nomod.nocombat,outdoors][noform,outdoors]!旅行形态;[swimming,nomod]!水栖形态;[form:1,nomod]!巨熊形态;[form:3,nomod]!猎豹形态;[form:5,nomod][nomod,indoors]!生命之树
/cancelform[form:6][mod]
由于宏太长不得已把stance换成form了,效果一样
3.简单循环中夹杂条件判断的宏
下面我们再来给castsequence语句加点条件判断
你也可以理解为把"简单循环宏"和"双技能宏"结合起来
#showtooltip
/castsequence [条件1] reset=重置条件A1/重置条件A2循环A; reset=重置条件B1/重置条件B2循环B
循环之间用";"分隔
而每个循环则写作
技能1,技能2,技能3
同一个循环里的不同技能用","分隔
无脑宏什么的就不说了,这里举个野性冲锋的例子:
Code:
#showtooltip
/castsequence[stance:3]reset=10野性冲锋(猎豹形态),毁灭;野性冲锋(熊形态)
作用就是释放对应形态的冲锋,猫跳后再按就是接免费毁灭
这里的reset=10是因为免费毁灭buff持续10秒
4.其他的一些命令
/focus
这条命令有3个作用
1.没有焦点目标的时候将目标设置为焦点目标
2.有焦点目标的时候将焦点目标更改成当前目标
3.当前目标为空时清空焦点目标
同时这条命令也是可以加条件判断的,如果不加判断的话非常容易误改了焦点
不过判断中的@仅针对判断语句的对象,会被设为焦点的永远是当前目标
同时配套的还有清空焦点目标
/clearfocus
这是一个最常见的焦点宏:没焦点就设焦点,按住alt强制设焦点,焦点死亡就清除焦点
Code:
/focus[mod:alt][@focus,noexists]
/clearfocus[@focus,dead]
这些命令还可以加进针对焦点目标的技能宏里
例:
Code:
#showtooltip
/focus[mod:alt][@focus,noexists]
/clearfocus[@focus,dead]
/cast[@focus,mod:shift,harm,exists][@mouseover,harm,exists][]旋风
这个是我以前在网上用的做宏的时候常用希望能帮助到你
二、魔兽宏命令
在按了ESC后,就有宏命令设置的选项,然后新建宏,接着就是编写命令.很多人都知道/表情这个命令.比如:/大笑/吐口水.还有能/Y凝神已经射向%T(选择的目标的名称).这些估计大多数玩家都能耳熟能详了.这里就不废话了.接着我就说些比较有用的命令:
/Assist这个是援助攻击命令.意思就是选择自己队友所选种的目标.比如/Assist XXX那么我所选中的目标就是XXX的目标.当然你也可以不打XXX但是前提是你必须有友方的目标.那么选种的就是你选种友方他的目标了.
如果要用上面的方法配合使用技能,很简单!回车后按SHIFT,然后在技能书中鼠标左键点你要释放的技能,接着命令就自动上去了.这是个比较简单的方法.但是要注意,这个方法只能在这些简单的宏里作业,如果换做是有条件语句的(即有/Script的语句)时候,是不能用的.所以使用的范围是非常小的.不过也别灰心,因为这个方法已经能为你做很多事情了.哦,对了,这里我顺便要提下,WOW宏命令是不适用于拥有共同CD技能的同时使用的.即你无法同时释放多个法术,如果有共同CD那更加糟糕,等于后面的技能1个也放不出.所以在安排技能的时候,大家一定要小心.我这里有个范例:
/施放瞄准射击(等级 6)
/施放多重射击(等级 5)
/施放毒蛇钉刺(等级 8)
这个宏是正确的,因为这3个技能都有自己独特的CD时间,所以可以做进1个宏里,但是顺序要安排好,只要能安排好,那3个技能就全能用到.再来看个
/施放雄鹰守护(等级7)
/施放强击光环(等级2)
这个宏就是失败的.使用后,你只能弄到雄鹰守护这个技能,而强击因为和上面技能CD冲突而无法发动.
进入游戏查看游戏里的每个宏,对宏里的技能等级做相应修改。例如:
/施放奥术射击(等级 6)如果你是60级的猎人,那么就改成/施放奥术射击(等级 9)
6.按照说明提供的快捷键使用宏。当然如果有人觉得我的快捷键设置不好,可以自行更改.
7.等你把这篇文章看完的时候你已经是个猎人高手了!
如果你选择手动复制,为了使以下的宏能正常使用,请新建文字文档,并取消自动换行功能。然后由网页复制到文本文档。最后才从文本文档逐句复制到游戏中的宏里去。在每一句复制到游戏里后按Enter,继续下一句的复制。
<--------->表示同时进行
1.自动选最近目标
说明:〈标记最近敌人+宠物攻击+宠防御模式+按目标距离使用自动射击或攻击〉
快捷键:Tab(宏图标放在右下快捷栏)
/script TargetNearestEnemy()
/script PetDefensiveMode()
/script PetAttack()
/script if(UnitName("target")~=nil and(IsActionInRange(2)== 1)) then CastSpellByName("自动射击"); else CastSpellByName("攻击");end
/施放猎人印记(等级 3)
/施放猎人印记(等级 3)
特别说明:使用这个宏的时候系统原始物品快捷栏从左数起第12个栏(即最后一栏)要放置自动射击
2.印记目标/雄鹰
说明:〈如果有灵猴则施放雄鹰,如果有雄鹰则施放猎人印记+宠物攻击+自动射击〉
快捷键:Q(宏图标放在右下快捷栏)
/施放自动射击
/script PetAttack()
/script for i=1,16,1 do if(UnitBuff("player",i)~=nil) then if(string.find(UnitBuff("player",i),"Mon")~=nil) then CastSpellByName("雄鹰守护(等级 4)");break;end end if(i==16) then CastSpellByName("猎人印记(等级 3)");end end
3.射击 SOLO模式(保留长冷切时间的技能)
说明:〈如果没有自动射击则施放自动射击+宠防御模式+宠物攻击+智能钉刺〉+奥术射击+多重射击
快捷键:E(宏图标放在右下快捷栏)
/script if(not IsAutoRepeatAction(40)) then CastSpellByName("自动射击"); end
/script PetDefensiveMode()
/script PetAttack()
/script UseAction(9)---------------------将此介绍的宏(9.智能钉刺)放在物品栏9
/施放奥术射击(等级 6)
/施放多重射击(等级 3)
4.射击 PK模式(使用长冷切时间的技能)
说明:<无自动射击则开启自动射击+宠防御模式+宠物攻击+急速射击>+震荡射击+智能钉刺+狂野怒火+奥术射击+多重射击+胁迫
快捷键:R(宏图标放在右下快捷栏)
/script if(not IsAutoRepeatAction(40)) then CastSpellByName("自动射击"); end
/script PetDefensiveMode()
/script PetAttack()
/施放急速射击
/施放震荡射击
/script UseAction(9)
---------------------将此介绍的宏(9.智能钉刺)放在物品栏9
/施放狂野怒火
/施放
奥术射击(等级 6)
/施放多重射击(等级 3)
/施放胁迫
5.近身攻击
说明:<(如果身上没有灵猴则施放灵猴/有则使用猛禽一击)+目标没有摔绊则摔绊+宠物攻击>+猫鼬撕咬+猛禽一击
快捷键:F(宏图标放在右下快捷栏)
/script UseAction(7)
----------------------将此介绍的宏(7.切换灵猴守护)放在物品栏7
/script UseAction(8)
----------------------将此介绍的宏(8.近身技能)放在物品栏8
/施放胁迫
/施放狂野怒火
6.使用绷带
说明:<对自己使用绷带后,不丢失目标>
快捷键:F1(宏图标放在左下快捷栏1)
/script TargetUnit("Player");
/use厚魔纹绷带
/script TargetLastEnemy();
/script PetDefensiveMode()
7.切换灵猴守护
说明:<有灵候则猛禽一击,无则灵候>
快捷键7:(宏图标放在主快捷栏7)
/script for i=1,16,1 do if(UnitBuff("player",i)~=nil) then if(string.find(UnitBuff("player",i),"Mon")~=nil) then CastSpellByName("猛禽一击(等级 6)");break;end end if(i==16) then CastSpellByName("灵猴守护");end end
8.近身技能
说明:如果躲避攻击则猫鼬撕咬,否则<如果目标无摔拌则施放摔拌/有则猛禽一击+宠物攻击>
快捷键8:(宏图标放在主快捷栏8)
/施放猫鼬撕咬(等级 3)
/script local T; for i=0,15,1 do T=UnitDebuff("target", i); if(T and string.find(T,"Trip")) then break; end; end; if(T and string.find(T,"Trip")) then CastSpellByName("猛禽一击(等级 6)"); else CastSpellByName("摔绊(等级 2)"); PetAttack() end
9.智能钉刺
说明:首先判断目标是否牧师/圣骑士,如果是则使用宏(10.吸魔钉刺),否则使用宏(11.毒蛇钉刺)
快捷键9:(宏图标放在主快捷栏9)
/script class= UnitClass("target"); if(( class=="牧师") or( class=="圣骑士")) then UseAction(10); else UseAction(11); end
10.吸魔钉刺
说明:自动判断目标是否已有吸魔钉刺,如果有则宠物攻击,如果没有则加上
快捷10:(宏图标放在主快捷栏10)
/script local T; for i=1,16,1 do T=UnitDebuff("target", i); if(T and string.find(T,"AimedShot")) then break; end; end; if(T and string.find(T,"AimedShot")) then PetAttack(); else CastSpellByName("蝰蛇钉刺(等级 2)"); end;
11.毒蛇钉刺
说明:自动判断目标是否已有毒蛇钉刺,如果有则宠物攻击,如果没有则加上
快捷键11:(宏图标放在主快捷栏11)
/script local T; for i=1,16,1 do T=UnitDebuff("target", i); if(T and string.find(T,"Quickshot")) then break; end; end; if(T and string.find(T,"Quickshot")) then PetAttack(); else CastSpellByName("毒蛇钉刺(等级 6)"); end;
12.跳放冰冻陷阱/爆炸陷阱
说明:<跳+冰冻陷阱>
快捷键:C(宏图标放在右下快捷栏)
/script U=UseAction Jump()
/施放冰冻陷阱(等级 2)
13.找JY宠物
说明:<方便抓JY宠物,如果目标野兽在40码内就有显示目标头像>
快捷键:无需
/target拉克西里
/script if UnitExists("target") then Jump();end
14.假死陷阱
说明:<按第一下是假死+宠物停止攻击收宠+清除目标><按第2下是冰冻陷阱+重新锁定目标>。可以在15秒的毒蛇钉刺过后使用
快捷键:4(宏图标放在主快捷栏4)
/script TargetLastEnemy()
/script PetPassiveMode()
/script PetFollow()
/script ClearTarget()
/施放假死
/施放冰冻陷阱(等级 2)
/script TargetLastEnemy()
在真正使用这些宏的时候,提示的信息会在游戏右上角显示,这样会防碍我们的视线,在此希望各位使用转移错误信息的插件,下载地址:
如果你使用上面这个办法之后,插件还是显示版本错误的话,只要在选择人物的时候在插件设置中点击“加载过时插件”就可以了
以上的宏请根据自己的技能实际等级修改例如:/施放奥术射击(等级 6)请自己将其中的“6”改成自己想要的数字
其他地方都不需要做任何修改,照抄就可以了。希望各位都采用上述的14个宏(一个都不要少)和快捷键设置,操作起来非常方便的!
还有关于放风筝的问题,因为目前的宏并不支持自动转身。所以最简单,最有效的放风筝方法是:
开启鼠标移动模式(1)用鼠标左键点自己身后进行转身,(2)转身后再快速点一次鼠标左键向远处跑,(3)拉开距离后迅速鼠标左键点自己身后同时按一下R<4.射击 PK模式>同时进行一次普通射击和奥术射击
完成之后。继续重复以上步骤。
关于天赋加法,经过再三研究认为31兽王20生存/31兽王20射击都是比较好的加点方法不过个人比较喜欢前者(本人是牛头猎人)
1.9改进后兽王的天赋总体上爆发性战斗力稍微下降了而非爆发性战斗力提高比较多兽王系总体来说还是比较值得加点的天赋
关于宠物的选择:由于1.x版改掉了全抗100的狼和抗火240的秃鹫,1.9版又改了鲁伯斯和霜狼,所以我准备以后到冬泉谷抓58级稀有老虎拉克西里(估计以后3连击也会被改掉的)。所以我是要先把野猪带到60级再去抓的。
个人对装备的要求并不是很高,早早买了气派护臂和驭兽者腰带和矮人火炮,战场6件蓝装是一定会去混的同时也为了奥战场和阿西拉的紫色声望物品,目前收集暗月卡片英雄和旋涡中,我走的近战路线是双匕首双卡片双邪恶付魔的特效攻击方式。
暗月卡片的发动机会分别是:1次/20击(旋涡)和1次/10击(英雄)
暗月卡片的效果DPS是: 250/1次(旋涡)和150/1次(英雄)
卡片的特性:自然属性攻击=(旋涡)神圣属性恢复=(英雄)
双匕首的攻击频率是 0.8秒/1击
计算结果是:(250/20)/0.8=15.625DPS/秒(旋涡)-----只装备旋涡,效果看目标自然抗性
(150/10)/0.8=18.75DPS/秒(英雄)-----只装备英雄,效果视我方状态
15.625+18.75=34.375DPS/秒------------同时装备旋涡和英雄
不知道付魔“邪恶攻击”的发动机率和效果如何,对猎人来说比十字军付魔要好用很多。
如果选择使用大型近战武器的话,冰刺长矛是最简单的选择。饰品则装备6级霜狼饰品(到达声望无法再提高的时候可以买)
三、魔兽世界高级宏
#showtooltip稳固射击
/cast!自动射击
/cast [targepettarget, exists]杀戮命令
/cast [targepettarget, exists]杀戮命令
/cast [pet:风蛇,targepettarget]闪电吐息
/castsequence resecombat/target/15毒蛇钉刺,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击
/script UIErrorsFrame:Clear()
这个原版是风蛇抽筋宏,前天刚改完,需要注意的是/castsequence rese后面是有t和=号的,不知道为什么论坛会自动去掉,很多人直接复制论坛宏没用的原因也是这个,所以复制过去后一定要加回去!!!这个宏命令长度超过255字符,而游戏中最长支持字符为255,所以你可以选择不加#showtooltip稳固射击或者/script UIErrorsFrame:Clear(),也就是宏命令的开头或者结尾!!个人倾向于去掉开头,后面这个是清除错误提示的,这个问题倒不大,随意就好!!
说了这么多,还没解释宏,不好意思了,这个宏本身就是风蛇抽筋宏,具有抽筋宏的一切优势,同时,我在施放技能中添加了毒蛇钉刺,就是这句/castsequence resecombat/target/15毒蛇钉刺,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,解释为,当脱离战斗,或改变目标,或15秒后,依次施放毒蛇钉刺,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,稳固射击,放了7个稳固在这,1。5S施法时间,同时受急速等级影响,也就是说在没到15的时间里就会施法毒蛇钉刺,一般应该在12左右,暂时没去大FB试过,野外测试我懒得去找砰砰博士(可怜的孩子,几乎成了测试专用的了!!)理论成立,要是低于12S施法,可自己手动在后面添加一个稳固射击,不过要受字符限制,自己衡量得失!!!可能前后都去掉应该够了!!
3.05狂野怒火有GCD了所以这2个技能不可能同时开中间必须间隔1.5S的GCD所以这种宏没有了.