(一) 邏輯運算子用法
在撰寫腳本判斷條件時,如果我們不只要判斷一個東西是否成立,而是需要同時檢查多個條件時,就會頻繁使用到以下幾種邏輯運算子:
運算子 1: && (且 / AND)
這代表當左右數值同時成立時,才會進入判斷成立的區塊。
var status = -1;
var A = true;
var B = true;
function start() {
if (A && B) {
cm.sendOk("參數 A 跟 參數 B 皆為 true");
} else {
cm.sendOk("參數 A 跟 參數 B 有一個非 true");
}
cm.dispose();
}
💡 說明:因為初始定義 A 跟 B 皆賦予了 true,所以這句 if (A && B) 會成立,執行此 NPC 便會跳出「皆為 true」的對話窗。
運算子 2: || (或 / OR)
這代表只要左右數值其中一個成立,就會進入判斷成立的區塊。
var status = -1;
var A = true;
var B = false;
function start() {
if (A || B) {
cm.sendOk("參數 A 跟 參數 B 其中之一為 true");
} else {
cm.sendOk("參數 A 跟 參數 B 皆不為 true");
}
cm.dispose();
}
💡 說明:就算 B 是 false,但因為 A 滿足了 true,這句 if(A || B) 依然算作成立。
運算子 3: != (不等於) 與 == (等於)
用來檢查兩個數值或變數是否相等。
var status = -1;
var A = true;
var B = true;
function start() {
if (A != B) {
cm.sendOk("參數 A 跟 參數 B 的值不同");
} else if (A == B) {
cm.sendOk("參數 A 跟 參數 B 的值相同");
}
cm.dispose();
}
(二) NPC 基本函數用法
在寫任務、商店或是對話流程時,最依賴的就是 cm 底下的腳本函數。常見的函數與其定義如下:
- dispose
結束與 NPC 的對話,讓你可以再次與其他 NPC 對話而不卡住。
用法:cm.dispose(); - sendNext
顯示一個帶有「下一個」按鈕的對話窗。
用法:cm.sendNext("[文本]"); - sendPrev
顯示一個帶有「上一個」按鈕的對話窗。
用法:cm.sendPrev("[文本]"); - sendNextPrev
顯示一個帶有「上一個」、「下一個」按鈕的對話窗。
用法:cm.sendNextPrev("[文本]"); - sendOk
顯示一個帶有「確認」按鈕的對話窗。
用法:cm.sendOk("[文本]"); - sendYesNo
顯示一個帶有「是」、「否」按鈕的對話窗,「否」將預設結束對話。
用法:cm.sendYesNo("[文本]"); - sendAcceptDecline
顯示一個帶有「接受」、「拒絕」按鈕的對話窗,「拒絕」將預設結束對話。
用法:cm.sendAcceptDecline("[文本]"); - sendSimple
顯示一個不帶有任何確認按鈕的對話框(通常用來搭配 #L選項清單# )。
用法:cm.sendSimple("[文本]"); - sendStyle
顯示一個選擇造型(髮型/臉型)的預覽對話框。
用法:cm.sendStyle("[文本]", [變數]); // 需先宣告該變數裝載要變的清單 - warp
傳送角色到指定的地圖。
用法:cm.warp([地圖ID], [傳送點]); // 預設可設定 [傳送點] 為 0 - openShop
開啟對應 ID 的商店視窗。
用法:cm.openShop([商店ID]); - haveItem
檢查角色是否有道具 (背包或身上)。傳回 true / false。
用法:cm.haveItem([道具ID]); - gainItem
給予或收回角色道具。
用法:cm.gainItem([道具ID], [數量]); // 設定負數代表收回道具 - changeJob
強制修改角色的職業。
用法:cm.changeJob([職業ID]); - getJob
取得角色的職業代碼。
用法:cm.getJob(); - startQuest
強制讓角色開始某項任務。
用法:cm.startQuest([任務ID]); - completeQuest
強制讓角色完成某項任務。
用法:cm.completeQuest([任務ID]); - forfeitQuest
強制讓角色放棄某項任務。
用法:cm.forfeitQuest([任務ID]); - getMeso
取得角色的楓幣數量。
用法:cm.getMeso(); - gainMeso
給予或收回角色楓幣。
用法:cm.gainMeso([數量]); // 設定負數代表收回楓幣 - gainExp
給予角色經驗值。
用法:cm.gainExp([數量]); // 設定負數代表倒扣經驗值 - getLevel
取得角色的等級。
用法:cm.getLevel(); - teachSkill
教導角色某特定技能。
用法:cm.teachSkill([技能ID], [技能等級], [技能最大等級]); - modifyCSPoint
給予或收回角色的商城點數。
用法 1:cm.modifyCSPoint([點數], [種類]); // [種類]:1 = GASH,2 = 楓葉點數
用法 2:cm.modifyCSPoint([點數], [種類], true); // true = 是否在聊天框顯示訊息