1.28.2007

《魔兽世界》宏编辑的入门技巧

宏只是一种辅助的手段,希望通过下面的讲解让大家能轻松编辑属于自己的宏。
  
  先来看宏的结构:

  /script
  if (UnitHealthMax(target)>80)
  then
  CastSpellByName(‘‘火球术(等级4)‘‘)
  SendChatMessage(‘‘对 %T 使用火球术‘‘, ‘‘EMOTE‘‘)
  else
  CastSpellByName(‘‘奥术飞弹(等级2)‘‘)
  SendChatMessage(‘‘对 %T 使用奥术飞弹‘‘, ‘‘EMOTE‘‘)

  这是一个没有延时功能的宏,带延时功能的宏将在稍后说明,
  第一句/script 申明函数开始,这句是必须的,整个宏的中文意思是
  如果你选定的目标的生命值大于80,就执行4级火球术,并告知周围的人你对目标使用了这个动作,
  %t就是代表目标,否则就执行2级飞弹,告知周围的人你对目标使用了这个动作。
  值得注意的是比如SendChatMessage(‘‘对 %T 使用火球术‘‘, ‘‘EMOTE‘‘) 中的EMOTE 如果你换成party就
  只是队内可见。
  此例使用到的函数:
  UnitHealthMax(target) 返回目标生命值
  同样此例如不要判断就直接是
  
  /script
  CastSpellByName(‘‘火球术(等级4)‘‘)
  SendChatMessage(‘‘对 %T 使用火球术‘‘, ‘‘EMOTE‘‘)
  
  注意本文注重介绍思路!
  
  下面介绍一下带延时的宏,首先需要安装一个老牌的插件COSMOS,虽然是全英文的,但是非常好用。
  这样的话上面的宏就可以变为
  
  /script
  if (UnitHealthMax(target)>80)
  then
  CastSpellByName(‘‘火球术(等级4)‘‘)
  /in 2 SendChatMessage(‘‘对 %T 使用火球术‘‘, ‘‘EMOTE‘‘)
  else
  CastSpellByName(‘‘奥术飞弹(等级2)‘‘)
  /in 2.2 SendChatMessage(‘‘对 %T 使用奥术飞弹‘‘, ‘‘EMOTE‘‘)
  
  唯一的变化是增加了/in 2 中文解释是 延时多少秒后做后面的动作,注意是精确到小数后1位,这个很重要,后面将说明。
  
  这样我们有了延时功能,先来做一个简单的动作宏,本文的最后再来介绍一个综合宏。
  
  先简单了解一下下面的动作
  
  MoveBackwardStart 向后移动,用时写成 MoveBackwardStart() 注意每句后面的;号并不是必须的,主要是习惯。
  MoveBackwardStop 停止后退
  StrafeLeftStart 向左移动
  StrafeLeftStop 停止左移
  StrafeRightStart 向右移动
  StrafeRightStop 停止右移
  ToggleAutoRun 向正面跑
  TurnLeftStart 向左转
  TurnLeftStop 停止左转
  TurnRightStart 向右转
  TurnRightStop 停止右转
  jump() 跳
  
  这只是很小的一部分宏
  
  我们来做一个右侧跳转身面对目标的宏
  思路是:
  先右跳,在空中左转身对目标,这就需要用到延时了。
  这个宏一直测试了很多次,正确的版本在我的角色里面,现在公司值班。。COPY不下来,只讲一下思路,这个宏的重点在空中转身的时间
  延时久了转过了,延时少了又不到位。

  /script StrafeRightStart()
  /script jump()
  /in 0.8 StrafeLeftStop()
  这两句实现右跳,空中停留时间假设为0.8秒,所以0.8秒后要停住,不然角色会一直向右跑。
  /in 0.3 TurnLeftStart()
  /in 0.8 TurnLeftStop()

  这句实现空中的动作,整个空中的停留时间是0.8秒,那0.3秒的时候就角色就开始向左转身,因为是右跳,你右跳出后目标一定是在你的左侧
  然后0.8秒时停止转身整个动作就完成了。
  
  结合上面2个示例编写一个法师用冰霜新星空中转身对目标告知队友的宏
  
  /script
  CastSpellByName(‘‘冰霜新星(等级1)‘‘)
  /in 0.3 /script StrafeRightStart()
  /in 0.3 /script jump()
  /in 1.1 /script StrafeLeftStop()
  /in 0.6 TurnLeftStart()
  /in 1.1 TurnLeftStop()
  /in 1.1 SendChatMessage(‘‘对 %T 使用火球术‘‘, ‘‘party‘‘)
  
  要注意的是用冰后如果不延时直接条的话结果就会是跳到空中执行冰,这样就达不到效果了

0 Comments: