當(dāng)前位置:魔獸基地 > 魔獸攻略秘籍 > 瀏覽信息
vJassGo 魔獸爭霸 vJass/JASS VS Code 擴展
感謝小伙伴“月夜星歌”的分享!
vJassGo 是一個專為魔獸爭霸 vJass/JASS 開發(fā)的 VS Code 擴展,提供完整的開發(fā)、編譯、調(diào)試和發(fā)布工具鏈。
下載地址:vJassGo

QQ群:206306788
快速開始
創(chuàng)建項目:CTRL+SHIFT+P輸入vj.new
會提示你輸入地圖名字(名字將保存在.vjass.config.json)
首次使用會需要你選擇你的WE路徑
目錄解析:
MyMap/ # 項目根目錄 ├── .vjass.config.json # 項目配置文件 ├── build/ # 編譯輸出目錄 │ ├── MyMap_slk.w3x # 測試版地圖 │ └── MyMap_slk.crypt.w3x # 發(fā)布版地圖 ├── lni/ # 地圖源文件 ├── script/ # 代碼文件夾 │ ├── jass/ # vJass/JASS 源碼 │ │ ├── main.j # 主代碼文件 │ │ └── data/ # xlsx生成的數(shù)據(jù) │ ├── fdf/ # FDF 界面文件 │ └── lua/ # Lua 腳本文件 └── meta/ # 元數(shù)據(jù)文件夾 ├── xlsx/ # Excel 數(shù)據(jù)表 └── toblp/ # 待轉(zhuǎn)換圖片
地圖打包
測試啟動:按 F5 自動編譯地圖并啟動 war3
需光標(biāo)置入 .lua、.jass 或 .fdf 文件內(nèi)
打包后的地圖位于build\
當(dāng)你的vjass代碼有錯誤時,會輸出jasshelper或pjass給出的報錯且打包行為會中斷
當(dāng)你使用WE中的測試地圖功能,vjass代碼將不會生效
建議除地形基礎(chǔ)物體外一切都在vscode制作,舍棄WE
自動加載:script\jass\ 文件夾下所有 .j、.jass 都會被正確的編譯進地圖
不再需要手動 //!import 或者 #include(或許你習(xí)慣 cjass?這里將不再支持)
如果你想使用原生 jass 來制作游戲,這估計需要你使用 vjass 庫名排序文件加載順序, 該情況并不建議你使用本框架,因為這是服務(wù)于 vjass 的
加密發(fā)布:按 F9 自動化打包地圖為可發(fā)布版本
使用該功能必須要有 AutoHotkey,并且使用 KKWE
打包后的地圖位于build\
代碼共存:在 WE 里初始化的任何數(shù)據(jù)都將會生效,即使你使用 GUI 觸發(fā)器(但不建議混用)
打包地圖后你的 .j 文件并不會受到影響,但腳本會以另一種方式寫入地圖,你只需要專注于編寫 script\ 文件夾的代碼
例如可以做到在WE編輯器放置區(qū)域,使用vjass調(diào)用gg_rct_name
FDF代碼:script\fdf\ 該文件夾下的所有 fdf 文件將會直接生效
表格結(jié)構(gòu)
表格加載:meta\xlsx\該目錄下的所有表格都會被轉(zhuǎn)換為結(jié)構(gòu)體,
實例表格:
你不需要定義 .toc 以及任何操作,你可以自由的編寫 fdf 然后在 jass 里創(chuàng)建,例如 DzCreateFrame("fdf定義的frame名稱")
使用 fdf 的 IncludeFile 功能時,路徑根目錄為 fdf\
Lua代碼:script\lua\,與fdf相同,將會自動寫入地圖
| Boss結(jié)構(gòu) | 名稱 | 頭像 | ai動作 | 創(chuàng)建時執(zhí)行 | 生命值 | 是否暫停 | 玩家id | 備注 |
|---|---|---|---|---|---|---|---|---|
| integer | string | path | type | func | real | boolean | integer | mar |
| 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 | ~ |
如上表格所示,假設(shè)已放入xlsx文件夾中,那么你就可以在vjass中調(diào)用這些數(shù)據(jù)。
第一行為成員注釋
第二行為成員類型
第三行為變量名稱
往后每一行都是實例
// 正確使用代碼示例
function testXlsx1 takes nothing returns nothing
local Boss b1 = Boss.get('bsid') // 表格內(nèi)整數(shù)參數(shù)填寫四字id將自動轉(zhuǎn)換為魔獸的整數(shù)id
local Boss b2 = Boss.get(StringHash("山丘")) // 表格內(nèi)字符串參數(shù)填寫名稱將自動轉(zhuǎn)換為字符串hash
local Boss b3 = Boss[1] // 表格內(nèi)數(shù)據(jù)行從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類型自動轉(zhuǎn)譯路徑)
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,"~"會使該行數(shù)據(jù)都為注釋,所以并不是key
local Boss b2 = Boss[3] // 該實例將是0,因為表格中第二行是注釋行,所以第三行數(shù)據(jù)的index為2
local Boss b3 = Boss(2)
call BJDebugMsg(b3.mark) // 這將報錯,因為mark列是注釋列
endfunction類型格式對照:
| 表格類型 | 表格內(nèi)容 | 實際類型 | 實際內(nèi)容 |
|---|---|---|---|
| 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 |
同樣也支持?jǐn)?shù)組
變量名填寫varName[]即可。

忽略表格:
如果你不想生成結(jié)構(gòu)體但又需要數(shù)據(jù),只需要在工作表的名稱上加一個"!",例如!Hero,那么這個Hero表將不會生成對應(yīng)的結(jié)構(gòu)體,但你需要手動自己編寫一個。
被忽略的表格中的數(shù)據(jù)依舊會被寫進對應(yīng)的結(jié)構(gòu)體。
BLP轉(zhuǎn)換
meta\toblp\ 該文件夾下的所有blp、tga、png、bmp、jpg都能被轉(zhuǎn)換為blp
CTRL+SHIFT+P輸入vj.blp vJassGo Logo
完成后會彈出轉(zhuǎn)換后的路徑,已自動幫你放入對應(yīng)路徑
.vjass.config.json中可以配置邊框以及是否添加黑色背景
致謝
感謝魔獸爭霸地圖開發(fā)社區(qū)的支持,以下開源項目:
JassHelper - vJass 編譯器
w3x2lni - 地圖轉(zhuǎn)換工具
YDWE - 魔獸地圖編輯器
以及部分思路提供者:
龐各莊大棚
不追夢的小安
讓 vJass 開發(fā)更簡單、更高效!
相關(guān)攻略秘籍
魔獸攻略秘籍閱讀排行
- 周
- 月
- 總










