关键字搜索 | 社区 | 首页

WoWTC - 战网中国魔兽世界 -> 宏和UI
宏命令常用函数(update to 1.8)
2005-07-15 17:42
elecass / 人气:9262
加为IE收藏  收藏文章
上一文章     下一文章


比较全的函数库请去http://www.wowwiki.com/查看

宏命令里常用的函数有

1.发送消息

1.1 SendChatMessage("message","system","language","channel")
作用:发送一条聊天消息
参数:
  "message":要发送的消息
  "system":聊天消息想要发送的类型,可使用:
        "SAY":说
        "WHISPER":密语,必须在参数"channel"中指明密语对象的名字,可配合函数UnitName("unit")使用
        "CHANNEL":频道,必须在参数"channel"中指明频道的编号,省略时为”综合”
        "GUILD":工会
        "PARTY":小队
        "RAID":组团
        "YELL":大喊
  "language":使用的语言,若无参数"channel"时可省略。
        在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.1 UseContainerItem(bag,slot)
作用:鼠标右击,参数bag指定的背包中、参数slot指定的格子

6.3.2 UseInventoryItem(id)
作用:鼠标右击人物属性窗口中,参数id指定装备格子

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

6.5 OffhandHasWeapon()
作用:判断副手是否装备了武器(盾不是武器)

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

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

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

6.8.2 GetInventoryItemLink("unit",id)
作用:返回参数”unit”指定单位的、参数id指定装备格子的物品链接

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指定位置的法术
参数spellbookTabNum:"spell"或"pet"

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

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

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

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

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

11.8 CastShapeshiftForm(index)
作用:切换到参数index指定的形态/姿态(职业相关)
德鲁依
1 = 熊形态
2 = 水中形态
3 = 猫形态
4 = 旅行形态
盗贼
1 = 潜行
战士
1 = 战斗姿态
2 = 防御姿态
3 = 狂暴姿态

11.9 GetNumShapeshiftForms()
作用:返回可用的形态/姿态的数量


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 GetActionCount(ActionSlot)
作用:返回指定动作(绷带、药水等)的可用数量

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

12.5 IsUsableAction(ActionSlot)
作用:判断指定动作是否可用
返回值:返回2个值:是否可用——若当前可用(不包括冷却和距离判断)则返回1,否则返回nil;法力不足——若指定动作当前不可用的原因是法力/能量/怒气不足则返回1,否则返回nil。

12.6 IsActionInRange(ActionSlot)
作用:判断指定动作是否在可用距离内
返回值:无动作或无目标时返回nil;超出可用距离时返回0;在可用距离内返回1。注意若距离对该动作无效或不能对选定的目标施法时总是返回1。


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()
作用:退出




相关评论
爱已沉睡 认为: 2005-07-19 19:57

看不明白~~可不可以中文说下~~拜托~~^ ^
elecass 认为: 2005-07-20 14:27

哪点不明白?不会都不明白吧?


嗯,等我上班空下来的时候搞个中文解释出来。

最好还是哪个不明白解释哪个吧
wowlover1 认为: 2005-07-20 21:36

我明白

不过有些可以用中文代替的 啊

比如

/释放 [火球术 3]

还有你忘了个参数 %t

哈哈
MineXP 认为: 2005-07-21 09:59

真的很不错,可是有的用途是不懂,不知道该怎么用?
elecass 认为: 2005-07-21 15:12

QUOTE:
下面是引用wowlover1于05-07-20 21:36发表的:
我明白

不过有些可以用中文代替的 啊

比如
.......



是呀是呀,不过你说的是命令,可以看http://www.wowtc.com/bbs/read.php?tid=4089&fpage=2这个贴子,就是要自己翻成中文。

我说的都是函数

个人认为,命令使用比较方便,函数功能比较强大,嘻嘻
elecass 认为: 2005-07-21 15:19

好了,常用的都搞定了

宠物那部分我不熟悉,随手翻的,哪位猎人/术士大大帮忙看看对不对,先行谢过


[ 此贴被elecass在05-07-22 15:00重新编辑 ]
MineXP 认为: 2005-07-25 12:08

都整理成中文了,建议加精,别没了,可以常常查看

