Entry

OnTranslate

シェルによって語尾を変化させる

#女の子→男の子口調に
#シェル名が「男」、変数を「現シェル名」という名前で保存している場合

*OnTranslate
>男mode【タブ】(現シェル名)==男
*男mode
$話【タブ】(R0)
$話【タブ】(replace(◎)(話)(◎)私(◎)僕)
$話【タブ】(replace(◎)(話)(◎)なのよ(◎)なんだ)
$話【タブ】(replace(◎)(話)(◎)かしら(◎)かな)
(話)
*OnSatoriLoad
$引数区切り追加【タブ】(sprintf,%c,3)
@◎
(sprintf,%c,3)

#シェルを変更時にシェル名を保存する
*OnShellChanged
$現シェル名【タブ】(R0)

会話中に、「◎」および「(話)」という単語が存在する場合は他の物に書き換えてください。

アンカー

dicAnchor.txtというファイルを用意する。

#通常の辞書(dicXXX.txt)
*
:悲しい目をした犬を見たよ。

#dicAnchor.txt
*悲しい目をした犬
:路地裏でたまに見かけることがあります。

この方法だと、辞書内の「悲しい目をした犬」という単語全てにアンカーが張られる。
ただし「悲しい目」というアンカーを作ると二重アンカーになる。 (里々/整備班カスタムMc143-11で解決済み)
それ以外に自力でアンカー張る方法

#通常の辞書(dicXXX.txt)
*
:\_a[※悲しい目をした犬]悲しい目をした犬\_aを見たよ。

#dicAnchor.txt
*※悲しい目をした犬
:路地裏でたまに見かけることがあります。

「悲しい目をした犬」が表示され、リンクが張られる。リンク先のトークを続けて表示したい場合は

#通常の辞書(dicXXX.txt)
*
:悲しい目をした犬を見たよ。

#dicAnchor.txt
*悲しい目をした犬
$スクリプトの一番頭【タブ】\C
:路地裏でたまに見かけることがあります。

と書く。アンカーでなく\xの時は

*
:悲しい目をした犬を見たよ。
\x[noclear]路地裏でたまに見かけることがあります。

link
里々WIki>アンカー

条件分岐 四則演算

条件によって加算値を変動させる

条件を「変数」という値として書きます。

#前提# 値を変更するがマイナスになった場合は「0」にする

#値を下げる
$変数=(if,(calc,(変数)-1)<0,0,(calc,(変数)-1))

#値を1/2の確率で下げる
$変数=(if,(乱数1~2)==1,(if,(calc,(変数)-1)<0,0,(calc,(変数)-1)),(変数))

逆説

#前提# 値を上げるが元がマイナス値だった場合は「0」にプラスする

#値を上げる(変数がマイナス値の場合は「1」、それ以外なら「元の値+1」)
$変数=(if,(変数)<0,1,(calc,(変数)+1))

#値を1/2の確率で上げる
$変数=(if,(乱数1~2)==1,(if,(変数)<0,1,(calc,(変数)+1)),(変数))

変数を@で定義する

@で計算や定義をしておくと、何度か使うときに楽だという。時間帯、季節、好感度 etc...

*頭なでられ
>(好感度判定)頭

*好感度高い頭
:お兄ちゃんだいすきっ!!!

@好感度判定
好感度(iflist,(好感度),>100,高い,>50,普通,低い)
*0つつかれ
:
\q[メニューその1,メニューその1]
(iflist、(好感度判定)、
==好感度普通、\q[メニューその2φ,メニューその2]\n、
==好感度高い、\q[メニューその2φ,メニューその2]\n、\q[秘密のメニューφ,秘密のメニュー]\n)
_キャンセル

@好感度判定
好感度(iflist,(好感度),>100,高い,>50,普通,低い)

好感度が低い時は、メニューその1
普通なら+メニューその2。高い時は+秘密のメニュー。
この場合、好感度を追加する時は
$好感度=(好感度)+10
とか

よく使うもの

@12進数現在時
(if,(現在時)>=13,(calc,(現在時)-12),(現在時))

@時間帯
(iflist,(現在時),<=4,深夜,<=7,早朝,<=9,朝,<=19,昼,<=21,夜,深夜)

応用としてreplace.txtに
<深夜>(時間帯)==深夜
としておくと
*【タブ】<深夜>
:深夜だけのトークになる

