anyoer* 发表于 2013-11-4 11:43:14

【amsft】【amsetsft】 施放失败处理

需求2009-10-17后的版本支持

关于以下两函数的说明:
该函数不能提前判断技能是否可以正常施放到目标,而是通过判断上次施放失败,当再次要求施放时在规定时间内忽略该技能施放,来达到因为该技能不能施法而卡在此技能的事件发生。

如:对隔墙的玩家加血,因为隔墙所以无法加上。如果没该失败处理函数处理加血技能就卡在这里不停的加,造成后面的技能无法执行。有了失败处理函数后该技能在下次施放时会给忽略,这样后面的技能就可以施放了。在 amsetsft() 函数设定的时间后恢复允许施放。

可以处理的失败事件:

1、超出范围 (2009-10-211038 取消了该事件)
2、没有可以行进的路径 (2009-10-21 1038 取消了该事件)
3、没有目标 (2009-10-21 1038 取消了该事件)
4、目标不在视野中
5、目标过于接近 (2009-10-21 1038 取消了该事件)
6、目标已经死亡 (2009-10-21 1038 取消了该事件)
7、你必须面对目标 (2009-10-21 1038 取消了该事件)
8、你必须位于目标背后 (2009-10-21 1038 取消了该事件)
9、你必须在潜行状态下 (2009-10-21 1038 取消了该事件)
10、无效的目标 (2009-10-21 1038 取消了该事件)
11、已经有一个更强大的法术在发挥作用
12、这个技能需要连击点数 (2009-10-21 1038 取消了该事件)
13、只能在室外使用 (2009-10-21 1038 取消了该事件)
14、必须在熊形态 (2009-10-21 1038 取消了该事件)
15、必须在潜行中 (2009-10-21 1038 取消了该事件)



amsft

   判断该技能因上次施放失败,目前是否可以再施放
*该函数功能已经整合到 amisr() 函数的判断里面。amsft()只是提供自定义的判断接口


语法
      n , time = amsft(Spell,Unit);

参数
      Spell
      字符串 - 技能名称

      Unit
      字符串 - UnitId,指定要获取数据的目标

返回值
      n
      布尔值 - 允许施放技能返回true ,反之返回nil 。


备注
   无

请参考


      Unit 详细请看Unit的说明


---------------------------------------------------------------------------------
amsetsft

   设定因上次施放失败,允许再次施放的间隔时间
*该函数直接影响 amisr() 函数的判断



语法      amsetsft(Time);

参数
      Time
      整数值 - 设定时间(秒),系统默认值3秒。

返回值
   无



页: [1]
查看完整版本: 【amsft】【amsetsft】 施放失败处理