另问一下: 对友好单位或自己施法
/cast 治疗术(等级1)
/script TargetUnit("player")

上段中 "player" 是不是要改成游戏中自己的ID名?


[ 此贴被MineXP在05-07-25 12:29重新编辑 ]
elecass 认为: 2005-07-25 12:27

"player"原样输入就可以啦,它就是指玩家,而不需要改成玩家的名字

根据名字指定目标是使用函数TargetByName("name"),这里的"name"才要改成自己的名字
MineXP 认为: 2005-07-25 12:57

QUOTE:
下面是引用elecass于05-07-25 12:27发表的:
"player"原样输入就可以啦,它就是指玩家,而不需要改成玩家的名字

根据名字指定目标是使用函数TargetByName("name"),这里的"name"才要改成自己的名字


那怪了

对友好单位或自己施法:

QUOTE:
/cast 治疗术(等级1)
/script TargetUnit("player")


如果你当前选择的目标是可以对其使用此魔法的友好单位的话,则对其使用魔法。
如当前目标是不能接受此魔法的单位,或没有选择任何目标的话,则对自己使用魔法。
而且不会对当前目标进行切换,不会中断对当前敌人的攻击。


这个宏的最后的效果怎么和他说不对应啊,他总是会改变 你的当前目标为自己,

怎么做才能达到可以对当前选择目标是可以对其使用此魔法的友好单位的话,则对其使用魔法;否则给自己施法,并且不切换你当前的目标啊?
elecass 认为: 2005-07-25 14:13

我没试过。具体是什么表现?是对友方施法,不行才对自己施法,但不管对谁施法都会把目标改成自己?还是总是把目标改成自己然后对自己施法?

我觉得这里可能有2个问题

1.如果是第1种表现
根据这个宏写法看,作用应该是:(1)如果你当前选择的目标是可以对其使用此魔法的友好单位的话,则对其使用魔法。然后改变目标为自己。(2)如当前目标是不能接受此魔法的单位,或没有选择任何目标的话,则对自己使用魔法。而且不会对当前目标进行切换,不会中断对当前敌人的攻击。

所以原先的那个表述肯定有问题。在(1)的情况下一定会改变目标为自己,但施法还是对友方单位的。(2)的情况我不确定,按理应该不会改变目标。我看不出问题在哪里,希望有其它lr来指教一下

2.如果是第2种表现
很好理解,这证明了一个长久以来的传说:同一个宏里,所有"/"开始的命令都是同时执行的。
所以虽然“/script TargetUnit("player")”写在后面,但是和写在前面没区别,所以……


我个人觉得这个宏写成这样比较好

/script CastSpellByName("治疗术(等级1)"); if SpellIsTargeting() then SpellTargetUnit("player") end;
MineXP 认为: 2005-07-25 14:23

那个宏的结果就和你的解释(1)(2)相同的

而且 我想要的是同时能实现这样做的 (1)如果你当前选择的目标是可以对其使用此魔法的友好单位的话,则对其使用魔法,不切换当前目标,(2) 如当前目标是不能接受此魔法的单位,或没有选择任何目标的话,则对自己使用魔法。而且不会对当前目标进行切换,不会中断对当前敌人的攻击。

不知道你的这个/script CastSpellByName("治疗术(等级1)"); if SpellIsTargeting() then SpellTargetUnit("player") end;

能否做到啊?或解释一下你这个宏最后的效果也行,符不符合我那个没有关系,共同探讨学习嘛


另你的end 结束语句书写好像也有问题 , 我看的多数这样样式都是 ; end 没看到 有end; 不知道我说的对不对?


[ 此贴被MineXP在05-07-25 14:30重新编辑 ]
elecass 认为: 2005-07-25 14:46

嗯,也就是说是第1种表现啦,那样的话是原来的描述错了,从写法上看就是(1)(2)的效果

我那个就是根据你的要求(也就是原来那个错误的描述)写的

分解开来看

/script是调用函数的开头

CastSpellByName("治疗术(等级1)") 施放1级治疗术,和直接施放的效果相同(a)如果当前的目标是可以对其使用此魔法的友好单位的话,则对其使用魔法;(b)如当前目标是不能接受此魔法的单位,或没有选择任何目标的话,则 等待选择施法目标(此时鼠标会变成一个手指的形状,选定施法目标不会改变当前目标,不管是否使用宏都一样)

