LV. 42
GP 1k

 ~輕鬆學JASS~ (基礎篇)

樓主 Weber Weberkkk



 ~輕鬆學JASS~

 


===============

  ---(基礎篇)---

===============

 

《1》為什麼要學JASS?

  就像WE自學手冊說的一樣,用JASS可以製做更有效率的觸發器、程式碼,並有效的處理記憶體漏失問題,這樣講或許很難理解,我舉個實際的例子供大家參考,阿扁惡魔圈最初的版本並未運用JASS技術,只做了初步的記憶體漏失處理,每回合出怪128隻的情況下,玩到大約60關遊戲流暢度就有下降的情形。

  阿扁惡魔圈加入法術塔自動施展功能之後,每隔1秒會自動挑取法術塔周圍800的隨機單位施展魔法,使用GUI的挑取部隊功能,雖然有處理記憶體漏失,卻難免在每次挑取部隊的時候造成遊戲延遲(至於裡由後面會有更深入的探討),因此最初的版本在遊戲的流暢度遇到很大的瓶頸,幾乎無法突破,這也是我當時會選擇踏入純JASS製圖的原因之一。

  當你的地圖需要出現大量單位,或製做華麗特效的時候,使用純JASS可以非常有效的避免玩家LAG,想要像阿扁惡魔圈一樣在30分鐘內送出將近兩萬隻怪物給玩家殺的時候,別懷疑了,來寫純JASS吧!

 

《2》新手如何使用JASS?

  很多人覺得學JASS英文要很好,其實是不需要的,GUI本身就有「轉為自訂腳本」的功能,可以把GUI的指令完全JASS化(說轉換其實也不太正確,應該說是顯現GUI觸發真實的樣子),碰到有指令不會打的時候,只要用GUI開一條新的處發,做出需要的指令之後,再轉為自訂腳本,就可以順利的製做,完全不需要記憶任何的單字,對於剛入門JASS的新手來說,GUI就是最方便的語法查詢器,當然也可以先用GUI製做觸發,再轉為JASS執行簡化的動作,這些都是入門JASS的方式之一。

  工欲善其事,必先利其器,WE本身編寫JASS的能力很差,偵錯不準確又容易當機,所以在此強烈建議使用NewGen(VJ)或自學手冊的JASS Craft來進行JASS編輯,不但有方便的語法查詢功能,也可以避免當機造成的遺憾,可以更方便、更快速的編寫JASS程式碼。

以下列出可能造成WE當機且較常見的語法錯誤
紅色為錯誤,藍色為正確

1.大小寫錯誤: callCall setSet realReal
2.混用整數與實數: set A[10/7] → set A[R2I(10/7)]
3.沒有寫 endifendloopendfunction 等關鍵字

至於執行上可能會導致錯誤的範例在WE自學手冊有更詳細的說明
有需要的請自行參考,這邊不再重複

 

《3》JASS與GUI的先天差異

  GUI是以「觸發器(Trigger)」為單位,來編寫執行各種功能,或互相呼叫,大家可以把觸發器想像成一個包包,裡面裝著「事件」、「條件」、「動作」,遇到事件的時候,就依照順序執行包包裡的條件與動作,每個包包都是互不相干的,必須靠全域變數來傳遞資料。

             註冊事件(TriggerRegisterEvent) 執行順序
            ↗               
創造觸發器(CreateTrigger)→加入條件(TriggerAddCondition)  
            ↘               
             加入動作(TriggerAddAction)   


  JASS是以「函數(function)」為單位,就好像是一張大桌子一樣,今天你要拿甚麼東西都可以直接伸手去拿,不需要經過任何的過程,而函數之間又可以互相傳遞資料輪流運作,在便利性效率上有很大的差異,可任意創造高效率的區域變數更是純JASS的一大利器。

  GUI依賴全域變數,當變數數量多的時候,就會難以管理,JASS則無此問題,暫時性的變數可以任意的創造、命名,且區域變數不會互相干擾可支援多重施展而不需考慮變數的衝突問題,完全擺脫在一堆變數與陣列中仔細調度的窘境,拿最基本的迴圈整數來說,只要裡面有加入等待事件,迴圈整數就會出錯,因此GUI必須為每個可能衝突的觸發器迴圈都製做專屬的變數,不但編輯起來麻煩,執行效率也很差,到了純JASS你只要先定義區域變數再執行迴圈,這些在GUI可能造成問題的事項都變得輕鬆簡單


板務人員:

3963 筆精華,10/04 更新
一個月內新增 0
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】