NameplateCooldowns插件分析

功能:Shows the cooldowns of enemy players above their nameplates

没有使用Ace3库,只包含两个文件:localizations.lua 和NameplateCooldowns.lua

1、localizations.lua,定义了多国语言界面文字,使用addonTable.L将文字内容传递给NameplateCooldowns.lua
local addonName, addonTable = ...;
addonTable.L = locales[GetLocale()];
--NameplateCooldowns.lua--
local addonName, addonTable = ...;
local L = addonTable.L;
...
Print(L["...

2、NameplateCooldowns.lua 查找姓名板CheckForNewNameplates(),使用了WOW API的WorldFrame。姓名板框体保存在WorldFrame框体下,使用WorldFrame:GetChildren(),通过查找框体名字匹配字符串"NamePlate",来找出所有的姓名板框体

3、姓名板框体钩子脚本frame:HookScript("OnShow", Nameplate_OnShow) 和frame:HookScript("OnHide", Nameplate_OnHide),配合姓名板显示设置,调用UpdateOnlyOneNameplate来更新技能冷却图标。UpdateOnlyOneNameplate通过之前监控战斗日志事件保存的技能CD信息来创建和更新该姓名板上的所有技能CD图标。主要通过CreateFrame函数创建图标,并使用frame.NCIconsCount 和frame.NCIcons 来保存图标,然后通过一系列Set函数来更新图标状态

4、整个插件的主框体EventFrame,作为代码入口,注册了"PLAYER_ENTERING_WORLD" 和"COMBAT_LOG_EVENT_UNFILTERED" 事件的监听函数。前者初始化一些内容,后者关注了4个变量:eventTypesrcNamesrcFlags、spellID。eventType监控了"SPELL_CAST_SUCCESS"、"SPELL_AURA_APPLIED"、"SPELL_MISSED"、"SPELL_SUMMON";srcName提供角色名;srcFlags用来判定是否敌对角色;spellID就是技能法术ID。最后还是通过UpdateOnlyOneNameplate来更新姓名板图标

5、最后是‘/nc‘命令显示的配置界面,这个配置界面做得很实用,直接列出每个职业可以监控的技能,让我们自己选要监控哪些,并且鼠标移上去可以看到技能的详细信息。GUIFrame就是一个简单的Frame,使用按钮、划动条、字体等等来创建界面。技能图标按钮监控了"OnEnter"、"OnLeave"、"OnClick"用来显示和隐藏技能Tooltip以及配置技能监控的开关

时间: 2024-11-05 03:45:10

NameplateCooldowns插件分析的相关文章

【jQuery】结合accordion插件分析写插件的方法及注意事项

1.jQuery插件的命名方式:jquery.[插件名].js 2.对象方法附加在jQuery.fn上,全局函数附加在jQuery对象本身上 3.插件内部this指向的是通过选择器获取的jQuery对象 4.结尾加分号,插件头部最好也加分号 5.插件应该返回一个jQuery对象,保证插件的链式操作 6.插件内部应用完整的jQuery而不是$,但可以利用闭包,将jQuery传入,使插件内部可以继续使用$符合作为jQuery别名 7.闭包另一大好处:可以避免内部变量影响全局空间 :(function

DispelFrames插件分析

功能:Shows new frames for dispellable buffs for target and focus, and a bright border around default buff frames. 使用了Ace3库 分析: 1.xml定义了两个框体:DispelFrames_TargetFrame和DispelFrames_FocusFrame 2.这两个框体设置了同一个脚本OnUpdate函数:DispelFrames_OnUpdate 3.DispelFrames_

HiShop2.x版本中的上传插件分析,得出所用的模板语言为Underscore.js 1.6.0且自己已修改

效果: 上传组件非常的酷,但是分析其使用JS写法使用了模板语言的,代码如下: <script type="text/j-template" id="tpl_popbox_ImgPicker_listItem"> <# _.each(dataset,function(url){ #> <li> <span class="img-list-overlay"><i class="img-l

使用AndroidStudio dump heap,再用 Eclipse MAT插件分析内存泄露

1.eclipse mat插件的安装 Help->Install new software,如下图,一直下一步即可 2.AndroidStudio dump heap 3.AndroidStudio 点captures查看dump 文件 4.导出为标准的dump文件 5.eclipse 打开mat,并导入4导出的文件 file->open file 选择即可 6.OQL查找Activity内存泄露 select * from instanceof android.app.Activity 再右

Gladius插件分析

功能:竞技场对手框体 使用了Ace3库 1.文件分为三部分:Embeds.xml:Gladius.lua+Localizations.lua+Options.lua:Modules\*** 2.Embeds.xml库部分:AceSerializer-3.0 可以把任意变量序列化成一个字符串,并用字符串恢复原有变量值DRData-1.0 控制递减数据库 3.Gladius.lua+Localizations.lua+Options.lua,后面两个是老东西,多国语言和插件配置界面:Gladius.

GladiatorlosSA插件分析

功能:敌对技能和打断信息语音提示 使用了Ace3库 1.文件分两部分:ace3库的embeds.xml + 多国语言的Locales\locales.xml:功能和配置界面的GladiatorlosSA.lua.spelllist.lua.options.lua 2.embeds.xml,用了13个库(库文件内部都有详细注释):LibStub 定义了一段放在每个插件库开头的代码,可以使得已经加载过的库,如果没有更新的版本,不会再继续加载(即直接return,不会往后执行创建变量和定义函数等等)C

博客站点选择SqlServer数据库版本技巧及微信打赏插件分析[图]

首先和大家分享一个有趣的社会现象,也是关于IT行业的,对于技术方面来说,就不用多说了,这些年的进步和变化大家都有目共睹,虽然我只是一个技术小白,但是最近也开始不断的学习中. 自媒体平台其实就是博客的集中营: 这两年出现了火爆的自媒体平台,卷走了大量的原创数据,没错,原创数据对于任何一个互联网公司来说,都是至关重要的,尤其是搜索行业,谁得到了原创的大数据,谁就掌握了搜索的主导权,谁就是行业的NO.1,这就是原创数据的重要性. 记得在几年以前,我们都喜欢写博客,那时候有成熟的博客系统,大家随便买个虚

CNI IPAM插件分析 --- 以hostlocal为示例

skel.CmdArgs数据结构如下所示: type CmdArgs struct { ContainerID string Netns string IfName string Args string Path string StdinData []byte } // cni/plugins/ipam/host-local/main.go 1.func cmdAdd(args *skel.CmdArgs) error 1.调用ipamConf, confVersion, err := allo

Wireshark使用drcom_2011.lua插件协助分析drcom协议

drcom_2011.lua是来源于Google code上的一个开源项目中的一个插件,感谢网络大神的分享 需要使用drcom_2011.lua分析drcom协议的话,需要把drcom_2011.lua放到wireshark安装目录下(例如C:\Program Files\Wireshark), 然后打开安装目录的init.lua(用高级一些的文件编辑器打开可以看到分行信息),在最后一行加入dofile("drcom_2011.lua"),保存. 然后重启wireshark,在筛选器那