【目次&快速檢索】
按這裡快速跳至該章節!
按這裡快速跳至該章節!
計算類 | |||||
---|---|---|---|---|---|
calc | calc_float | ||||
條件分歧 | |||||
if | unless | iflist | switch | nswitch | |
截取 | |||||
substr | |||||
分割 | |||||
split | |||||
置換 | |||||
replace | replace_first | ||||
清除 | |||||
erase | erase_first | ||||
檢索 | |||||
count | |||||
比較 | |||||
compare | compare_haed | compare_tail | compare_case | compare_haed_case | compare_tail_case |
字數取得 | |||||
length | |||||
代數判定 | |||||
is_empty | is_digit | is_alpha | |||
文字列變換 | |||||
zen2han | han2zen | kata2hira | hira2kata | ||
接續 | |||||
join | |||||
選擇 | |||||
choice | |||||
新機能 | |||||
reserve | at | isimg | mkdir |
寫在前面的注意事項
本頁中的所有指令都必須
1.在人格資料夾中置入對應的指令dll檔、
2.並且在satori_conf.txt下方的@SAORI區登錄過指令名稱
完成這兩個動作方能使用。
不建議放置不裝,因為計算用的calc/calc_float、分歧條件式用的if、分辨資料用的iflist/switch/nswitch全長在SSU關數這裡。
反正裝設也只是兩次複製貼上的動作……請務必要裝一下!
1.在人格資料夾中置入對應的指令dll檔、
2.並且在satori_conf.txt下方的@SAORI區登錄過指令名稱
完成這兩個動作方能使用。
不建議放置不裝,因為計算用的calc/calc_float、分歧條件式用的if、分辨資料用的iflist/switch/nswitch全長在SSU關數這裡。
反正裝設也只是兩次複製貼上的動作……請務必要裝一下!
計算類
應用1:計算數值
(calc,(數字一)+(數字二))。
顯示情形:
骰子的點數是3和4。
點數總和是7點 【注意】
運算和記憶是兩回事。如果待會還要使用/比較這個數值的話,請搭配set。 *
:骰子的點數是3和4。 點數總和是(set,合點,(calc,3+4)點) :(合點)嗎? |
應用2:辨別奇偶數
偶數是2n的形式,而奇數是2n+1;反過來說,偶數÷2=0,奇數÷2會餘1。
利用這樣的特性可以這樣寫: *
>奇數反應 (calc,(合點)%2)==1 >偶數反應 (calc,(合點)%2)==0 「餘數==1」的地方也能寫成「!=0」(不為0)
【注意】
calc的特性是捨去小數,所以5÷2的結果會是2!(不是2.5) 這點請務必注意。 |
*
:9÷2是(calc,9÷2)。 計算結果會是4.5。使用calc的話結果會是4。
一樣可以搭配set記憶數值。 |
calc系列也支持代數運算
(calc_float,(數字一)+(數字二))。
|
條件式。依條件式的真偽(成立與否)執行動作或輸出不同的對話。
書寫格式:
書寫格式:
|
不成立反應可不填寫,此時視為「不執行任何動作」。
|
1.依條件輸出不同對話
*
:(if、(現在日)>15、現在是下旬、現在是上旬)。
|
2.依條件執行不同動作
*
:(if,(點數)>=50,(call,關數1,5),(call,關數2,5))。 @關數1 (calc,50+(A0)) @關數2 (calc,50-(A0)) 如果「點數」這個數值≧50的話會執行關數1的計算,不足50則執行關數2的計算。
|
條件式。與if相反,「若條件不成立,則執行動作1,否則執行動作2」。
書寫格式:
|
*
:(unless、(現在日)>15、現在是上旬、現在是下旬)。 |
【慢速解說】
沒大於15→上旬;大於15→下旬。 |
條件式,篩狀評斷式。
if、unless、when 三者都只能評斷一次條件式的成立與否而做出真(成立)、偽(不成立),共兩種反應。
iflist則是把判斷式的數值丟在另一側,如果條件1不成立就先回到左側式子、然後再比對右側的條件2,像傳接球一樣左右拋接直到有適當的反應。
全部條件都不成立時,可以安排反應、也可以不安排(視為不動作)。
當然「>」(事件跳躍)也能夠進行篩狀評斷,但每篩一次就要佔用整整一行而使腳本變得冗長。講求美觀簡潔的人可能會不喜歡。
if、unless、when 三者都只能評斷一次條件式的成立與否而做出真(成立)、偽(不成立),共兩種反應。
iflist則是把判斷式的數值丟在另一側,如果條件1不成立就先回到左側式子、然後再比對右側的條件2,像傳接球一樣左右拋接直到有適當的反應。
全部條件都不成立時,可以安排反應、也可以不安排(視為不動作)。
當然「>」(事件跳躍)也能夠進行篩狀評斷,但每篩一次就要佔用整整一行而使腳本變得冗長。講求美觀簡潔的人可能會不喜歡。
書寫格式:
- (iflist、條件式左側、條件1門檻、條件1反應、條件2門檻、條件2反應、全部不成立的反應)
*
:(iflist,(現在月)==,1,現在是1月,2,現在是2月,3,現在是3月,4,現在是4月,5,現在是5月,6,現在是6月,現在是下半年)。
:(iflist,(現在月)==,1,現在是1月,2,現在是2月,3,現在是3月,4,現在是4月,5,現在是5月,6,現在是6月,現在是下半年)。
如果現在是1~6月的話就會報出對應的月份,不在這六個月之中就只回報是下半年。
運算子不一定只有等於,也可以配合>、<等運算子和複數評斷的特性來製造篩選的動作。
運算子不一定只有等於,也可以配合>、<等運算子和複數評斷的特性來製造篩選的動作。
*
:(iflist,(現在時)<,6,現在是清晨,12,現在是上午,18,現在是下午,現在是深夜)。
:(iflist,(現在時)<,6,現在是清晨,12,現在是上午,18,現在是下午,現在是深夜)。
【慢速解說】
如果現在時間<6(0~6)成立的話,就是第一個反應。
不成立的話會再評斷第二個門檻,成立的話就是「不符合門檻1、但符合門檻2」,也就是6~12點,反應二。
不成立的話會再評斷第三個門檻,成立的話就是「不符合門檻1、不符合反應2、但符合門檻3」,也就是12~18點,反應三。
以上皆非的話,留下來的鐵定是18~24點,那就執行反應四。
如果現在時間<6(0~6)成立的話,就是第一個反應。
不成立的話會再評斷第二個門檻,成立的話就是「不符合門檻1、但符合門檻2」,也就是6~12點,反應二。
不成立的話會再評斷第三個門檻,成立的話就是「不符合門檻1、不符合反應2、但符合門檻3」,也就是12~18點,反應三。
以上皆非的話,留下來的鐵定是18~24點,那就執行反應四。
【應用】
利用這樣的特性,iflist很適合拿來判斷時間帶、或依時間帶做出不同的反應。
例如:
利用這樣的特性,iflist很適合拿來判斷時間帶、或依時間帶做出不同的反應。
例如:
@時間帶
(iflist,(現在時)<,6,清晨,12,上午,18,下午,深夜)
* (時間帶)==下午
:下午限定對話。
(iflist,(現在時)<,6,清晨,12,上午,18,下午,深夜)
* (時間帶)==下午
:下午限定對話。
條件式,條件並列分歧。
與iflist很像,但iflist可評斷帶狀結果(A~B),switch則只能評斷指定數值。
書寫格式:
與iflist很像,但iflist可評斷帶狀結果(A~B),switch則只能評斷指定數值。
書寫格式:
- (switch、等式左側、指定數值1、反應1、指定數值2、反應2、以上皆非的反應)
*
:(switch,(現在月),1,現在是1月,2,現在是2月,3,現在是3月,4,現在是4月,5,現在是5月,6,現在是6月,現在是下半年)。
:(switch,(現在月),1,現在是1月,2,現在是2月,3,現在是3月,4,現在是4月,5,現在是5月,6,現在是6月,現在是下半年)。
執行結果會和if的例子相同。
條件式,依數值分歧。
與switch很像,是較為簡單的版本、直接依照數值去找結果。數值是n的話,則執行第n項反應。
書寫格式:
與switch很像,是較為簡單的版本、直接依照數值去找結果。數值是n的話,則執行第n項反應。
書寫格式:
- (nswitch、(數值名)、值為1的反應、值為2的反應、以上皆非的反應)
應用1 再度減縮判斷式
*
:(nswitch,(現在月),現在是1月,現在是2月,現在是3月,現在是4月,現在是5月,現在是6月,現在是下半年)。
:(nswitch,(現在月),現在是1月,現在是2月,現在是3月,現在是4月,現在是5月,現在是6月,現在是下半年)。
應用2 判定季節
@季節
(nswitch,(現在月),冬,冬,春,春,春,夏,夏,夏,秋,秋,秋,冬)。
*
:現在是(季節)天。
(nswitch,(現在月),冬,冬,春,春,春,夏,夏,夏,秋,秋,秋,冬)。
*
:現在是(季節)天。
應用3 多面骰與控制事件觸發機率
*
>(nswitch,(乱数1~6),事件1,事件1,事件1,事件2,事件2,事件3)
>(nswitch,(乱数1~6),事件1,事件1,事件1,事件2,事件2,事件3)
這樣的話有3/6的機率(擲到1、2、3)會進入事件1、2/6的機率(擲到4、5)進入事件2、1/6的機率(擲到6)進入事件3!
可以依需求做出更多結果的事件骰。
可以依需求做出更多結果的事件骰。
截取
從字串中截取文字。
書寫格式:
書寫格式:
|
截取長度值為正數→往後算;截取長度值為負數→往前算。
|
【注意】
1.往後算時會算入自己、往前算時不會算到自己。
2.開始位置的計算:第一個字算是0,第二個字算1。
1.往後算時會算入自己、往前算時不會算到自己。
2.開始位置的計算:第一個字算是0,第二個字算1。
* :(substr,一二三四五六七八九十,6,3) |
七八九
|
* :(substr,一二三四五六七八九十,6,-3) |
四五六
|
分割
分割字串。
針對特殊句構(EX:A+B+C+D+E)可依據其重複的結構作為分割符號而抽取出裡面的文字來使用(EX:抽出A、B、C、D、E)。
執行後回傳的是分割數(總共被切成幾份)而不是文字,這點請注意。被抽出的單字會被保存在S_系列變數裡、由(S0)開始編號。
如果不需要顯示分割數,可配合nop來捨棄回傳值。
針對特殊句構(EX:A+B+C+D+E)可依據其重複的結構作為分割符號而抽取出裡面的文字來使用(EX:抽出A、B、C、D、E)。
執行後回傳的是分割數(總共被切成幾份)而不是文字,這點請注意。被抽出的單字會被保存在S_系列變數裡、由(S0)開始編號。
如果不需要顯示分割數,可配合nop來捨棄回傳值。
書寫格式:
|
淺灰色部分可不寫。
最大分割數若為0,則為「無分割元素上限」。 |
例1 字串分割
(split,1+2+3+4+5,+) 【慢速解說】
用+號做為分割「1+2+3+4+5」這個字串的依據,所以會切割成5份。 會輸出的是「5」這個數字。 收納部分,(S0)=1,(S1)=2,(S4)=5。可以用(S_)的形式在後面對話中呼叫出來使用。 |
【小技巧】丟棄split的返回值,只使用S變數
(nop,(split,A+B+C+D+E,+))(S4) 不使用nop的結果→顯示「5E」。
使用nop的結果→顯示「E」。 因為nop可以私下進行動作並且扔掉返回值。nop的運作甚至不會出現在開發人員向的後台腳本記錄裡。 |
例3 取得季節
@季節 (nop,(split,x冬x冬x春x春x春x夏x夏x夏x秋x秋x秋x冬,x))(S(calc,(現在月)-1)) |
|
【注意】
分隔符也可以是中文、或單詞。(EX:以「加上」為分隔符)
但要注意的是、只要出現分隔符單詞的一部份就會被視為切斷訊號。所以在設計分隔點/試圖抓取單詞時請慎思,盡量選擇單字、符號或沒有在字串中重複出現的字來做為切斷的依據。
EX:「捲心菜加上培根加上阿拉斯加鮭魚加上嚴選上等松露」→6分割
分隔符也可以是中文、或單詞。(EX:以「加上」為分隔符)
但要注意的是、只要出現分隔符單詞的一部份就會被視為切斷訊號。所以在設計分隔點/試圖抓取單詞時請慎思,盡量選擇單字、符號或沒有在字串中重複出現的字來做為切斷的依據。
EX:「捲心菜加上培根加上阿拉斯加鮭魚加上嚴選上等松露」→6分割
【注意】目前發現的split問題
我這裡的中文里里核心無法指定「最大分割數」和「是否保留空元素」,只要指定這兩個數值就會引起SSP的系統錯誤(400 Bad Request)。
不確定是否因為我在使用前沒有改變分隔符號……
我這裡的中文里里核心無法指定「最大分割數」和「是否保留空元素」,只要指定這兩個數值就會引起SSP的系統錯誤(400 Bad Request)。
不確定是否因為我在使用前沒有改變分隔符號……
置換
文字置換。將指定字串中的特定詞彙轉換成指定詞彙。
書寫格式:
書寫格式:
- (replace、欲處理字串、置換目標、置換字詞)
例如這樣寫:
* :(replace,A先生B先生C先生,先生,小姐)。 |
就能把字串裡的「先生」全部置換成「小姐」。
A小姐B小姐C小姐。
|
文字置換。但只置換第一個目標。
書寫格式:
書寫格式:
- (replace_first、欲處理字串、置換目標、置換字詞)
* :(replace_first,A先生B先生C先生,先生,小姐)。 |
A小姐B先生C先生。
|
消除
消除字串中的指定字詞。
書寫格式:
書寫格式:
- (erase、欲處理字串、消除對象)
* :(erase,A先生B先生C先生,先生)。 |
ABC。
|
消除字串中遇到的第一個指定字詞。
書寫格式:
書寫格式:
- (erase_first、欲處理字串、消除對象)
* :(erase_first,A先生B先生C先生,先生)。 |
AB先生C先生。
|
檢索
計算字串中出現過多少個指定詞彙。
意外實用的關數。可以拿來計算骰子的特殊點數組合(EX:1、2、3順子=含有一個1、一個2、一個3)、拿來簡縮條件式、或者應用在輸入事件上來檢測話題、以做出回應分歧。
書寫格式:
意外實用的關數。可以拿來計算骰子的特殊點數組合(EX:1、2、3順子=含有一個1、一個2、一個3)、拿來簡縮條件式、或者應用在輸入事件上來檢測話題、以做出回應分歧。
書寫格式:
- (count、欲檢測字串、檢測詞彙)
應用① 特殊點數檢出
豹子(三骰點數相同)的檢測: * :擲骰!(set,骰子一,(乱数1~6))(set,骰子二,(乱数1~6))(set,骰子三,(乱数1~6))。 >特殊點 (count,(骰子一)(骰子二)(骰子三),(骰子一))==3 >普通點 *特殊點 :三個一樣的點數耶~好厲害! *普通點 :點數是(骰子一)、(骰子二)和(骰子三)喔。 【慢速解說】
1.隨機設定三個骰子的值後把三個骰子橫著擺,合成一個字串(例如111、562)。 2.如果三個點數都一樣的話,那麼只要識別一個骰子,接著看字串中有沒有出現這個數字三次,這樣不就行了嗎? 3.前往不同的對話回應。 |
應用② 簡縮條件式
假設有個生物?事件?出沒的日期是在每月8、13、25、30號。 普通的寫法: * (現在日)==8||(現在日)==13||(現在日)==25||(現在日)==30 :野生的小石虎出現了! 使用count簡縮:
* (count,x8x13x25x30x,x(現在日)x) :野生的小石虎出現了! 【慢速解說】
1.為什麼會用x符號隔開是因為8和18都有個8,count會搞混,而「x8x」和「x18x」就不會搞混了。(頭兩個字一個是x8一個是x1→不一樣) 2.代入現在日,然後搜尋有沒有出現在這串門檻裡。 假如今天是25號,那就是x25x,有在字串出現過一次,所以count的結果是1! 3.count直接做為條件式的時後,只要count≧1都算條件成立。如果想弄得比較嚴格,也可以像左側一樣制定count出來的數字要多少個相同才能過關。 |
應用③ 檢出輸入事件關鍵字
當溝通盒(\![open,communicatebox]指令)被玩家輸入後的後續處理部分。
雖然本身可以直接用「 關鍵字(空白鍵是全形空白鍵)去檢測:
當溝通盒(\![open,communicatebox]指令)被玩家輸入後的後續處理部分。
雖然本身可以直接用「 關鍵字(空白鍵是全形空白鍵)去檢測:
*ユーザ「 關鍵字A
:與關鍵字A相關的話題。
:與關鍵字A相關的話題。
但也可以用count將檢測再精密化一點。(進行二次篩選)
*ユーザ「 動物 >貓話題 (count,(R1),貓) >狗話題 (count,(R1),狗) :與其他動物相關的話題。 *貓話題 :與貓相關的話題。 *狗話題 :與狗相關的話題。 |
當然也可以同時count兩個以上的條件
*>貓與狗 (count,(count,(R1),貓)(count,(R1),狗),0)==0 |
比較
比對字串是否相同。
不論大小寫、全半形差異都算過關的比較(ABC=abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
不論大小寫、全半形差異都算過關的比較(ABC=abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
- (compare、字串1、字串2)
(compare,ABC,abc)
比對字串的最前方是否有某詞彙。
不論大小寫、全半形差異都算過關的比較(ABC=abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
不論大小寫、全半形差異都算過關的比較(ABC=abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
- (compare_head、字串、檢測字)
(compare_head,草莓戚風蛋糕,草莓)
比對字串的最後方是否有某詞彙。
不論大小寫、全半形差異都算過關的比較(ABC=abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
不論大小寫、全半形差異都算過關的比較(ABC=abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
- (compare_tail、字串、檢測字)
(compare_tail,草莓戚風蛋糕,蛋糕)
比對字串是否相同。
全半形視為相同、但大小寫視為不同的比較(ABC=ABC≠abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
全半形視為相同、但大小寫視為不同的比較(ABC=ABC≠abc)。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
- (compare_case、字串、檢測字)
(compare_case,ABC,ABC)
比對字串是否相同。
全半形視為相同、但大小寫視為不同的compare_head。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
全半形視為相同、但大小寫視為不同的compare_head。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
- (compare_head_case、字串、檢測字)
比對字串是否相同。
全半形視為相同、但大小寫視為不同的compare_tail。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
全半形視為相同、但大小寫視為不同的compare_tail。全等時回傳值為1、不全等時回傳0,可作為條件式之一。
書寫格式:
- (compare_tail_case、字串、檢測字)
字數取得
檢測字串的字數。
書寫格式:
書寫格式:
- (length、字串)
(length、這裡基本要放九個字) |
→顯示結果:9
|
代數判定
判斷該變數的值是否為空。空字串的話回傳1、不為空的話回傳0。
書寫格式:
書寫格式:
- (is_empty、變數名)
判斷該變數的值是否為數字。是數字的話回傳1、非數字的話回傳0。
書寫格式:
書寫格式:
- (is_digit、變數名)
判斷該變數的值是否為英文字串。是英文字串的話回傳1、不是英文字串的話回傳0。
書寫格式:
書寫格式:
- (is_alpha、變數名)
文字列變換
|
不指定變換方式的話就視為全都變成半形。
|
【變換方式】
1.数字(數字) 2.アルファベット(英文字母) 3.カナ(平片假) 4.記号(記號)
請不要寫成繁體字、也不要把開頭的1234也抄下去,感恩。
1.数字(數字) 2.アルファベット(英文字母) 3.カナ(平片假) 4.記号(記號)
請不要寫成繁體字、也不要把開頭的1234也抄下去,感恩。
* :今天是(zen2han、(現在月)月(現在日)日)。 |
不用zen2han整理的話,日期會顯示成全形數字
→「2月24日」這樣的形式。 |
將字串中的全形英文字母、數字、平片假、以及一部分的記號置換成全形。
書寫格式:
書寫格式:
|
不指定變換方式的話就視為全都變成半形。
變換方式請參閱zen2han。 |
將字串中的片假名置換成平假名。
書寫格式:
書寫格式:
- (kata2hira、字串)
將字串中的平假名置換成片假名。
書寫格式:
書寫格式:
- (hira2kata、字串)
接續
加入指定的字元以連結詞彙。
書寫格式:
書寫格式:
- (join、連結字元、詞彙1、詞彙2、詞彙3)
用法① 連結字彙
* :(join,&,A,B,C,D,E)。 |
A&B&C&D&E
|
用法② 與其他關數結合使用
* :(calc,(join,+,1,2,3,4,5))。 |
【慢速解說】
1.組合成字串(1+2+3+4+5) 2.因為格式正確,calc會把這個字串用掉→(calc,1+2+3+4+5) 3.最後輸出的不是字串,是總和的15。 |
選擇
隨機選擇一個結果。
好用、非常好用的一個隨機抽字彙指令!而且簡單到幾近無腦。很像@字彙庫但使用起來更為簡單……強力推薦初學者使用。
書寫格式:
好用、非常好用的一個隨機抽字彙指令!而且簡單到幾近無腦。很像@字彙庫但使用起來更為簡單……強力推薦初學者使用。
書寫格式:
- (choice、結果1、結果2、結果3)
* :今天的點心是(choice,蛋糕,三明治,布丁,可麗餅,紅豆湯)! |
這樣它就會隨機五選一完成句子了~簡單吧?
一個簡易的隨機造句就完成了!(因為會隨機抽換字彙,一個句子感覺用N次都不會被發現是同一句?!) |
新機能
將字串顛倒。(倒著念)
書寫格式:
書寫格式:
- (reverse、欲處理字串)
* :(reverse,現在把音樂倒過來放!) |
!放來過倒樂音把在現
|
抽出字串中的第N個字。注意,頭一個字算是第0個。
書寫格式:
書寫格式:
- (at、欲處理字串、數字)
* :(at,一二三四五六七,4) |
→輸出的結果會是「五」。
|
調查指定資料夾中有幾個圖片檔。
書寫格式:
書寫格式:
- (isimg、資料夾絕對路徑)
*
:D槽下有(isimg,D:\)張圖片。
:D槽下有(isimg,D:\)張圖片。
建立資料夾。
建立成功的話會顯示1、失敗的話會顯示0。覺得回傳值麻煩的人可以用nop丟掉、或者使用在事件條件式?
書寫格式:
建立成功的話會顯示1、失敗的話會顯示0。覺得回傳值麻煩的人可以用nop丟掉、或者使用在事件條件式?
書寫格式:
- (mkdir、絕對路徑或人格內的相對路徑\檔案夾名稱)
例1 絕對路徑寫法
*
:在D槽下開個秘密資料夾!(nop,(mkdir,D:\極密資料))
:在D槽下開個秘密資料夾!(nop,(mkdir,D:\極密資料))
例2 相對路徑寫法
*
:在SSP的ghost裡開個資料夾吧。(nop,(mkdir,ghost\置物處))
:在SSP的ghost裡開個資料夾吧。(nop,(mkdir,ghost\置物處))