一、引言
我下了不少QQ群里的资料,以及B站UP主的教程视频,大部分都是“Lua环境配置①原始法”。
我称它为“原始法”是因为萌新得从零开始进行环境配置。例如第一步如何增加系统的环境变量,如何修改runmap.bat文件。
我上周根据前人的教程在环境配置阶段也走了很多弯路。
弯路1:很多文字类的教程压根没提到环境变量,以及runmap.bat里每条命令的作用。虽然你只要照着一步步做,90%是可以使用的,但是如果你一点点差异,很可能就无法用过“运行”去启动魔兽测试。举个很简单的例子,如果你的魔兽编辑器和w3x2lni不在同一个盘,即时你的环境变量是正确的,也无法使用最初的runmap.bat文件“运行”魔兽测试。
弯路2:很多2022~2023年视频类教程没有使用runmap.bat这种方式,而是自己自定义了1个gamestart.bat的简易处理文件。这种方式简单,但是不灵活。如果你改变了地图的名字或解包目录,你得在gamestart.bat重新设置。且你每次需要通过指令去“运行”魔兽测试。
弯路3:我还看了1个2019年视频教程,他是使用了“我的英雄不可能那么萌”的框架,但是需要自己手动把“英萌”的相关文件夹和自己的解包地图文件夹合并。
那么还有没有不走弯路的环境配置,能让萌新快速使用Lua作图?
当然是有的。那就是使用雪月框架:https://gitee.com/amzx/XG_Framework
二、软件下载(略)
- 魔兽争霸III客户端
- 雪月编辑器(QQ群下载,群号:659453611)
- VS Code(https://code.visualstudio.com/)
三、VS Code插件安装(略)
Lua(发布者:sumneko)
Lua Debug(发布者:actboy168)
Tasks(发布者:actboy168)
extension-path(发布者:actboy168)
jass(发布者:家貓hoo)
四、配置
- 下载一份XG_Framework项目zip
- 解压zip,在XG_Framework文件夹上右键 => 通过 VS Code 打开
- 选择工作目录下的 build.bat 找到set ydwePath=,填入你的编辑器路径
当你做完这些,你就已经完成了框架配置。
五、创建项目
- 使用你的编辑器创建一张w3x地图 或者 准备一张正在制作的地图
在VS Code的终端中键入命令打开雪月框架Builder
- 如果你的终端命令开头是PS xx\xx\xx> 则必须使用该命令: .\build
- 如果你的终端命令开头是没有PS字样则两条命令都可以选用 : build 或 .\build
- 后续你可以直接按方向键↑↓来快速选择你执行过的命令
- 此时会弹出 雪月框架 - Builder 窗口,将你准备的地图拖入以完成项目创建
- 创建完成后后 在项目文件夹里会有Terrain.w3x,你可以一边用编辑器打开Terrain.w3x地图制作地形,一边使用VS Code写代码
- 编译时会自动判断地图是否有变化 自动导出地图里的物编 触发 资源文件
六、使用
- 创建项目后 在项目中创建scripts文件夹 maps\[项目名]\scripts
- 在scripts文件夹中建立一个新文件Main.lua,开始你的lua作图之旅:
复制以下代码进入你的Main.lua
require 'xLua.Main' --载入框架
[可选]使用lua创建物编: 与Main.lua相同文件夹下创建一个xslk文件夹,在xslk文件夹里创建init.lua
--示例 xslk.unit:new { --这些key 和 w3x2lni 中使用的相同 --不需要的属性可以不写 默认和_parent指定的物体相同值 _parent = 'hpea', id = 'u001', --id为nil的话 系统自动生成 Name = '砍树人', HP = 100, } --[[ 其中 xslk.unit:new 的 unit 可与以下值替换 ability buff destructable doodad item misc txt unit upgrade 也可写为 xslk[unit]:new 当你用来修改misc时 id 即指代 配置项的节点 此时则不能为空 ]]
七、测试地图
在VS Code的终端中键入命令打开雪月框架Builder
- 如果你的终端命令开头是PS xx\xx\xx> 则必须使用该命令: .\build
- 如果你的终端命令开头是没有PS字样则两条命令都可以选用 : build 或 .\build
- 选择地图
- 选择操作
编译过程
- 判断地形图是否更新
- 复制xLua>Resource>项目 最右边的最后复制(相同文件名以右边文件内有的为主)
xslk物编生成
先读静态物编 再读动态物编
如 相同ID 覆盖静态物编 | 如无ID 生成ID
注意: 不允许[不同物编类型使用相同ID] 比如你的单位和物品相同id是不允许的
打包地图
根据你选择的编译方式来生成地图
调试版 支持热更新(伪) 使用本地目录中的文件与lua
测试版 使用地图内的文件与lua