(一)變數的種類 重頭戲終於來了,變數的定義我就不解釋了。直接進入重點吧,在KAG裡面,變數一共有三大類,一個是會隨著存檔而改變的「遊戲變數」;第二個是不隨存檔改變的「系統變數」,第三個是只要結束遊戲就會全部清空的「暫時變數」。
遊戲變數以f為名、系統變數sf為名、暫時變數以tf為名。
變數類型又分數值型跟文字型的變數兩種,變數可以自由命名,大小沒有限制,文字長度沒有限制,數值型變數只能使用實數。
(二)變數的命名 1。可使用半形英數以及全形文字以及底線_
abc&def 、
a-z 這種是無法使用的錯誤變數名字
final_count 這是正確可用的變數
主人公の名前 這也是正確可用的變數名字 2。變數的第一個字不可為半形的數字
2friends 、
3com 這兩個都是錯誤的變數名稱
在所有變數名字前,需要加上宣告(註),告訴KAG這是什麼樣的變數,「遊戲變數」是f;「系統變數」是sf;「暫時變數」是tf,舉例來說:
f.flag1 f是宣告為遊戲變數,flag1是變數的名字
sf.username 這是一個系統變數,變數的名字是username
sf.playcount 這是一個系統變數,變數的名字是playcount
tf.i 這是一個暫時遍數,變數的名字是i
f.enokazu 這一個遊戲變數,變數名字是enokazu
f.変数その1 這是一個遊戲變數,變數名字是変数その1
註:原文並沒有提到宣告的字樣,因為宣告是只需要宣告一次,但是KAG中的變數,每一次使用都必須把f、sf、tf這些型別寫上。
(三)變數的代入
| [eval exp="f.flag1 = 1000"] |
操作變數是使用eval指令,這一行的意思是將1000代入f.flag1。
| [eval exp="f.1號變數 = '文字列'"] |
這一行是操作文字型變數,將單引號內的文字'文字列',代入f.1號變數。
文字的外面需要加上單引號,數字則不用。
| [eval exp="f.flag1 = f.flag2"] |
這是將變數代入變數,將f.flag2代入f.flag1。
NOTE:在變數的使用中,千萬不可將=唸成"等於",要唸做代入。
(四)變數的運算
| [eval exp="f.flag1 = f.flag1 + 1"] |
我可以用 x = x + 1來解釋嗎@@....
假定x一開始是10,執行了x = x + 1這一行以後,x會變成11。
| [eval exp="f.flag1 = f.flag1 + f.flag2 * f.flag3"] |
KAG很聰明,他會先乘除後加減。也就是flag2會先乘上flag3,最後加上flag1的值,代入給flag1為結果。
| [eval exp="f.flag1 = f.flag2 / f.flag3"] |
這個例子中,f.flag2除以f.flag3後,代入f.flag1 。若是相除之後不是整數,會顯示到小數點後15位。如果想要得到整數的話,要使用" \ "算符。(無條件捨去小數點)
[eval exp="f.flag2 = 'hoge'"] [eval exp="f.flag3 = 'une'"] [eval exp="f.flag1= f.flag2 + f.flag3"] |
上述的例子中,flag1最後會顯示 hogeuge
(五)刪除變數與其他
若是要刪除變數可使用delete指令。
就像這樣:
| [eval exp="delete f.flag1"] |
若是要同時設定多個變數,可以使用,(逗號)來分隔。
舉例來說:
[eval exp="f.first=true"] [eval exp="f.flag0=0"] [eval exp="f.flag1=0"] |
| [eval exp="f.first=true, f.flag0=0, f.flag1=0"] |
這兩個code是完全相等的。
也可以使用","(逗號)來連續給定變數的值,讓code更為簡潔。
像這樣:
[iscript] f.first=true; f.flag0=0; f.flag1=0; [endscript] |
可以把變數內容給到系統屬性,比如說如下的例子,使用變數來控制字型的大小。
[wait time=200] *start [cm] [eval exp="f.fontsize=60"] [font size="&f.fontsize"]這是 60 號的字[resetfont] |
這個code先把 f.fontsize設定為60
然後將f.fontsize給系統設定中的font size,這時文字顯示出來就是60號的字。
(六)呼叫變數
在平常文字敘述中,若是要呼叫變數(戀二中俗稱控制碼的東西),可使用emb指令。
就像這樣:
[wait time=200] *start [cm] [eval exp="f.變數=200"][eval exp="f.mojiretu='文字列'"] f.變數的內容 : [emb exp="f.變數"] [l][r] f.mojiretu 的内容 : [emb exp="f.mojiretu"][l][r]
|
在[cm]裡面,直接可以呼叫變數。
執行結果如下:

(七)條件判斷
a==b a 與 b 全等為真(true) a!=b a 不等於 b 為真(true) a<b a 小於 b 為真(true) a>b a 大於 b 為真(true) |
其他的判斷式像是>=、<=也都可以使用。
[if exp="f.flag1==2"]f.flag1 是 2 [endif] [if exp="f.flag1!=2"]f.flag1 不是 2 [endif] |
用if 與 endif將條件式包起來,條件式的內容只要為真(true),條件就會執行。