抓饭直播致力于服务大众球迷,提供高清足球直播、NBA直播、世界杯直播等,让体育赛事能给更多热爱的人免费观看,全站点赛事无需会员,无需插件,收集全网最稳定的直播链接提供给全国球迷。联系我们
  • 07-16 23:30 球会友谊
    桑德豪森 马摩洛迪日落
    桑德豪森 vs 马摩洛迪日落
    0 0
  • 07-16 23:00 国际友谊
    白俄罗斯女足U19 乌兹别克女足U20
    白俄罗斯女足U19 vs 乌兹别克女足U20
    0 0
  • 07-16 22:30 球会友谊
    第聂伯罗 亚历山德里亚
    第聂伯罗 vs 亚历山德里亚
    0 0
  • 07-16 22:30 欧冠杯
    巴利卡尼 UE圣达哥林玛
    巴利卡尼 vs UE圣达哥林玛
    0 0
  • 07-16 21:00 球会友谊
    林茨 普斯卡什
    林茨 vs 普斯卡什
    0 0
  • 07-16 21:00 球会友谊
    卡尔蔡司耶拿 穆瑟维茨
    卡尔蔡司耶拿 vs 穆瑟维茨
    0 0
  • 07-16 21:00 球会友谊
    卢顿 鲁克维尼基
    卢顿 vs 鲁克维尼基
    0 0
  • 07-16 20:00 国际友谊
    新加坡女足 中国澳门女足
    新加坡女足 vs 中国澳门女足
    0 0
  • 07-16 20:00 球会友谊
    哥本哈根 桑德捷
    哥本哈根 vs 桑德捷
    0 0
  • 07-16 17:00 国际友谊
    奧地利女足U20 摩洛哥女足U20
    奧地利女足U20 vs 摩洛哥女足U20
    0 0
  • 07-16 16:00 国际友谊
    芬兰女足U19 捷克女足U19
    芬兰女足U19 vs 捷克女足U19
    0 0
  • 07-16 23:30 WNBA
    水星 神秘人
    水星 vs 神秘人
    0 0
  • 07-16 19:30 NBL
    香港金牛 武汉当代
    香港金牛 vs 武汉当代
    0 0
  • 07-16 19:30 NBL
    广西威壮 江苏盐南苏科
    广西威壮 vs 江苏盐南苏科
    0 0
  • 07-16 19:00 琼斯杯
    中国台北白队 中国台北蓝队
    中国台北白队 vs 中国台北蓝队
    0 0
抓饭直播 > 体育新闻 > 电竞新闻 > >wowinterface(使用lua脚本开发wow插件)

wowinterface(使用lua脚本开发wow插件)

2023-09-07 11:52

相信有接触过游戏开发的童鞋都知道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插件的神器。

使用lua脚本开发wow插件

使用lua脚本开发wow插件


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


使用lua脚本开发wow插件

使用lua脚本开发wow插件


使用外部的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:  [email protected]## DefaultState: Enabled 默认状态HelloWorld.lua -- 脚本文件
使用lua脚本开发wow插件

需要在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 dklasjfkasdjScript.lua -- 脚本文件% 注释2 dskajfklasdjfklsdajLayout.xml -- 布局文件
使用lua脚本开发wow插件

编写一个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)
使用lua脚本开发wow插件

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

使用lua脚本开发wow插件

使用lua脚本开发wow插件

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

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

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


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

  • 上一条: lol徐老师来巡山2020(43岁赵英俊去世,9首热门主题曲,《大王叫我来巡山》传唱最广)
  • 下一条: 征服者卡萨丁(详解版本神装时光之杖,一个改动助力卡萨丁登顶中单排行榜!)
  • 声明:本站文章版权归原作者及原出处所有,并不代表本站赞同其观点及真实性,如有侵权,请联系删除。
    耗时1.48秒