宏命令里常用的函数有



- by elecass -


1.发送消息


1.1 SendChatMessage("message","system","language","channel")
作用:发送一条聊天消息
参数:
	 "message":要发送的消息
	 "system":聊天消息想要发送的类型,省略时为"SAY",可使用:
							 "SAY":说
							 "WHISPER":密语,必须在参数"channel"中指明密语对象的名字,可配合函数UnitName("unit")使用
							 "CHANNEL":频道,必须在参数"channel"中指明频道的编号,省略时为”综合”
							 "GUILD":工会
							 "PARTY":小队
							 "RAID":组团
							 "YELL":大喊
	 "language":使用的语言,若无参数"channel"时可省略。
							 常用:”Common”, “Orcish”,在CWOW中可使用”通用语”、”兽人语”。亦可指定WOW中使用的其它语言,准确的语言名可使用函数GetDefaultLanguage(“unit”)获得。
							 参数"language"指定的语言仅对发送者生效,接受者将以其默认语言接收。


1.2 GetDefaultLanguage(“unit”)
作用:返回参数”unit”指定的单位所使用的默认语言



2.字符运算


2.1 strfind(“string”,”pattern”)
作用:在字符串”string”中寻找字符(串)”pattern”
返回值:若找到,返回2个值,开始位置、结束位置;若找不到,返回nil


2.2 format(“formatstring”,value,…,…)
作用:使用value,…,…提供的值,按照”formatstring”指定的格式,建立字符串
“formatstring”中常用的格式:
							 %s:字符串
							 %d:整数
							 %f:浮点数


3.好友/屏蔽


3.1 AddFriend("name")
作用:将指定名字的玩家加入好友列表
参数:
			 "name":玩家的名字,可使用函数UnitName("unit")获得


3.2 AddIgnore("name")
作用:将指定名字的玩家加入屏蔽列表


3.3 DelIgnore("name")
作用:将指定名字的玩家从屏蔽列表中删除


3.4 AddOrDelIgnore("name")
作用:切换指定名字的玩家的屏蔽状态



4.组队


4.1 InviteToParty("unit")
作用:邀请参数”unit”指定的单位加入小队


4.2 InviteByName("name")
作用:邀请指定名字的玩家加入小队


4.3 UninviteFromParty("unit")
作用:将参数”unit”指定的单位踢出小队


4.4 UninviteByName("name")
作用:将指定名字的玩家踢出小队


4.5 LeaveParty()
作用:离开小队


4.6 UnitInParty("unit")
作用:判断参数”unit”指定的单位是否和玩家在同一小队中


4.7 GetNumPartyMembers()
作用:返回除玩家外的队友数


4.8 GetNumRaidMembers()
作用:返回包括玩家在内的团友数;若未组团,返回0


4.9 GetPartyMember(N)
作用:返回指定号码的队友的名字
返回值:若该队友不存在,返回nil



5.地图位置


5.1 GetZoneText()
作用:返回地区名


5.2 GetSubZoneText()
作用:返回分区名;若玩家并未位于一分区内,返回空值(并非nil值)


5.3 GetMinimapZoneText()
作用:返回小地图上显示的区域名。若玩家位于一分区内,相当于函数GetSubZoneText();若玩家并未位于一分区内,相当于函数GetZoneText()


5.4 SetMapToCurrentZone()
作用:将世界地图设置到玩家所位于的地区


5.5 SetMapZoom(continent)
作用:将世界地图设置到参数continent指定的大陆
参数continent:
	 0:整个世界
	 1:卡里姆多
	 2:东部王国


5.6 GetPlayerMapPosition("unit")
作用:返回参数”unit”指定的单位在当前地图中所处的坐标
参数:
	 "unit":可使用”player”、”partyN”及”target”。”target”仅能用于友好单位。
返回值:若可用,返回2个值,X轴坐标、Y轴坐标,返回值位于0~1区间;否则,均返回0



6.物品


