随着2.4.0补丁的发布,咱们的战斗记录将发生巨大变化。这玩意虽说做起来挺费劲,但以后你们维护插件应该就更方面了。
我们最得意的特性就是可以过滤您的战斗记录。战斗记录存储前5分钟有用的原始战斗事件。过滤器可以设置为多种标准、关系、所有权等等。任何匹配当前过滤器的事件都经由COMBAT_LOG_EVENT消息传送到客户端。战斗记录过滤器是全局(global)的。不过,想在发生时就分离所有事件的AddOns可以注册COMBAT_LOG_EVENT_UNFILTERED消息。这东西允许所有现成的AddOns无需复杂的中等管理(middle-manager)AddOn即可响应战斗事件。
默认战斗记录一次只能设置1-2个过滤器,WoW客户端并发插件,可以设置多个过滤器来过滤非常详细的“源-目标”事件组合。如果一个战斗记录事件通过任何过滤器,那么COMBAT_LOG_EVENT事件启动,即允许AddOns定义嗷嗷详细的、我们选择不暴露于基础UI的设置。
新的战斗记录将有两种文本格式。一种是亲切友好的,语法准确集合替代词的句子。另一种是精简格式,包括源、目标、魔法、动作和结果。有很多方式来操作这些格式,从单位名称着色到伤害数字着色(依赖于它们的魔法类型)。这些格式所使用的设置存储在Blizzard_CombatLog_Filters变量里。
新的精简格式的结果就是非常便于写AddOns以修改或扩展2.4.0中的格式。在格式段中,您可以研究有关如何将战斗记录转换成Nurfed风格的速成示范。同时您可以只调整WoW中设置就可以做很多事,并且还有可能提供一个可以改变用于生成战斗记录消息的字符串的AddOn。此AddOn考虑到更多扩展格式在不复写整个分离引擎的情况下发生改变。见格式化段的示例。
整个战斗记录还支持一个新的着色模型,基于上下文的。在默认情况下,所有行都一个色并高亮最重要的细节。战斗记录也支持只着色单位名称、法术、动作和伤害数值。
法术和伤害也可以按类型着色,不过还有一些AddOns可以马上用到的特性,基础UI里没有透露。那就是详细事件着色、单位粒度着色以及可以高亮事件列表。
还有其他机构关联特性的格式化。您可以启用时间戳子(timestamps)以显示法术或攻击发生的时间。您可以显示或隐藏中括号,在不刷新战斗记录情况下改变格式以及禁用RAID图标显示。这些特性相对于基础UI来说很隐蔽,但对猛人来说就很容易发现了。现在您已经想到一些您自己的特性并且也已经做好编码的准备了,那么就让咱们整点例子吧。
格式化和着色
我们认为在重写战斗记录的过程中最主要的战斗记录格式之一就是Nurfed战斗记录格式。这个战斗记录格式非常简洁,应用了大量彩色代码,是最终战斗记录的候选之一。我们最终还是砍掉了这个计划,因为这东西对新手来说实在太前卫了,但我们保留了所有选项以转换当前战斗记录为Nurfed战斗记录。 下面是具体办法:
战斗记录设置 ->颜色
单位颜色: 我 -> 绿色 我的宠物 -> 深绿色 友方单位 -> 蓝色 敌方单位 -> 红色 中立单位 -> 黄色
着色: 单位名称 -> 检查 法术名称 -> 检查 法术按类型 -> 检查 伤害数值 -> 检查 伤害按类型 -> 检查 伤害类型 -> 检查 全线 -> 不检查 全部高亮选项 -> 不检查
一个单位只能是下列4个类别之一: 1. 关系Affiliation 2. 反应Reaction 3. 所有权Ownership 4. 类型Type
下面是简短的解释,关于如何解决:
关系Affiliation 一个单位的关系是该单位与您之间的联系。不是归您就是您队友,要不就是您的团队成员或别的什么人。 [[[我的]队伍]团队] 外人
反应Reaction 这是单位的阵营反应,与您的关系。讨厌您的一切单位都是敌对的,对您友好的是友方的,其他一切都是中立的。
所有权Ownership: 这是谁拥有着个对象,只能由玩家或服务器来控制。
单位类型Unit Type: 这是单位当前被控制的方式。直接由所有者控制的单位是玩家。由服务器控制的是NPC。宠物由另一个玩家或单位控制。守护者是自动机器人,不受控制,但自动保护它们的老大。其他的都是对象,比如陷阱。
这样的结果就是这些小的细节可以告诉您战斗记录指向的单位是什么类型。
例如: 一个正在跟您决斗的玩家是0x0548 (一个归玩家所有并且控制的敌方外人) 一个被精神控制的玩家爱攻击您是0x1148 (一个归玩家所有但作为宠物控制的敌方外人)
事件
说实在的,事件太多了,也太磨叽,但这有个基本的组织。
基础事件: SWING - 这些事件关联近战攻击,通常被称为“白色伤害”。 RANGE - 这些事件关联猎人射击或术士甩魔杖。 SPELL - 这些事件关联法术和技能。 SPELL_CAST - 这些事件关联法术的起始和失败。 SPELL_AURA - 这些事件关联buff和debuff。 SPELL_PERIODIC - 这些事件关联持续伤害、持续治疗及类似效果。 DAMAGE_SHIELD - 这些事件关联伤害盾,例如荆棘术。 ENCHANT - 这些事件关联临时和永久的物品buff。 ENVIRONMENTAL - 此为世界造成的任何伤害。火焰、熔岩、掉落等等。
后缀 _DAMAGE - 如果事件结果是伤害,那就是它了。 _MISSED - 如果事件结果是失败,例如未击中、抵抗或格挡。 _HEAL - 如果事件结果是治疗。 _ENERGIZE - 如果事件结果是强度回复。 _LEECH - 如果事件转换为生命和强度。 _DRAIN - 如果事件降低强度,但并不转化。
特殊事件:
PARTY_KILL - 在您或您的队友击杀什么东西的时候触发。 UNIT_DIED - 身边有单位死亡的时候触发。
Q & A:
Q: 战斗记录只保存5分钟事件。为什么是5分钟?为什么不是10分钟? A: 我们感觉5分钟对于大多数玩家来说是一个好的基数,但您也可以改变时间长度,通过CombatLogSetRetentionTime(seconds)函数。
Q: 我小退到人物列表以后,战斗记录还保存不? A: 不。但如果您只是重载UI的话,消息会留在客户端。
Q: 你为啥这么整?为啥你不那么整? A: 我们尽可能透露一些消息,在游戏的可玩性和能给我们所需要的特性相互之间不妥协。
Q: 为啥你没有包括谁拥有<召唤的宠物名称>的信息? A: 我们考虑过这事,但还是决定为了简化而省去。我们会关注新的战斗记录在添加新特性或者附加变化之前是如何结束的。
Q: CombatLog.txt为啥改? A: 改CombatLog.txt格式将我们解放以实现新的事件驱动机制的战斗记录。我们也感觉到提供战斗记录的原始数据使一些网站诸如WoW Web Stats分离数据变得很容易,而避免本地化问题。
Q: 战斗记录格式还会再改吗? A: 我们一直致力于改进我们的游戏,所以以后我们很可能再改。但是,我们意识到在补丁里破坏插件是很不爽的事。但愿新的系统能降低您重写插件的频率,通过解耦(decouple)Addon作者的本地化更改。
Q: 我们能反馈新战斗记录的问题吗? A: 完全可以!我们会在2.4.0 PTR期间阅读测试论坛并收集反馈。越是有建设性的、越清晰越简介的反馈,就越容易得到我们的回复。
|