if SpellIsTargeting()   判断是否处于 等待选择施法目标 的状态,也就是判断是(a)还是(b)的情况

then SpellTargetUnit("player") 如果处于 等待选择施法目标 的状态,也就是(b)的情况了,选定施法目标为自身(这个不会改变当前目标)

end   结束 if 语句,这中间我没写else,所以如果 没处于 等待选择施法目标 的状态,也就是(a)的情况,什么也不会做,当然也不会改变当前的目标


[ 此贴被elecass在05-07-25 14:54重新编辑 ]
elecass 认为: 2005-07-25 15:03

关于end,貌似几种写法都可以,不过我没测试过。

按理说 [分号] 是语句分隔标志,怎么用都不会有大问题

而“if”,“then”,“else”,“end”等都是规定的关键词,只要 [空格] 就能区分了


你所说的"; end"中的“;”是跟在前面的语句后面作为结尾的,和end无关。因为这里2个关键词“then”“end”之间只有一个语句,所以这个“;”应该可以省略。

我所写的"end;"中的“;”才是作为end的结束,不过因为后面没别的语句了,应该也可以省略

还有,似乎在语句简单的时候,最后的end不写都没问题


[ 此贴被elecass在05-07-25 15:12重新编辑 ]
MineXP 认为: 2005-07-25 15:24

又多学习了一些,多谢啊,晚上回去再试一下你写的看看效果如何。

另:能帮写一个60级牧师用的宏:可以根据目标等级来施放不同级别要求的恢复技能吗?
我试改了好几次都出错,没有成功啊

你可以参考一下这个韧的宏:
/script r=6;l={1,12,24,36,48,60};t=UnitLevel("target");if (t==0) then t=UnitLevel("player");end;if UnitIsFriend("player","target") then for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("真言:韧(等级 "..j..")");break;end;end;end

技能等级   人物角色等级要求
恢复 [1级] 等级 8
恢复 [2级] 等级 14
恢复 [3级] 等级20
恢复 [4级] 等级 26
恢复 [5级] 等级 32
恢复 [6级] 等级 38
恢复 [7级] 等级 44
恢复 [8级] 等级 50
恢复 [9级] 等级 56
elecass 认为: 2005-07-25 16:48

没练过牧师,那个宏看不太明白呀。原先那个加韧的宏测试通过吗?

如果通过的话,只要改兰字部分应该就可以了

/script r=9;l={8,14,20,26,32,38,44,50,56};t=UnitLevel("target");if (t==0) then t=UnitLevel("player");end;if UnitIsFriend("player","target") then for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("恢复(等级 "..j..")");break;end;end;end

两处红字部分看不太明白

“-10”这里表示可以有10级的差距。是不是牧师加韧有10级的差距才行,比如60级的韧只可以给50级以上的人加,48级的韧可以给38级以上的人加,……?如果是的话注意以下恢复有没有这种限制?是不是也是10级差距?我怎么觉得给个1级人物来个9级恢复也没啥,说错了牧师朋友们别怪。

还有"if (t==0) then t=UnitLevel("player");end;"
这句看他的意思似乎是在没目标的时候用玩家的等级来做判断,但他没加改变当前目标的语句,不明白本意究竟是什么。建议测试的时候可以把这句删了试试,应该没影响的
MineXP 认为: 2005-07-25 17:07

QUOTE:
下面是引用elecass于05-07-25 16:48发表的:
没练过牧师,那个宏看不太明白呀。原先那个加韧的宏测试通过吗?

如果通过的话,只要改兰字部分应该就可以了

/script r=9;l={8,14,20,26,32,38,44,50,56};t=UnitLevel("target");if (t==0) then t=UnitLevel("player");end;if UnitIsFriend("player","target") then for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("恢复(等级 "..j..")");break;end;end;end

两处红字部分看不太明白

“-10”这里表示可以有10级的差距。是不是牧师加韧有10级的差距才行,比如60级的韧只可以给50级以上的人加,48级的韧可以给38级以上的人加,……?如果是的话注意以下恢复有没有这种限制?是不是也是10级差距?我怎么觉得给个1级人物来个9级恢复也没啥,说错了牧师朋友们别怪。

