トップページへ | [ 一覧 | 検索 | 最終更新 ] [ 差分 | 履歴 | 凍結 ] |
里々からYAYAへ移行する†主に里々しかSHIORIを使った事が無いけどYAYAも使ってみたい!という人向けの説明文です。 はじめに†里々からYAYAにする利点†プログラミング的な事をするのに強いので、ゴーストのトーク以外の部分がごちゃごちゃしてきて書くのが面倒な場合楽になります。 YAYAへの素朴な疑問集†バリバリ理系向けのSHIORIって聞いたけど…†「文系で今まで里々しか使ってなかったけどYAYAが肌に合ってて使いやすかった」と言っていた人も何人かいます。 プログラミングやC言語やった事ある人しか使えないの?†少なくともこれ書いてる人はプログラミングもC言語もやった事ないです。 里々より難しいんでしょ?†どんなゴーストを作るかによります。 重いって本当?†特に重いという話は聞きません。少なくとも里々よりは軽いです。
ファイル操作や正規表現ってYAYAしか使えないの?†他のSHIORIでもSAORIを使えばできます。 里々だと絶対作れないようなゴーストが作れるようになる?†上で書いたように大体の事は里々でもSAORIを使ったり記述を工夫したりする事により実現可能です。 注意点†
準備しておいたほうがよいもの†
YAYAの辞書を書いてみる†以下、「はろーYAYAわーるど(紺野ややめ)」や「SimpleYAYAテンプレート」以外のテンプレートでは通用しないかもしれません(特にタイトルに「☆」がついている項目) 起動イベントで例を出してみます。 基本†
里々ではこう書いていました。
なんかよくわからない記号が色々ありますが、一つづつ見ていきましょう。
ちなみに里々と違い自動でウェイトはつきません。入れたい場合はさくらスクリプトで入れてください。
さくらスクリプトはYAYA以外のSHIORIでも共通して使うものなので、このWikiでは詳しく説明しません。 最初にイベント名を書く、中身を「{}」でくくるなどの書き方のルールがちゃんと合ってればこんな風に書いても OnBoot { "\0\s[0]いっちばーん。\e" } こんな風に書いちゃっても構いません。 OnBoot { "\0\s[0]いっちばーん。\e" } OnBootと{の間などにある空白・改行は、入れても入れなくても大丈夫。タブをいれてもOK。 OnBoot{"\0\s[0]いっちばーん。\e"} 基本的に""の外にある空白やタブ、改行は無視されるので、 OnBoot { "\0\s[0]いっちばーん。\e" } こんなんでもよし。 【ここ】OnBoot【ここ】{【ここ】"\0\s[0]いっちばーん。\e"【ここ】}【ここ】 上の【ここ】の所に空白(半角空白、全角空白、タブ)や改行をいくらでも入れられるっていう訳です。 改行する†
里々では辞書の中の改行がそのままトークの改行になりましたが、YAYAではさくらスクリプトを使って改行しないとバルーンに表示された時改行になりません。
「これじゃあ辞書の中で改行になってなくてわかりづらい!」…と思う方は OnBoot { "\0\s[0]改行\n/ します。\e" } こうやって行末に「/」を入れれば改行できます。 OnBoot { "\0\s[0]/ 改行\n/ します。/ \e" }
" "や' 'でくくってあるところを末尾に「/」を入れないで改行してしまうとエラーになってしまうので気を付けてください。 単語や文章をランダムで選ぶ†里々では同じイベントをたくさん書くとその中からランダムで選ばれました。 *OnBoot :こんにちはー。 *OnBoot :おっすー。 *OnBoot :やっほー。 が、YAYAでこれをやるとエラーが出て起動しなくなります。 OnBoot { "\0\s[0]こんにちはー。\e" "\0\s[0]おっすー。\e" "\0\s[0]やっほー。\e" } YAYAは{ }の中に" "や' 'でくくった文字列が複数あると、その中のどれか一コだけランダムで選びます。 OnBoot { "\0\s[0]こんにちはー。\e" ; "\0\s[0]おっすー。\e" ; "\0\s[0]やっほー。\e" }
OnBoot { "\0\s[0]" -- "こんにちはー。" "おっすー。" "やっほー。" -- \e } こう書いてしまう事もできます。
てんき { "きょうは"//←<1>この2つのどっちかが選ばれる "明日は"//←<2> -- "晴れ"//←(1)この4つの中のどれかが選ばれる "雨"//←(2) "曇り"//←(3) "雷"//←(4) -- "です。"//←1コしかないので必ずコレが選ばれる } こう書くと OnBoot : nonoverlap { "\0\s[0]" -- "こんにちはー。" "おっすー。" "やっほー。" -- \e } イベント名の後ろに「 : nonoverlap」をつけてください。同じ文が連続して選ばれなくなります。 ちなみに、里々ではこんな風に書くことにより別な場所に書いてある単語群をトークに呼び出す事ができますが * :(季節)はいいね~ :どの季節でも言ってるジャン @季節 春 夏 秋 冬 同じ事をYAYAでやるとこんな感じです。 Talk { "\0\s[0]%(季節)はいいね~\w9\1\s[10]どの季節でも言ってるジャン\e" } 季節 { "春" "夏" "秋" "冬" } トーク中で%(季節)または%季節と書くと、「季節」という名前の関数を呼び出すことができます。 Talk { "\0\s[0]" -- "春" "夏" "秋" "冬" -- "はいいね~\w9\1\s[10]どの季節でも言ってるジャン\e" } こう書いてもよいです。 変数†里々でもおなじみ変数。ユーザー名や起動回数・起動時間・好感度で使う人が多かったかも。 文字列と数値†YAYAの変数は文字列と数値の二種類があります。(正確には整数、実数、文字列の3種類) 変数 = 1 こう代入すると変数の中身は数値の「1」 変数 = "1" こうやって" "か' 'でくくって代入すると変数の中身は文字列の「1」となります。
自動的に整数、実数、文字列どれなのか判断して変換してくれるマニュアル/関数/TOAUTOなんてのもあります。 グローバルとローカルの違い†_変数名 名前の頭に「_」をつけるとローカル変数 変数名 つけないとグローバル変数になります。 ローカル変数テスト { { _変数 = 1 } 結果 = _変数 } こう書くと「_変数」が深い階層から浅い階層に移った時に消えてしまうので「結果」の中身も空になってしまいますが ローカル変数テスト { _変数 = "" { _変数 = 1 } 結果 = _変数 } こうすれば「_変数」は浅い階層→深い階層→浅い階層…と、最初に浅い階層にいた経験があるので深い階層から浅い階層に移動しても消えずに残り、「結果」の中身は1です。 変数の代入†プレゼントをあげてフラグを立てた例。
里々との違いは
【ここ】の部分には空白やタブを入れても構いません。
数値じゃない時は必ず" "か' 'でくくりましょう。 プレゼントした { プレゼント = 花束 "\0\s[0]わーいありがとう!\e" } うっかりこう書いてしまうと「プレゼント」の中身はからっぽになってしまいます。 *プレゼントした $プレゼント【タブ】(花束) :わーいありがとう! このへん里々とは逆なので最初はちょっと混乱するかも。 変数の計算†
こっちもシンプル。 プレゼントした { 好感度++ "\0\s[0]ユーザーさんだいすき!\e" } 「好感度++」は「好感度を1増やしますよ」という意味で「好感度=好感度+1」と意味は同じです。 里々と同じく、文字同士の足し算もできます。 プレゼント = "花" + "束" と書くと変数「プレゼント」の中身は「"花束"」となります。 プレゼントした { プレゼント="花束" "\0\s[0]わーい\w6%(プレゼント)だー!\w9\w9ありがとう!\e" } バルーンに「わーい花束だー!ありがとう!」と表示されます。 プレゼント,"花束",, という一行があれば、保存成功です! プレゼント,1,, こんな風に変数の中身の数字が" "で囲まれてません。 分岐†つつかれ反応での例。
ここで新登場な「if」。 OnMouseDoubleClick { if reference[3] == 0 { "\0\s[7]つつくなっ!\e" } } もちろんこれもこんな風に「{ }」の中に直接トークを書くことも可能。 OnMouseDoubleClick { if reference[3] == 0 { "\0\s[7]つつくなっ!\e" } else { "\0\s[7]あたし以外の子もつつくなっ!\e" } } 「if 条件式 { }」にひっかからなかったらその次にある「else { }」の中身を実行。 OnMouseDoubleClick { if reference[3] == 0 && reference[3] == "Head" { "\0\s[7]頭を叩くなっ!\e" } } 二つ以上条件式を並べられます。 *0Headつつかれ :(7)頭を叩くなっ! *1つつかれ やめれ! こうやって書いてたよね? OnMouseDoubleClick { EVAL( "%(reference[3])%(reference[4])つつかれ" ) } 0Headつつかれ { "\0\s[7]頭を叩くなっ!\e" } 1つつかれ { "\1\s[10]やめれ!\e" } 普通なら "%(reference[3])%(reference[4])つつかれ" だけ書くと、0番の頭がつつかれた時「0Headつつかれ」としゃべるゴーストのトークになります。 R0とかS0とかA0のYAYAでの書き方†全て半角です。
古いテンプレートではreference0 reference1 reference2 ..~でした。 (新しいテンプレートでも設定次第でこう書けます)
SAORIの使い方はこのページの「SAORI」項目を参照。
頭に「_」が付いてるのでわかる通り、ローカル変数です。 ssuみたいなこと†「条件分岐」「比較」と「計算」はまた違った方法でやりますが、
マニュアル/関数用途別一覧を覗いてみてください。 SAORI†つかいかた†
里々みたいに使うSAORIを事前に設定しておく必要はありません。 FUNCTIONEX( 'saori\mciaudio.dll' , 'load' , '鳥の詩.mp3' ) こう書きます。 SAORI( 'mciaudio.dll' , 'load' , '鳥の詩.mp3' ) SAORI( 'mciaudio.dll' , 'play' ) 「FUNCTIONEX」ではなく「SAORI」でもOK。 返り値 Result†SAORI実行関数を使うとそのまま返ってきます。 "\0\s[0]クリップボードにある文字を取り出します。\n「%(FUNCTIONEX( 'saori\textcopy.dll' , 'コピーする文字' ))」\e" 一旦変数に保存して使ってもよいです。 変数 = FUNCTIONEX( 'saori\textpaste.dll' ) Resultがそのままバルーンに表示されると困る時も適当なローカル変数に代入しておきます。 返り値 Value[n]†上でも書きましたが里々で「S0 S1 S2 ..」と書いていたものは「valueex0 valueex1 valueex2 ...」と書きます。 詳しくはこのページを見てください。 ☆現在時刻を表示†システム辞書/yaya_shiori3.dic - 時刻系関数を参照。 時間をおしえる { "\0\s[0]ただいま%(hour)時%(minute)分%(second)秒で~す。\e" } 「里々みたいに日本語で書けないとやだー」って人はテンプレートを参考にして自分で書いてしまうのもアリです。 年 { GETTIME[0] } 月 { GETTIME[1] } 日 { GETTIME[2] } 分 { GETTIME[5] } 秒 { GETTIME[6] } 時間をおしえる { "\0\s[0]ただいま%(時)時%(分)分%(秒)秒で~す。\e" } 曜日を漢字表記にする方法はこちら。(SimpleYAYAテンプレートには掲載済み) ☆タイマー ($○○タイマ【タブ】秒数)†replace.txt†#defineで同じ事が出来ますが、SHIORIで計算等が実行される前の「辞書に書かれてる文字列そのまま全部」を変換してしまう強力なものなので、重要な文字列まで変換してしまう等の失敗をしないよう注意。 #define @r reference 今まで「reference[0]」と書いてた所を「@r[0]」と短縮して書けるように。 ☆replace_after.txt†OnTranslateかOnTranslateInternalイベントでできます。 OnTranslateInternal { _text = _argv[0] _text = REPLACE(_text, "…", "…\w3") _text = REPLACE(_text, "、", "、\w5") _text = REPLACE(_text, "。", "。\w9") _text } シェルの見切れ・重なり反応をつける†Φのように危険な記号を無効化する†里々と同様、YAYAでもそのままトークに書けない記号があります。 こういったサイトを参考にし、書きたい記号の上位3ビット(上のサイトでいうと横の軸にある記号)と上位4ビット(縦の軸)を調べ CHR(0x(上位3ビット)(上位4ビット)) と書きます。 例えば「1」でしたら CHR(0x31) です。
記号表示テスト { "\0\s[0]記号「%(CHR(0x22))」をバルーンに表示\e" } コメントアウト†#を//にするだけです。
こんな位置にも入れられます。 OnBoot { "\0\s[0]こんにちはー。\e"// 起動トーク } 「/*」と「*/」でくくってもコメントアウトになります。 /* 起動イベント 一番最初に起動した時呼ばれる */ OnBoot { "\0\s[0]こんにちはー。\e" } YAYAは里々より注釈が入れやすく、気軽に使いやすいです。 里々からYAYAに移行した人にありがちな疑問†ゴーストを起動しても全く動かない!†YAYAでは里々と違って辞書の記述方式が一文字でも間違っているとゴーストが動作しなくなります。どこの記述が間違っていたのか確認しましょう。
satori_savedata.txt(セーブデータ)どこー?†グローバル変数は「yaya_variable.cfg」に保存されています。 エイリアスエラーが出たけどこれって何?†descript.txtがshiori,satori.dllのままではないでしょうか。 そのほか†困ったときの対処法も見ましょう。 |
最終更新日: 2024-01-29 (月) 15:54:22
|