wow插件_Leo的棋盘

国际新闻新闻 / 来源:Leo的棋盘 发布日期:2020-10-17 热度:3C
敬告:本站部分内容转载于网络,若有侵权、侵害您的利益或其他不适宜之处,请联系我们,本站将立即删除。
联系邮箱:2876218132#qq.co m
本页标题:wow插件_Leo的棋盘
本页地址:http://www.toupiao.la/5999-1.html
相关话题:wow插件
#wow插件# 在魔兽怀旧服写插件

作为一个虔诚的精灵牧师,除了日常在月神殿做祷告和时不时的外出闯荡危机四伏的地下城外,空余的时间我常和铁炉堡的工匠大师欧沃斯巴克一起研究侏儒的“小玩意”。欧沃斯常说“科技源于生活”,因此我每每在外出游历的时候会想有没有什么“小玩意”能够让我可以更轻松,更好地为艾露恩服务。


缘起
魔兽世界的怀旧服上线一段时间了,为了回忆下16年前的美好体验。我也打开了几年未上线的网易客户端,重新把魔兽世界安装到了电脑上。现在魔兽时间的版本号已经到了8.2,而怀旧服的游戏内容采用的是16年前的1.12版本,进入游戏的时候确实有种恍如昨日回放的荒谬感。

这次尝试了之前完全没有体验过的牧师:一方面是之前没有玩过治疗想试试新职业,一方面也是想远离打打杀杀。战斗里牧师的工作实在说不少轻松,毕竟现状是5个人的队伍只会配置一个治疗。要是治疗出什么问题,想甩锅都没地儿甩。
魔兽的战斗是由“坦克-治疗-输出”的三角组成的。战斗的时间窗口由坦克的伤害承受能力和治疗的恢复能力共同构成。倘若坦克伤害承受能力越强,治疗能够治疗更越久,给输出击杀BOSS的时间窗就越长。当治疗没有魔法值之后,战斗必须尽快结束,否则坦克阵亡之后,其他人会被砍瓜切菜般被解决掉。因此对于队伍其它成员,治疗的魔法值是非常需要注意的。
但是目前怀旧服目前可以选择的插件并不多,也没有一个很好的魔法值团队告警插件。在战斗激烈的时候,团队成员很难关注到治疗还能坚持多久。因此我想为我的小牧师写一个治疗
告警插件,在魔法值很低的时候自动通知队友,让他们在关键时刻把压箱底的招数都赶快用掉。这样你们就算死了也怨不得我咯,完美甩锅~~~


入门
我第一次知道Lua便是在魔兽世界。魔兽世界是Lua用作客户端UI引擎的知名案例,从某种角度来说,魔兽和Lua互相成就了对方。魔兽世界除了插件是由这个框架定义的,本身魔兽世界自己的界面也是由这个框架开发的。
魔兽世界毕竟辉煌过,所以在网上找插件开发的资料还算方便,甚至我还找到一本800多页中文翻译版的《魔兽世界编程宝典》。感谢作者的这本大部头,为我学习编写插件节省了不少时间。

魔兽世界的UI整体是由事件驱动的,插件首先需要订阅自己感兴趣的事件,这样游戏引擎便会不停地发送游戏中各种各样的事件过来。接下来插件便要处理自己的核心逻辑,这时需要大量地与游戏引擎API接口进行交流(比如获得玩家的各种状态数据)。最终将计算完毕的数据通过游戏的绘图接口绘制在界面上,于是我们便可以看到每次登录之后看到的UI界面了。
所以总结一下,我要完成小牧师的甩锅插件,要做这么几件事情:
1、关注可能导致小牧师魔法变化的事件。
2、在魔法值变化的时候,和告警阈值进行比较,如果超过了告警阈值就进行第3步,否则退回第1步。
3、在聊天界面通过队伍频道通知我的队友。
其它优化需求:
为了适应各种情况,一些参数最好能支持在游戏中配置


痛苦
思路很简单,然工程之路道阻且长。首先,支持工具相当缺乏。《魔兽世界编程宝典》编写时间在9年前,9年时间足以让一个游戏变得面目全非(“暗黑世界”也确实不负所托)。好消息是UI引擎的大体框架没有发生变化,坏消息是游戏引擎的API,界面设计框架都发生了很大的改变。相关的配套工具大部分也无法使用了,尝试了几款多年前开发的所见即所得工具之后,发现均无法正常工作。最终我选择将魔兽的UI定义文件通过游戏控制台导出,这样便于逆向分析各种组件模版的写法,并且据此编写自己的UIXml定义文件。
推荐的IDE几乎无法使用,在其它作者的“强烈推荐”下,我最终选择了Notepad 作为编写插件的核心工具。另外BUG调试也相当麻烦,还好找到了几款ForDeveloper的插件还能正常工作:至少能够方便的查看与打印Lua错误了,以及快速Reload插件。
其次,这个版本的API很奇特,1.13版本是一个历史上没有出现过的版本,可以说是魔兽怀旧服特供。原本我以为API和曾经的1.12版本是类似的,但通过几次API调用的实验,结果让人大掉眼镜:1.13版本的API接口的特性与最新的8.0版本几乎一致,但又在8.0的基础上针对怀旧服的特性添加了一些API接口。也就是说1.13版本是真正的“新瓶装旧酒”—— 暴雪用8.0的框架将1.12的内容装了进去,这就可以解释为何怀旧服开服之初就支持多位面等WLK里才出现的特性了。
除了上面的几个原因,魔兽世界的插件工作流细节,API接口等相关资料没有一个官方的文档。也是导致初期门槛比较高,入门痛苦的原因。目前文档都是热心玩家自发收集并放在Wiki上维护,七零八落的不成体系,文档更新也不够及时。还好海外社群还比较活跃,在查找文档的过程中,我发现https://wow.gamepedia.com/World_of_Warcraft_API维护的相对较好,可堪一用。


体验
大脚插件包中的组合插件只能对用户自己进行提示,缺乏在组队场景的告知功能。ManaWarning通过插件设置,默认在当魔法值少于总量的百分之十时,通过一条队伍消息告知队友。

小牧师在副本和组队中实践了几次之后,效果还是挺好的:和传统的手工喊话宏比起来,告警非常的即时且全自动,不会对使用者有额外操作负担。而且支持设置一场战斗只告警一次,一般一次副本能触发2-3次,频率上不会造成骚扰。
队友在收到告警之后,一般坦克会主动放慢战斗节奏,增加休息时间,甚至还遇到过其他队友送法力药水之类的情况。就算是灭团,也不会再找牧师茬了:)


## 对此插件感兴趣的朋友可以通过此地址下载插件试用,欢迎提出优化意见
https://github.com/LeoLuo0814/Wow_Addon_ManaWarning
论坛
  阅读原文
支持0次 | 反对0次  
  用户评论区,文明评论,做文明人!

通行证: *邮箱+888(如:123@qq.com888)