# we_lua **Repository Path**: leoswar/we_lua ## Basic Information - **Project Name**: we_lua - **Description**: lua制图 - **Primary Language**: Lua - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-08-08 - **Last Updated**: 2024-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # we_lua #### 介绍 使用ts2lua编写w3x地图的脚本demo #### 软件架构 lni+ydwe+vscode+ts2lua #### 配置地图项目,w3x2lni,war3打包和启动路径 1. 本地直接使用visualstudio code打开文件夹 2. 修改文件夹中pkgmap.bat文件 lni和ydwe的配置地址 3. 在lua_map 目录下创建pkg.bat文件 内容如下 @echo off @REM 设置临时环境 请修改为你的lni和ydwe目录 @set PATH=%PATH%;F:\my_map\tools\w3x2lni @Set PATH=%PATH%;F:\my_map\4_we_WorldEdit v1.2.9c\bin @REM w2l.exe obj 目录 地图名 w2l.exe obj . @REM 加载地图 ydweconfig.exe -launchwar3 -loadfile ..\lua_map.w3x 4. 右键pkgmap.bat文件在终端运行 .\pkgmap.bat 即可重新打包地图立即运行地图 #### 配置typescript to lua 1. 安装node环境 安装lua环境(解压压缩包直接修改lua53.exe为lua.exe并且修改环境变量指向lua目录,lua -v检查一下是否正确安装) 2. 切换到工程ts目录下,安装npm依赖包 npm i -d typescript npm i -d typescript-to-lua npm i 3. 生成环境中tsconfig.json文件 npx tsc -init 4. 修改转换编译lua文件的目录和方式(ts转lua文件的打包方式和输出目录) 4.1.打包地图:如果是单main.lua脚本文件打包到地图目录打开luaBundle,luaBundleEntry的注释并且注释掉compilerOptions.outDir项目; 4.2.测试模式:lua开发测试环境则注释到上述两条并且打开本文件compilerOptions.outDir项目的注释 5. npm run build #### 其他说明 1. 永久解决windows终端编码格式不支持UTF-8的问题 控制面板->时钟和区域->区域->管理->更改系统区域设置->Beta版使用UTF-8 2. 临时修改终端编码格式为 UTF-8命令,终端中输入 chcp 65001 3. 一些坑点 * ts 和lua索引是0和1 靠环境变量还是不好区分 先用异常捕获写法 * 函数参数/构造函数中的callback回调函数传递 最好使用箭头函数包装一层 例如:this.customMoveFunc=(hasExecNumsx,moveUnitx)=>{return customMoveFunci(hasExecNumsx,moveUnitx)},如果直接使用this.customMoveFunc=customMoveFunci 会引起转换lua后函数第一个参数会额外多出this的问题 (参考DmgExecutor.B_execLvlSkillCircularAreaAction调用) * 4. luawx.w3x是原始文件 luawx_ref.w3x是添加lua脚本后的lua文件 现在对于开发中修改原始文件对后续变更影响的问题还没有完全理清楚(正常替换ui和lua文件即可) #### 参考资料 https://gitee.com/zmwcodediy/map-tsmaker/blob/master/src/ydlua.ts https://www.bilibili.com/video/BV1hB4y1e7uB/?spm_id_from=333.337.search-card.all.click&vd_source=5de0ee1e8094fcd6acaf2e790c750db8 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 关键代码关系概述 1. 箭矢投射 ArrowManager(方便统一管理箭矢抵消等)->[创建]->ArrowObject(继承自MovingObject) 2. OTHERS