【目次&快速檢索】
按這裡快速跳至該章節!
按這裡快速跳至該章節!
內部關數
里里系統本身自代的關數。
即使把saori_conf.txt下的@SAORI部分(SAORI插件登錄)全都拔掉也能夠使用的機能。
即使把saori_conf.txt下的@SAORI部分(SAORI插件登錄)全都拔掉也能夠使用的機能。
例如在事件中輸入
(単語の追加、水果、草莓) 而你本身就已經有一個同名字彙庫
@水果
蘋果 香蕉 西瓜 那麼這個字彙庫的選項就會被追加而成為:
@水果
蘋果 香蕉 西瓜 草莓 |
沒有同名字彙庫的時候,系統會建立一個新的。就會變成:
@水果
草莓 ※較舊的版本中必須有同名字彙庫,新字彙才加得進去。
事後添加進去的字彙無法編輯與刪除。這個BUG應該已被修正。 【注意】 該寫成日文的地方必須寫成日文,沒把握的話請複製貼上。 單語的追加(X) 単語の追加(O) |
刪除指定字彙庫中已追加的某字彙。
書寫格式:
書寫格式:
- (追加単語の削除、字彙庫名稱、欲刪除字彙)
例如在事件中寫入:
(追加単語の削除、水果、草莓) 剛剛被添加進去的「草莓」就會被刪除。
|
【注意】
追加單語的消除(X) 追加単語の削除(O) 這個指令只對事後加進去的字彙起作用,不能刪除本來就有的字彙。 因為原始的字彙庫算是預設數值,添加的字彙是存檔性質, 而預設數值優先於存檔,所以覆蓋不過去。 |
刪除指定字彙庫中所有事後添加進去的字彙。
書寫格式:
書寫格式:
- (追加単語の全削除、字彙庫名稱)
例如在事件中寫入:
(追加単語の全削除、水果)
則「水果」這個字彙庫裡所有事後添加進去的字彙,例如草莓、梨子、櫻桃……通通都會被刪除。回到原始的三選項。
組合字彙庫。可以暫時把多個字彙庫倒入一個抽獎箱進行抽選。
書寫格式:
書寫格式:
- (合成単語群、字彙庫1名稱、字彙庫2名稱)
例如原本的字彙庫是這樣:
@蛋糕
草莓蛋糕 巧克力蛋糕 @聖代 草莓聖代 巧克力聖代 然後在腳本中使用
(合成単語群、蛋糕、聖代)
那麼,雖然「蛋糕」和「聖代」不是同一個字彙庫,卻可以一起加入抽選。在本例中有2+2=4個選項,每個選項被抽選到的機率為1/4。
|
可合成兩個以上的字彙庫,照書寫格式往後添加即可。
有趣的是,字彙庫其實也可以搭配條件式,造成選項的增減。 @蛋糕
草莓蛋糕 巧克力蛋糕 @蛋糕 (現在時)==15 提拉米蘇 藍莓蛋糕 @聖代 草莓聖代 巧克力聖代 * :今天的點心是(合成単語群、蛋糕、聖代)呦~ 那麼,如果現在是下午三點的話,就會有6個選項。
如果不是下午三點的話,就只會有4個選項。 |
分割用字元(byte)值。
通常是用半/全形逗號做為分割字元(看上面,主要是(指令、對象、方式)這樣的隊形),而逗號的字元值是1。
字元值和分割字元都可以改變。平時不推薦去更改它,需要更改的場合通常是在「對象是網站、檔案但名稱含有逗號,會讓系統錯誤斷句而無法執行指令」的時候。
書寫格式:
通常是用半/全形逗號做為分割字元(看上面,主要是(指令、對象、方式)這樣的隊形),而逗號的字元值是1。
字元值和分割字元都可以改變。平時不推薦去更改它,需要更改的場合通常是在「對象是網站、檔案但名稱含有逗號,會讓系統錯誤斷句而無法執行指令」的時候。
書寫格式:
- (バイト値、數字)
例如:
(バイト値、1)
|
推薦使用1以外的數值。設定成0的話好像會出事,設定成2或3是OK的。
|
呼叫關數。
呼叫對象可以是計算式、判斷式,或者檔案。呼叫檔案的時候甚至能直接開啟,例如文件或音樂。
因為應用方式非常多所以不寫在這裡,獨立成一個頁面。
呼叫對象可以是計算式、判斷式,或者檔案。呼叫檔案的時候甚至能直接開啟,例如文件或音樂。
因為應用方式非常多所以不寫在這裡,獨立成一個頁面。
不進行任何動作。
能捨棄SAORI的返回值。常使用在播放音樂用的mciaudio指令腳本中。
書寫格式:
能捨棄SAORI的返回值。常使用在播放音樂用的mciaudio指令腳本中。
書寫格式:
- (nop、動作)
【nop機能的使用實測】
nop後面接(字彙)或(@系關數名))→不會執行動作、也不會進行名詞替代。
nop後面接(set系指令)→會執行動作。
nop後面接(字彙)或(@系關數名))→不會執行動作、也不會進行名詞替代。
nop後面接(set系指令)→會執行動作。
取得第_次前的對話內容。
可用來製作「剛剛說了什麼?」(對話回顧)機能。
書寫格式:
可用來製作「剛剛說了什麼?」(對話回顧)機能。
書寫格式:
- (remember、數字)
目前的對話算第0個。假設我們要回顧上一個普通對話,就要這樣寫:
*
:要進行什麼動作? _對話回顧 *對話回顧 :(remember、1) 通常會把這個機能寫在角色的Menu(主選單)中,做成選項。
|
那麼左邊的角色就會先給你選項:
要進行什麼動作?
按下去之後就會回播上一個普通對話。
|
【注意】
1.只對普通對話有用,無法呼叫事件對話。
2.系統常常會在對話結束後的閒置期自動插入預設表情和\e,估計是因為有在使用「對話結束一段後回復預設表情」(会話時サーフェス戻し)這項機能,為了確保人物表情有回到預設值,系統在後台會一直刷回復指令……雖然表面上看不出來,但這個行為會把對話給刷走,使得它不再是「上一個對話」(可能會變成第N個)而造成remember機能找不到它的情形。
remember呼叫不到對白的時候不會報錯,就只是人物會傻傻地看著你而已。
如果很在意remember成功率的製作人或許可以試著把回復表情機能關掉,或者使用比較複雜的方式(使用$去記憶每個對話,然後再回播做為當次對話)。
個人是覺得用$有點小題大作……而且回播出來的東西容易產生異常換行的問題,所以我並沒有使用這個方法。
但還是會記述在教學裡。
1.只對普通對話有用,無法呼叫事件對話。
2.系統常常會在對話結束後的閒置期自動插入預設表情和\e,估計是因為有在使用「對話結束一段後回復預設表情」(会話時サーフェス戻し)這項機能,為了確保人物表情有回到預設值,系統在後台會一直刷回復指令……雖然表面上看不出來,但這個行為會把對話給刷走,使得它不再是「上一個對話」(可能會變成第N個)而造成remember機能找不到它的情形。
remember呼叫不到對白的時候不會報錯,就只是人物會傻傻地看著你而已。
如果很在意remember成功率的製作人或許可以試著把回復表情機能關掉,或者使用比較複雜的方式(使用$去記憶每個對話,然後再回播做為當次對話)。
個人是覺得用$有點小題大作……而且回播出來的東西容易產生異常換行的問題,所以我並沒有使用這個方法。
但還是會記述在教學裡。
設立關數(數值),或給關數(數值)賦值。
掌管人格的「記憶」動作。例如:記住剛剛骰出的點數、記住計算的結果、記住好感度的變化,或者記住目前的道具數量。
對程式而言「運算」和「記憶」是兩件不同的事情,所以需要用這個指令來提醒它「記住這個數值!」(我待會可能要用!)。
如果不使用的話,人格是不會主動去記住任何數值的……記憶力比金魚腦的15秒還差,完全就是放空狀態XD所以這個指令很重要,真的很重要!
書寫格式:
掌管人格的「記憶」動作。例如:記住剛剛骰出的點數、記住計算的結果、記住好感度的變化,或者記住目前的道具數量。
對程式而言「運算」和「記憶」是兩件不同的事情,所以需要用這個指令來提醒它「記住這個數值!」(我待會可能要用!)。
如果不使用的話,人格是不會主動去記住任何數值的……記憶力比金魚腦的15秒還差,完全就是放空狀態XD所以這個指令很重要,真的很重要!
書寫格式:
|
←半形寫法
←全形寫法 |
由於日文的逗號是「、」,所以全形時是使用它而不是「,」,這點請注意。
|
【使用方法】
1.設立數值
設立數值的時候必須指定一個預設值。可以是數字、文字或空白,總之必須指定。
設立數值的時候必須指定一個預設值。可以是數字、文字或空白,總之必須指定。
寫法1:
*
:(set,好感度,25)好感度初始值是25。 寫法2:
*
:(set,好感度,25)好感度初始值是(好感度)。 |
兩種寫法顯示出來都一樣會是:
好感度初始值是25。
當然,就字數的精煉而言是寫法1較好,一來字數少、二來前面都已經定了定值是25,再用(變數名)來考系統一次其實有點多餘……
但set指令之中其實支援運算,延伸應用即為數值的增減。 假設現在要把原始值A+5,在知道原始值是25的情況下你可以在腳本後方直接寫「現在的好感度是30」沒錯,但你根本無法猜測到玩家目前的好感度(因為會浮動)……所以這個時候我們就要使用方法2,寫成一個帶有未知數的寫法來應付。 |
set也可讓數值留白。方法和$一樣,就是不輸入值。(連空白鍵也不用)
書寫格式:
(set,名字,)
|
【注意】
$與set的差別?
|
2.變更數值
應用方法① 數值的計算
(set,好感度,(好感度)+5)
【慢速解說】
例如說好感度初始值為0,那麼第三區段就會是呼叫出其數值0加入式子,而0+5=5,所以整條式子等同於(set、好感度、5)。
例如說好感度初始值為0,那麼第三區段就會是呼叫出其數值0加入式子,而0+5=5,所以整條式子等同於(set、好感度、5)。
應用方法② 與其他語法連用
例一:與calc機能組合
*
:(set,結算結果,(calc,(數字一)+(數字二)))加總之後是(結算結果)。 由於指令只會在後台執行,不會在對話框裡顯示出來,所以顯示出來會是:
加總結果是_(←會填入數字)。
【慢速解說】
括弧部分和數學一樣,越裡面的括弧會優先解開。只是偽春菜沒有分成大中小括弧。 程式執行步驟: 1.確定名為「數字一」、「數字二」的兩個變數都存在?→ 2.填入式子裡。假設是數字一是10、數字二是20,那中括號就會變成(calc、10+20)→30→ 3.(set、結算結果、30)=記憶數值→ 4.執行括弧後的對話,顯示「加總結果是30。」 |
例二:與call機能組合
寫法1.
@加權
(calc,(分數)/9*10) * :(set,加權結果,(call,加權,(分數)))調整之後的成績是(加權結果)分。 【慢速解說】
1.calc這個指令是「無條件捨去小數」的計算。需要保有小數尾時請使用calc_float。這裡我怕有數字不能被9整除於是選擇使用calc。 2.會先解開內側的calc括弧,然後再執行set的記憶動作。 3.程式一定是由左往右執行,所以這裡不能等到句子講完才放set!因為在句中就要用到這個數字了。 程式執行步驟: 1.確定名為「分數」這個變數都存在?→ 2.確定名為「加權」的關數存在?→ 3.呼叫這個算式,將分數填入式子裡。假設分數是90,那中括號就會變成(calc,90/9)→10→(calc,10*10)→100→ 4.(set、加權結果、100)=記憶數值。→ 5.執行括弧後的對話,顯示「調整之後的成績是100分。」 寫法2.
@加權
(set,加權結果,(calc,(分數)/9*10)) * :調整之後的成績是(加權結果)分。 |
使指令與對話同期動作。是一種避開使用不安定的\![raise]指令的方式。使用它的人不多,當作不認識也可以。(喂)
書寫格式:
書寫格式:
|
淺色部分如果沒有代入值可以不用寫。
|
日本里里WIKI提供了一個有趣的例子,fill_desktop(填滿桌面)。這個機能會把整個螢幕填上指定的顏色。
這是日文人格「「ポストと狛犬」」提供的插件。
使用它的要件是:
1.你的SAORI裡必須有fill_desktop.dll這個插件
2.你有在satori_conf.txt裡登錄這個插件:
這是日文人格「「ポストと狛犬」」提供的插件。
使用它的要件是:
1.你的SAORI裡必須有fill_desktop.dll這個插件
2.你有在satori_conf.txt裡登錄這個插件:
fill_desktop,saori/fill_desktop.dll
fill_red,saori/fill_desktop.dll,255,0,0 |
第二行應該可以不用寫?
不想使用這個插件的話請把這兩行一起刪掉。 |
程式碼的部分:
*
_塗色測試 *塗色測試 :開始。 先塗紅。(sync,fill_desktop,255,0,0) 再塗藍。(sync,fill_desktop,0,0,255) 接著塗黃。(sync,fill_desktop,255,255,0) 結束。(sync,塗色解除) *塗色 (fill_desktop,(R0),(R1),(R2)) *塗色解除 (fill_desktop) |
後面三個數字是R,G,B值,可改成你要的顏色的R,G,B值。
執行之後就會發生神奇的事情喔~(笑) 人格背後的整個螢幕會先變紅屏→藍屏→黃屏→恢復正常。 不是電腦壞掉了,請放心! |
呃就是……程式語言裡的when。條件式句型。
「當……條件成立時,執行反應1,否則執行反應2。」
有點像if,但能解決if與set之間的相處問題。
書寫方式:
「當……條件成立時,執行反應1,否則執行反應2。」
有點像if,但能解決if與set之間的相處問題。
書寫方式:
|
淺色部分如果沒有安排反應可以不用寫。
|
例1. 是非判斷型:
*
:(when、(現在月)==2、現在是2月、現在不是2月。)
|
例2. 大小評斷式:
配合運算子即可成為比較式
*
:(when,(持有金額)>0,零錢響叮噹☆、口袋空空……)
|
例3. when迴圈
*
:10的階乘是(call、階乘、10)。 @階乘 (when、(calc、1<(A0))、(calc、(A0)*(call、階乘、(calc、(A0)-1)))、 1) 【注意】
1.在最後(不成立的反應區塊)補上那個1是有必要的,因為「10×9×8×6×5×4×3×2×」無法成為運算式。 2.在calc類中「*」=「×」,詳見「運算子一覽」頁面。 |
【慢速解說】
0. 在call關數中代入值。 1. 比對。當 代入值(A0)=公式中的第一個框 >0的時候 2. 計算代入值(A0)×…多少? (這裡的「(A0)×」算是字串,系統目前還看不懂,因為A+B才是個完整的算式) 3. 用calc把(A0)-1。10-1=9,所以輸出9×。 →字串變成10×9× 4. 呼叫階乘關數代入9,回到步驟1。 9>1所以輸出8×,現在字串變成10×9×8×。 5. 這個迴圈重複幾次之後字串會變成10×9×8×7×6×5×4×3×2× →最後在試圖代入1的時候就無法通過「代入數>1」的條件,而輸出不成立結果的1 →字串成為10×9×8×7×6×5×4×3×2×1 →(calc,10×9×8×7×6×5×4×3×2×1) →10!的答案 |
【if與set的相處問題】
if和when都是條件式句型,能做到的事情差不多、確有微妙的差異。
if的書寫格式:
(if、條件式、(條件成立的反應)、(條件不成立的反應))
when的書寫格式:
(when、條件式、(條件成立的反應)、(條件不成立的反應))
乍看之下根本就一樣對吧?那麼問題到底出在哪裡呢?
問題出在if無法明確的辨識淺色區域出現的(set)括弧究竟是反應一的第二個動作?還是不成立的反應?
在這種情況下,if會把它當作反應一的第二個動作執行(動作A+動作B,而不是A or B),而造成錯誤。
但如果使用when就能夠避免這個問題。
if和when都是條件式句型,能做到的事情差不多、確有微妙的差異。
if的書寫格式:
(if、條件式、(條件成立的反應)、(條件不成立的反應))
when的書寫格式:
(when、條件式、(條件成立的反應)、(條件不成立的反應))
乍看之下根本就一樣對吧?那麼問題到底出在哪裡呢?
問題出在if無法明確的辨識淺色區域出現的(set)括弧究竟是反應一的第二個動作?還是不成立的反應?
在這種情況下,if會把它當作反應一的第二個動作執行(動作A+動作B,而不是A or B),而造成錯誤。
但如果使用when就能夠避免這個問題。
【錯誤範例】
(if,(現在日)<=15,(set,月劃分,上旬),(set,月劃分,下旬))
【慢速解說】
看起來好像沒問題?15號以前就是上旬、15號以後就是下旬沒錯嘛。 但問題是if會把第二個set當成動作B一起執行…… 程式執行步驟:
|
【正確寫法】
寫法1. 使用when
(when,(現在日)<=15,(set,月劃分,上旬),(set,月劃分,下旬))
【慢速解說】
when能分辨後面那個set是不成立反應,所以就能正確的賦值。 寫法2. 使用if
因為一切得亂源是關數的(),單純只是文字列的話其實是正常的,利用這個特性來「欺騙」程式-- ((if、(現在日)<=15、set,月劃分,上旬、set,月劃分,下旬))
這次if輸出的結果不是(set,月劃分,值)這個賦值動作,而是「set,月劃分,值」這個字串。
從if出來後才補上最外圍的()→(set,月劃分,值)。 if使用全形逗號是為了和字串的半形逗號做出區隔才不會讓程式互相搞混,這點很重要。 在這個寫法中全部使用全形或半形會造成系統斷句錯誤……請避免此狀態。 |
LOOP關數
與程式語言裡的loop相同。迴圈功能。
可以依你指定的次數來反覆執行句子、字彙抽出或關數動作。和times幾乎只差在書寫格式。
書寫格式:
可以依你指定的次數來反覆執行句子、字彙抽出或關數動作。和times幾乎只差在書寫格式。
書寫格式:
|
淺色部分可以不用寫。增減值不可填入負數。
|
開始值:loop起始值。 結束值:loop上限。 增加值:每loop一次跳多少,不寫的話預設是1。
開始值<結束值→升冪結果 開始值>結束值→降冪結果
例如說數字部分是(1,5,1)的話,數列會是「1,2,3,4,5」(迴圈執行5次);數字是(10,0,2)的話,數列會是「10,8,6,4,2,0」(迴圈執行6次)
可以配合
雖然這麼說但對沒有程式語言基礎的人(例如我XD)還是有點理解困難對吧?別擔心,來看使用例吧。
開始值<結束值→升冪結果 開始值>結束值→降冪結果
例如說數字部分是(1,5,1)的話,數列會是「1,2,3,4,5」(迴圈執行5次);數字是(10,0,2)的話,數列會是「10,8,6,4,2,0」(迴圈執行6次)
可以配合
- (迴圈對象カウンタ)
雖然這麼說但對沒有程式語言基礎的人(例如我XD)還是有點理解困難對吧?別擔心,來看使用例吧。
應用方法① 重複詞/句子
1.重複台詞
① 配合@
*
:你念十次「月亮」看看。 :(loop,重複詞,10)…… :后羿射什麼? :月亮! @重複詞 月亮 【執行結果】
右子:你念十次「月亮」看看。 左子:月亮月亮月亮月亮月亮月亮月亮月亮月亮月亮…… 右子:后羿射什麼? 左子:月亮! ② 配合*
*
:(loop,重複句,3) *重複句 :九十九屋真一的回合! 【執行結果】
九十九屋真一的回合!
九十九屋真一的回合! 九十九屋真一的回合! 【@與*的差別】
用@重複的句子會接續往下寫; 用*重複的句子會換行! |
應用方法② 重複抽選字彙
*
:餐點來囉~這是您點的(loop,點餐,3)還有本店的招牌水果茶! @點餐 薯條、 雞塊、 洋蔥圈、 雞米花、 蛋塔、 凱薩沙拉、 執行結果:會隨機從六個選項中抽取三道菜。
應用方法③ 搭配其他關數
寫法1.
*
:(call,數動物,羊) @數動物 (set,可數動物,(A0))(loop,數動物2,5) *數動物2 :(數動物2カウンタ)隻(可數動物)。 1隻羊
2隻羊 3隻羊 4隻羊 5隻羊 【慢速解說】
1.呼叫「數動物」關數,並在它的(A0)中填入「羊」。 2.記住剛剛填入的東西叫作「可數動物」,值是「羊」。 3.重複「數動物2」這個事件五次。 4.迴圈每執行一次,(數動物2カウンタ)=執行次數就會+1,再配上剛剛記憶的「可數動物」完成第一行的「1隻羊」。 5.上一個步驟總共會執行五次,所以輸出五行。 簡單一點的寫法:
*
:(loop,數動物2,5) *數動物2 :有(數動物2カウンタ)隻羊。 雖然這個寫法不能指定動物,但能達到和上面一樣的輸出結果。
|
用法① 重複單詞/句子
用times來寫上面的loop語法的話:
用times來寫上面的loop語法的話:
*
:你念十次「月亮」看看。 :(times,10,重複詞)…… :后羿射什麼? :月亮! @重複詞 月亮 |
*
:(times,3,重複句) *重複句 :九十九屋真一的回合! |
應用方法② 搭配其他關數
搭配call和when的事件。原理和之前的when階乘一樣。
*
:(times、9、1、(C0)+)10是多少?
:……(call、級數、10)!
*級數
(when、(calc、1<(A0))、(calc、(A0)+(call、級數、(calc、(A0)-1)))、1)
:(times、9、1、(C0)+)10是多少?
:……(call、級數、10)!
*級數
(when、(calc、1<(A0))、(calc、(A0)+(call、級數、(calc、(A0)-1)))、1)
【慢速解說】
1. times部分:重複九次、從1開始+1,輸出的字串是「它是第幾項+」
2. 輸出字串「1+2+3+4+5+6+7+8+9+」,接上後面的10。
3. call關數呼叫下面的階乘計算,以10代入(A0)。
4. 比對。當 代入值(A0)=公式中的第一個框 >1的時候
5. 計算代入值(A0)+……?什麼東西?
(這裡的「(A0)+」算是字串,系統目前還看不懂,因為A+B才是個完整的算式)
6. 用calc把(A0)-1。10-1=9,所以輸出9+。
→字串變成「10+9+」
7. 呼叫階乘關數代入9,回到步驟4。
9>1所以輸出8+,現在字串變成10+9+8+。
8. 這個迴圈重複幾次之後字串會變成10+9+8+7+6+5+4+3+2+
→最後在試圖代入1的時候就無法通過「代入數>1」的條件,而輸出不成立結果的1
→字串成為10+9+8+7+6+5+4+3+2+1
→(calc,10+9+8+7+6+5+4+3+2+1)
→數列的答案
1. times部分:重複九次、從1開始+1,輸出的字串是「它是第幾項+」
2. 輸出字串「1+2+3+4+5+6+7+8+9+」,接上後面的10。
3. call關數呼叫下面的階乘計算,以10代入(A0)。
4. 比對。當 代入值(A0)=公式中的第一個框 >1的時候
5. 計算代入值(A0)+……?什麼東西?
(這裡的「(A0)+」算是字串,系統目前還看不懂,因為A+B才是個完整的算式)
6. 用calc把(A0)-1。10-1=9,所以輸出9+。
→字串變成「10+9+」
7. 呼叫階乘關數代入9,回到步驟4。
9>1所以輸出8+,現在字串變成10+9+8+。
8. 這個迴圈重複幾次之後字串會變成10+9+8+7+6+5+4+3+2+
→最後在試圖代入1的時候就無法通過「代入數>1」的條件,而輸出不成立結果的1
→字串成為10+9+8+7+6+5+4+3+2+1
→(calc,10+9+8+7+6+5+4+3+2+1)
→數列的答案
程式語言的while迴圈。
while是一種做起事情就會常一頭熱的固執指令,所以在使用的時候必須特別小心,為這個迴圈安排一個出口吧。
可使用(C_)系列變數取得第?項的代入數。 (請參閱:情報取得變數:(C○))
書寫格式:
while是一種做起事情就會常一頭熱的固執指令,所以在使用的時候必須特別小心,為這個迴圈安排一個出口吧。
可使用(C_)系列變數取得第?項的代入數。 (請參閱:情報取得變數:(C○))
書寫格式:
|
淺灰的部分可以不用寫
|
while的重複對象可以是關數,例如call或set。
while的評價對象是由運算子構成的條件式,例如「A>B」、「(道具數量)==1」。
但要注意一點,只要那個條件式成真(符合),while就會不斷地不斷地去進行你指定的動作……造成一個鬼打牆式的無限迴圈並造成系統錯誤。
所以通常我們會在「重複對象」那一區填入一些指令來破壞條件、使while迴圈停止。
while的評價對象是由運算子構成的條件式,例如「A>B」、「(道具數量)==1」。
但要注意一點,只要那個條件式成真(符合),while就會不斷地不斷地去進行你指定的動作……造成一個鬼打牆式的無限迴圈並造成系統錯誤。
所以通常我們會在「重複對象」那一區填入一些指令來破壞條件、使while迴圈停止。
【while與set的聯合應用】
*
:取得兩個相異的亂數。(set,數字1,(乱数0~9))(set,數字2,(乱数0~9))(while,(數字1)==(數字2),(set,數字2,(乱数0~9)))
數字1→(數字1);數字2→(數字2)。
:取得兩個相異的亂數。(set,數字1,(乱数0~9))(set,數字2,(乱数0~9))(while,(數字1)==(數字2),(set,數字2,(乱数0~9)))
數字1→(數字1);數字2→(數字2)。
【慢速解說】
1.給名為「數字1」的數值隨機設定一個值。0~9的話,大概是一個十面骰的概念。
2.給名為「數字2」的數值隨機設定一個值,一樣是在0~9中挑選一個正整數。
3.進入while迴圈。當「數字1=數字2」,重新對數字2擲骰並複寫數值。
4.再回到判斷式。重複步驟3直到數字1≠數字2(不滿足「數字1=數字2」條件)
5.脫離while迴圈。在第二行把這兩個數值叫出來填入句子裡。
1.給名為「數字1」的數值隨機設定一個值。0~9的話,大概是一個十面骰的概念。
2.給名為「數字2」的數值隨機設定一個值,一樣是在0~9中挑選一個正整數。
3.進入while迴圈。當「數字1=數字2」,重新對數字2擲骰並複寫數值。
4.再回到判斷式。重複步驟3直到數字1≠數字2(不滿足「數字1=數字2」條件)
5.脫離while迴圈。在第二行把這兩個數值叫出來填入句子裡。
【錯誤示範】
*
:取得兩個相異的亂數。(set,數字1,(乱数0~9))(set,數字2,(乱数0~9))(while,(數字1)==(數字3),(set,數字2,(乱数0~9)))
數字1→(數字1);數字2→(數字2)。
:取得兩個相異的亂數。(set,數字1,(乱数0~9))(set,數字2,(乱数0~9))(while,(數字1)==(數字3),(set,數字2,(乱数0~9)))
數字1→(數字1);數字2→(數字2)。
1.如果腳本某處的數字3真的不幸和數字1相等的話,程式就會去擲數字2的骰。
2.然後因為數字1或數字3沒有改變,所以骰完數字2之後數字1與數字3還是相等、條件還是成立,所以再重複一次while迴圈。
3.數字1=數字3成立,所以再擲一次數字2的骰……
最後造成的結果是:永遠都在擲數字2的骰、無限迴圈。無法離開迴圈進行其它事情。
2.然後因為數字1或數字3沒有改變,所以骰完數字2之後數字1與數字3還是相等、條件還是成立,所以再重複一次while迴圈。
3.數字1=數字3成立,所以再擲一次數字2的骰……
最後造成的結果是:永遠都在擲數字2的骰、無限迴圈。無法離開迴圈進行其它事情。
【注意】
錯誤寫法:
數字1:(數字1)
冒號會被當成「切換對話」的指令。
(數字1)會變成另一個角色的台詞。 |
正確寫法:
數字1φ:(數字1)
在冒號前面加「φ」可告知系統:「待會這個冒號是普通的冒號,不是指令符號!」(φ用法詳見:特殊符號一覽)
φ符號不會顯示在對話框裡,請放心。 數字1:_(會填入數字)
|
程式語言的for迴圈。
可使用(C_)系列變數取得第?項的代入數。 (請參閱:情報取得變數:(C○))
可使用(C_)系列變數取得第?項的代入數。 (請參閱:情報取得變數:(C○))
書寫格式:
|
淺灰色的部分可以不用寫。增減值不可填入負數。
|
我是很想寫解說啦但爬了很多文,但程式碼在我這裡就是跑不起來……
在這種情況下就先不寫了,免得誤導大家。
在這種情況下就先不寫了,免得誤導大家。