参考:http://soliton.sub.jp/satori/index.php?%A5%C8%A1%BC%A5%AF%B4%D8%CF%A2TIPS#u5030c8e
https://twitter.com/niseo/status/342657767418511360

空エンターはじき

前提;\![open,inputbox,XXX]と入力。

×=弾かない、○=弾く

#×空エンター ○全角・半角スペース
>空欄【タブ】"(R1)"==""

#○空エンター ×全角・半角スペース
>空欄【タブ】(compare,"(R1)","")
>空欄【タブ】!(変数「XXX」の存在)

#×空エンター ×全角・半角スペース
>空欄【タブ】(is_empty,(XXX))

ssu.dllのバージョンによって違うかもしれないので使う際は各自ご確認ください。
空エンター+空白スペース弾きたければ両方並べて使うほうがいいのかも。

*OnUserInput
>(R0)をタイムアウト【タブ】(compare,(R1),timeout)
>(R0)を空打ちされた【タブ】"(R1)"==""||(compare,"(R1)","") 
$(R0)【タブ】(R1)
>(R0)を教えてもらった

条件分岐

変数はこの名前で保存される。

_選択ラベル【タブ】選択ID
\q[選択ラベル,選択ID]

真と偽について

:計算結果が正解、または数字が入っている
:計算結果が不正解、または数字が0、または入っていない

例1)
>合ってる【タブ】(R0)==1   この場合、(R0)が1なら真。「*合ってる」に跳ぶ
例2)
(if,(R0)==1,合ってる,合ってない)   この場合、(R0)が1なら真。「合ってる」を返す。

条件分岐に使える演算子(里々Wiki内)から。0なら偽。1なら真。

< 左辺が右辺より小さければ1、さもなくば0。
> 左辺が右辺より大きければ1、さもなくば0。
<= 左辺が右辺と等しいか小さければ1、さもなくば0。
>= 左辺が右辺と等しいか大きければ1、さもなくば0。
   
== 左辺と右辺が等しければ1、さもなくば0
!= 左辺と右辺が違えば1、さもなくば0

! 右辺が0なら1、0以外なら0に。

&& 左辺と右辺が両方とも0以外なら1、さもなくば0
|| 左辺と右辺のいずれか片方が0以外なら1、さもなくば0

下のは他の方のサイトからの引用です。サイトが閉鎖してしまっているので転載してます。

*0つつかれ
:ジャンプテスト。
>テスト【タブ】(変数1)

*テスト
:「テスト」にジャンプしました。
---
(変数1)の中に正数(1以上)が入っている…ジャンプする
(変数1)の中に0が入っている…ジャンプしない
(変数1)の中に00が入っている…ジャンプする
(変数1)の中に0と文字列が入っている…ジャンプする
(変数1)の中に負数(-1以下)が入っている…ジャンプする
(変数1)の中に何か文字列が入っている…ジャンプする
(変数1)の中に全角、又は半角の空白が入っている…「式が計算不能です」ダイアログ+ジャンプしない
(変数1)の中に何も入っていない…ジャンプしない
(変数1)は存在しない変数…ジャンプしない

00や負数でもジャンプするのは文字列として扱ってるせいかもしれない。
文字列と数字を比較すると、文字列に数字や算術記号が混じってる場合数式と
勘違いされてしまう事があるのでcompareを入れたほうがよい。

(if、(文字列)==0、文字列がぜろ、ぜろじゃない)
   ↓
(if、(compare、(文字列)、0)==1、文字列がぜろ、ぜろじゃない)

というか文字列比較にはcompare使うように常に意識していた方がいいのかもしれない。 

サンプル

*さいころをふる
$変数【タブ】(乱数1~6)
$仮【タブ】(split,(さいころ),~)
:(nswitch,(変数),一,ニ,三,四,五,六)だね
:(switch,(変数),1,1マスだけか,6,6マスも進めるね,(変数)マスだね)
(if,(変数)<4,少ないね,多いね)
:(unless,(変数)<3,多いね,少ないね)
:(S0)
:(S1)

@さいころ
早くゴールしたいな~そうだねぇ
ずっと6が出るといいね~でるかなぁ
#数字との比較
iflist : 左辺と右辺1を組み合わせた条件式を評価し、真ならば結果1を返す。
(iflist,(現在月),<=2,冬,<=5,春,<=8,夏,<=11,秋,冬)

switch : 左辺と右辺1が等しいか比較し、等しければ結果1
(switch,(現在月),1,冬,2,冬,3,春,4,春,5,春,6,夏,7,夏,8,夏,9,秋,10,秋,11,冬,12,冬)

