【NVL】新增 Auto、Skip 狀態圖

如題所示,其實就是希望能在按下AUTO或SKIP的時候可以在畫面的某處顯示目前正在哪一種Mode。

效果圖如下:

那麼要實作的話,首先要先瞭解Skip和Auto Mode的基本運作,請參考這個連結:KAG內部教學(進階篇)—Auto and Skip(開新視窗)

重點表格:(如果需要更詳細的說明請至上方連結)

skipMode的值 效果 結束條件 函式
0 停止Skip模式   cancelSkip()
1 進入Skip模式 等待滑鼠點擊的位置,如[l]或[p]等 skipToClick()
2 進入Skip模式 等待換頁的位置,例如[p]等 skipToPage()
3 進入Skip模式 未讀的部分或[s]等 skipToStop()
4 進入Skip模式 不按住鍵盤上Skip相關的鍵 skipToStop2()

也就是說,當指定skipMode=0的時候,就會從Skip中的狀態停下來,而指定skipMode=3的時候,就會進入SkipMode,直到遇到未讀的部分才會停下來。通常不會直接在遊戲中指定skipMode,而是透過函式如skipToStop()的函式來控制Mode。

Skip Mode意義簡述如下:

0 就是停止SKIP
1 就是文字正在慢慢彈出的時候,按下點擊,就會直接跳出整句話的那個模式。
   如果是指定換行等待,那就會停在準備換行前的那個狀態。
2 同上,但不會等待換行,而是直接跑到等待換頁前的地方。
3 會一直換頁,直到未讀的地方就會停止,也就是已讀略過
4 全部略過,按CTRL或ENTER鍵之類的強制SKIP

至於Auto Mode比較單純,就是enterAutoMode()跟cancelAutoMode()而已。


理解兩種模式的使用方法之後,要增加狀態圖片就相對容易了。

簡單概括這個功能就是:在每個需要開關圖的位置先確認現在的模式是什麼,如果是開圖的場合就開,如果是需要關圖的時候再關就好了。

第一步:有需要的話可以先新增圖層

NVL/KRKR有限定圖層數量,如果需要增加圖層就要先指定。

修改位置在:THE NVL Maker\project\YourProjectName\Data\nvl\macro.ks

在層數量的地方增加總數[laycount layers=總數]、然後在下方需要的地方新增圖層的設定。

例如在預留10的後面再新增一個圖層:

首先將圖層數量增加到19(層的編號是從0開始)

;————————————————————
;層數量
;————————————————————
[laycount layers=19]
[laycount messages=5]
;————————————————————

接著在預留9、10的下方新增圖層:

;預留
[layopt layer=”9″ index=1400 withback=true]
;預留
[layopt layer=”10″ index=1500 withback=true]
;新增圖層
[layopt layer=”18″ index=1600 withback=true]
;———————————————-
;系統按鈕(sysbutton)
[layopt layer=”message2″ index=2000 withback=true]

注意index,index愈大代表越上層,這裡方便起見是增加100,但實際上只要比前一層數字大就可以了。


第二步:準備圖片

如果想用會動的圖,就直接準備ASD和對應的圖檔即可,以下是靜態圖。

分別取名叫做auto_go.png、skip_read.png(名稱任取)


第三步:加入Auto中圖片

在這裡我直接採用內建的預留第9、10層。

先從簡單的Auto開始,我們把這個功能寫在自訂的macro裡,打開以下檔案:

THE NVL Maker\project\YourProjectName\Data\macro\macro_self.ks


在裡面寫下以下Script:

[iscript]

 

function auto_check(auto){

if (auto){

//如果現在是自動模式

kag.fore.layers[9].loadImages(%[‘storage’=>’auto_go‘,’visible’=>true,’left’=>0,’top’=>0]);

 

}else{

kag.fore.layers[9].visible=false;

}

}

[endscript]

大意是,使用auto_check()這個函式來確認現在是什麼模式,根據代入的參數判斷,如果現在是auto模式,那就把圖讀入,位置left、top可自訂。如果不是就把圖的可見度關掉。

接著在到 THE NVL Maker\project\YourProjectName\Data\system\MainWindow.tjs

找到以下function寫下 auto_check(autoMode);
function enterAutoMode()
function cancelAutoMode()
doneselect: function(elm)

都寫在{}最大括號裡面,注意位置、注意分號。

 

這樣就能成功在進行Auto Mode的時候呈現Auto狀態圖了。


第三步:加入Skip中圖片

基本上作法和Auto大同小異,同樣在

THE NVL Maker\project\YourProjectName\Data\macro\macro_self.ks


在裡面寫下以下Script:

function skip_check(skip,auto) {

if(skip){

//如果現在是快進模式

kag.fore.layers[9].loadImages(%[‘storage’=>’skip_read‘,’visible’=>true,’left’=>0,’top’=>0]);

 

}else{

if(auto==0){

//如果現在不是自動模式才把圖關掉

kag.fore.layers[9].visible=false;

}

}

}

 

比剛才稍微複雜一點的是,這邊同時要確認是否進行Auto Mode,因為玩家很可能目前採用「已讀快進」,卻在Auto中按下了Skip按鈕,可是這時候如果已經抵達未讀的部分的話就不會有作用,否則就會變成按下Skip後抵達未讀部分,就把狀態圖關掉了,可是實際上卻是Auto中的狀態。

接著同樣回到 Data\system\MainWindow.tjs

在以下function寫下 skip_check(skipMode,autoMode);
function cancelSkip()
function skipToStop()
function skipToStop2()

以上就大功告成了~