相信有接触过游戏开发的童鞋都知道lua这个脚本语言,Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。关于lua的简介就到这里,然而更多的还是为了能够搞魔兽世界的插件,由于wow天然的支持lua语言,并且拥有大量的api够我们去调用。所以为何不尝试一下用lua开发wow的游戏脚本呢?首先从从这三个方向开始吧。

目录

搭建lua的开发环境

在wow中运行lua脚本 并输出hello world

使用外部的lua脚本,并导入


为什么wow需要各种各样的插件?

魔兽世界内置了LUA这个脚本语言, 使用它可以制作更高级得宏(LUA自己提供得函数等等在魔兽得环境中只能用做辅助作用,比如你想在屏幕显示出目标怪物还剩多少生命值,你不可能在LUA本身语言库中找到任何函数来直接得出结果,而只有使用魔兽世界自身提供给开发者的相关函数), 在魔兽世界里面,你可以使用魔兽提供的函数编出任何符合LUA脚本语言语法规则的宏(由于魔兽世界里面对宏的字符个数有限制,所以为了编写更强大的宏就出现了插件,让宏成为插件被魔兽启动时导入。

搭建lua的开发环境

lua的开发环境有很多,例如:idea上有emmylua插件 ,在仓库里下载下了就可以使用,vscode也是一个不错的选择,其内置大量的插件可供开发者下载,其中就包含了lua。但是今天的主角是wowlua,他是一款可以在游戏中编程的插件,其下载地址:https://www.curseforge.com/wow/addons/wowlua

在wow中运行lua脚本 并输出hello world

玩过wow的都知道,wow所有的插件地址都存放在 游戏路径:/World of Warcraft/_classic_/Interface/AddOns 路径下,我们只需要将wowlua插件下载下来,在该目录下解压,并重启游戏就可以了,此时游戏会从AddOnes中自动的去读取外部的插件。

  wowlua是什么?如何使用?(官方文档)

WowLua是游戏中的Lua脚本环境,其中包括交互式Lua解释器以及多页脚本编辑器。其他功能包括:

  • 语法着色,由krka壮观的For All Indents and Purposes库提供
  • 圆滑的按钮,由Mikk提供
  • 当WowLua运行代码时,为方便起见,它定义了一个全局函数print(),该函数将输出定向到WowLua窗口。不从WowLua运行时删除此全局变量
  • 可以使用/ wowluarun或/ luarun从命令行运行WowLua页面。每个斜杠命令使用页面名称,并将任何问题或活动打印到聊天框架。因此可以从宏中使用它们。

可以使用/ wowlua或/ lua打开WowLua。如果提供的话,这两个斜杠命令都将使用lua表达式并运行它:

/ lua print(14)将打开WowLua并将数字14打印到输出窗口。

在游戏内只需要输入/lua 便可以调用wowlua编程环境了,在wowlua中可以很好的编写lua代码并在游戏中调试,是开发wow插件的神器。

然后 我们再来写一下循环语句,比如使用for循环输出1-10

使用外部的lua脚本,并导入

如何从外部环境中导入lua插件?

首先你需要按照wow的官方规范来在/World of Warcraft/_classic_/Interface/AddOns 路径下创建一个新的文件夹,这里把名称命名为HelloWorld,通过观看其他插件的以及官方的规范得知,我们需要在HelloWorld文件夹下创建两个文件,1.lua文件 2.toc文件。toc文件里主要为当前插件的内容

HelloWorld.toc 例子:

## Interface: 20400
## Title-zhCN: xx专用脚本
## Notes-zhCN: xx专用脚本
## Author: 作者(xxx)
## Version: 版本 v1.0
## eMail:  986771570@qq.com
## DefaultState: Enabled 默认状态
HelloWorld.lua -- 脚本文件

需要在toc文件中声明脚本的名称 作者的名称 脚本的启用状态。

更多的写法可以去参考这个

toc文件格式## Interface: 适用的魔兽版本号
## Title: 显示的标题(默认语言)
## Notes: 显示的说明(默认语言)
## Title-zhCN: 特定语言的标题(简体中文)
## Notes-zhCN: 特定语言的说明(简体中文)
## Author: 作者(不显示)
## Version: 版本
## eMail: 如题
## UIType: 插件类型
## Dependencies: 依赖的插件
## RequiredDeps: 必须依赖的其他插件
## OptionalDeps: 可选倚赖
## SavedVariables: 统一存放的变量
## SavedVariablesPerCharacter: 按角色存放的变量
## LoadOnDemand: 1 (调用时加载)
## LoadWith: 当指定插件加载时才加载,前提是调用时加载
## DefaultState: disabled 默认状态
## Secure: 安全(功能未知)
# 注释1 dklasjfkasdj
Script.lua -- 脚本文件
% 注释2 dskajfklasdjfklsdaj
Layout.xml -- 布局文件

编写一个lua脚本 HelloWorld.lua 随便找的脚本(后续会讲如何制作 如何调用api)

function CountdownFunc()CountdownFrame = CreateFrame("Frame") FrameScript = function() if GetTime() - MarkTime > 1 then if S == 0 then SendChatMessage(">>烟雾弹<<结束", "YELL") FrameScript = nil CountdownFrame:SetScript("OnUpdate",FrameScript) else SendChatMessage(S,"YELL") end MarkTime = GetTime() S = S - 1 end end MarkTime = GetTime() S = 5 CountdownFrame:SetScript("OnUpdate",FrameScript) SendChatMessage(">>烟雾弹<<已释放", "YELL")
end MainFrame = CreateFrame("Frame")
MainFrame:RegisterEvent("UNIT_SPELLCAST_SENT")
MainFrame:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
MainFrame:SetScript("OnEvent", function(_, _, a, b, _, c) if a == "player" and b== "烟雾弹" then n = type(c) == "string" and c or CountdownFunc() end
end)

编写完毕后保存,并在游戏内加载

重新启动游戏,加载自己编写的脚本。好了简单的介绍就到这里,如果你喜欢这篇文章的话,请在下方留言,我回持续更新的

魔兽世界中提供了许多强大的api够我们去调用https://wowwiki.fandom.com/wiki/World_of_Warcraft_API 参考官方api地址。

部分接口怀旧服暂未开放。大部分都是可用,在该网站上还有所有职业的官方宏以及简单的插件制作介绍,喜欢的朋友可以收藏。

另外:怀旧服-奥金斧-BL-九幽第一少 欢迎找我玩儿.....

使用lua脚本开发wow插件(魔兽世界插件开发)相关推荐

  1. 第二十三篇:在SOUI中使用LUA脚本开发界面

    像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...

  2. 教你开发Jquery插件-Jquery插件开发教程

    开发jquery插件之前首先要调用Jquery,这个可以去http://jquery.com下载得到.然后我们看一下我写的这个例子: <script type='text/javascript' ...

  3. cocos2dx+Lua 脚本开发一

    在Lua中,用 "- - "来标记该行的注释,使用"- - [ [" 和   " - - ] ] "之间括起来的部分进行块注释.如下所示: ...

  4. AfterEffect插件-图层排序-js脚本开发-AE插件

    文章目录 1.AE-Js脚本 2.ExtendScript 语言 3.图层排序算法 4.作者答疑 1.AE-Js脚本   脚本是告诉应用程序执行一系列操作的一系列命令.您可以在大多数AE中使用脚本来自 ...

  5. AfterEffect插件-常规功能开发-高斯特效添加-js脚本开发-AE插件

    文章目录 1.程序算法 2.应用 3.作者答疑 1.程序算法   高斯模糊(英语:Gaussian Blur),也叫高斯平滑 ,通常用它来减少图像噪声以及降低细节层次. 从数学的角度来看,图像的高斯模 ...

  6. illustrator插件-常用功能模块-测量路径长度-js脚本开发-AI插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是测量路径长度,开发一个测量路径长度功能,以下功能仅用 ...

  7. AfterEffect(AE)插件-常规功能开发-放大缩小图层-js脚本开发-AE插件

    文章目录 1.算法程序 2.文本转执行 3.作者答疑 1.算法程序   AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大 ...

  8. AfterEffect插件--常规功能开发--扭曲效果--js脚本开发--AE插件

    文章目录 1.扭曲效果功能 2.作者答疑 1.扭曲效果功能   AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如 ...

  9. AfterEffect插件--常规功能开发--命令行渲染--js脚本开发--AE插件

      AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如何在项目里进行命令行渲染功能.源代码如下所示: // Com ...

  10. illustrator插件-常用功能开发-锚点分隔路径-js脚本开发-AI插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是锚点分隔路径,开发一个锚点分隔路径功能,以下功能仅用 ...

最新文章

  1. java 爬虫 异步_Java 爬虫遇上数据异步加载,试试这两种办法!
  2. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏
  3. python学哪个版本-老男孩python学习用的哪个版本?
  4. 1.2.3 计算机系统的层次结构
  5. 温州大学《机器学习》课程课件(十一、降维)
  6. 解决Win10不能访问共享文件夹的问题
  7. 遗传算法求最短路径(旅行商问题)python实现
  8. 8587520在51CTO【礼树迎蛇 红满社区】
  9. 如何搭建一个完整的Vue3.0 + ts 的项目
  10. linux文件大小和目录,查看Linux目录和文件大小
  11. mysql修改数据库历史_MySQL之操作数据库
  12. vue组件的按需加载
  13. 机载激光雷达测量技术及工程应用实践_倾斜摄影与激光雷达技术在实景三维测量应用中的比较...
  14. Java 创建线程的三种方法比较
  15. 【毕设笔记】轴承振动数据故障诊断软件系统
  16. 创建一个Employee类
  17. word2016标题序号变黑色竖线解决方法
  18. 【前端安全】web缓存投毒
  19. 央行征信中心:第二代个人征信系统将于1月20日上线
  20. 【无题】2022-1

热门文章

  1. 辽宁粮食产量438亿斤 农业供给侧结构性改革不断优化
  2. 2021谷歌年度AI技术总结 | Jeff Dean执笔万字展望人工智能的5大未来趋势!
  3. selenium爬取淘宝评论信息
  4. android+发短信示例,【Android】如何实现Android发送短信(示例代码)
  5. 收到谷歌实习邀请 “比被清华录取还激动”
  6. 运营主管的OKR案例
  7. 锯齿波调制的FMCW雷达中频回波信号的公式推导
  8. java 实现 excel 去重_用java对大量Excel表处理(去重,生成新属性,统计数量)
  9. app.use()方法详解
  10. 众包专访:快得难以想象!开源中国众包解决了团队开发的燃眉之急