ここでは、ユーザ名に「さん」「くん」などの任意の敬称を付けて呼びたい場合の方法をまとめています。
また応用的にユーザ名の後でなく前に何かをつける場合なども取り上げています。
なお、ユーザ名の覚えさせ方自体についての詳しいことは「名前を覚えさせる」のページ等を参考にしてください。
*ユーザ名教えて :\![open,inputbox,ユーザ名]名前教えて。 めんどうだから「さん」とか「くん」とかも 一緒に入れちゃってよ。 *ユーザ名教えてもらった :これから(ユーザ名)って呼ぶよ。
とくに呼称にこだわりがない場合はこれが一番素直で楽です。
しかしこれだと、ユーザ名を保持したまま敬称を変更(その逆も)するようなことができず、いちいち打ち直してもらう必要があります。
かといってユーザ名とユーザ敬称を別々の変数にするだけだと、ユーザを呼ぶたびにいちいち
(ユーザ名)(ユーザ敬称)
のように書く羽目になります。
そこでこの手間を省くための工夫を次からして行きます。
ユーザ名を変更せずに敬称だけ変更したい場合、以下のような仕組みにしておくと(作者にとってもユーザにとっても)便利かもしれません。
なお変数「ユーザ敬称」に何も入ってないとおかしな事になるので、satori_conf.txtで初期値を設定しておくようにします。
まず以下を辞書のどこかにコピペします。
@ユーザ呼称 (ユーザ名)(ユーザ敬称)
「ユーザ呼称」の部分が実際にユーザを呼ぶ場合に(ユーザ呼称)などと書く言葉になります。いっそもっと短縮して「U」などとしてもいいかもしれません。
敬称を選んでもらう部分は例えばこんな風になります。
敬称を覚える部分の例
*ユーザ敬称選択 :なんて呼んだらいい? 今は「(ユーザ呼称)」って呼んでるよ。 _(ユーザ名)さん【タブ】ユーザ敬称選択_さん _(ユーザ名)くん【タブ】ユーザ敬称選択_くん _(ユーザ名)ちゃん【タブ】ユーザ敬称選択_ちゃん *ユーザ敬称選択_さん $ユーザ敬称【タブ】さん :今度からは(ユーザ呼称)って呼ぶよ。 :さんづけかー。 *ユーザ敬称選択_くん $ユーザ敬称【タブ】くん :今度からは(ユーザ呼称)って呼ぶよ。 :くんづけかー。 *ユーザ敬称選択_ちゃん $ユーザ敬称【タブ】ちゃん :今度からは(ユーザ呼称)って呼ぶよ。 :チャーン!
ユーザを呼ぶ場所の例
* :(ユーザ呼称)は今何してるの? :パソコンじゃないかな。 :いまどきはタブレットかもよ!
「(ユーザ呼称)」は「ユーザ敬称選択」で選択された「ユーザ敬称」の中身と「ユーザ名」の中身を組み合わせた内容を返します。
これによって「ユーザ名」「ユーザ敬称」を別々の変数として扱いつつも、「(ユーザ呼称)」とさえ書けば、自動的に二つを組み合わせて呼ぶ事ができます。
単に呼び捨てにして欲しいというユーザさんの需要もあるでしょうし、好感度に応じてさん付けから呼び捨てに変化させるといった表現もあるでしょう。
しかし実は先の例の「ユーザ呼称」そのままだと呼び捨てにはできません。
単に「ユーザ敬称」を空にしてしまうと、「(ユーザ敬称)」部分がそのまま文字列として残ってしまうため、
(ユーザ名)(ユーザ敬称)
は
ユーザ(ユーザ敬称)
のようになってしまうからです。
参考:中身のないからっぽ変数の扱い
そこでもう一工夫します。「ユーザ呼称」を以下のように変更してください。
@ユーザ呼称 (ユーザ名)(when,(ユーザ敬称)!=呼び捨て,(ユーザ敬称))
敬称選択は例えば次のようにします
*ユーザ敬称選択 :なんて呼んだらいい? 今は「(ユーザ呼称)」って呼んでるよ。 _(ユーザ名)さん【タブ】ユーザ敬称選択_さん _(ユーザ名)くん【タブ】ユーザ敬称選択_くん _(ユーザ名)ちゃん【タブ】ユーザ敬称選択_ちゃん _(ユーザ名)【タブ】ユーザ敬称選択_呼び捨て #~中略~ *ユーザ敬称選択_呼び捨て $ユーザ敬称【タブ】呼び捨て :呼び捨てでいいの? おう(ユーザ呼称)やきそばパンかってこいや。 :そこまで下に見ろとは言ってない!
これで、「ユーザ敬称」が呼び捨て以外の場合には今までどおり敬称がつきますが、呼び捨ての場合は「ユーザ名」単体で呼ばれることになります。
せっかくなのでもっと色んなパターンで呼べるようにしてしまいます。
ssu.dllの関数「iflist」を使いますので、もし動かない場合はsatori_confの設定を確認してみてください。
まずは「ユーザ呼称」を
@ユーザ呼称 (iflist(バイト値、1)(ユーザ敬称)== (バイト値、1)呼び捨て(バイト値、1)(ユーザ名) (バイト値、1)Mr.(バイト値、1)Mr.(ユーザ名) (バイト値、1)Ms.(バイト値、1)Ms.(ユーザ名) (バイト値、1)ご主人さま(バイト値、1)ご主人さま (バイト値、1)(ユーザ名)(ユーザ敬称) )
「(バイト値、1)」については見難いと思いますがそういうものだと思ってそのままコピペしてください。
参考:バイト値、引数区切りについて
敬称を覚える部分の例
*ユーザ敬称選択 :なんて呼んだらいい? 今は「(ユーザ呼称)」って呼んでるよ。 _(ユーザ名)さん【タブ】ユーザ敬称選択_さん _(ユーザ名)くん【タブ】ユーザ敬称選択_くん _(ユーザ名)ちゃん【タブ】ユーザ敬称選択_ちゃん _(ユーザ名)【タブ】ユーザ敬称選択_呼び捨て _Mr.(ユーザ名)【タブ】ユーザ敬称選択_Mr. _Ms.(ユーザ名)【タブ】ユーザ敬称選択_Ms. _ご主人さま【タブ】ユーザ敬称選択_ご主人さま #~中略~ *ユーザ敬称選択_Mr. $ユーザ敬称【タブ】Mr. :Hey,(ユーザ呼称)! :トークが英語になったりはしないから安心してな。 *ユーザ敬称選択_Ms. $ユーザ敬称【タブ】Ms. :Hey,(ユーザ呼称)! :What time is it now? *ユーザ敬称選択_ご主人さま $ユーザ敬称【タブ】ご主人さま :はいはい(ユーザ呼称)。 :もっとやる気だそうよ。
これで(ユーザ呼称)とすると、敬称によっては
Mr.ユーザ
のようにユーザ名の前に敬称部分が来たり、
ご主人さま
のように、ユーザ名の情報は保持しつつもまったくユーザ名を無視した呼び方もできます(もはや敬称じゃないですが)。
もしパターンを追加したい場合は「ユーザ呼称」の部分に
@ユーザ呼称 (iflist(バイト値、1)(ユーザ敬称)== (バイト値、1)同志(バイト値、1)同志(ユーザ名) (バイト値、1)呼び捨て(バイト値、1)(ユーザ名) #~略~ )
の「同志」の行のように
(バイト値、1)[ユーザ敬称の中身](バイト値、1)[出力パターン]
という書式で追加していきます。
なお一番下の
(バイト値、1)(ユーザ名)(ユーザ敬称)
の行は一番下以外の場所にもっていくとおかしくなるので注意してください。
ちなみに、括弧の展開数が多いので理論上は多少処理に時間がかかりますが、ユーザ呼称を百回も連呼するような怖いケースでなければ知覚できる程にはならないはずです。