还有"if (t==0) then t=UnitLevel("player");end;"
这句看他的意思似乎是在没目标的时候用玩家的等级来做判断,但他没加改变当前目标的语句,不明白本意究竟是什么。建议测试的时候可以把这句删了试试,应该没影响的


1。那个宏我正在使用的,是完全通过的
2。9级恢复是不能加给1级的玩家的,同样韧也是一样的,所以才要设定这样的宏来自动相应级别技能加给不同等级玩家,
3。恢复是不是也跟韧一样有10级的等级差,我得晚上加去游戏试一下才能确定结果
4。"if (t==0) then t=UnitLevel("player");end;"这个我也不明其意,照你说的,晚上回去可以删除试下
5。那个韧的宏,在当前没目标时不能对自己施放,要怎么改,加上呢?
elecass 认为: 2005-07-26 09:21

没有目标对自己施法并不难
在宏开始的地方加一句

if (UnitName("target")==nil) then TargetUnit("player") end;

不过这样的话在没目标的时候就会改变目标为自己了,而且,如果当前目标是敌人的话也不能用。

或者可以试试开始的地方不动,在最后加一句

if SpellIsTargeting() then SpellTargetUnit("player") end;

不过这样的话原来红字说不要的那句话就不能删了,而且那句话还是有问题,得再想想
MineXP 认为: 2005-07-26 09:36

先说一下你标记带一段红色字的那个宏,我昨晚测试时删除了红色那段语句,宏运行也是正常的。还有/script CastSpellByName("治疗术(等级1)"); if SpellIsTargeting() then SpellTargetUnit("player") end;也是很成功的,我已经根据这个自己又改了好几个,还有绷带宏都用着很好,很是感谢啊。

再说17楼的:
你的第一种方法不可行,达不到实用的效果了。
第2种方法加if SpellIsTargeting() then SpellTargetUnit("player") end;的,在我昨晚测试时没有加那标记红的语句,提示宏有错误,但如果加上的话,宏的大小可能就走出限制255字符了
elecass 认为: 2005-07-26 11:01

试试这个吧,255的字数限制实在太……,写完我自己都看不明白了

/script l={1,12,24,36,48,60};t="target";p="player";if UnitIsFriend(t,p) then p=t end;
/script for j=6,1,-1 do if (UnitLevel(p)>=l[j]-10) then CastSpellByName("真言:韧(等级 "..j..")");if (t~=p) then SpellTargetUnit(p) end;break;end;end;

BTW:原先测试通过的时候如果没目标会怎么样?


[ 此贴被elecass在05-08-02 09:41重新编辑 ]
MineXP 认为: 2005-07-26 11:21

你写的这个我得晚上回去试啊,才知道是不是正确啊?

原来通过的那个,在没有目标时,是没有反应的,手型也不会出的,要想给自己加韧,必须先用鼠标选定自己为当前目标,再按那个宏快捷才有效的

我就是想能达到友好目标自动按等级加不同级别的韧,当前没目标或目标非友好或不能作用此法时 给自己加韧
elecass 认为: 2005-07-26 11:31

QUOTE:
下面是引用MineXP于05-07-26 11:21发表的:
我就是想能达到友好目标自动按等级加不同级别的韧,当前没目标或目标非友好或不能作用此法时 给自己加韧


不能作用此法是什么意思?是不是友方NPC呀?这个可以再加一个判断是否是玩家的函数,不过字数很紧张呀

我写的那个是按照“友好目标自动按等级加不同级别的韧,当前没目标或目标非友好时给自己加韧”的思想写的。

PS:在后面直接加“if SpellIsTargeting()……”报错的原因可能是/script后的语句过长,据说CWOW中有一个14句的限制
MineXP 认为: 2005-07-26 12:04

QUOTE:
下面是引用elecass于05-07-26 11:31发表的:


不能作用此法是什么意思?是不是友方NPC呀?这个可以再加一个判断是否是玩家的函数,不过字数很紧张呀

