伺か向けのフォーラム。自由に使ってください。ユーザアカウント登録なしで閲覧できます。
共有アカウント: 774user / 774user
文・YAYAを使ったゴースト(やasSAORI,MAKOTO,...)の制作に関する相談・質問など全般を扱うトピックです。
■関連サイト
文wiki「文屋」 ……文・YAYAに関する総合wiki
yaya-shiori……githubの文改修プロジェクト
ukadoc……文・YAYAと直接関係はないですが、さくらスクリプトやSHIORI Eventのリファレンスはこちらも。
■最新版のYAYAの入手
https://drive.google.com/folderview?id= … e_web#list
分りにくいですが、ずらっと並んでいる「yaya-tc○○-○.zip」の中で○○の番号が一番大きいやつ(下の方)が最新です。
それをクリックした後、内容が表示されたら画面上の方にある下向き矢印に下線が引かれたようなアイコンを押すと、ダウンロードできます。
オフライン
YAYAのゴーストの動作確認をしたいのですが、yaya_variable.cfgをテキストエディタで弄ると、ゴーストから正しく読み込めなくなります。
テキストエディタで保存する行為に問題があるらしく(UTF-8で保存するせい?)開いた後に、保存されている値を弄らずに、上書き保存を行っただけで、yaya_variable.cfgが使えなくなってしまいます。
今のところ代入したい値を、OnBootに書き込んで、確認が終わったら戻すという方法で対処していますが、複雑化してくると、この方法では書き間違えるリスクが上がるので、yaya_variable.cfgを直接弄る方法が知りたいです。
オフライン
開発中頻繁に直接書き換えてた覚えがありますが、読めなくなったりはしませんでしたね。
なので書き換え自体が不可能ということはないはずなので、うまくいかない原因があるはずです
ご推察の通りUTF-8での保存が一番臭いかなと思います
YAYAのセーブデータの文字コードはデフォルトだとSJISになっていたように記憶しています
なのでまずは文字コードを指定・変換できるエディタを用いてSJISで編集するようにしてみてください(サクラエディタおすすめ)
あるいはセーブデータの入出力文字コードを変更する方法もあって、
基礎設定ファイル(yaya.dllの場合yaya.txt、aya5.dllの場合aya5.txt)に以下の一行を加えます
charset.save, UTF-8
セーブデータを一旦削除した状態で、これで新たにセーブデータを書き換えれば、以後はUTF-8で編集できるはずです
なお該当の設定がすでにあって、Shift_JISなどとある場合はそこを書き換えればOKです
これでも駄目っぽかったらまた書き込んでください
オフライン
ありがとうございます。教えていただいたサクラエディタで、UTF-8のセーブデータを編集できました。
BOM付きにしていたのが原因だったみたいです。
charset.save, を、 Shift_JISにして、読み書きをShift_JISで行うことでも回避できました。
スレチですが、
せっかくなので、辞書の編集にもサクラエディタを使いたいのですが、強調キーワードの前後に、スペースかTabが無いと、キーワードが強調されないみたいです。
ユーザ名を空打ちされた
{
if 初回ユーザ名聞いた ==0 {初回空打ち}
elseif 初回ユーザ名スキップ ==1 {初回スキップ後空打ち}
else
{"\0\s[10]じゃあ\w3\nそのままね\e"}
}
" \ { } を強調表示するようにしているのですが、 "} は前後にスペースがないため、強調表示されず、
ち} は前方にスペースは無いけれど、「ち」が全角文字であるためか、きちんと強調表示されます。
\0 も、\s も後方に半角英数字が入るので、\が強調表示されません。
現状では、さくらスクリプトの強調表示は、全滅。ifやelseifのように、前後に絶対にスペースがあるものしか、強調表示できない状態です。
前後に英数字があっても強調表示する方法があれば、教えてください。
オフライン
正規表現キーワードを使うとよろしいかと思います。
確か普通のキーワードだとそもそも使える文字種にかなり制限があり、{や}は無視されるんじゃなかったかな…
なお拙作ではありますが一応こういう設定ファイルもありますので、
よければ利用するなり参照するなりしてください
YAYA用サクラエディタ設定ファイル……ページ中ごろのリンクからどうぞ。
(紹介記事)
オフライン
正規表現で、うまく強調表示できました。
ありがとうございます。
オフライン
YAYA及びライブラリのあやりりすを使用しています。
inputboxによる会話のあとそのままinputboxを表示し続けるようにしたいのですが、
OnCommu{
if (RE_SEARCH(reference[0], '(?|\?)$')){
<<"
テスト08:そうかもしれないね
">>
<<"
テスト00:悪くないんじゃないかな
">>
}
else {
<<"
テスト03:ん...?
">>
}
\![open,inputbox,OnCommu,0]
}
のようにしても上手く機能しません。
各トークごとに文中の展開で\![open,inputbox,OnCommu,0]を文末で実行すれば機能はするのですが、記述が煩雑で...
なにか良い方法はありますか?
オフライン
あやりりすは使ったことがないのでうまく動かないかもしれません。
yayaの文法の「出力確定子」(--、半角ハイフン2つ、リンク先はyaya wiki)を使うとよいと思います。
OnCommu{
if (RE_SEARCH(reference[0], '(?|\?)$')){
<<"
テスト08:そうかもしれないね
">>
<<"
テスト00:悪くないんじゃないかな
">>
}
else {
<<"
テスト03:ん...?
">>
}
--//これが出力確定子
\![open,inputbox,OnCommu,0]
}
Naoさんの例だと、出力候補は以下の4つからランダムに選択されます。
「テスト08:そうかもしれないね」
「テスト00:悪くないんじゃないかな」
「テスト03:ん...?」
「\![open,inputbox,OnCommu,0]」
出力確定子「--」を使うと、それまでの候補から1個選択し、それ以降は別の候補とし、2つ合体して出力します。
「テスト08:そうかもしれないね」
「テスト00:悪くないんじゃないかな」
「テスト03:ん...?」
--
「\![open,inputbox,OnCommu,0]」
これにより、セリフに加えてinputboxを開くさくらスクリプトも一緒に出力されます。
オフライン
今回の件では最後のさくらスクリプトを文字列(YAYAwikiの該当ページ)として扱いたいので、ダブルクォーテーションまたはシングルクォーテーションで囲む必要があります。囲む中に文字列内埋め込み要素の展開(YAYAwikiの該当ページ)が無いので、ここではシングルクォーテーションを使います。展開の必要があればダブルクォーテーションに変えてください。
具体的には以下のようになります(#08の引用改変です)
OnCommu{
if (RE_SEARCH(reference[0], '(?|\?)$')){
<<"
テスト08:そうかもしれないね
">>
<<"
テスト00:悪くないんじゃないかな
">>
}
else {
<<"
テスト03:ん...?
">>
}
--//これが出力確定子
'\![open,inputbox,OnCommu,0]'
}
オフライン
追補です。
先ほどまでの例だと、インプットボックスへの入力を送信するとボックスが一回閉じて、トークを喋った後にまたボックスが表示される動作になると思います。
さくらスクリプトのInputBoxオプションでnocloseを指定すると、入力を送信してもボックスが閉じません。(ukadocの該当頁)
\![open,inputbox,OnCommu,0,--option=noclose]
オフライン
ありがとうございます、うまく動作しました!
オフライン
すみません、非常に初歩的な質問なのですが、YAYAでSAORIを使うにはどうすればよいのでしょうか?
オフライン
細かい使い方はSAORIによって異なってきます。
どのSAORIを使う予定なのでしょうか。
オフライン
さとー氏の睦月(ChaSenラッパー)です。
ChaSen自体は既にインストールしてあります。
オフライン
SAORIの使い方はwikiのtipsに書いてありました(用途別関数一覧には載っていなかった...)
なのでこれはYAYAそのものよりSAORIの質問になってしまうかもしれませんが...
形態素解析を実行したいのですが、master以下のディレクトリにmutsuki.dll, libchasen.dll, libiconv-2.dllを置いて以下のように記述したところ
Learntest{
<<"
テスト08:なにかな?
">>
--
'\![open,inputbox,OnLearn,0]'
}
//SAORIを使う場合はFUNCTIONEX
//SAORIの仕様として関数自身の返り値(Return)とは別にValue*が存在し、valueex*に格納される
OnLearn{
_Return = FUNCTIONEX('mutsuki.dll','parse',reference[0])
valueex0
}
エラーは吐きませんが、うまく動作はしません。
このSAORIを使ったことがある人がいたら詳しく教えてほしいです
オフライン
ChaSenと睦月はあまり詳しくないのですが、ChaSenのバージョンを古いのにしてみる、というのはいかがでしょうか。
オフライン
以下睦月のreadmeから引用
==============================================
■ インストール方法
まず、ChaSen Ver.2.3.3以降をインストールします。その後、mutsuki.dllと同じ
フォルダに、ChaSenフォルダからコピーしたlibchasen.dll、libiconv-2.dllを
置きます。その後は通常のSAORIモジュールと同じです。
==============================================
とあるので、当時のChaSenのバージョンであろう2.3.3で実行していますが...
オフライン
原因はよくわかりませんでしたが、睦月を使わずに直接ChaSenをコンパイルしてそのままsaori-basicとして動かすことにしてみます。
そこでまた質問なのですが、いまだsaoriおよびFUNCTIONEXの仕様が分かっておらず...
例えば以下のようなHello Worldを出力するプログラムをコンパイル(a.exe)して
#include<iostream>
using namespace std;
int main(){
cout<<"Hello World!"<<endl;
return 1;
}
/ghost/master/saoriにa.exeとproxy2.dll(これはYAYAのwikiで紹介されているもの(proxy.dll)はリンク先が消えていたので、こちらhttp://ukananachi.blog98.fc2.com/blog-entry-537.htmlを使用しました)を置き、
Test{
FUNCTIONEX('proxy2.dll','a.exe')
}
とした場合、0が出力されるのですがこれは何の返り値でしょうか?main()の返り値であれば1のはずなのですが...
またストリームのHello Worldを出力したい場合はどうすればいいのでしょうか?
編集者 Nao (2016-11-25 00:43:07)
オフライン
mutsuki.dll はライセンスその他上の問題で稼働するファイルをすべて同梱できず、
使い方がややこしくなっていました。
たぶん辞書も要るよとかややこしいことを明記していなかった気が…
そのあたりの問題をあらかた解消したSAORI "kisaragi" を作りました。
内部エンジンはChaSenではなくMeCabですが、まあだいたい使い方は同じです。
https://github.com/ponapalt/csaori/wiki
テスト用ツール上での稼働確認で、ゴースト上で動かしていないので、何か不具合があったら
遠慮なくお知らせください。
オフライン
ありがとうございます!dllを作っていただけるとは...
度々申し訳ありませんが、まだ少し伺いたいことがあります
1.
_Rank = FUNCTIONEX("SAORI\kisaragi.dll",'parse',"如月と申します",)
<<"
%(valueex0)
%(valueex1)
%(valueex2)
%(valueex3)
%(valueex4)
%(valueex5)
">>
これで実行すると出力は
如月キサラギ如月名詞-一般
とトと助詞-格助詞-引用
申しモウシ申す動詞-自立五段・作業連用形
ますマスます助動詞特殊・マス基本形
EOS
となり、たしかに形態素解析は実行されているのですが、デリミタがありません。
出力フォーマットで%Hを指定すれば","をデリミタにはできますが、この場合出力がvalueex0のみとなってしまいます。
各valueex*に格納しつつデリメタをつける方法はありますか?
2.
valueex*を配列として扱うことはできますか?
Resultのサイズの配列としてvalueex[_i]を取得したいのですが...
編集者 Nao (2016-11-25 22:22:16)
オフライン
できました!ありがとうございます!
オフライン
今後YAYAの仕様で汎用配列による多次元配列を実装する予定はありますか?
(簡易配列と汎用配列の組み合わせによる多次元配列は作れました)
オフライン
あ…すっかり確認忘れてた…
多次元配列ぐらいは欲しいですね。
2次元までなら簡易配列併用で現状でもできます。
http://emily.shillest.net/ayaya/index.p … 7#o88f53af
オフライン