ζ
phase 85での変更点に書き忘れがありました。
かなり前のバージョンから里々を使ってる方の場合、サンプルのreplace.txtのままだと問題が発生します。というかすいません>RAILさん
◆「行頭に$か>がある場合はreplace.txtの内容の反映しない」を廃止。
対処としては replace_after.txt に replace.txt の内容を移動すればOKです。
replace.txtは計算等を行う以前の段階で、何もかも一緒くたに置き換え対象とします。対してreplace_after.txtは色々を行った「結果」に対して置き換えを行います。よって、一般的な置き換え用途にはreplace_afterの方が向いています。……というかreplace.txtは、現在ではあまり使う用途はないと思います。
>梶山さん
OnChoiceSelectが未定義のとき、里々は>(R0)を実行します。
目立たない場所にしか書いてなかったかもしれず。
02/04/28 phase 85
◆\_aの自動挿入はさくらスクリプトの引数を対象としない
でないと\q[]内に\_aがきたりとまずいので。
◆φによるエスケープを全ての文字に適用。
\\φuとすれば\uがちゃんと出せます。
φ…とすると、replaceも無効化できます。
繰り返しますがφは「ふぁい」です。
◆「無内容のスクリプトは無効化」を強化。
里々による自動挿入のみのスクリプト(\1\eとか)で本来の喋りをつぶしてしまうことのないように。
replace周辺はもう少しどうにか。「家を増築したら2階からしか出入りできなくなった」系の問題もあるんで、次のSHIORI/3.0移行に併せて色々直します。ほいで、SHIORI/2.xサーバとしての里々はこれで開発終了(予定)。次からはSHIORI/3.0クライアントのみの対応となります。materiaなら571以前では動かなくなるってことね。
もっとも、ゴースト側で対応すべきことはたいして無いはず(辞書を2,3箇所いじってもらうかも程度)なんでご心配なさらず。
あとこの履歴スペースの横幅は狭いと思いました。
02/04/21 phase 84
◆行末のφ
行末にφを置くと、その改行は無いものとして扱われます。次の行とつながるってことね。カッコ内では同じ処理が自動的に行われます。
◆カッコ内における行頭のタブ記号無視が効いていなかった問題を修正。
*OnBoot
:φ
(iflist、(現在時)、
<6、こんばんは。、
<11、おはようございます。、
<18、こんにちは。、
<24、こんばんは。
)
この位だとありがたみが無いけど、多段ifとかを見やすく書くための機能です。
02/04/21 phase 83
文法を少し追加・変更。なるべく既存のものに影響が出ないようにしたつもりですが、ひょっとすると多少の変更が必要になるかも。
他、ssu.dll に関数追加&修正。
◆エスケープ記号としてφを採用。
現時点では主に「次の特殊記号を無効化する」目的で使用します。この後で説明。
「ふぁい」で変換すると出ます。
φ記号そのものを使う場合はφφと記述してください。φが一つ出力されます。
◆一行コメント#を、行頭だけでなく途中でも有効に。
辞書ファイル中に#があると、その場所から行末までが無視されます。
#記号そのものを使う場合はφ#と記述してください。#だけが出力されます。
◆カッコの無効化。
φ(と記述してカッコを始めることで、置き換え等の特殊機能を抑制し、単なるカッコとして出力することができます。また、カッコ内で閉じカッコを表示したい場合はφ)で可能。
もちろん、置き換え対象が無い場合はそのままカッコつきで出力されます。
◆カッコ内部での改行を全て無視
これが今回のメイン。
逆にいうと、カッコ内部ではいくらでも改行ができるということです。
主に、SAORI呼び出し時の大量の引数を見やすく記述するために使います。
用例は、一つ下の iflist サンプルを見てください。
また、カッコ内部で改行においては行頭のタブ記号が無視されます。
副作用として(wのような閉じてないカッコが使えなくなってしまうのですが、これは一つ上の方法でカッコ自体を無効化することで回避可能です。
◆ssu.dll - iflist
一つの左辺に対し、複数の右辺を順番に比較していきます。
用例。
*OnBoot
:(iflist、(現在時)、
<6、こんばんは。、
<11、おはようございます。、
<18、こんにちは。、
<24、こんばんは。)
◆ssu.dll - zen2han, han2zen
一部記号がずれていた問題を修正、半角カナと全角カナの相互変換に対応。
◆ssu.dll - kata2hira, hira2kata
カタカナとひらがなの相互変換。文字列比較用かな。
◆ssu.dll - sprintf
書式指定出力。printfとしてはかなりサブセットですが。
具体的には(sprintf,%02d:%02d,(現在時),(現在分))で時刻の二桁出力ができます。>すぬさん
詳しく知りたい場合は「printf 書式」とかで検索すると……出てはくるでしょうけど。
02/04/12 phase 82
◆SAORI呼び出し時の区切りに「,」だけでなく「、」と「,」が使用可能に。
satori_confでの呼び出し名も設定し直せば、フル全角でSAORIが使えます。
(IF、(さかな)>5、大漁じゃあ!)ってな。
02/04/12
HTTPクライアントなSAORI phase 2。
暫定版。
まず、改行コードを無視するようになりました(SAORIの規格上、そのままでは返せないので)。
で、設定可能なオプションを追加。文字コードの指定、タグの消去、タグのさくらスクリプト変換です。
さくらスクリプト変換は期待しないでください。雑だし。ある程度狙って作らない限りは見れたもんじゃないかと。
タグいじり系は別のSAORIとして分離するかもしれず。とかく暫定仕様ってことで。
02/04/10 phase 81 excuse:春なので2
\![open,inputbox,*]のサンプル、派手に間違ってました。すいません。ぁー。\![raise,]と混同してたヨ……
*OnUserInput
$(R0) (R1)
>(R0)を教えてもらった
*名前を変える
:名前は?\![open,inputbox,ユーザ名]
*ユーザ名を教えてもらった
:(ユーザ名)さんですね。
ついでにポストのサンプルにも反映。
◆dic2、*OnUserInput追加。
◆dic8、「名前覚えて」部分のサンプル変更。
02/04/09 phase 80 excuse:春なので
◆≫による検索を今度こそAND条件に。
昨日言ってたことと逆になってました(対ユーザの方をANDにしてた)……_
◆TEACHが無効化されてた問題を今度こそ修正。
phase79で直したつもりが全然直ってませんでした……_
◆里々へのリクエストで SecurityLevel: local がない場合は SAORI-basic の直接呼び出しを禁止。
せきゅ。-universalはLocal/Externalを渡します。
◇というか
COMMUNICATE周りを整理しないと……
02/04/08 phase 79
◆タイマが一瞬で終了する問題を修正。
OnSecondChange以外でも数えてたヨ...
◆≫による検索をAND条件に。
2単語以上であり、かつ、全ての単語が文中に含まれてる場合のみヒットとします。
対ユーザCOMMUNICATEは今まで通り。
◆TEACHが無効化されてた問題を修正。
でも、この際だから\![open,inputbox,*]に移行しちゃった方がいいかも。より適切に動作しますので(入力中は割り込まれない、入力後は消える)。
◆「SAORI-universal」呼び出し時にSecurityLevel: を付加。
せきゅ。
◆「SAORI-basic」の直接呼び出しが可能に。
里々使用のゴーストにおいては、プロクシdllを経由しなくてもSAORI-basicなプラグインが使えます。
exe形式のSAORIをdll形式のSAORIと同様に扱える、ってことです。
「SAORI-basic」は作るのも割と簡単なんで、ちょいと試しに遊んでみるのも一興かと。単なるコンソールアプリケーションです。例えばこれ
#include <stdio.h>
void main(int argc, char* argv[]) {
printf("Hello, world.");
}
多くのCの教科書の1ページ目に載ってる有名なプログラムですが、これ、コンパイルすれば、そのままSAORIとして扱えるわけです。
まぁこのままじゃ実用性無いんで加算器とか。
void main(int argc, char* argv[]) {
int i, acum=0;
for ( i=1 ; i<argc ; i++ ) {
acum += atoi(argv[i]);
}
printf("%d", acum);
}
実用がお嫌いなら人語→犬語翻訳機とか。
void main(int argc, char* argv[]) {
int i;
for ( i=1 ; i<argc ; i++ ) {
printf("わん");
}
}
興味を持ったらフリーのコンパイラをインストールなどして、あとは適当に検索すれば、いくらでも講座があると思います。
これであなたもSAORI作者。
※プログラムに関する質問にはお答えしかねます。にゃむー。
02/04/07 phase 78
■SATORI - ハイパーリンク的な。
dicAnchor.txtというファイルを用意し、
*悲しい目をした犬
:路地裏でたまに見かけることがあります。
等と記述します。すると、ゴーストのトーク中で悲しい目をした犬という台詞が出てきたとき、それが自動的にアンカー化されます。
まーやってみてください。これ多分、ごく普通の機能になると思います。
なお、dicAnchor1.txtとかdicAnchor_about_Fruits.txtみたいなファイルも対象になります。
要は 語 を \_a[語]語\_a に置き換えてるわけです。
本体からのOnSelectAnchor時、該当辞書ファイル内に(R0)と一致する*文が無ければ、通常通り*OnSelectAnchorを呼びます。
今んとこうにゅう側は効いてないっぽ。というかmateriaのtest中な機能を使ってるため将来に渡って使えるかは不明。アンカー機能自体が廃止されない限りは大丈夫ですけども。
■SATORI - 予約中タイマの解除
$○○タイマ=0で。
できるような気がしてたけど全然できてなかった……すいません。
■SATORI - タイマカウントを少しだけ精密に
喋れないとき(トーク中、最小化時など)にもカウントするようにしました。
喋れない状態で発動タイミングがくると、1秒ずつ遅れていきます。相変わらず厳密とは言えません。
過去ログ
02/01/01〜
〜01/12/31
〜01/12/13
〜01/11/10
|