変数のきほん。
データを入れておく箱の事。
例えばユーザー名をユーザー別に変えたい場合、変えたユーザ名を記憶しておく場所が必要になります。
それ以外にも性別とか年齢とか高感度とか変化する値を保存しておく場所、それが変数です。
次の三通りの方法があります。
$好感度【タブ】100
$好感度=100
(set,好感度,100)
詳しく→変数への代入には…
入れる値を空白にする(何も書かない)と、その変数を削除できます。下記は一例。
$好感度【タブ】
(set,好感度,)
変数名を()で囲むと、処理時に変数の中身に置き換わります。
:(ユーザ名)さん、おはようございます。
satori_conf.txtで変数の初期値を設定する事ができます。
あらかじめ一括で設定しておくといいでしょう。
変数は、ゴースト終了時に自動的にsatori_savedata.txtに保存され、次回起動時に自動的に読み込まれます。
一時的な変数も明示的に削除しない限り保存されます。
前述した変数の削除を行うと、その変数はsatori_savedata.txtにも保存されません。
※変数を削除してもsatori_conf.txtにエントリがある場合は、次回起動時にsatori_conf.txtから値を読み込みします。
以下の3つの方法があります。
$変数名【タブ】値
右辺を特にいじらず、そのまま変数に代入します。 計算式であっても文字列として扱われます。
$変数テスト【タブ】1+1 :(変数テスト)っ♪ ↓ :1+1っ♪
$変数名=値
右辺の値を「計算式」として扱い、計算結果を代入します。
里々で使える演算記号は演算子一覧を参照のこと。
$変数テスト=1+1 :(変数テスト)っ♪ ↓ :2っ♪
(set,変数名,値)
里々の関数のset関数を使用した代入方法です。
値を「計算式」として扱い、計算結果を代入します。
:(set,変数テスト,1+1)(変数テスト)っ♪ ↓ :2っ♪
先の二つの方法は変数代入で1行を使用しなければなりませんが、set関数は文中に使用出来る為、次の様な記述が可能になります。
(when,(条件変数)==1,(set、変数テスト、100),(set、変数テスト、200))
一つの式の中で加算、減算より乗算、除算、剰余が優先的に計算されるので
$変数=3+6×2
だと結果は「18」ではなく「15」になります。注意。 「3+6」を先に計算したい場合はこう書きます。
$変数=(3+6)×2
カッコは必ず半角で。
is_digitで数字か否かの判断が出来ます。数字なら1、そうでないなら0が返ります。 例えば、こんな。
* :ユーザさんの歳って、いくつ? \![open,inputbox,ユーザ年齢] *ユーザ年齢を教えてもらった >おかしい【タブ】(is_digit,(ユーザ年齢))==0 :(ユーザ年齢)歳ね。(6)ふ~~~ん。 :なんだよ。 *おかしい :(7)数字を入れろっ! :落ち着けっ!
てな具合。 他にも年齢とか誕生日とかは、あり得ない数字とかと合わせてチェックした方がいいと思います。
(変数「ユーザ名」の存在)
とすれば、$ユーザ名という変数が存在すれば1,そうでなければ0が返ります。 変数の中に何が入っているか解らないときは便利。
* >名前を聞いている【タブ】(変数「ユーザ名」の存在)==1 :そういえばさ、まだユーザさんの名前聞いてないんだけど。 :メニューの「名前を教える」から教えてや。 *名前を聞いている :(5)よっ、(ユーザ名)。 :(ユーザ名)に名前を教えてもらったのがそんなに嬉しいか? :(8)うるさいなぁ。
てな具合に。
ただし、satori_conf.txtの中で予め何かが設定されている場合は、その変数が存在することになります。 里々の場合、デフォルトで
$ユーザ名【タブ】ユーザ
と書いてある場合がほとんどなので、その場合はこのトークが発生すると、 「ユーザ」という名前をすでに教えてもらっている状態となるので注意。
里々では中身のない変数は特殊で、いくつかの種類があります。
エラーを避けるために、できる限りsatori_conf.txtにて初期値の設定をしておくことを推奨します。
中身のない、何も設定していない変数を呼び出すと、消えるのではなくそのまま表示されます。
:(ほげほげ)わー。 #「(ほげほげ)わー。」と表示される #「わー。」にはならない
当然、関数やSAORIに使う場合も同じです。
数字しか受け付けない関数の場合、エラーや誤動作が発生します。
主に2つの挙動に分かれます。
まず、以下の例では中身のない変数は文字列ではなく「0」として扱われます。*1
$新規変数=(新規変数)+1
*トーク【タブ】(新規変数)>0
@単語群【タブ】(新規変数)>0
>ジャンプ【タブ】(新規変数)>0
この場合に限り、空っぽの変数を用いてもエラーが起こりません。
新しい変数を初期値の設定することなく使えるので便利。
上記以外で使った場合はトーク中の場合と同じく文字列として扱われます。
(calc,(新規変数)>0)
この場合は中身がないのに真(1)が返ります。
これは「(新規変数)」という文字列を1以上の数字として認識するためです。
おそらく無限大?で、(変数)>1000 でも (変数)>100000 でも真です。
記事:配列変数