nswitch : 数値が1なら結果1を返す。
(nswitch,(現在月),冬,冬,春,春,春,夏,夏,夏,秋,秋,秋,冬)
*choiceの分岐
:(choice,(20)その1,(その2),(その3))

*その2
:その2

@その3
その3

ちなみに

改行もできる

*
:(テスト1)、(choice,
テスト2,
テスト3
)

@テスト1
(choice,
あ,
い,
う)

ゴースト切り替え

メニューから切り替え反応一覧

*切り替え反応
:\q[ポストと狛犬,切り替えurl]、\q[Emily,切り替えurl]、\q[さくら,切り替えurl]

*切り替えurl
(iflist(sprintf,%c,1)(選択ラベル)(sprintf,%c,1)
==ポストと狛犬(sprintf,%c,1)\j[http://www.geocities.jp/poskoma/](sprintf,%c,1)
==Emily(sprintf,%c,1)\j[http://ssp.shillest.net/](sprintf,%c,1)
==さくら(sprintf,%c,1)\j[http://usada.sakura.vg/])

引数に「(sprintf,%c,1)」を使ってますが、ゴースト名に「、」が入るとエラーが出るためです。

切り替えたゴースト名を覚える

覚えるゴースト名は、sakura.name(本体側の名前)です。
satori_conf.txtの「*初期化」に
$ゴーストリスト【タブ】【ゴースト名】
を追加しておきます。【ゴースト名】は自分のゴースト名に置き換えてください。

*OnGhostChanging
>リロード開始【タブ】(compare,(R0),【ゴースト名】)
>覚え済み【タブ】(count,(sprintf,%c,1)(ゴーストリスト),(sprintf,%c,1)(R0))
$ゴーストリスト【タブ】(ゴーストリスト)(sprintf,%c,1)(R0)
>(R0)へ変更
>他のゴーストへ変更

*覚え済み
>(R0)へ変更
>他のゴーストへ変更

その他の用法(http://navy.nm.land.to/post/dic_installedghost.txt より改変)

*
>覚えたゴーストなし【タブ】(compare、(split,(ゴーストリスト),(sprintf,%c,1))、1)
:覚えたゴーストは、(calc、(split,(ゴーストリスト),(sprintf,%c,1))-1)人。
交代済みゴーストからランダム選択すると
 「(choice(sprintf,%c,1)(ゴーストリスト))」
私を除いたインストールされているゴーストからランダムに一体選択すると、
 「(choice(sprintf,%c,1)(自ゴ除外ゴーストリスト))」

*覚えたゴーストなし
:まだ覚えてないよ。

@自ゴ除外ゴーストリスト
(erase_first,(erase,(sprintf,%c,1)(ゴーストリスト),(sprintf,%c,1)【ゴースト名】),(sprintf,%c,1))

バグ報告をしてもらう

選択先がないとき


*OnChoiceSelect
>(R0)
$存在しないトーク【タブ】(R0)
:バグがでたので報告お願いします。

_□報告する
_□報告しない【タブ】■閉じる

*□報告する
:\b[2]\![set,choicetimeout,-1]以下の書き込みをお願いします。
\![open,browser,自サイトアドレス]

・ゴースト「XXX」
・「(存在しないトーク)」の選択肢先がない
・(最終ネットワーク更新日)

_■閉じる

動作がおかしいときとか、バグ報告用に書き込んでもらう情報

*ゴースト情報
:\b[2]\![set,choicetimeout,-1]以下の書き込みをお願いします。
\![open,browser,自サイトアドレス]

・ゴースト「XXX」
・モード:(Sender) (if、(Sender)==SSP、%property[baseware.version])
・(最終ネットワーク更新日)
・内容:(バグ内容)

_■閉じる

バグ報告用に情報を保存

*ネットワーク更新changed
:ネットワーク更新、無事終了です
$最終ネットワーク更新日【タブ】(現在年)/(現在月)/(現在日)

#起動時にバグの内容を消去 
*OnSatoriBoot
$バグ内容【タブ】-

#バグの内容を保存するとき 
*OnUpdateFailure
>ネットワーク更新(R0)
$バグ内容【タブ】(R0)
:ネットワーク更新に失敗したので報告してね。

補足
%property[baseware.version]:ベースウェアバージョン
\![set,choicetimeout,-1]:選択肢がタイムアウトされない(バルーンを閉じないようにするため)

Page