[PukiWiki]
ssu
http://www.mac.gn.to/satori/index.php?%5B%5Bssu%5D%5D

[ リロード ]   [ 新規 | 編集 | 差分 | 添付 ]   [ トップ | 一覧 | 単語検索 | 最終更新 | バックアップ | ヘルプ ]

Menu

SatoriSpecWiki

伺かWiki
文屋(文Wiki)
逝(華和梨Wiki)
OpenKEEPS Wiki
結奈Wiki
Disc-2 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を返す。
そうでなければ次の右辺2と組み合わせ、真ならば結果2を返す。
そうでなければ…(以下略)。
いずれの右辺を評価しても真にならばければ、空を返す。

 (iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果n]])

120以降、それ以外の場合を書けるようになった。どの右辺を評価しても真にならなかった場合に、それ以外の場合を返す。

 (iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果n]],それ以外の場合)

switch

条件並列分岐。左辺右辺も数値でないとダメ(エラーになる)。

まず、左辺右辺1が等しいか比較し、等しければ結果1を返す。
そうでなければ次の右辺2と比較し、等しければ結果2を返す。
そうでなければ…(以下略)。
いずれの右辺とも等しくなければ、空を返す。

 (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を返す。
数値が2なら結果2を返す。
数値が…(以下略)。

数値の部分に文字列が入っていたり、数値が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)

変数を比較する時

 (compare,(好きな動物),ねこ)

この変数「好きな動物」が存在しないと、「(compare,,ねこ)」と書いた事になってしまい、「引数が足りない」というSAORIエラーが出てしまいます。

 (compare,☆(好きな動物),☆ねこ)

こんな風に比較する引数の両方とも同じ位置に何か同じ文字を入れておくと、変数が存在しない時は「(compare,☆,☆ねこ)」と書いたことになるのでエラーを防ぐ事ができます。
文字は☆じゃなくてもいいですが、数字と算術記号(/や-も含む)は避けましょう。

それでもエラーが出るようならこちらを参考に。

(この問題は整備班カスタム版里々で解消されました)

compare_head

文字列1の先頭に文字列2が含まれていれば1(真)、そうでないなら0(偽)を返す。

 (compare_head,文字列1,文字列2)

compare_tail

文字列1の末尾に文字列2が含まれていれば1(真)、そうでないなら0(偽)を返す。

 (compare_tail,文字列1,文字列2)

文字数取得

length

文字列の文字数(バイト数じゃないよ)を返す。

 (length,文字列)

フォーマット出力

sprintf

引数1〜nフォーマットに従って変換したものを返す。

 (sprintf,フォーマット[,引数1[,引数2[…,引数n]]])

引数判定

引数判定をする。

is_empty

is_emptyは引数が空文字列であるかを判定。空文字列なら1(真)、そうでないなら0(偽)を返す。

 (is_empty,引数)

is_digit

is_digitは引数が数値であるかを判定。数値なら1(真)、そうでないなら0(偽)を返す。

 (is_digit,引数)

is_alpha

is_alphaは引数がアルファベットの文字列であるかを判定。アルファベットの文字列なら1(真)、そうでないなら0(偽)を返す。

 (is_alpha,引数)

文字列変換

zen2han

文字列中の全角である「数字、アルファベット、カナ、一部の記号」を半角に変換。

Mc137-1以降で変換タイプの指定が可能。
数字・アルファベット・カナ・記号 が指定可能で、複数指定・任意の組み合わせが可能。
指定は空白等適当な文字で区切って行い、指定したタイプのもののみ変換されます。省略時は全指定。

 (zen2han,文字列[,変換タイプ])

han2zen

文字列中の半角である「数字、アルファベット、カナ、一部の記号」を全角に変換。

Mc137-1以降で変換タイプの指定が可能。
数字・アルファベット・カナ・記号 が指定可能で、複数指定・任意の組み合わせが可能。
指定は空白等適当な文字で区切って行い、指定したタイプのもののみ変換されます。省略時は全指定。

 (han2zen,文字列[,変換タイプ])

kata2hira

文字列中のカタカナをひらがなに変換。

 (kata2hira,文字列)

hira2kata

文字列中のひらがなをカタカナに変換。

 (hira2kata,文字列)

接続

join

120から追加。対象1〜n連結文字列で繋いだものを返す。

 (join,連結文字列,対象1[,対象2[…,対象n]])

 (join,と,グー,チョキ,パー)
  ↓
 グーとチョキとパー

 (calc,(join,+,1,2,3,4,5))
  ↓
 (calc,1+2+3+4+5)
  ↓
 15

選択

choice

124から追加。引数1〜nの中からランダムに1つを選んで返す。

 (choice,引数1[,引数2[…,引数n]])

 *
 :何が釣れた?
 :(choice,鯛,イワシ,鮫,くじら,長靴)が釣れたよ。

新規追加分

Mc129くらいから追加?
暫定的なものかもしれないので仕様変更の可能性アリ

reverse

「文字列」を「列字文」にする。

 (reverse,文字列)

 *
 :「(reverse,ねないこだれだ)!」
 :「だれだこいなね」って、ねぇ…。

at

0から始まる指定文字数目の文字を抜き出す

 (at,文字列,引数1)

 (at,お酒に逃げた,3)→逃

lsimg

指定フォルダ内の画像ファイルの数を調べる

 (lsimg,絶対パス)

 *
 :(lsimg,D:\アレな画像)個もの画像ファイルが見つかったんだけどー。

mkdir

フォルダを作る
成功したら1、失敗したら0を返す

 (mkdir,絶対パスorベースウェアからの相対パス)

 *フォルダ作成
 >成功【タブ】(mkdir,ghost\satori\ghost\master\新規フォルダ)==1
 :失敗したみたい…。
 
 *成功
 :新規フォルダをつくったよ。

リロード   新規 編集 差分   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: Fri, 20 Feb 2009 15:29:17 JST (561d)
Link: 特殊変数(322d) 内部関数(531d) 関数(862d) 里々Wikiページまとめ(429d) マニュアル(796d) SAORI関連(969d) 里々wikiページまとめ(1253d)

Modified by Shuichi Ono.

"PukiWiki" 1.3.5 Copyright © 2001,2002,2003 PukiWiki Developers Team. License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
Powered by PHP 5.3.2

HTML convert time to 0.098 sec.