6.1 PickupContainerItem(bag,slot)
作用:鼠标左击,参数bag指定的背包中、参数slot指定的格子
参数:
	 bag:背包的编号,0~4,自右向左
			 0:最右侧的背包(出生时自带的16格包)
			 4:最左侧的背包(猎人的箭袋、子弹袋)
	 slot:背包格子的编号,1~16,自左向右,由上而下
			 1:最上排最左侧格子
			 2:最上排最左2格子


6.2 PickupInventoryItem(id)
作用:鼠标左击人物属性窗口中,参数id指定装备格子
参数:
	 id:装备格子的编号
			 1:头
			 2:颈
			 3:肩
			 4:衬衣
			 5:胸
			 6:腰带
			 7:腿
			 8:脚
			 9:手腕
			 10:手套
			 11:手指1
			 12:手指2
			 13:饰品1
			 14:饰品2
			 15:背
			 16:主手
			 17:副手
			 18:远程武器


6.3 UseContainerItem(bag,slot)
作用:鼠标右击,参数bag指定的背包中、参数slot指定的格子


6.4 CursorHasItem()
作用:判断指针当前是否持有物品


6.5 OffhandHasWeapon()
作用:判断副手是否装备了物品


6.6 AutoEquipCursorItem();
作用:自动装备指针当前持有的物品


6.7 DeleteCursorItem()
作用:摧毁指针当前持有的物品


6.8 GetContainerItemLink(bag,slot)
作用:返回参数bag指定的背包中、参数slot指定格子的物品链接


6.9 GetContainerItemInfo(bag,slot)
作用:返回参数bag指定的背包中、参数slot指定格子的物品信息


6.10 IsBagOpen(bag)
作用:判断参数bag指定的背包是否打开


6.11 ToggleBag(bag)
作用:打开/关闭参数bag指定的背包


6.12 CloseBag(bag)
作用:关闭参数bag指定的背包


6.13 OpenBag(bag)
作用:打开参数bag指定的背包


6.14CloseAllBags()
作用:关闭所有的背包


6.15 OpenAllBags()
作用:打开/关闭所有的背包 



7.运动


7.1 MoveForwardStart()
作用:向前移动。仅能由函数MoveForwardStop()停止。


7.2 MoveForwardStop()
作用:停止向前移动
7.3 MoveBackwardStart()
作用:向后移动
7.4 MoveBackwardStop()
作用:停止向后移动
7.5 StrafeLeftStart()
作用:向左移动
7.6 StrafeLeftStop()
作用:停止向左移动
7.7 StrafeRightStart()
作用:向右移动
7.8 StrafeRightStop()
作用:停止向右移动
7.9 TurnLeftStart()
作用:向左转动
7.10 TurnLeftStop()
作用:停止向左转动
7.11 TurnRightStart()
作用:向右转动
7.12 TurnRightStop()
作用:停止向右转动


7.13 ToggleAutoRun()
作用:开启/关闭自动跑步状态


7.14 Jump()
作用:跳



8.目标选择


8.1 ClearTarget()
作用:清除选定的目标


8.2 TargetUnit("unit")
作用:选定参数”unit”指定的单位为当前目标


8.3 TargetByName("name")
作用:选定指定名字的玩家为当前目标


8.4 TargetLastEnemy()
作用:选定前次曾选定的敌人为当前目标


8.5 TargetLastTarget()
作用:选定前次曾选定的目标为当前目标


8.6.1 TargetNearestFriend()
作用:选定位置最近的友方单位为当前目标


8.6.2 TargetNearestPartyMember() 
作用:选定位置最近的队友为当前目标


8.6.3 TargetNearestRaidMember()
作用:选定位置最近的团友为当前目标


8.7 TargetNearestEnemy()
作用:选定位置最近的敌人为当前目标
参数:TargetNearestEnemy(1):逆序选择


8.8 AssistUnit("unit")
作用:选定参数”unit”指定单位的当前目标为自身的当前目标


8.9 AssistByName("name")
作用:选定指定名字玩家的当前目标为自身的当前目标



