1.影音教學
2.NPC對話樣式及語法
sendOk
cm.sendOk("這是我的第一個 NPC 腳本");
sendYesNo
cm.sendYesNo("這是我的第一個 NPC 腳本");
sendSimple & sendNext
cm.sendSimple ("這是我的第一個 NPC 腳本"); cm.sendNext("這是我的第一個 NPC 腳本");
sendAcceptDecline
cm.sendAcceptDecline("這是我的第一個 NPC 腳本");
3.多段對話
程式範例
var status = -1; function action(mode, type, selection) { status = (mode == 1 ? status + 1 : cm.dispose()); if(status == 0){ cm.sendAcceptDecline("這是第一次對話"); } else if(status == 1){ cm.sendAcceptDecline("這是第二次對話"); } else if(status == 2){ cm.sendAcceptDecline("這是第三次對話"); } else if(status == 3){ cm.sendAcceptDecline("這是第四次對話"); cm.dispose() } }
程式解析
邏輯判斷語法
從程式裡看出這個腳本總共有4段對話
控制目前要說哪一句話最關鍵的就是判斷式
這裡用到的判斷式是程式語言基礎語法
if = 如果
else if = 否則如果
如果(天氣 == 下雨){ //此處的兩個== 代表是等同的意思
出門要帶傘
}
//若前面的如果沒有符合條件 就會去執行下面的否則如果
否則如果(天氣 == 下雪){
出門要穿大衣
}
//若前面的否則如果沒有符合條件 就會去執行下面的否則如果
否則如果(天氣 == 太陽){
出門要擦防曬
}
簡單來說 if else 的邏輯判斷 只會有一個成立並且執行
哪怕底下的條件也都符合
也只會執行最先碰到的判斷
為了幫助大家理解
這邊再舉一個例子
如果(10 > 0){
伏地挺身20下
}
否則如果(2 0 > 0){
引體向上10下
}
否則如果(30 > 0){
仰臥起坐20下
}
從這三個判斷可以看出
三個條件都是符合條件的
但是最先碰到的是最上面的 如果(10 > 0)
那就需要做伏地挺身20下
至於 否則如果(2 0 > 0) 跟 否則如果(30 > 0) 就不再做判斷了
流程控制變數
大家有注意到有一個 status 的東西
這東西就是負責控制腳本目前進展到哪一個步驟
在action裡面
可以看到
status = (mode == 1 ? status + 1 : cm.dispose());
這個寫法叫做三元運算子 (ternary operator)
是 if else 的簡化寫法
還原如下
//如果
if (mode == 1){
status = status + 1 //將目前進程+1
}
//否則
else{
cm.dispose( )
}
此處使用的是 else 而非 else if
請注意如果是上述用法
當 if 不成立的時候
會直接執行 else 內部的指令
另外mode是什麼 ?
當玩家點選 確定、接受、下一步 這類的對話選項
mode就會是1 表示 腳本進展需要往前
因此才有這個判斷式