笔记: 编写首个插件: CombatTracker

Posted on 2009-07-02 16:19  apex.Cliz  阅读(1140)  评论(0)    收藏  举报

功能需求分析

CombatTracker插件的主要功能/界面特点如下:

1. 屏幕上将有CombatTracker独立的框架,可拖曳;
2. 当玩家角色进入战斗时,插件将记录进入时间,并显示"进入战斗";
3. 每当玩家受到外部伤害,框架文字将更新并记录进入战斗的时间、受到的伤害总量、及平均每秒受到的伤害量;
4. 当战斗结束时,框架应正确显示最终数据;
5. 框架本身为按钮,点击时,若玩家处于队伍中,将向队伍发送统计数据;否则,只在聊天窗口输出统计数据信息。


相关的游戏事件

为了实现上述的功能,必须找到相关联的游戏事件。CombatTracker主要会用到下述的三个事件:

PLAYER_REGEN_DISABLED

众所周知,在魔兽世界中,一旦玩家进入战斗,自然的生命回复就会暂时停止。因此,PLAYER_REGEN_DISABLED事件的触发,可以被认为是玩家进入战斗的标志。

PLAYER_REGEN_DISABLED事件不传出任何参数。

PLAYER_REGEN_ENABLED

与PLAYER_REGEN_DISABLED相对。在玩家离开战斗的同时触发,因此可以认为是脱离战斗的标志。同样不传出任何参数。

UNIT_COMBAT

处理玩家受到伤害的事件很多,这里选用UNIT_COMBAT来实现上述的功能。任何时候,任一关注目标(包括玩家自身、团队小队成员及其目标等)生命值因战斗发生变动时,均会触发此事件。

UNIT_COMBAT事件携带5个参数,分别是:

  unit: 生命值发生变动的单位名称
  action: 发生的战斗行为,包括但不限于: HEAL, DODGE, BLOCK, WOUND, MISS, PARRY, RESIST
  modifier: 战斗中的攻击可能产生的特殊情况,例如: GLANCING(擦过)、CRUSHING(碾压)、CRITICAL(暴击)
  damage: 受到的伤害量或治疗量
  damagetype: 伤害的类型, 0-物理, 1-神圣, 2-火焰, 3-自然, 4-冰霜, 5-暗影, 6-奥术(秘法)


关于追踪事件

可以利用插件DevTools来跟踪某个行为进行时触发的事件。此插件的作者是Iriel,暴雪UI/宏论坛的一位MVP。

可以从这里下载到DevTools。在实际游戏中,输入/dtevents可以呼叫出DevTools的事件追踪器界面。从中可以查阅各种事件的发生时间及其传递的参数。

DevTools还有其他许多指令可供开发者使用。详细的功能可以参照上面的下载页面。