一、引言

我下了不少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


二、软件下载(略)

三、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=,填入你的编辑器路径

当你做完这些,你就已经完成了框架配置。

五、创建项目

  1. 使用你的编辑器创建一张w3x地图 或者 准备一张正在制作的地图
  2. 在VS Code的终端中键入命令打开雪月框架Builder

    • 如果你的终端命令开头是PS xx\xx\xx> 则必须使用该命令: .\build
    • 如果你的终端命令开头是没有PS字样则两条命令都可以选用 : build 或 .\build
    • 后续你可以直接按方向键↑↓来快速选择你执行过的命令
  3. 此时会弹出 雪月框架 - Builder 窗口,将你准备的地图拖入以完成项目创建
  4. 创建完成后后 在项目文件夹里会有Terrain.w3x,你可以一边用编辑器打开Terrain.w3x地图制作地形,一边使用VS Code写代码
  5. 编译时会自动判断地图是否有变化 自动导出地图里的物编 触发 资源文件

六、使用

  1. 创建项目后 在项目中创建scripts文件夹 maps\[项目名]\scripts
  2. 在scripts文件夹中建立一个新文件Main.lua,开始你的lua作图之旅:
  3. 复制以下代码进入你的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 即指代 配置项的节点 此时则不能为空
    ]]

七、测试地图

  1. 在VS Code的终端中键入命令打开雪月框架Builder

    • 如果你的终端命令开头是PS xx\xx\xx> 则必须使用该命令: .\build
    • 如果你的终端命令开头是没有PS字样则两条命令都可以选用 : build 或 .\build
  2. 选择地图
  3. 选择操作

编译过程

  1. 判断地形图是否更新
  2. 复制xLua>Resource>项目 最右边的最后复制(相同文件名以右边文件内有的为主)
  3. xslk物编生成

    先读静态物编 再读动态物编

    如 相同ID 覆盖静态物编 | 如无ID 生成ID

    注意: 不允许[不同物编类型使用相同ID] 比如你的单位和物品相同id是不允许的

  4. 打包地图

    根据你选择的编译方式来生成地图
    调试版 支持热更新(伪) 使用本地目录中的文件与lua
    测试版 使用地图内的文件与lua