我写的那个是按照“友好目标自动按等级加不同级别的韧,当前没目标或目标非友好时给自己加韧”的思想写的。
.......



最是要你的那个意思的宏了,另:参考韧的这个宏,改写的(恢复)宏,有点问题,指的是恢复的技能不像韧 那样是10级的等级差,我昨晚测试用9级的恢复 可以最低给46级的玩家加上,等级8:45-41 ,等级8以下的大概是这样的 ,等级7:40-36,6:35-31,5:30-26,4:25-21,3:20-16,2:15-11,1:10-1

只有等级9,8 是很准确的,我分别找出这个范围内的玩家来测试的,等级7以下,不是十分确定,推测

待我好好测试,或找高手问一下再说
毕业生 认为: 2005-08-01 10:08

终于看到一位宏达人

跪求一sm的,自然迅捷+治疗波的宏。下面是我在别的地方找到的,但是不能用
我也试了把自然迅捷和9级治疗波都改成中文,但还是不能用啊。另再问下,宏跟插件有关吗?我禁用了一些宠物的插件,因为我没宝宝。会不会影响我使用别的宏?
谢谢,能帮我写一个吗?

/target "player"
/script CastAway("swift",10,"Nature's Swiftness","Healing Wave(Rank 9)")
/script TargetLastEnemy();
/script AttackTarget();
毕业生 认为: 2005-08-01 10:09

都说宏没延迟功能,但是自然迅捷是不需要1.5秒的公共cd的`应该可以做吧
elecass 认为: 2005-08-01 11:06

这个宏使用的关键函数 CastAway 不是一个WOW的函数,是最初的原作者自己编的一个插件附带的函数。至于是啥插件,我就不知道了。

修正:一个宏中施放2+个法术请参
http://www.wowtc.com/bbs/read.php?tid=42945


[ 此贴被elecass在05-11-21 12:59重新编辑 ]
毕业生 认为: 2005-08-02 08:38

终于搞明白了,郁闷好久了~~
谢谢达人
elecass 认为: 2005-08-18 19:38

QUOTE:
下面是引用elecass于05-07-15 17:42发表的宏命令常用函数:
7.运动

7.1 MoveForwardStart(time)
作用:在参数time指定的时间开始向前移动,必须与函数MoveForwardStop(time)成对使用
参数time:游戏内部时间,单位毫秒。可使用函数GetTime()获得当前的游戏内部时间,单位秒

7.2 MoveForwardStop(time)
作用:在参数time指定的时间停止向前移动
7.3 MoveBackwardStart(time)
作用:在参数time指定的时间开始向后移动
7.4 MoveBackwardStop(time)
作用:在参数time指定的时间停止向后移动
7.5 StrafeLeftStart(time)
作用:在参数time指定的时间开始向左移动
7.6 StrafeLeftStop(time)
作用:在参数time指定的时间停止向左移动
7.7 StrafeRightStart(time)
作用:在参数time指定的时间开始向右移动
7.8 StrafeRightStop(time)
作用:在参数time指定的时间停止向右移动
7.9 TurnLeftStart(time)
作用:在参数time指定的时间开始向左转动
7.10 TurnLeftStop(time)
作用:在参数time指定的时间停止向左转动
7.11 TurnRightStart(time)
作用:在参数time指定的时间开始向右转动
7.12 TurnRightStop(time)
作用:在参数time指定的时间停止向右转动

.......


1.62版本发现这些函数失效,未见公告,原因暂不明,核实中
elecass 认为: 2005-08-18 22:06

已核实,以上函数在1.60版本被修订。参数time被取消,必须由硬件事件触发上述函数功能。
jayvwang 认为: 2005-11-22 13:05

这么好的东西要求加精啊。。。顶顶。。
魂斗士 认为: 2006-02-23 15:53

不错不错啊
魂斗士 认为: 2006-02-23 15:53

不错不错啊
精灵猎侠 认为: 2006-04-17 17:42

有没有猎人的宏 给几个。
32条评论<<   1   2  >>  Pages: ( 1/2 total )
编辑文章     论坛模式     联系作者     推荐给好友

发表评论 顶端
标题
参与评论



Powered by PHPWind v4.3.2 Code © 2003-05 PHPWind
Time is now:,

You can contact us