Recrit
【捨丸&KID】如何製作分歧劇情與變數介紹(3)
* 依據條件來產生分歧看看
條件分歧是讓Nscripter來判斷變數中的數值,然後再執行命令。
例如像是使用flag,在檢查過變數的內容後會自動執行符合其條件的命令。
可以將其想像為鐵路的軌道切換點。
* 條件分歧的用途
作為flag判斷使用,進行判斷有、無的處理。
用於好感度判斷,執行如果在某個數值以上則進行A、在某個數值以下則進行B這樣的處理。
對輸入的文字列進行評估,判斷是否為問題正解之處理。
* 條件分歧的命令
為了判斷變數的數值會使用到if命令。
其意義為假設…為true則…的命令。
程式碼
if 條件,命令
範例
if %3=1 goto *chapter1
if為命令的本體。
%3=1為條件式。
當條件式正確無誤的成立時,會執行其後的命令。當條件式沒有成立時,不會執行命令繼續前進到下一行。
請注意,if命令的條件分歧式為
if %3=1
—只有到這邊而已。
在其後的「goto *chapter1」為普通的goto命令,前進到label*chapter1。
這裡的設計為在條件式之後的命令能夠任意輸入,而當條件式成立的時候便會執行。
* 條件式的等號記號
在條件比較的方程式裡能夠使用=,>,<,>=,<=,==,!=,<>等記號。
=:=意義為數值相等時條件成立
if %3=1 goto*t_5
當變數%3的數值與1相等時,移動至label*t_5。
>:>意義為變數的數值較大時條件成立
if %3>1 goto*t_5
當變數%3的數值大於1時,移動至label*t_5。
<:<意義為變數的數值較小時條件成立。
if %3<1 goto*t_5
當變數%3的數值小於1時,移動至label*t_5。
>=:>=當變數的數值較大或是相等時條件成立。
if %3>=1 goto*t_5
當變數%3的數值大於或是等於1時,移動至label*t_5。
<=:<=當變數的數值較小或是相等時條件成立。
if %3<=1 goto*t_5
當變數%3的數值小於或是等於1時,移動至label*t_5。
==:==的意義和=相同。
if %3==1 goto*t_5
當變數%3的數值與1相等時,移動至label*t_5。
!=和<>:!=和<>的意義為不相等。
if %3!=1 goto*t_5
if %3<>1 goto*t_5
當變數%3的數值不等於1時,移動至label*t_5。
notif:notif的意義和if相反,當條件式不成立時會執行其後的命令。
notif %3=1 goto*t_5
當變數%3的數值不等於1時,移動至label*t_5。
* 將條件式連接
條件式可以藉由&&這符號來無限制地做出連接。
藉此可以做出像「變數中的數值在150以上且在180以下時」這樣有著複數條件的條件式。
if %3>1 && %3<5 goto*t_5
當變數%3的數值大於1且小於5的時候(同時成立),移動至label*t_5。
* 執行複數的命令
並且在條件分歧之後,可以藉由「:」將命令文區隔開來而執行複數的命令。
if %3=1 dwave 1,”se¥bell.wav”:goto *t_5
當變數%3等於1的時候,於channel 1播放bell.wav,然後移動至label*t_5。
* 利用Nscripter進行計算
數字變數能夠利用演算命令來進行計算後變更內容的數值。
* 演算命令的種類
加法
add %3,5
add為加法命令本體。
%3是變數號碼。
範例為將%3加5之後所得的值代入%3的意義。
減法
sub %3,5
sub為減法命令本體。
%3為變數號碼。
範例為將%3減5之後所得的值代入%3的意義。
加1
inc %3
inc為加上1的命令。
%3為變數號碼。範例為將%3加1之後所得的值代入%3的意義。
主要是用在flag上的命令。
減1
dec %3
dec為減去的命令。
%3為變數號碼。範例為將%3減去1之後所得的值代入%3的意義。
主要是用在flag上的命令。
乘法
mul %3,5
mul為乘法命令本體。
%3為變數號碼。
範例為將%3乘5之後所得的值代入%3的意義。
除法
div %3,5
div為除法命令本體。
%3為變數號碼。
範例為將%3除5之後所得的值代入%3的意義。
取得餘數
mod %3,5
mod為命令本體。
範例為將%3除以5之後所得的餘數代入%3的意義。
假設%3被代入為17的話,在經過mod %3,5的處理後%3的數值會變成2。
* 代入四則運算
在代入命令中能夠使用四則運算(+-/*)
程式碼
mov 變數名稱,計算式
範例
mov %3,%3+5
範例為將%3加5之後所得的值代入%3的意義。
即使是複雜的計算式也能夠簡單的將它寫出,喜歡使用這個方法的人也不少。
* 用途
對變數的內容進行變更
例如將登場角色所持有金錢的數量設定為%20(初期值10000元)。
和女主角約會後的結果是變數%20減去4000。
範例
sub %20,4000
計算後變數%20的數值:10000-4000=6000。
—在打工之後得到報酬,變數%20的數值加上7000。
範例
add %20,7000
計算後變數%20的數值:6000+7000=13000
使用演算命令便可以改變變數中所裝的數值。
* 試著做出好感度的處理
女主角對於男主角有著何種程度的好感這樣複雜的情報很難以flag這樣非0即1的設計來表現。
為了表現上述的情報,我們將到目前為止所學到的變數、數值演算、條件分歧全部組合起來使用。
* 好感度處理的系統結構
假設珠美對主角的好感度為變數%20。
並且將珠美的初期好感度代入為10。
選項
1.將花束送給珠美
2.用珠美的衣服來擤鼻涕。
選擇第一項的話會使得好感度增加3,選擇第二項則會使好感度減3。
第二次選項
1.帶珠美去花田,在多摩川旁邊的那座。
2.帶珠美去花田,在三途河旁邊的那座。
選擇第一項的話會使得好感度增加5,選擇第二項則會使好感度減5。
二選一的選項出現兩次,因此可能得到的數值有10+3+5=18、10-3+5=12、10+3-5=8、10-3-5=2這四個。
然後將這四個可能的數值分配得到各自的結果。
也可以重複數次好感度判定之後,在故事中盤分歧到特定角色的專用劇情線,並且在故事的最後評斷數值的高低來決定end。
如果使用複數的parameter來進行處理的話也能製作戀愛SLG。
Column:需要記住的program處理其實意外的少
實際上來說,Nscripter中使用到的program處理其實遠比所想像的種類還要少。
使用變數來進行條件分歧、迴圈處理。在這之後稱為執行處理,而其大部分是在畫面上表現圖像、停止一小段時間等直接的處理。
也就是在Nscripter中用到的program處理其實只有「使用變數來進行條件分歧的處理這系統」而已。(迴圈處理嚴格上來說也條件分歧的變形而已)
不管是多麼龐大的program處理其實分解到最後也只是將條件分歧和執行處理複雜組合起來的東西而已。
因此只要確實地學會變數和條件分歧的話,也就能夠很容易地抓到script的全體印象。請不要單獨去理解變數這東西,將其想像成為了收納條件分歧所使用data的東西,會比較容易理解。
この記事にコメントする
この記事へのトラックバック
- この記事にトラックバックする