Overview Version History Q & A Rating & Review
vJassGo
vJassGo 是一个专为魔兽争霸 vJass/JASS 开发的 VS Code 扩展,提供完整的开发、编译、调试和发布工具链。
👥 QQ群 :206306788
🚀 快速开始
创建项目 :CTRL+SHIFT+P
输入vj.new
会提示你输入地图名字(名字将保存在.vjass.config.json
)
首次使用会需要你选择你的WE路径
目录解析 :
MyMap/ # 项目根目录
├── .vjass.config.json # 项目配置文件
├── build/ # 编译输出目录
│ ├── MyMap_slk.w3x # 测试版地图
│ └── MyMap_slk.crypt.w3x # 发布版地图
├── lni/ # 地图源文件
├── script/ # 代码文件夹
│ ├── jass/ # vJass/JASS 源码
│ │ ├── main.j # 主代码文件
│ │ └── data/ # xlsx生成的数据
│ ├── fdf/ # FDF 界面文件
│ └── lua/ # Lua 脚本文件
└── meta/ # 元数据文件夹
├── xlsx/ # Excel 数据表
└── toblp/ # 待转换图片
🔧 地图打包
测试启动 :按 F5
自动编译地图并启动 war3
需光标置入 .lua
、.jass
或 .fdf
文件内
打包后的地图位于build\
当你的vjass代码有错误时,会输出jasshelper或pjass给出的报错且打包行为会中断
当你使用WE中的测试地图功能,vjass代码将不会生效
建议除地形基础物体外一切都在vscode制作,舍弃WE
自动加载 :script\jass\
文件夹下所有 .j
、.jass
都会被正确的编译进地图
不再需要手动 //!import
或者 #include
(或许你习惯 cjass?这里将不再支持)
如果你想使用原生 jass 来制作游戏,这估计需要你使用 vjass 库名排序文件加载顺序,
该情况并不建议你使用本框架,因为这是服务于 vjass 的
加密发布 :按 F9
自动化打包地图为可发布版本
使用该功能必须要有 AutoHotkey,并且使用 KKWE
打包后的地图位于build\
代码共存 :在 WE 里初始化的任何数据都将会生效,即使你使用 GUI 触发器(但不建议混用)
打包地图后你的 .j
文件并不会受到影响,但脚本会以另一种方式写入地图,你只需要专注于编写 script\
文件夹的代码
可以做到在WE编辑器放置区域,使用vjass调用gg_rct_name
FDF代码 :script\fdf\
该文件夹下的所有 fdf 文件将会直接生效
你不需要定义 .toc
以及任何操作,你可以自由的编写 fdf 然后在 jass 里创建,例如 DzCreateFrame("fdf定义的frame名称")
你也可以在 fdf 文件夹下再新建文件夹,同样适用,它们最终会原封不动进入你的地图
使用 fdf 的 IncludeFile 功能时,路径根目录为 fdf\
Lua代码 :script\lua\
,与fdf相同,将会自动写入地图
📊表格结构
表格加载 :meta\xlsx\
该目录下的所有表格都会被转换为结构体,
实例表格 :
Boss结构
名称
头像
ai动作
创建时执行
生命值
是否暂停
玩家id
备注
integer
string
path
type
func
real
boolean
integer
mark
Boss
name
art
aiAction
onCreate
hp
isPause
pid
mark
bsid
基尔加丹
icon\bsid.blp
SimpleBoss
bossCreate.Bomb
999.56
TRUE
11
很简单的boss
~
小黑
icon\black.blp
~
~
3535.44
~
~
~
山丘
山丘之王
icon\abc.blp
~
~
8888
0
10
~
如上表格所示,假设已放入xlsx文件夹中,那么你就可以在vjass中调用这些数据。
第一行为成员注释
第二行为成员类型
第三行为变量名称
往后每一行都是实例
// 正确使用代码示例
function testXlsx1 takes nothing returns nothing
local Boss b1 = Boss.get('bsid') // 表格内整数参数填写四字id将自动转换为魔兽的整数id
local Boss b2 = Boss.get(StringHash("山丘")) // 表格内字符串参数填写名称将自动转换为字符串hash
local Boss b3 = Boss[1] // 表格内数据行从1开始索引
local Boss b4 = Boss[2]
local Boss b5 = Boss(1)
local Boss b6 = Boss(2)
call BJDebugMsg(b1.name) // 输出:基尔加丹
call BJDebugMsg(b2.name) // 输出:山丘之王
call BJDebugMsg(b1.art) // 输出:icon\\bsid.blp (path类型自动转译路径)
call BJDebugMsg(I2S(b1.index)) // 输出:1
call BJDebugMsg(I2S(b2.instanceId)) // 输出:等价于StringHash("山丘")
endfunction
// 错误使用代码示例
function testXlsx2 takes nothing returns nothing
local Boss b1 = Boss.get("~") // 该实例将是0,"~"会使该行数据都为注释,所以并不是key
local Boss b2 = Boss[3] // 该实例将是0,因为表格中第二行是注释行,所以第三行数据的index为2
local Boss b3 = Boss(2)
call BJDebugMsg(b3.mark) // 这将报错,因为mark列是注释列
endfunction
表格类型
表格内容
实际类型
实际内容
integer
150
integer
150
integer
123.123
integer
123
integer
abc
integer
StringHash("abc")
integer
abcd
integer
abcd'
real
50.23
real
50.23
string
hello
string
"hello"
boolean
0
boolean
false
boolean
true
boolean
true
boolean
FALSE
boolean
false
path
ui\minimap\hero.blp
string
ui\minimap\hero.blp
path
ui\minimap\hero.blp
string
ui\minimap\hero.blp
type
Hero
integer
Hero.typeid
func
attr.addMana
integer
attr.addMana
mark
vjassgo!
integer
~
integer
0
real
~
real
0.00
string
~
string
""
boolean
~
boolean
false
🖼️ BLP转换
meta\toblp\
该文件夹下的所有blp、tga、png、bmp、jpg都能被转换为blp
CTRL+SHIFT+P
输入vj.blp
完成后会弹出转换后的路径,已自动帮你放入对应路径
🤝 致谢
感谢魔兽争霸地图开发社区的支持,以及以下开源项目:
让 vJass 开发更简单、更高效! 🚀