首页 > 代码库 > GladiatorlosSA插件分析

GladiatorlosSA插件分析

功能:敌对技能和打断信息语音提示

使用了Ace3库

1、文件分两部分:ace3库的embeds.xml + 多国语言的Locales\locales.xml;功能和配置界面的GladiatorlosSA.lua、spelllist.lua、options.lua

2、embeds.xml,用了13个库(库文件内部都有详细注释):
LibStub 定义了一段放在每个插件库开头的代码,可以使得已经加载过的库,如果没有更新的版本,不会再继续加载(即直接return,不会往后执行创建变量和定义函数等等)
CallbackHandler-1.0 一套基础的事件(编程语言的“事件”概念,非WOW事件)&回调机制代码支持
AceAddon-3.0 提供了一个简单的插件代码模板,比直接用WOW API起头方便
AceEvent-3.0 简单包装了一下CallbackHandler-1.0
AceTimer-3.0 提供了只用一次的定时器和重复触发的定时器
AceDB-3.0 帮助管理了SavedVariables,可以方便地选择把数据保存成角色专用或者所有角色公用,并且提供了一套多配置和配置文件导入导出切换机制
AceDBOptions-3.0 给AceDB-3.0提供了一套配置界面选项(该选项传递给AceConfig-3.0来生成界面)
AceLocale-3.0 提供了多国语言支持,可以同时使用多套语言,比如一套原版的一套翻译的,未翻译的部分,可以显示成原版的语言
AceConsole-3.0 控制台命令支持
AceGUI-3.0 图形界面控件支持,按钮之类的,内置了22个控件
AceConfig-3.0 可以通过简单的描述类代码来生成插件配置选项图形界面
LibSharedMedia-3.0 用来在不同插件之间共享多媒体数据(声音、字体、贴图等),共享实际上就意味着支持别的插件的皮肤和资源
AceGUI-3.0-SharedMediaWidgets 基于LibSharedMedia-3.0的一套图形界面控件

3、Locales\locales.xml,直接使用了LibStub("AceLocale-3.0"):NewLocale(...)机制,简单粗暴。GladiatorlosSA默认的基础语言是英语"enUS"

4、核心功能文件GladiatorlosSA.lua、spelllist.lua、options.lua,弄懂了上面的库,这3个文件就容易懂。
options.lua就是插件配置界面的描述;spelllist.lua就是发音技能列表,里面每个英文对应Voice目录里的一个ogg语音文件;GladiatorlosSA.lua就是完成监控并发声。
在GladiatorlosSA.lua文件里通过GladiatorlosSA:PlaySpell(listName, spellID, ...)来发声,使用了WOW API PlaySoundFile。
PlaySpell由熟悉的COMBAT_LOG_EVENT_UNFILTERED(event , ...)战斗日志监控函数调用,函数内具体首先使用了API IsInInstance 确定是战场、野外还是竞技场,然后同样是通过筛选使用传入的“event , ...”参数内容,如"SPELL_AURA_APPLIED"、"SPELL_AURA_REMOVED"等,并列上其它条件,满足后触发发音提示。同时函数代码最后还支持自定义发音提示。
GladiatorlosSA.lua最后还有一个出于性能考虑的Throttle节流函数,这个函数被安插在了整个文件的很多地方,如果判定需要节流就直接return不执行后续的播音之类的操作

 

GladiatorlosSA插件分析