9.目标性质状态


9.1 UnitAffectingCombat("unit")
作用:判断参数”unit”指定的单位是否处于战斗状态


9.2.1 UnitBuff("unit",index)
作用:返回参数”unit”指定单位上、参数index指定序号的Buff的信息
返回值:若该单位上不存在该序号的Buff,返回nil;若存在,返回该Buff的相关信息


9.2.2 UnitDeBuff("unit",index)
作用:返回参数”unit”指定单位上、参数index指定序号的DeBuff的信息


9.3 UnitExists("unit")
作用:判断参数”unit”指定的单位是否存在


9.4 UnitIsPlayer("unit")
作用:判断参数”unit”指定的单位是否是玩家


9.5.1 UnitIsUnit("unit","otherUnit")
作用:判断2个单位是否是同一单位


9.5.2 UnitIsEnemy("unit","otherUnit")
作用:判断2个单位是否敌对


9.5.3 UnitIsFriend("unit", "otherUnit")
作用:判断2个单位是否友好


9.6.1 UnitInParty("unit")
作用:判断参数”unit”指定的单位是否是队友


9.6.2 UnitInRaid ("unit")
作用:判断参数”unit”指定的单位是否是团友


9.7.1 UnitCanAttack("unit","otherUnit")
作用:判断参数”unit”指定的单位是否可以攻击参数"otherUnit"指定的单位


9.7.2 UnitCanAssist("unit","otherUnit")
作用:判断参数”unit”指定的单位是否可以支援参数"otherUnit"指定的单位


9.7.3 UnitCanCooperate("unit","otherUnit")
作用:判断参数”unit”指定的单位是否可以与参数"otherUnit"指定的单位合作


9.8 UnitName("unit")
作用:返回参数”unit”指定单位的名字
参数:
	 “unit”:指定的单位,可使用:
							 "player":玩家自身
							 "pet":玩家自身的宠物
							 "party1","party2","party3","party4":1至4号队友
							 "partypet1"~"partypet4":1至4号队友的宠物
							 "raidN":N(1~40)号团友
							 "raidpetN":N(1~40)号团友的宠物
							 "target":当前选中的目标,可以将"target"做为后缀直接添加在所有”unit”类型之后


9.9 UnitClassification("unit")
作用:返回参数”unit”指定单位的分级(精英、稀有、普通)


9.10.1 UnitCreatureType("unit")
作用:返回参数”unit”指定单位的物种分类(野兽、……)


9.10.2 UnitCreatureFamily("unit")
作用:返回参数”unit”指定单位的物种(螃蟹、狼、熊、……)


9.11 UnitClass("unit")
作用:返回参数”unit”指定单位的职业(战、牧、法、……)


9.12.1 UnitFactionGroup("unit")
作用:返回参数”unit”指定单位所处的集团(联盟、部落)


9.12.2 UnitRace("unit")
作用:返回参数”unit”指定单位的种族(人类、兽人、……)


9.13 UnitSex
作用:返回参数”unit”指定单位的性别


9.14 UnitLevel("unit")
作用:返回参数”unit”指定单位的等级
返回值:若等级未知(骷髅),返回-1


9.15.1 UnitMana("unit")
作用:返回参数”unit”指定单位的当前法力(能量、怒气)值
返回值:法力(能量、怒气)值的当前点数


9.15.2 UnitManaMax("unit")
作用:返回参数”unit”指定单位的最大法力(能量、怒气)值
返回值:法力(能量、怒气)值的最大点数


9.16.1 UnitHealth("unit")
作用:返回参数”unit”指定单位的当前生命值
返回值:返回生命值的当前点数;但对”target”,返回生命值的当前百分数(0~100)


9.16.2 UnitHealthMax("unit")
作用:返回参数”unit”指定单位的最大生命值
返回值:返回生命值的最大点数;但对”target”,返回100



10.攻击/跟随


10.1 AttackTarget()
作用:开启/关闭自动攻击状态


