![]() |
ssu | |
|
http://www.mac.gn.to/satori/index.php?%5B%5Bssu%5D%5D |
Menu
伺かWiki 最新の20件2010-07-192010-05-092010-05-082010-04-102010-04-012010-03-282010-01-072010-01-042009-11-082009-10-162009-10-092009-07-022009-07-012009-06-092009-04-032009-03-292009-03-242009-03-22 |
関数ごとにページ作った方がいいかしら。
[]に囲まれた部分は、省略してもいい部分。
ポストと狛犬の@SAORI(satori_conf.txt)にはchoiceとjoinが記述されていません。 choice,saori/ssu.dll,choice join,saori/ssu.dll,join
の二行を追加しておくのをお勧めします。 Mc129以降なら reverse,saori/ssu.dll,reverse at,saori/ssu.dll,at lsimg,saori/ssu.dll,lsimg mkdir,saori/ssu.dll,mkdir
も追加しておきましょう。 あれ?あの関数が無い?たぶんここ→内部関数 計算 ↑
計算し、その結果を返す。
calc ↑
calcは小数点以下を無視(切り捨て?)して計算する。ifやswitchなどの引数は、暗黙のうちにこれを実行している。 (calc,計算式)
calc_float ↑
calc_floatは小数点以下も計算する。 (calc_float,計算式)
ただしこのままだと整数で計算した結果を渡してしまうため、自動計算は無効にしておく必要がある。 * $SAORI引数の計算【タブ】無効 :計算するよー。5÷2は(calc_float,5÷2)っ! $SAORI引数の計算【タブ】自動 ↓ 計算するよー。5÷2は2.5っ!
条件分岐 ↑
if ↑
条件式を評価し、真(0 と 0 以外?)ならば真の結果を返す。 (if,条件式,真の結果[,偽の結果])
* $たこ数 (乱数0〜3) :たこが(たこ数)匹釣れました。今日は(if,(たこ数)>1,大漁,普通)です。 :(if,(たこ数)==0,普通ってお前、釣れてないだろそれ……。)
※if関数内で里々の内部関数のset関数は正しく動作しない様です。 (if,(乱数0〜1),(set,hoge,0),(set,moge,1)) 解決策 ((if、(乱数0〜1)、set,hoge,0、set,moge,1)) 解決策2 when関数が追加されました Mc145-1 (when,(乱数0〜1),(set,hoge,0),(set,moge,1))
unless ↑
条件式を評価し、偽(0 か 0)ならば偽の結果を返す。 (unless,条件,偽の結果[,真の結果])
iflist ↑
ifと違う点は、条件式が左右に分かれたことと、複数の条件を順番に評価できること。
まず、左辺と右辺1を組み合わせた条件式を評価し、真ならば結果1を返す。 (iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果n]])
120以降、それ以外の場合を書けるようになった。どの右辺を評価しても真にならなかった場合に、それ以外の場合を返す。 (iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果n]],それ以外の場合)
switch ↑
条件並列分岐。左辺も右辺も数値でないとダメ(エラーになる)。
まず、左辺と右辺1が等しいか比較し、等しければ結果1を返す。 (switch,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果n]])
120以降、それ以外の場合を書けるようになった。どの右辺とも等しくなかった場合に、それ以外の場合を返す。 (switch,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果n]],それ以外の場合)
* :今月は(switch、 (現在月)、 1、お正月ですね、 2、バレンタインデーがあります、 3、ひなまつりがあります、 5、こどもの日があります、 8、夏休みですね、 12、クリスマスがあります、 特に何もありません)。
nswitch ↑
数値による分岐。switchをシンプルにしたような。
数値が1なら結果1を返す。 数値の部分に文字列が入っていたり、数値が0以下だったり、数値が結果の数より大きい値だったりした場合は、空を返す。 (nswitch,数値,結果1[,結果2[…,結果n]])
* :サイコロを振りました。 (nswitch、(乱数1〜6)、一、ニ、三、四、五、六)がでました。
切り出し ↑
substr ↑
文字列の一部(開始位置から取り出す長さの分)を取り出す。 (substr,文字列,開始位置[,取り出す長さ])
120以降、開始位置、長さ共にマイナス値を指定できるようになった。
開始位置の場合
0 1 2 3 4 5
あいうえおかきくけこ
-5-4-3-2-1
長さの場合(開始位置が「か」の場合)
1 2 3 4 5
あいうえおかきくけこ
-5-4-3-2-1
(substr,あいうえおかきくけこ,5,3) (substr,あいうえおかきくけこ,5,-3) ↓ かきく うえお
分割 ↑
split ↑
(split,文字列[,分割文字列[,最大分割数]])
文字列を分割し、結果は変数S0,[S1,S2...Sn]に返ります、この関数自体は分割数を返す為、分割数をそのままトークに利用するのでなければ、変数に代入するかnop関数を使用して値を捨てます。 $分割数【タブ】(split,文字列[,分割文字列[,最大分割数]]) (nop,(split,文字列[,分割文字列[,最大分割数]]))
よくイベントの引数(R0など)で使用されているバイト値1区切りのデータを分割するには、同じくssu関数のsprintfと組み合わせます (split,(R0),(sprintf,%c,1)) ※里々/整備班カスタムMc134-901以降より(バイト値、1)で使用可能になりました。 分割文字列にカンマ","が良く使われますのでこれで文字列を分割する場合は下記のようにします。 (split、(R0)、,) また文字列に","や"、"が両方とも含まれる可能性がある場合は、引数区切り文字を新たに定義する事で対応します。使用する文字は文字列中に含まれないと断定可能な文字ならなんでも良いですが通常はバイト値を使用しましょう $B3【タブ】(バイト値、3) $引数区切り追加【タブ】(B3) (split(B3)(R0)(B3)(バイト値、1)) $引数区切り削除【タブ】(B3)
特殊変数の引数区切り参考 置換 ↑
replace ↑
文字列の中の特定の文字を別な文字に置き換える。 (replace,文字列,検索語,置換する語)
(replace,なまむぎなまごめなまたまご,なま,生) ↓ 生むぎ生ごめ生たまご
replace_first ↑
replaceの一番最初の該当文字だけ置き換える版。 (replace_first,文字列,検索語,置換する語)
(replace_first,なまむぎなまごめなまたまご,なま,生) ↓ 生むぎなまごめなまたまご
消去 ↑
erase ↑
文字列の中の特定の文字を消す。 (erase,文字列,消去する語)
(erase,なまむぎなまごめなまたまご,なま) ↓ むぎごめたまご
erase_first ↑
eraseの一番最初の該当文字だけ消す版。 (erase_first,文字列,消去する語)
(erase_first,なまむぎなまごめなまたまご,なま) ↓ むぎなまごめなまたまご
検索 ↑
count ↑
文字列の中の特定の文字を数える。 (count,文字列,検索語)
「なまむぎなまごめなまたまご」の中に「なま」は(count,なまむぎなまごめなまたまご,なま)個入っています。 ↓ 「なまむぎなまごめなまたまご」の中に「なま」は3個入っています。
比較 ↑
compare ↑
文字列1と文字列2が等しければ1(真)、そうでないなら0(偽)を返す。 (compare,文字列1,文字列2)
|