|這是一個翻譯中的詞條,歡迎有興趣的朋友加以補完。|
* 從里々移行至YAYA [#ke0d0ecc]

* 里々からYAYAへ移行する [#ke0d0ecc]
本詞條主要是面向想從里々SHIORI移行至YAYA的人。~
標題中有「☆」號的項目很可能非「[[はろーYAYAわーるど(紺野ややめ)>http://ms.shillest.net/yayame.xhtml]]」或「SimpleYAYAテンプレート」等範本就用不了。~

主に里々しかSHIORI使った事がないけどYAYAも使ってみたい!という人向けの説明です。~
タイトルに「☆」がついている項目は「[[はろーYAYAわーるど(紺野ややめ)>http://ms.shillest.net/yayame.xhtml]]」や「SimpleYAYAテンプレート」などのテンプレートじゃないと使えないかもしれません。~

#contents

* はじめに [#yd6505d2]
** 里々移行至YAYA的好處 [#z8a1faa1]

** 里々からYAYAにする利点 [#z8a1faa1]

プログラミング的な事をするのに強いので、ゴーストのトーク以外の部分がごちゃごちゃしてきて書くのが面倒な場合楽になります。~
でもそれは特にYAYAだけに限った特性ではなく、[[華和梨>http://www.towano.net/wk_kwr/]]という選択肢もあります。~
更新が停止していても良い(もし不具合があっても修正が望めない)なら更に選択肢は広がります。~
自分で使いやすそうなSHIORIを選ぶのが良いでしょう。~
編程能力較強,人格對話以外的部份的編寫會變得容易。~
當然這優勢不光YAYA獨有,[[華和梨>http://kawari.sourceforge.net/]]也是另一個選擇。~
如果使用不再更新(SHIORI出現了問題不指望會有修正)的話選擇就更多了。~
總而言之選擇自己用得最就手就好。~
//配布停止のためコメントアウト[[透理>http://pleco.is.land.to/]]
~
YAYAにはファイル操作ができる、正規表現が使えるなどの特徴もありますが、他のSHIORIでもSAORIを使えばできますし、
[[YAYAasSAORI>http://navy.nm.land.to/post/]]でYAYAをSAORIとして使っても全く同じ事ができます。~
つまりそれだけを目当てにしてYAYAを選択する必要はありません。
YAYA能夠對檔案進行操作,又能夠使用正規表達式為其特徵,其他的SHIORI也能夠使用SAORI,
靠[[YAYA as SAORI>http://navy.nm.land.to/post/]]把YAYA當成SAORI來用也一樣。~
也就是說如果這是目的的話就沒有選擇YAYA的必要了。

** 注意点 [#u3ee1de7]
-里々はウェイト、改行、スコープ切り替えタグなどが自動で入りましたが、YAYAはそれらを全て''さくらスクリプトを使い自分で書きます''。選択肢も必ずさくらスクリプトで書くことになります。
-YAYAは基本的にトーク以外は半角で書きます。
-里々はテンプレートゴーストがなくてもsatori.dllを用意してマニュアルを見ればなんとかなりましたが、YAYAはSHIORI/3.0設定スクリプトなど(ゴーストが動くときの歯車の部分)を自力で0から作るのが難しいためほぼ必須です。最低限[[SimpleYAYAテンプレート]]のyaya_shiori3.dicだけは流用したほうが無難です。
-里々は拡張子が「.txt」でファイル名が「dic~」から始まる辞書ファイルは自動的に読み込みましたが、YAYAは''yaya.txtで設定した辞書しか読み込みません''。その代わりどの拡張子の辞書も読み込める、辞書を好きなディレクトリに置けるという利点もあります。
-どの辞書にどのイベントを書いてもいいのは里々と同じ。
-フォルダごとの辞書読み込み切り替えはできません。(多重人格のやり方は[[Tips/多重人格モード]]にありますが、読み込みフォルダ切り替え方式ではありません)
-里々はSAORI-basicをそのまま使えましたが、YAYAではPROXY.DLLというSAORIを経由しないと使えません。(詳しくは[[Tips/SAORIの使い方]]を)
** 注意點 [#u3ee1de7]
-里々會自動插入等待、換行、說話者切換(\0、\1等),而YAYA則是全部''Sakura Script由創師自己編寫''。選項也變成必須以Sakura Script編寫。
-YAYA基本上對話以外都以半形書寫。
-里々在沒有範本人格而靠參考著使用手冊使用satori.dll就可以成事,但YAYA的SHIORI/3.0設定腳本等(人格運作的齒輪部分)要自己由0開始寫出是很困難所以範本基本上是必須的。最少單使用[[SimpleYAYAテンプレート>http://emily.shillest.net/ayaya/index.php?SimpleYAYA%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88]]的yaya_shiori3.dic才可以。
-里々會自動載入副檔名為「.txt」而檔名開頭為「dic~」的辭書檔案,但YAYA為''只載入yaya.txt中設定了的辭書''。但這點有使任何名稱的辭書也能載入,辭書也能放到任何位置的好處。
-哪個辭書中都能編寫任何事件這點和里々一樣。
-不能靠資料夾切換載入的辭書。(想做多重人格的創師可參考[[多重人格モード>http://emily.shillest.net/ayaya/index.php?Tips%2F%E5%A4%9A%E9%87%8D%E4%BA%BA%E6%A0%BC%E3%83%A2%E3%83%BC%E3%83%89]]的方法,但沒有切換資料夾的方式)
-里々能直接使用SAORI-basic(exe形式SAORI),但YAYA必須經PROXY.DLL這類SAORI來操作SAORI-basic。(詳細請參考[[SAORIの使い方>http://emily.shillest.net/ayaya/index.php?Tips%2FSAORI%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9]])

** 準備しておいたほうがよいもの [#qa625c4e]
:テキストエディタ|[[エディタ色分けファイル]]と一緒にインストールしておきましょう。拡張子.dicのファイルを開くと色分けされるように設定しておくととても便利。
:テンプレートゴースト|[[StartUp/YAYAでゴーストを作る]]から自分に合ったものを。前述したようにほぼ必須。
** 需要準備的東西 [#qa625c4e]
:文字編輯器|和[[編輯器語法高亮檔案>http://emily.shillest.net/ayaya/index.php?Tips%2F%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E8%89%B2%E5%88%86%E3%81%91%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB]]一起安裝就更好。把副檔名.dic的檔案和語法高亮檔案關聯就更方便了。
:範本人格|從[[YAYAでゴーストを作る>http://emily.shillest.net/ayaya/index.php?StartUp%2FYAYA%E3%81%A7%E3%82%B4%E3%83%BC%E3%82%B9%E3%83%88%E3%82%92%E4%BD%9C%E3%82%8B]]或[[本wiki的範本>../AYA人格範本]]中選一個自己合適的吧。如前所述基本上是必須的。


* YAYAの辞書を書いてみる [#hcfdaf26]
* 嘗試編寫YAYA 辭書 [#hcfdaf26]

起動イベントで例を出してみます。
以起動事件為例舉出來看看。

** 基本 [#me9643b5]

-里々
 *OnBoot
 :いっちばーん。

里々ではこう書いていました。~
YAYAでは以下のように書きます。
里々就會如此編寫。~
YAYA的話就以下面的寫法編寫。

-YAYA
 OnBoot
 {
  "\0\s[0]いっちばーん。\e"
 }

なんかよくわからない記号が色々ありますが、一つづつ見ていきましょう。
有些不明的符號,我們逐一看看吧。

-記号の解説
-符號解說

:OnBoot|最初に書く起動イベントを表す名前。このへんは里々と同じです。YAYAでは関数名と呼んだりします。~
[[CROW・SSPリファレンス - Shiori>http://crow.aqrs.jp/reference/all/Shiori/index.html]]に書かれてるイベント名はどれもYAYAでそのまま書けます。~
「起動」「終了」「初回」などの日本語のイベント名は里々独自イベント名のため、YAYAで使ってもそのままでは呼び出されません。
:OnBoot|最初為編寫代表起動事件的名稱。這裡和里々一樣。YAYA的話也叫為函數名稱。~
[[開發文件/平台/SSP/Shiori]]中所寫的事件名稱在YAYA中都如此編寫。~
「起動」「終了」「初回」等日文事件名稱為里々專用事件名稱的關係,在YAYA中使用不自行處理的話將不會被呼叫。

:{ }|イベント名を書いたのあと、イベントの中身をこの二つの記号でくくります。~
''YAYAでSHIORI Eventを書く時は必ず「イベント名{イベントの中身}」''です。~
ちゃんと囲まないとエラーが出てゴーストが起動しなくなってしまいます。
:{ }|在事件名稱之後,事件內容會以這兩個符號圍起來。~
''YAYA中的SHIORI Event時必須以「事件名稱{事件內容}」形式''編寫。~
不好好圍起來的話來有錯誤出現使人格不能起動。

:" "|トークなど、文字列は必ずこの記号でくくります。~
''里々と違い、これでくくらない文字は変数名や関数名だと思われてしまいます''。~
ちなみに「" "」の変わりに「' '」でくくると中にある変数が展開されません。普段は「" "」でOK。
:" "|對話等字串必須用這個符號圍起來。~
''和里々不同、不用這個符號圍起來的文字會被YAYA當成變數名或函數名''。~
此外不使用「" "」而使用「' '」圍起來的文字中的變數將不會被展開。普通用「" "」就OK。

:\0|「これから0番キャラ(さくら側)がしゃべったり表情変えたりするぞー」という意味のさくらスクリプト。~
この後に書いたテキストはさくら側のバルーンに表示されます。うにゅう側にしゃべらせたくなったら\1。~
里々ではこの二つの切り替えを「:」のみでしています。
:\0|「0號人物(主菜側)有所表示(說話或是轉變表情)了ー」的意思的Sakura Script。~
在這之後所寫的文字會在主菜側對話框顯示。使魔側要說法的話用\1。~
里々的話兩者間切換就只使用「:」。

:\s[0]|0番サーフェスを表示するさくらスクリプト。里々で(0)と書いていたもの。~
里々では最初の(0)は省略できましたが、YAYAではこれを入れないとトークをする前のサーフェスがそのまま表示されてしまいます。
:\s[0]|顯示0號表情的Sakura Script。里々會以「(0)」編寫。~
里々能把最初的(0)省略掉,但YAYA中不記入這個的話說法時會這這樣用之前的表情顯示。

:\e|トークの終了を表すさくらスクリプト。入れなくても特に問題はないようですが一応トークの最後に入れておきましょう。
:\e|表示說話完結的Sakura Script。不記入通常不會有大問題但是請習慣在對話完結時記入它吧。


ちなみに里々と違い自動でウェイトはつきません。入れたい場合はさくらスクリプトで入れてください。
さくらスクリプトはYAYA以外のSHIORIでも共通して使うものなので、このWikiでは説明していません。~
これ以外も色々あるのでリファレンスサイトで実際に使いたいものだけ、ちょっとづつだけでも良いのでYAYAといっしょに覚えてみてください。~
此外和里々不同YAYA不會自動插入等待。想插入等待時請以Sakura Script記入。
Sakura Script除了YAYA以外的SHIORI也能共通的關係,就不在本詞條說明了。~
除此之外就是參照關發文件轉換文法了,雖然有點辛苦但是可以的話大家一起學YAYA吧。~
-[[CROWリファレンス - SakuraScript>http://crow.aqrs.jp/reference/crow/SakuraScript/index.html]]~
-[[Disc-2 SakuraScriptリスト>http://disc2.s56.xrea.com/manual/list_sakura_script.htm]]


最初にイベント名を書く、中身を「{}」でくくるなどの書き方のルールがちゃんと合ってればこんな風に書いても
符合最初寫好事件名稱、內容以「{}」圍起來的編寫規則的話寫成這樣

 OnBoot {
 "\0\s[0]いっちばーん。\e"
 }

こんな風に書いちゃっても構いません。
甚至寫成這樣也沒問題。

 OnBoot { "\0\s[0]いっちばーん。\e" }

OnBootと{の間などにある空白・改行は、入れても入れなくても大丈夫。タブをいれてもOK。~
自分の見やすい、書きやすい書き方を選んでください。~
OnBoot和{之間的空白・換行有沒有也沒關係。[Tab]也可以。~
請選舉自己看著舒適,編寫舒適的編寫方法。~

 OnBoot{"\0\s[0]いっちばーん。\e"}


基本的に""の外にある空白やタブ、改行は無視されるので、
基本上""之外的空白或[Tab]、換行會被無視、

 OnBoot
   {
    
      "\0\s[0]いっちばーん。\e"
  
            }

こんなんでもよし。~
要するに
寫成這樣也沒問題。~
總之

 【ここ】OnBoot【ここ】{【ここ】"\0\s[0]いっちばーん。\e"【ここ】}【ここ】

上の【ここ】の所に空白(半角空白、全角空白、タブ)や改行をいくらでも入れられるっていう訳です。~
上面的【ここ】的位置中的空白(半形空白、全形空白、[Tab])或換行填多少個沒關係。~
~
YAYAはこの仕組みを使って辞書を自由に整える事ができます。~
これが里々より辞書の見通しが良いと言われる理由の一つです。
YAYA中使用這個結構能自由整理辭書。~
這就是比里々的辭書更容易看的說法的其中一個理由。


**改行する [#yc594c97]
**換行 [#yc594c97]

-里々
 *OnBoot
 :改行
 します。

里々では辞書の中の改行がそのままトークの改行になりましたが、''YAYAではさくらスクリプトを使って改行しないとバルーンに表示された時改行になりません''。~
改行したい部分に「\n」をいれてください。
里々會把辭書中對話的換行輸出,但''YAYA必須使用Sakura Script的換行標籤才能換行''。~
請在需要換行的位置記入「\n」。

-YAYA
 OnBoot
 {
  "\0\s[0]改行\nします。\e"
 }

「これじゃあ辞書の中で改行になってなくてわかりづらい!」…と思う方は
「像這樣辭書中沒換行很難看!」…的話

 OnBoot
 {
  "\0\s[0]改行\n/
  します。\e"
 }

こうやって行末に「/」を入れれば改行できます。~
好きな位置に入れてつかいましょう。
像這樣在行末加入「/」就就可以換行。~
在喜歡的位置加入吧。

 OnBoot
 {
  "\0\s[0]/
  改行\n/
  します。/
  \e"
 }

-わるい例
-壞例子
 OnBoot
 {
  "\0\s[0]改行\n
  します。\e"
 }

''" "や' 'でくくってあるところを末尾に「/」を入れないで改行してしまうとエラーになってしまうので気を付けてください''。
要注意''用" "或' '圍起來的時候行末沒加入「/」就換行的話就會出現錯誤''。(但不適用就後面所述的Heredoc格式)

**単語や文章をランダムで選ぶ [#i74d4072]
***Heredoc [#se649dd6]
「每個行末都要加入/太麻煩了……。」~
YAYA Tc535-1起可以使用 Heredoc 格式,省卻加入「/」的麻煩。~
利用「<<"」「">>」或「<<'」「'>>」代替「" "」或「' '」即可,要注意''Heredoc的開閉符號必須各自在獨立一行''。~
例子:

里々では同じイベントをたくさん書くとその中からランダムで選ばれました。
 OnBoot
 {
  <<"
  \0\s[0]
  改行\n
  します。
  \e
  ">>
 }


**隨機選擇單詞或文章 [#i74d4072]

里々中會從多個同一事件中隨機選擇一個執行。

 *OnBoot
 :こんにちはー。
 
 *OnBoot
 :おっすー。
 
 *OnBoot
 :やっほー。

が、YAYAでこれをやるとエラーが出て起動しなくなります。~
''YAYAは同じイベント名のイベントを二つ以上書けません。''~
YAYA中這樣做的話會出現錯誤而起動不了。~
''YAYA中同一事件名稱的事件不能編寫多於一個。''~
~
代わりにこんな風に、{ }の中で" "を改行区切りで並べましょう。
取而代之,在{ }中以" "換行分隔的放在一起吧。

 OnBoot
 {
  "\0\s[0]こんにちはー。\e"
  "\0\s[0]おっすー。\e"
  "\0\s[0]やっほー。\e"
 }

''YAYAは{ }の中に" "や' 'でくくった文字列が複数あると、その中のどれか一コだけランダムで選びます''。~
''YAYA在{ }中以" "或' '圍起來的字串如有多個存在時,會在當中隨機選擇一個''。~
~
改行の代わりに「;」区切りにすると一行にまとめることもできます。
除了換行也可以以「;」分隔寫在同一行。

 OnBoot
 {
  "\0\s[0]こんにちはー。\e" ; "\0\s[0]おっすー。\e" ; "\0\s[0]やっほー。\e"
 }
~
~
\0\s[0]や\eを何度も書くのが面倒という人は~
厭倦編寫多個\0\s[0]和\e時~

 OnBoot
 {
  "\0\s[0]"
  --
  "こんにちはー。"
  "おっすー。"
  "やっほー。"
  --
  \e
 }

こう書いてしまう事もできます。~
''「--」で区切ると、その区切った中からそれぞれ" "や' 'でくくった文字列がランダムで1コ選ばれ、くっつけて表示されます''。~
這樣寫也可以。~
''用「--」分隔時,所被分隔的各部份以" "或' '圍起來的字串會在當中隨機選擇一個,然後串成一句顯示''。~

~
ちょっとわかりづらいので例を出して説明。~
好像有點難明白還是用例子說明吧。~

 てんき
 {
  "きょうは"//←<1>この2つのどっちかが選ばれる
  "きょうは"//←<1>這2個中會選一個
  "明日は"//←<2>
  --
  "晴れ"//←(1)この4つの中のどれかが選ばれる
  "晴れ"//←(1)這4個中會選一個
  "雨"//←(2)
  "曇り"//←(3)
  "雷"//←(4)
  --
  "です。"//←1コしかないので必ずコレが選ばれる
  "です。"//←只有1個時這個必定會選中
 }

こう書くと~
這樣編寫時~
「きょうは雨です。」~
「明日は曇りです。」~
「きょうは晴れです。」~
「明日は雷です。」~
「明日は晴れです。」~
…といった文章が呼び出すたびランダムで作られるわけです。~
…就可以做出像這樣隨機的文章。~
~
ランダムなので同じ単語が連続して選ばれる事もあります。~
ここで「あれ?里々みたいに重複回避ってできないの?」と疑問にお思いの方も出てくるかもしれませんが、できます。
因為是隨機所以可能會連續選到同樣的單詞。~
此時大家會有像「咦?不能像里々那樣回避重複的嗎?」的疑問吧,答案當然有解──做得到。

 OnBoot : nonoverlap
 {
  "\0\s[0]"
  --
  "こんにちはー。"
  "おっすー。"
  "やっほー。"
  --
  \e
 }

イベント名の後ろに「 : nonoverlap」をつけてください。同じ文が連続して選ばれなくなります。~
上から順番に選ばせたい時は「 : sequential」です。
請在事件名稱後加入「 : nonoverlap」。同樣的字串不會再連續被選中。~
想要從上而下順序選出時改為「 : sequential」。


ちなみに、里々ではこんな風に書くことにより別な場所に書いてある単語群をトークに呼び出す事ができますが~
另外、里々中能像這樣編寫在另一位置(單詞組)中取出單詞~

 *
 :(季節)はいいね~
 :どの季節でも言ってるジャン

 @季節
 春
 夏
 秋
 冬

同じ事をYAYAでやるとこんな感じです。
同樣的事在YAYA做就會是這樣子。

 Talk
 {
  "\0\s[0]%(季節)はいいね~\w9\1\s[10]どの季節でも言ってるジャン\e"
 }
 
 季節
 {
  "春"
  "夏"
  "秋"
  "冬"
 }

トーク中で%(季節)または%季節と書くと、「季節」という名前の関数を呼び出すことができます。~
對話中記入「%(季節)」又或是「%季節」時,就能從叫「季節」的函數中取得結果。~
~
里々だと単語のひとまとまりは「@季節」、改行が入るような文章は「*季節」と書くルールがありましたが~
''YAYAは単語と文章を区別しないので単語でも文章でも「季節{ }」''です。~
OnBootなどのSHIORIイベントも単語群もどちらも「関数」として書くので書き方も全く同じ。~
里々中有由單詞組成時為「@季節」,有換行的文章為「*季節」的編寫規則,~
''YAYA中不區別單詞和文章所以單詞和文章都用「季節{ }」''。~
OnBoot等SHIORI事件和單詞組兩者都是「函數」所以編寫方式是完全一樣的。~
~
もちろん上で書いた天気トークみたいに
當然上面所寫的天氣對話

 Talk
 {
  "\0\s[0]"
  --
  "春"
  "夏"
  "秋"
  "冬"
  --
  "はいいね~\w9\1\s[10]どの季節でも言ってるジャン\e"
 }

こー書いてもよいです。~
別なトークでも季節の単語群を使いたかったら「季節」の関数を作ってそれを別な関数から呼び出す方式ですね。~
寫成這樣也可以。~
這就是其他對話要用季節的單詞組的話,做一個「季節」的函數然後呼叫它的方式。~

**変数 [#d9cc0463]
**變數 [#d9cc0463]

使う人は使いまくり、使わない人は全然使わなかったかもしれない変数。~
ユーザー名や起動回数・起動時間・好感度で使う人は多かったかも。~
里々では変数は1種類しかありませんでしたが、YAYAはいろいろとあります。~
まずはそのへんの説明。
會用的人就用,不用的人就可能完全不用的就是變數。~
可能很多用變數來處理使用者名稱或起動次數・起動時間・好感度等東西。~
里々中的變數只有1種,但YAYA有好幾種。~
首先從這方面開始說明。

***文字列と数値 [#v9f96732]
***字串和數値 [#v9f96732]

YAYAの変数は文字列と数値の二種類があります。(正確には整数、実数、文字列の3種類)~
YAYA的變數有字串和數値二種。(正確來說有整數、實數(real number)、字串3種)~

 変数 = 1

こー代入すると変数の中身は数値の「1」
這樣代入時変数的內容為數値的「1」

 変数 = "1"

こー" "か' 'でくくって代入すると変数の中身は文字列の「1」となります。~
這樣用" "或' '圍起來的代入時変数的內容會變為字串的「1」。~
~
里々と違い全角の「1」「2」「3」…は数値になることはできません。~
''文字列変数だと数値として比較や計算ができません。''~
例えば数字の数値「1」と「2」で足し算すると結果は「3」になりますが、文字列の「1」と「2」を足すと1と2がくっついて「12」になってしまいます。~
他にも色々違いがあります。注意してください。~
和里々不同全形的「1」「2」「3」…等不能變成數値。~
''字串變數不能直接當作數値會進行比較或計算。''~
例如數字的數値「1」和「2」加起來的結果為「3」,但字串的「1」和「2」加起來就會把1和2串在一起變成「12」。~
其他還有很多不同。請注意。~
~
ちなみに変数はいつでも好きな時に文字列←→数値に変更できるので安心。~
用途によって変更してください。
另外變數能在任何時候進行字串←→數値變換所以請放心。~
請按用途變換。

-変数を文字列にする
-変数內容變成字串
 変数 = TOSTR(変数)

-変数を数値にする
-変数內容變成數値
 変数 = TOINT(変数)

***グローバルとローカル [#gd41ca5e]
***全域和局域 [#gd41ca5e]

 _変数名
名前の頭に「_」をつけるとローカル変数
名稱以「_」開頭的為局域變數

 変数名
つけないとグローバル変数になります。~
開頭沒有「_」為全域變數。~
~
おおざっぱに言うと「すぐ消えてしまう」のがローカル変数、「削除しない限りずっと残る」のがグローバル変数です。~
里々の変数は全部グローバル変数ですね。~
ユーザー名や好感度などずっと残しておかないといけない変数以外はローカル変数を使うのが基本です。~
簡易來說「用完就消失」的是局域變數、「不刪除的話就一直存在」的就是全域變數。~
里々的變數全都是全域變數呢。~
使用者名稱和好感度等要一直使用的變數以外都用局域變數是基本。~
~
で、ローカル変数がどれぐらいの期間使えるのかというと、~
「現在の{ }内、およびそれより深い入れ子階層のみで使用できる。寿命は該当する{ }を抜けるところまで。」~
です。(マニュアルより引用)~
那麼,局域變數的生存時期是~
「只限現在的{ }内,以及其內容的更深的子階層中使用。壽命僅活在該{ }中。」~
(從手冊中引用)~
~
言葉では説明しづらいので一例をだしてみると
用語言說明說不清還是用例子說明吧:

 ローカル変数テスト {
   {
   _変数 = 1
   }
 結果 = _変数
 }

こう書くと「_変数」が深い階層から浅い階層に移った時に消えてしまうので「結果」の中身も空になってしまいますが
這樣寫的話「_変数」從深層離開到淺層時就被消除的關係「結果」中將會是空的。

 ローカル変数テスト {
 _変数 = ""
   {
   _変数 = 1
   }
 結果 = _変数
 }

こうすれば「_変数」は浅い階層→深い階層→浅い階層…と、最初に浅い階層にいた経験があるので深い階層から浅い階層に移動しても消えずに残り、「結果」の中身は1です。~
最初に「_変数」が生まれたところが「結果=_変数」と同じ(またはもっと浅い)階層かどうかがポイント。
這樣寫的話「_変数」從淺層→深層→淺層…出來時,因為最初的淺層中有使用(宣告)的關係所以從深層回到淺層時「_変数」則不會被消除,「結果」中就會是1。~
最初生成「_変数」時和「結果=_変数」在同一層就是重點。
~
つまりローカル変数を長生きさせたい時は最初に一番浅い階層で「_○○=""」などの一行を書いておけばOK。
總而言之想讓局域變數變得比較長效時就在最淺層中留一行像「_○○=""」的宣告就沒問題了。

***変数の代入 [#a87ba410]
***代入變数 [#a87ba410]

プレゼントをあげてフラグを立てた例。~
プレゼントフラグを数値の1にします。
立起給禮物的旗子(flag)為例。~
プレゼントフラグ的數値設為1。

-里々
 *プレゼントした
 $プレゼントフラグ=1
 :わーいありがとう!

-YAYA
 プレゼントした
 {
 プレゼントフラグ = 1
 
  "\0\s[0]わーいありがとう!\e"
 }

これだけ。シンプル。~
里々との違いは~
-頭に「$」はつけない。
-{ }の中に書く({ }の外に書くとエラーになります)
-「=」などの計算用の記号、「1」などの数値は全て''半角で書く''。
里々でも計算式や数値を半角で書く癖があった人は楽かもしれません。~
就這樣。簡單。~
和里々的不同之處為~
-開頭不需要附上「$」。
-在{ }中編寫(在{ }外編寫的話會出錯)
-「=」等的計算符號、「1」等的數値要全部''以半形(半角)編寫''。
有在里々中在計算式或數値使用半角編寫的癖好的人也許會高興吧。~
~
 【ここ】プレゼントフラグ【ここ】=【ここ】1【ここ】

【ここ】の部分には空白を入れても構いません。~
見やすくするため演算記号の右と左に半角空白を入れる人が多いようです。~
【ここ】的部分輸入了空白也沒關係。~
為了看得舒適而在計算符號的左右輸入半角空白的人也有很多。~
~
文字列を代入する場合はこんなかんじ。~
「プレゼント」という変数に「花束」という文字を入れます。~
代入字串時就像這樣。~
在「プレゼント」的變數中代入「花束」這字串。~

-里々
 *プレゼントした
 $プレゼント【タブ】花束
 :わーいありがとう!

-YAYA
 プレゼントした
 {
 プレゼント = "花束"
 
  "\0\s[0]わーいありがとう!\e"
 }

数値じゃない時は必ず" "か' 'でくくりましょう。~
トークを書くときと同じですね。
里々みたいに「プレゼント【タブ】"花束"」とは書けません。必ず「=」で代入します。
不是數値時必須以" "或' '圍起來。~
和編寫對話時一樣呢。
不要像里々那樣寫成「プレゼント【タブ】"花束"」。必須以「=」來代入。

 プレゼントした
 {
 プレゼント = 花束
 
  "\0\s[0]わーいありがとう!\e"
 }

うっかりこう書いてしまうと「プレゼント」の中身はからっぽになってしまいます。~
なぜかというと、''YAYAでは「"花束"」ではなく「花束」だけだと「『花束』という名前の変数」になってしまうからです''。~
そのため「プレゼント」という変数に「花束」という変数の中身を入れましたよ、という意味に理解され、~
「花束」という変数は存在してないため中身は空になってしまう、という訳です。~
不小心寫成這樣的話「プレゼント」中就會變成空的了。~
要問為什麼的話,''YAYA中不是「"花束"」而是「花束」的話就會理解成「叫『花束』的變數」了''。~
因此「プレゼント」變數中會代入叫「花束」的變數中的內容~
而叫「花束」的變數因為不存在而變成空的,就是這原因。~
~
里々でいうとこんな風に書いちゃった、ということです。
在里々中要寫成那樣子的話,就會是這樣。

 *プレゼントした
 $プレゼント【タブ】(花束)
 :わーいありがとう!

このへん里々とは逆なので最初はちょっと混乱するかも。
這裡里々和最初的例子相反的關係可能會有點混亂吧。

***変数の計算 [#a61ce42f]
***計算變數 [#a61ce42f]

-里々
 *好感度アップ
 *プレゼントした
 $好感度=(好感度)+1
 :ユーザーさんだいすき!

-YAYA
 プレゼントした
 {
 好感度=好感度+1
 
  "\0\s[0]ユーザーさんだいすき!\e"
 }

こっちもシンプル。~
里々だと「好感度=(好感度)+1」のように右側の変数は()つきで書く必要がありましたが、YAYAは何もつけなくてOK。~
これは前述したように" "や' 'でくくってない文字列は変数、関数名(半角数字だけの場合は数値)として見られるからです。~
這個也很簡單。~
里々中像「好感度=(好感度)+1」這樣在右側的變數必須要用()圍起來,但YAYA則沒有這個必要。~
這就如先前所說一樣,沒有用" "或' '圍起來的字串就會被理解成變數、函數名(只有半角數字時為値)。~
~
ちなみにYAYAはこう省略して書く事もできます。
此外YAYA可以把上面的例子省略成這樣。

 プレゼントした
 {
 好感度++
 
  "\0\s[0]ユーザーさんだいすき!\e"
 }

「好感度++」は「好感度を1増やしますよ」という意味で「好感度=好感度+1」と意味は同じです。~
「好感度--(半角マイナス2コ)」だと1減ります。~
「好感度+=2」だと「好感度=好感度+2」と同じ、「好感度-=2」は「好感度=好感度-2」と同じです。~
そのほかYAYAで使える計算用の記号の説明はこのあたりに書いてあります。(専門用語多くてちょっとわかりにくいですが)~
-[[old/AYA/ドキュメント/V5/マニュアル>http://emily.shillest.net/ayaya/index.php?old%2FAYA%2F%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%2FV5%2F%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB#v84b1e7f]]
「好感度++」是「好感度增加1」的意思,和「好感度=好感度+1」同義。~
「好感度--(半角減號2個)」的話就是減1。~
「好感度+=2」的話就和「好感度=好感度+2」一樣,「好感度-=2」就和「好感度=好感度-2」一樣。~
而其他YAYA中能使用的計算符號就在另一條目中說明。(専門用語較多比較難理解)~
-[[AYA5說明文書>../AYA5說明文書#y15ed017]]

里々と同じく、文字同士の足し算もできます。
里々和一樣,文字間也可加算。

 プレゼント = "花" + "束"

と書くと変数「プレゼント」の中身は「"花束"」となります。~
這樣寫時變數「プレゼント」中會變成「"花束"」。~
~
変数はもちろんトーク中でも使えます。
變數當然也可用在對話之中。

 プレゼントした
 {
 プレゼント="花束"
 
  "\0\s[0]わーい\w6%(プレゼント)だー!\w9\w9ありがとう!\e"
 }

バルーンに「わーい花束だー!ありがとう!」と表示されます。~
書き方は上で説明した単語群をトークに使う時と全く同じですね。~
このあたりは里々もYAYAも変わりません。~
對話框中會顯示「わーい花束だー!ありがとう!」。~
寫法和上面說明了的單詞組在對話中使用是完全一樣的呢。~
在這裡里々和YAYA都沒變。~
~
変数がちゃんと保存されているかどうか確認したい時はゴーストを終了して「yaya_variable.cfg」をテキストエディタで開いてみてください。~
上の例だったら~
想確認變數有沒有好好儲存時把人格關閉後用請文本編輯器開啟「yaya_variable.cfg」。~
上面的例子的話~

 プレゼント,"花束",,

という一行があれば、保存成功です。~
ちなみに数値型の変数の場合は~
有像這樣的一行話就是儲存成功了。~
此外數値型的變數為~

 プレゼント,1,,

こんな風に変数の中身の数字が" "で囲まれてません。
像這樣變數中的數字沒有以" "圍起來。


**R0とかS0とかA0のYAYAでの書き方 [#rd2a3a4b]
**R0、S0、A0等在YAYA中的寫法 [#rd2a3a4b]

全て半角です。里々と違い、全角では書けません。~
全部變成半角。和里々不同,不寫成全角。~

-里々
 R0 R1 R2 ...

-YAYA
 reference[0] reference[1] reference[2] ...

古いテンプレートではreference0 reference1 reference2 ..~
新しいテンプレートでも設定次第でこう書けます。
舊範本的話就是reference0 reference1 reference2 ..~
新範本則按設定編寫。

-里々
 S0 S1 S2 ...

-YAYA
 valueex0 valueex1 valueex2 ...

SAORIの使い方はこのページの「SAORI」項目を参照。
SAORI的使用方法請參照「[[SAORI>../../../SAORI#p75141b4]]」條目。

-里々
 A0 A1 A2 ...

-YAYA
 _argv[0] _argv[1] _argv[2] ...

見ての通りローカル変数。~
就如所見的是局域變數。~


**ssuみたいなこと [#fca00fd6]
**像ssu所做的事 [#fca00fd6]

「条件分岐」「比較」と「計算」はまた違った方法でやりますが、~
それ以外はほぼYAYAのシステム関数で同じ事ができます。~
除了「條件分支」、「比較」和「計算」會用不一樣的方法達成外,~
其他的差不多所有的都能用YAYA的系統函數做到同樣的事。~
~ 
[[関数用途別一覧]]を覗いてみてください。~
「これじゃ使いたいの見つけにくい!」って人には[[YAYAシステム関数リファレンス>http://navy.nm.land.to/post/y_sysfn.html]]なんかもあります。~
請參考[[関数用途別一覧>http://emily.shillest.net/ayaya/index.php?%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%2F%E9%96%A2%E6%95%B0%E7%94%A8%E9%80%94%E5%88%A5%E4%B8%80%E8%A6%A7]]。~
「這樣很難找到要用的項目!」的人可以看[[YAYAシステム関数リファレンス>http://navy.nm.land.to/post/y_sysfn.html]]。~

**SAORI [#vd442bfc]

***つかいかた [#maff9ab3]
***使用方法 [#maff9ab3]

-里々
 (mciaudio,load,鳥の詩.mp3)(mciaudio,play)

-YAYA
 FUNCTIONEX( 'mciaudio.dll' , 'load' , '鳥の詩.mp3' )
 FUNCTIONEX( 'mciaudio.dll' , 'play' )

里々みたいに使うSAORIを事前に設定しておく必要はありません。~
直接yaya.dllから見たSAORIの相対パスを指定します。~
不需要像里々那樣把要用的SAORI在事前設定。~
直接指定從yaya.dll的位置起的相對路徑即可。~
~
ちなみに「mciaudio.dll」と「鳥の詩.mp3」が「yaya.dll」と同じディレクトリにあるのではなく、そのひとつ下の「saori」ディレクトリにある場合
此外「mciaudio.dll」和「鳥の詩.mp3」都不和「yaya.dll」在同一資料夾中,而是在「saori」子目錄時

 FUNCTIONEX( 'saori\mciaudio.dll' , 'load' , '鳥の詩.mp3' )

こう書きます。~
就這樣寫。~

 SAORI( 'mciaudio.dll' , 'load' , '鳥の詩.mp3' )
 SAORI( 'mciaudio.dll' , 'play' )

「FUNCTIONEX」ではなく「SAORI」でもOK。~
どっちで書いても構わないのなら「FUNCTIONEX」で書きましょう。~
不用「FUNCTIONEX」而用「SAORI」也可以。~
用哪個也沒差的話就用「FUNCTIONEX」吧。~
~
***返り値 Result [#oab51c89]
***返回值(Result) [#oab51c89]

SAORI実行関数を使うとそのまま返ってきます。~
返り値をバルーンにそのまま表示するのならこうやってトーク中に埋めこんで使ってもいいですし~
(ただしSAORI実行関数の引数を" "ではなく' 'で囲まなければいけないので注意。" "の中に" "は書けないからです)
SAORI執行函數後會返回的值。~
返回值要就這樣顯示的話也可以直接讓它埋在對話中~
(但是要注意SAORI執行函數的引數不能用" "而要用' '圍起來。" "中不能再編寫" "的關係。)

 "\0\s[0]クリップボードにある文字を取り出します。\n「%(FUNCTIONEX( 'saori\textcopy.dll' , 'コピーする文字' ))」\e"

一旦変数に保存して使ってもよいです。~
用一個變數儲存起來再用也可。~

 変数 = FUNCTIONEX( 'saori\textpaste.dll' )
 
Resultがそのままバルーンに表示されると困る時も適当なローカル変数に代入しておきます。
Result就這樣在對話框中顯示的話會有困擾時就適當地把它代入到局域變數中吧。

***返り値 Value[n] [#h55dd7e3]
上でも書きましたが里々で「S0 S1 S2 ..」と書いていたものは「valueex0 valueex1 valueex2 ...」と書きます。
***返回值(Value[n]) [#h55dd7e3]
就如上面所寫里々用「S0 S1 S2 ..」而YAYA則以「valueex0 valueex1 valueex2 ...」編寫。

詳しくはこのページを見てください。
-[[Tips/音を鳴らす]]
-[[Tips/SAORIの使い方]]
詳細請看這些條目。
-[[Tips/音を鳴らす>http://emily.shillest.net/ayaya/index.php?Tips%2F%E9%9F%B3%E3%82%92%E9%B3%B4%E3%82%89%E3%81%99]]
-[[Tips/SAORIの使い方>http://emily.shillest.net/ayaya/index.php?Tips%2FSAORI%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9]]


**☆現在時刻を表示 [#k1ed6212]
**☆顯示現在時間 [#k1ed6212]

[[システム辞書/yaya_shiori3.dic - 時刻系関数>http://emily.shillest.net/ayaya/index.php?%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%BE%9E%E6%9B%B8%2Fyaya_shiori3.dic#ta7752a4]]を参照。~
メモリ量、センダーヘッダの変数もここで見れます。
請參照[[システム辞書/yaya_shiori3.dic - 時刻系関数>http://emily.shillest.net/ayaya/index.php?%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%BE%9E%E6%9B%B8%2Fyaya_shiori3.dic#ta7752a4]]。~
記憶體用量、傳遞者抬頭的變數也可以找到。

 時間をおしえる
 {
  "\0\s[0]ただいま%(hour)時%(minute)分%(second)秒で~す。\e"
 }

「里々みたいに日本語で書けないとやだー」って人はテンプレートを参考にして自分で書いてしまうのもアリです。
「不能像里々那樣用日文編寫的話不要ー」的人可以參考範本自己編寫也可以。

 年 { GETTIME[0] }
 月 { GETTIME[1] }
 日 { GETTIME[2] }
 分 { GETTIME[5] }
 秒 { GETTIME[6] }
 
 時間をおしえる
 {
  "\0\s[0]ただいま%(時)時%(分)分%(秒)秒で~す。\e"
 }


曜日を漢字表記にする方法はこちら。(SimpleYAYAテンプレートには掲載済み)
-[[Tips/曜日を判別]]
曜日以漢字表記的方法在這裡。(已在SimpleYAYAテンプレート中刊載)
-[[Tips/曜日を判別>http://emily.shillest.net/ayaya/index.php?Tips%2F%E6%9B%9C%E6%97%A5%E3%82%92%E5%88%A4%E5%88%A5]]

**☆タイマー [#l9a16687]
**☆計時器 [#l9a16687]

「$○○タイマ【タブ】秒数」をYAYAで。
「$○○タイマ【タブ】秒数」用YAYA寫。

 5秒待たせるイベント
 {
  "\0\s[0]それでは5秒お待ち下さい。\e"
  
  SHIORI3FW.SetDelayEvent( '5秒待った' , 5 )
 }

 5秒待った
 {
  "\0\s[0]お待たせしました。\e"
 }

**replace.txt [#g29dd3e7]

#defineで同じ事が出来ますが、失敗しないよう注意。~
用#define也可做到同樣的事,但要注意不會失敗。~

-[[関数・変数・さくらスクリプトを短縮して書く]]
-[[関数・変数・さくらスクリプトを短縮して書く>http://emily.shillest.net/ayaya/index.php?%E9%96%A2%E6%95%B0%E3%83%BB%E5%A4%89%E6%95%B0%E3%83%BB%E3%81%95%E3%81%8F%E3%82%89%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E7%9F%AD%E7%B8%AE%E3%81%97%E3%81%A6%E6%9B%B8%E3%81%8F]]

**☆replace_after.txt [#s674ca8a]

OnTranslateかOnTranslateInternalイベントでできます。~
自動ウェイトなどに使うのならOnTranslateInternalの方をおすすめ。~
(OnTranslateだと例えばヘッドラインの中身まで変換されてしまいます)
用OnTranslate或OnTranslateInternal事件可以做到。~
要用自動等待等的話建議使用OnTranslateInternal事件。~
(用OnTranslate的話連例如在線新聞的內容也一併轉換)

-トークに自動でウェイトをつける例
-對話中自動插入等待的例子
 OnTranslateInternal
 {
 	_text = _argv[0]
 	_text = REPLACE(_text, "…", "…\w3")
 	_text = REPLACE(_text, "、", "、\w5")
 	_text = REPLACE(_text, "。", "。\w9")
 	_text
 }

**Φのように危険な記号を無効化する [#ta5d62ba]
**像Φ那樣把危險的符號無效化 [#ta5d62ba]

里々と同様、YAYAでもそのままトークに書けない記号があります。~
里々では記号の前に「Φ」を入れて無効化してました。~
YAYAではCHRという関数を使って書きます。
和里々一様、YAYA也有在對話中不能編寫的符號。~
里々可以在符號前加上「Φ」來把它無效化。~
YAYA則用CHR函數編寫。

-[[[psl]ASCIIコード一覧表>http://www.psl.ne.jp/perl/pdojo00b.html]]
-[[キャラクタコード表>http://winofsql.jp/VA003334/CprogBase040109013756.htm]]

こういったサイトを参考にし、書きたい記号の上位3ビット(上のサイトでいうと横の軸にある記号)と上位4ビット(縦の軸)を調べ~
參考這些網頁,查找想編寫的符號的上位3位元(上面的網頁的横軸的編號)和上位4位元(縱軸),以~

 CHR(0x(上位3ビット)(上位4ビット))
と書きます。
 CHR(0x(上位3位元)(上位4位元))
編寫。

例えば「1」でしたら
例如「1」的話就是
 CHR(0x31)
です。~
必ず半角で書きます。
必須以半角編寫。

-「" "」の中に「"」を書くサンプル
-「" "」中編寫「"」的例子

 記号表示テスト
 {
 	"\0\s[0]記号「%(CHR(0x22))」をバルーンに表示\e"
 }

**コメントアウト [#ncce31d5]
**注釋 [#ncce31d5]

#を//にするだけです。
把#替換為//即可。

-里々
 # 起動イベント
 *OnBoot
 :こんにちはー。

-YAYA
 // 起動イベント
 OnBoot
 {
  "\0\s[0]こんにちはー。\e"
 }

こんな位置にも入れられます。~
つまり「//」がついた所から右の部分が全てコメントアウトになります。
也可放到這個位置。~
也就是說「//」位置起的右方會被注釋掉。
 
 OnBoot
 {
  "\0\s[0]こんにちはー。\e"// 起動トーク
 }


「/*」と「*/」でくくってもコメントアウトになります。~
複数行ごとくくれるので行数が多いならこっちの方が楽。どこからどこまでコメントアウトかちょっとわかりづらいのが難点?
以「/*」可「*/」圍起來的也會被注釋掉。~
能把多行圍起來所以行數多時這方法比較方便。但是從哪而起直到哪裡被注釋掉也許比例難找?(譯者按:語法高亮是好幫手。)

 /*
 起動イベント
 一番最初に起動した時呼ばれる
 */
 OnBoot
 {
  "\0\s[0]こんにちはー。\e"
 }

YAYAは里々より注釈が入れやすく、気軽に使いやすいです。~
後で見返した時どこが何なのかすぐ思い返せるようばんばん入れておきましょう。
YAYA比里々容易注釋,也方便使用。~
為了讓以後再審視時可靠注釋幫助自己回想那段代碼的用途或想法就請多多注釋吧。


首頁   新建條目 一覽 搜索 最近的變更   幫助   最近更新的RSS