10.2 PetAttack()
作用:命令宠物攻击


10.3 FollowUnit("unit")
作用:跟随参数”unit”指定的单位


10.4 FollowByName("name")
作用:跟随指定名字的玩家



11.法术


11.1 CastSpellByName("spellname(Rank X)")
作用:施放指定名称的法术


11.2 CastSpell(spellID,spellbookTabNum)
作用:施放参数spellbookTabNum指定的法术书标签中、参数spellID指定位置的法术


11.3 GetSpellCooldown(spellID,spellbookTabNum)
作用:返回指定法术的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0


11.4 SpellIsTargeting()
作用:判断是否有法术正在施放并等待选择目标


11.5 SpellCanTargetUnit("unit")
作用:判断正在等待选择目标的法术能否向参数”unit”指定的单位施放


11.6 SpellTargetUnit("unit")
作用:向参数”unit”指定的单位施放正在等待选择目标的法术


11.7 SpellStopCasting()
作用:停止当前的施法



12.动作条和动作相关


12.1 ChangeActionBarPage()
作用:将动作条切换到系统全局变量CURRENT_ACTIONBAR_PAGE的设定值


12.2 UseAction(ActionSlot)
作用:执行与参数ActionSlot指定的动作槽相关联的动作
参数ActionSlot:1~72,第1动作条的第1格为1、第12格为12,第2动作条的第1格为13、第12格为24,……,第6动作条的第1格为61、第12格为72。第3动作条是右侧动作条,第4动作条是右2动作条,第5动作条是底部右侧动作条,第6动作条是底部左侧动作条。


12.3 GetActionCooldown(ActionSlot)
作用:返回指定动作的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0


12.4 GetActionCount(ActionSlot)
作用:返回指定动作(绷带、药水等)的可用数量



13.宠物


13.1 PetAttack()
作用:宠物攻击


13.2 PetFollow()
作用:宠物跟随


13.3 PetWait()
作用:宠物等待


13.4 PetDismiss()
作用:宠物解散


13.5 CastPetAction(PetActionID)
作用:施放参数PetActionID指定序号的宠物技能


13.6 GetPetActionCooldown(PetActionID)
作用:返回指定宠物技能的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0


13.7 PetAggressiveMode()
作用:将宠物设为好斗模式


13.8 PetDefensiveMode()
作用:将宠物设为防御模式


13.9 PetPassiveMode()
作用:将宠物设为被动模式



14.其它


14.1 GetTime()
作用:返回当前的游戏内部时间,单位秒


14.2 random(lower,upper)
作用:返回随机数
返回值:随机数。无参数时位于[0,1)区间;提供单个参数n时,返回值位于[1,n]区间;提供两个参数lower、upper时,返回值位于[lower,upper]区间


14.3 CloseMerchant()
作用:关闭商人窗口


14.4 GetComboPoints()
作用:返回连击点数


14.5 Logout()
作用:登出


14.6 Quit()
作用:退出



	背包讲解:
[4][3][2][1][0]] 背包的排序


6格包的格子编号如下: 


_____[1][2] 
[3][4][5][6] 


16格包的格子编号如下: 


[ 1][ 2][ 3][ 4] 
[ 5][ 6][ 7][ 8] 
[ 9][10][11][12] 
[13][14][15][16] 


其他格数以此类推。





[align=right][color=#000066][此贴子已经被作者于2005-11-6 12:23:57编辑过][/color][/align]
Laola
2005-11-06 11:53:42
0樓
1.人物信息栏中的武器互换
宏为:/script PickupInventoryItem(16);PickupInventoryItem(17)
讲解:本宏是对于手上两把武器的互换.其中的(16)为主手,(17)为副手
如:主手是匕首 副手是剑(未用之前)
主首为剑 副手为匕首(使用本宏)



2.(前提:你的手上是双剑) 切换主手武器
宏:/script if ( not CursorHasItem())then PickupContainerItem(mainhandBag,mainhandBagSlot); PickupInventoryItem(16); PickupContainerItem(mainhandBag,mainhandBagSlot);end 
讲解:这是在你想换掉主手中的剑而用匕首的宏(本人最爱,双剑练级 匕首吗当然是荣誉杀敌)
例子:首先你要先选择你背包中,最好是一个不用的格子比如第4个背包中的第1格,这样把(mainhandBag,mainhandBagSlot)这宏内容改为(4;1)
在本宏出现两个上述内容都改为(4;1)其他原封不动的打下来(注意:本宏中有一些内容之间缝隙大那是空格)


[align=right][color=#000066][此贴子已经被作者于2005-11-6 12:22:43编辑过][/color][/align]
Laola
2005-11-06 12:20:08
1樓
1.双手武器 换到(主手武器+盾)
宏:/script PickupContainerItem(MainhandBag,MainhandBagSlot) 
/script PickupInventoryItem(16) 
/script PickupContainerItem(TwohandsBag,TwohandsBagSlot) 
/script PickupContainerItem(OffhandBag,OffhandBagSlot) 
/script PickupInventoryItem(17) 
讲解:假如你想把双手武器放在第4个包的第1个格子就把(TwohandsBag,TwohandsBagSlot)改为(4,1)
这样,你的主手武器放在第4个包的第2个格子就把(MainhandBag,MainhandBagSlot)改为(4,2)
盾嘛,你就把它放在第4个包的第3格子就把(OffhandBag,OffhandBagSlot)改为(4,3)就行了


以上操作最好按我告诉你的来做,剩下的其他内容都原封不动的照打下来(注意!!空隙大的地方是空格)


2.(主手武器+盾) 换到 双手武器


宏:/script PickupInventoryItem(17) 
/script PickupContainerItem(OffhandBag,OffhandBagSlot) 
/script PickupContainerItem(TwohandsBag,TwohandsBagSlot) 
/script PickupInventoryItem(16) 
/script PickupContainerItem(MainhandBag,MainhandBagSlot) 
讲解:关于包和格子的位置数要和上面的一样[双手武器是(4,1) 主手武器是(4,2) 盾是(4,3)]


这两个是一个整体要互相使用,互相配合.

Laola
2005-11-06 12:23:14
2樓
再说说宏。常用的其他帖子也有说,我也简单说几个。
1.吃面包,假如放在自己主包裹(这个叫法可能不专业,就是一出生带的那个)的第1个位置(从上到下,从左到右数)
/script UseContainerItem(0,1) ( 0表示主包裹,2表示第2个位置)

2.绷带
/script TargetUnit(player)
/script UseContainerItem(0,2) (类似吃面包)

3.跟随跑(本人比较懒,能跟就跟@@)
/script ToggleAutoRun() (万一没人可跟,只好自己跑:-( )
/script TargetNearestFriend()
/follow

4.偷袭。之所以把偷袭做成宏,是因为经常出现妖怪跟队友杀成一片,点不到怪,或者自己想偷袭的怪跑远了,只好换一个。同理可以用于其它技能。
/script ClearTarget()
/script TargetNearestEnemy()
/施放 偷袭

5.还击。巨好的一个技能,但是要招架了对方攻击才能用,实际打起来哪能注意过来?用宏解决这个问题。很简单:
/施放 还击
/施放 邪恶攻击x x
这是个虽然笨但很有效的办法,每次邪恶攻击之前先用还击。如果不行(并没有招架对方)会给你错误提示,不会影响你的邪恶攻击施放。同样的道理可以用于背刺,副本中经常会在怪屁股后面打。这个宏我没试过,因为还没+到还击,呵呵,见笑。

6.其他常用宏
/slap (扇耳光,当别人对你做粗鲁手势的时候,PVE服务器常用)
/观察 (看看别人装备:) )
Laola
2005-11-06 12:30:54
3樓
好帖,顶。

liuzi
2005-11-06 13:59:53
4樓
狂顶啊~精华~
花声月影
2005-11-07 09:12:47
5樓