■掲示板に戻る■ 全部 1- 最新50
OpenKEEPS会議室3

1 :さとー ◆wtNnKAwArI :04/09/25 16:32 ID:q0bhbGBY
OpenKEEPSに関するQ&A・tips・意見等を話すスレッドです。
http://keeps.sourceforge.jp/

2 :maron.kis:04/09/26 03:00 ID:iDgEkZlY
OpenKEEPSはOnBalloonChangeに未対応のようなので作ってみました。

#イベント:バルーンが切り替わった==============================================
#条件 : バルーンエクスプローラでバルーンを切り替えた時に発生。
event.OnBalloonChange : $(
TalkSearch "kp.onballoonchange";
)

kp.onballoonchange (
TalkBalloonChange.$(NormReference 0),
TalkBalloonChange
)

#保護対象エントリであることを宣言
kp.EntryToProtect : kp.onballoonchange

#------------------------------------------------------------------------------

#TalkBalloonChange.バルーンの名前
#TalkBalloonChange
#使用できる変数
#System.Request.Reference0 : 切り替えたバルーンの名前

TalkBalloonChange.デフォルト : \0\s[0]MATERIAのデフォルトバルーンです。\e

TalkBalloonChange : \0\s[0]$(SReference 0)に切り替えました。\e

#==============================================================================

こんなのはどうでしょう?


3 :さとー ◆wtNnKAwArI :04/09/26 16:19 ID:pi6LbNiI
>>2
ありがとうございます。Ver.3.1.2で取り込んでみます。
起動/終了トーク中にバルーン切替トークに割り込まれるのはまずそうなので、
Freezeフラグチェックを追加したほうが安全かな?ちょっと実験してみます。

さて、寝るまでにVer.3.1.2が出せるかな…。


4 :さとー ◆wtNnKAwArI :04/09/27 00:45 ID:8pLBlE2E
目標通り、寝る前にVer.3.1.2をリリースできました。
・右クリックを当り判定領域問わず反応できるように改良
・ユーザ定義の正規化機能で、全角文字等の変換・消去をカスタマイズ可能に
・OnBalloonChangeイベント対応
・テンプレートの誤記、説明の混乱しやすい点を修正
こんな変更を行っています。
お試しください。


5 :maron.kis:04/09/27 01:57 ID:/ZDh/I2I
>>4
OpenKEEPSの更新作業お疲れ様でした。
右クリック、正規化機能、テンプレートのコメント件、確認しました。
OnBalloonChangeイベントの実装、ありがとうございました。

:rem
実は結構前からこのイベントには対応させていたのですが当時のルーチンは
ちょっとお見せできないほどしょぼいやつだったので‥‥偽栞では偽黒姉
や偽ひよりで結構前からやってましたが華和梨はちょっと難しかったです。
:endrem

あと、今後の報告はもどきと公式BBSのどちらのほうがいいのでしょうか?

6 :さとー ◆wtNnKAwArI :04/09/27 23:14 ID:EnDy71TE
>>5
報告の件ですが、今までずっとこちらで続けていましたし、こちらで構いませんよ。
どう考えても、こちらの方が「視聴率」高そうです。バグ出しや情報集積は、
目の数が多い方が好都合です。

公式BBSは設計方針の討論や改良アイデア出しで、深掘りしたい時に便利な構造です。
用途で使い分ければいいと思います。

#OpenKEEPSの内部フレームワークのお陰で、一見してイベント反応に余計なもの
#が付いているので、難しく見えるのかもしれません。
#でも、頂いたイベント反応の記述を見る限り、しっかり理解なさっているようで。
#非常に心強いです。


7 :maron.kis:04/09/28 00:43 ID:DVAWBY7Q
>>6
>報告の件ですが、今までずっとこちらで続けていましたし、こちらで構いませんよ。
それでは、今まで通りこちらで報告します。

>#でも、頂いたイベント反応の記述を見る限り、しっかり理解なさっているようで。
>#非常に心強いです。
あ、あはは〜。あれはOpenKEEPSのコアを見て真似ただけですから‥‥
とりあえず、伺かのイベントは偽黒姉を作っているので何とかって感じですね。
栞が違っても送られてくるイベントは同じですし。

8 :maron.kis:04/10/08 00:36 ID:WPDH4IM6
SSPのOnEmbryoExistに対応してみたのですがこれで良いのでしょうか?

#イベント:SSPの起動時にMATERIAがすでに起動されていた==========================
#発生条件:MATERIAを起動した状態でSSPを起動する

event.OnEmbryoExist : \t$(
InitCond;
BootCondSearch;
GetifExist kp.callback.OnBoot;
Talk "TalkMateriaExist";
)

#------------------------------------------------------------------------------

#TalkMateriaExist

TalkMateriaExist : (
\u\s[10]\h\s[0]任意さんがいる‥‥\w8私もここに居ていい?\n\n
\![*]\q[いいよ","ssp_ok]\n
\![*]\q[帰れ!","ssp_ng]
\![set","choicetimeout","-1]\e
)

Select.ssp_ok : \h\s[5]ありがとう!\w8${username}!!\e
Select.ssp_ng : \t$(SaveData)\h\s[4]‥‥\w8\u\s[10]‥‥\w8\w8\-

#==============================================================================

よろしくお願いします。


9 :さとー ◆wtNnKAwArI :04/10/09 12:28 ID:hvyHYQCE
>>8
いつもありがとうございます。

見るエントリがTalkMateriaExistだけでよいなら、実はBootCondSearchは不要です。
でも、せっかくここまで叩き台があるので、もっと汎用化したくなりました。
・TalkMateriaExistがあれば、それを使う
・なければTalkBootup系エントリを使う
・前回がクラッシュ落ちなら、上記に優先してTalkCrashedを使う
OpenKEEPSに取り込む際は、こんな感じで行ってみます。
同じ構造でいけるOnNekodorifExistもセットでやります。

もう1つ仕込み中のネタとあわせて、目標はこの連休明けまでのリリースってことで。
…今回はもう少しかかるかも。もっとかかりそうなら、ここで告知します。


10 :さとー ◆wtNnKAwArI :04/10/12 00:30 ID:rmkxQ5X+
作業中のVer.3.1.3ですが、思ったより作業量が多く、今日はデバッグ完了までは
行きませんでした。来週末リリースに目標変更します。

昔からずっと言われつづけていながら、ついに実装できなかった「汎用反応」が
今回の時間を食っている作業です。うまくいけば、導入初期段階の作業量を、
相当減らせる筈です。吉と出るか凶と出るか、リリースまでお待ちください。



11 :さとー ◆wtNnKAwArI :04/10/16 19:51 ID:U5KLg3GI
Ver.3.1.3をリリースしました。
OnEmbryoExist、OnNekodorifExistイベントに対応した他、「汎用イベントトーク」の
概念を追加しました。幾つかのイベントをグループ分けして、共通のトークで反応
できるようにしたものです。無論それだけでは不十分なので、イベントの内容を言葉で
教えてくれるエントリを設けました。
これにより、個別のイベントトークを設定しなくても、汎用イベントだけで、かなり
「それっぽい」反応ができるでしょう。

このアイデア、ずっと昔にアクラムさんが仰っていたものをベースとしています。
よいアイデアだと分かっていながら、作業量が多くなかなか着手できませんでした。
Ver.3.1.3で、ようやくそれをやる素地が固まり、実現することが出来ました。
この汎用イベントトークの考え方で、ゴースト作成コストがさらに下がることを
祈ります。


12 :maron.kis:04/10/18 00:32 ID:o3aEBl+I
>>11
OpenKEEPSの更新作業お疲れ様でした。OnEmbryoExistの件、確認しました。
ありがとうございました。

別件なのですがゴースト切り替えイベントで汎用ゴーストに日付指定をする
ようにしたいですが現在の仕様では特定のゴーストにしか指定できないです。

#元旦に他のゴーストから切り替えた
TalkGhostChanged.__other__.0101 : \u\s[10]\h\s[0]今日は元旦だね。\w8\u今年もよろしく。\e

このように日付が一致すればどのゴーストでもイベントが発生できるように
なるといいのですが‥‥


13 :maron.kis:04/10/18 00:33 ID:o3aEBl+I
一度に書き込めなかったので続きです。

フリーシェルなどでさくら側の名前が同じゴーストが複数存在する場合
現在の仕様では判別出来ない気がします。

TalkGhostChanged.<正規化したさくら側の名前>.<正規化したゴーストのフルネーム>

#偽黒姉から切り替わった
TalkGhostChanged.黒姉.偽黒姉 : \u\s[10]\h\s[0]偽黒姉さんから切り替わったよ。
\w8\u\s[11]未だに偽栞を使ってるんか。\w8\h\s[4]\n\n‥‥\w8古いよね。\e

このようにすれば判別できると思います。ただ、MATERIAの場合はさくら側しか
取れないのでゴースト側のdescript.txtのnameエントリから取るしかないかも?

それから特定のゴーストのメッセージを用意しておくとそのゴーストに切り替
えた時に短時間で交代した時のメッセージが出ない気がするのですが‥‥?
汎用メッセージの時は出ます。

よろしくお願いします。


14 :さとー ◆wtNnKAwArI :04/10/20 00:05 ID:Jag0/tAc
>>12-13
■ 汎用ゴーストに日付指定したい
これは即採用です。変更点も検索エントリリストに、「__other__」を含む
エントリを入れるだけで済むのでお手軽です。

■ 同じゴースト名が複数ある場合
これは思いっきり仕様上の穴です。SSPは塞いでありますが。
どこまで実用的に出来るか分かりませんが、MATERIAでも似たようなことを
できるか、試してみます。
また、例示のエントリ名だと、キーワードとゴーストのフルネームがぶつかり
ます。「TalkGhostChangedFullname」みたいな別体系が良さそうです。
#いや、わざわざそのネタで例示せんでも(苦笑)

■ 短時間交代等のメッセージが出ない
はい、これは正常動作です。切り替えメッセージを用意するような特定ゴースト
ならば、切り替え時間より相手特有の反応が優先だろうという判断から、
特定ゴーストのメッセージ特定無しの反応が切り替え時間に優先します。

不自然っぽいなら変えてみますが、どんな優先順位が嬉しいでしょう?
意見を頂ければ、できるかどうか試してみます。

ちょっと11月頭までが本業で山場でして、多少反応が遅れるかもしれません。
まったりとお待ちください。


15 :maron.kis:04/10/20 01:21 ID:ww9myT+g
>>14
>また、例示のエントリ名だと、キーワードとゴーストのフルネームがぶつかり
>ます。「TalkGhostChangedFullname」みたいな別体系が良さそうです。
あ、確かに。これではまずいですね。こちらでは「TalkGhostChanged」に独自判断
ルーチンをかませていたのでキーワードのことはすっかり忘れていました。

16 :maron.kis:04/10/20 01:23 ID:ww9myT+g
ちなみに独自判断ルーチンはこんな感じです。
---
TalkGhostChanged : $(
TalkSearch "kp.talkghostchanged";
)

#日付
date : $(date %m%d)

kp.talkghostchanged (
#日付限定イベントがあった
GhostChanged.${date},
#フルネーム付き専用反応があった(SSP/CROW専用)
GhostChanged.$(NormReference 0).$(NormReference 2),
#専用反応があった
GhostChanged.$(NormReference 0),
#専用反応が無かった
GhostChanged
)

#保護対象エントリであることを宣言
kp.EntryToProtect : kp.talkghostchanged

#ゴースト変更完了
#GhostChanged.<日付>
#GhostChanged.<正規化したさくら側の名前>.<正規化したゴーストのフルネーム>(SSP/CROW専用)
#GhostChanged.<正規化したさくら側の名前>
#GhostChanged
#ゴースト名の全・半角スペースは削除、英数字は全て半角
---

17 :maron.kis:04/10/20 01:25 ID:ww9myT+g
#元旦に他のゴーストから切り替えた
GhostChanged.0101 : \u\s[10]\h\s[0]今日は元旦だね。\w8\u今年もよろしく。\e
#偽黒姉から切り替わった
GhostChanged.黒姉.偽黒姉 : \u\s[10]\h\s[0]偽黒姉さんから切り替わったよ。
\w8\u\s[11]未だに偽栞を使ってるんか。\w8\h\s[4]\n\n‥‥\w8古いよね。\e
#黒姉から切り替わった
GhostChanged.黒姉 : \u\s[10]\h\s[0]黒姉さんと交代しました。\u\s[11]どこの
黒姉や?\w8\h\s[4]\n\n‥‥\w8いっぱいいるからわからないよね。\e
#汎用
GhostChanged : \u\s[10]\h\s[0]$(SReference 0)さんから切り替わりました。
\w8\u後のことはワイらにおまかせや。\e
---

偽黒姉で同じような処理をしているのでOpenKEEPSでもできないか試しに作って
みたルーチンです。キーワードのことは考慮していませんでしたね(ぉ

>#いや、わざわざそのネタで例示せんでも(苦笑)
あ、あはは〜。何となく思いついたので(笑)

>はい、これは正常動作です。
あ、やはりですか〜。実は結構前から気が付いていたのですがもしかすると
そうなのかなって思って黙っていました。こちらでは「TalkGhostChanged」や
「TalkGhostChanging」と同じ扱いにして短時間ならば登録ゴーストであっても
短時間交代時のメッセージが出るようにしてます。私はこの方が良いと思うの
ですが‥‥他の方はどうでしょう?

>まったりとお待ちください。
ありがとうございます。よろしくお願いします。

18 :maron.kis:04/10/25 23:29 ID:JlQItfC2
OpenKEEPS 3.1.3ですがCROWでネットワーク更新をすると${UpdateFileNo}が
1個足りないようなのですが‥‥?(1個目のファイルの時に0個と表示される)
MATERIAとSSPでは正しく表示されます。確認をお願いします。


19 :さとー ◆wtNnKAwArI :04/10/27 00:27 ID:pEctUQ7s
>>18
UpdateFileNoエントリ、スクリプト上はオリジン補正かけてますね。
そうなると、CROWのバージョン依存の問題かな?良かったらCROWのバージョンをお教えください。

#バージョンによってベースウェアの挙動が違うのに対応させること、一応出来ますが…


20 :maron.kis:04/10/27 00:54 ID:EQ5biEls
>>19
0.4.20と0.5.1です。すいません、CROWのバージョンを書き忘れていました。
華和梨のログを見るとOnUpdate.OnDownloadBeginのr1は0オリジンで来ている
ようです。

21 :さとー ◆wtNnKAwArI :04/10/31 00:05 ID:M/wEuIzY
開発版Ver.3.1.4をリリースしました。
ゴースト切り替え時、ゴーストを問わず時刻やキーワードで反応したい時、
ゴースト名として「__other__」を使えるようにしました。
これは>>12で頂いたネタをそのまま使っています。
また、>>18のCROWで0オリジンになっているという情報から、CROWの場合は
useorigin1を返すのをやめました。これで正しいオリジン補正がかかるはず。

さらに、幸水でイベント反応デバッグを簡単にするため、「debugger on」の
時にイベントデバッグ用辞書を自動的にロードするようにしました。これで
別途デバッグ辞書をロードすると言った、つまらない手間が省けます。

ゴーストのフルネームを見てのゴースト切り替え反応、トーク優先順位に
ついては、うまい打ち手が思いつかなかったので、今回は保留です。
前者はともかく、後者を柔軟にユーザサイドで設定できるようにするのは、
割と知恵が要りそうです。

今回はこんな所で。お試しください。


22 :maron.kis:04/11/01 00:14 ID:4T5xGVgU
>>21
OpenKEEPSの更新作業お疲れ様でした。ゴースト切り替え時の汎用反応、
CROWのオリジン補正の件は正常に動作することを確認しました。
ありがとうございました。

>ゴーストのフルネームを見てのゴースト切り替え反応、トーク優先順位に
>ついては、うまい打ち手が思いつかなかったので、今回は保留です。
うーん、やはりテンプレート側でKISを書くしかないのですかねぇ〜?
でも、この作業は結構大変だったりするんですよね。デバッグも上手い方法を
思いつかなかったので独自ルーチンに
#日付
date : $(date %m%d)
という処理をかましてデバッグ時は幸水上から
$(setstr date 0101)\!["raise,OnGhostChanged,黒姉, ,偽黒姉"]
と入力して確認してますし。今回からデバッグ支援スクリプトが実装されまし
たがこういった日時指定のイベントをもっと簡単にデバッグする方法はないで
しょうか?単にイベント内容を喋らせるだけなら\![raise]でいけますが日付
とか時間が入ってくるとだめなので。まあ、テンプレート以下なら$(Talk"〜")
でもいけるのですが‥‥

23 :さとー ◆wtNnKAwArI :04/11/02 07:28 ID:At7QdBpg
>>22
なるほど、日付に関連したデバッグですか…。
こっちは逆に、何とかなるかもしれません。要はdateコマンドを乗っ取ってしまえば
良いわけですから。デバッグ時は「そうだと思って欲しい」日付を専用コマンドで
設定すると、debugOn*系コマンドで模擬したイベントからは、その日付に見えるように
します。
#実はOpenKEEPSのデバッグも楽になるアイデアです(笑)
#こういうのは大歓迎。

なお、ゴーストのフルネームを読む件とトークの優先順位の件ですが、つい先ほど
「スクリプトの神様が降りてきた」ので、何とかなりそうです。
ただし、11月第2週には本業の出張コンボが待ってるため、Ver.3.1.5は今週末中に
出せない場合、ほぼ自動的に11/20までリリースが延期になります。
……11/3が山ですね。休出から逃げ切れるかなあ。


24 :うにゅう:04/11/06 23:42 ID:vaj66u6I
openkeeps.kisのTemplatePrefixに設定する文字列って、
実際のファイル名が大文字であっても
小文字で記述しておかないとダメなんですか?

25 :さとー ◆wtNnKAwArI :04/11/07 01:13 ID:Y1G1SS4g
>>24
いえ、その種の大文字・小文字を変換する処理は行っていません。
ファイル名が大文字なら、TemplatePrefixの内容も大文字にします。

もし「小文字じゃないとダメ」という現象が起きているとしたら、OS依存の現象
ですね…。Windowsはファイル名の大文字小文字に関して、かなり嫌らしい動作を
することが知られています。

もしその現象が起きているなら、OS種類や設定したTemplatePrefixなどを教えて
頂けると助かります。その情報を基に、対策できるかもしれません。


26 :うにゅう:04/11/07 01:58 ID:HgAXHyyI
これって、 loader.kisの36行目の match 文で
小文字化したファイル名である ${@lf} とTemplatePrefixの値の ${@ent} を
比較しているせいじゃないんでしょうか……?

27 :うにゅう:04/11/07 01:59 ID:HgAXHyyI
すみません、match文でなく、match_at文でした。

28 :さとー ◆wtNnKAwArI :04/11/07 08:46 ID:PvfyvpQY
>>26-27
うわ、そういえば対Windows対策でそんなことしてたっけ……。
ご指摘、ありがとうございます。完全に見落としてました。
それでは、次のバージョンからは仕様として、次のようにします。
・TemplatePrefixで設定する文字列は大文字/小文字を同一視する
つまり、「Dictionary」も「dictionary」も同じ意味にします。

これは、Windowsではファイル名の大文字/小文字を無視して動作することが
ある一方、ninix-aya等の動作するUNIX系OSでは、ファイル名の大文字/小文字
は厳密に区別することを考慮しています。この動作の違いに対処するため、
ninix-ayaではゴーストインストール時、ファイル名を強制的に小文字に
変換していると聞いています。
今回決めた仕様ならば、WindowsとUNIX系、どちらでも動作することを保証
できると思います。


29 :maron.kis:04/11/08 23:47 ID:lhFTdR5+
v3.1.4のghost-keeps.kisでOnSurfaceRestoreイベントのコメント
の間違いを発見したので報告します。

×TalkReurn
○TalkReturn

サンプル文のほうはTalkReturnになっているので動作は問題ありませんが
コメントからコピペすると動かないというワナが‥‥少しハマりました。

30 :さとー ◆wtNnKAwArI :04/11/13 22:02 ID:zIUoQMbQ
開発版Ver.3.1.5をリリースしました。
Ver.3.1.4と比べて、以下の点が変更になっています。
・ゴースト切り替え反応で、相手ゴーストの\0側の名前に加えてゴーストの名前(descript.txtのname)による反応が出来るようになった
・ゴースト切り替え反応で、起動時間によるトークを優先的に話すオプションを追加した
・デバッグ時、PCの時計を変更することなく任意の時刻での動作を模擬することが可能になった
・テンプレート辞書の共通名は、大文字/小文字を問わないようにした

ゴースト名による切り替えは、対応しているSSPやCROWなどで使えます。MATERIAは不可です。
#トーク用のエントリ名の決め方、今ひとつしっくりきてないですが…。
#ま、仮にあとで変更するとしても、今の名前も使えるようにしておきます。

いつもの通り、Ver.3.0.0以降なら上位互換です。
お試しください。


31 :maron.kis:04/11/14 01:04 ID:XFaY807+
>>30
OpenKEEPSの更新作業お疲れ様でした。
ゴースト切り替え、デバッグ用機能、コメントの件確認しました。
ありがとうございました。

>MATERIAは不可です。
あ、やはりSSP/CROW用ですか。MATERIAではr2が来ていないので難しいですよね。

あと、フルネームを使ったゴースト切り替えですが
TalkGhostGhangedEx.<正規化した\0側名>.<正規化したゴースト名>
これは
TalkGhostChangedEx.<正規化した\0側名>.<正規化したゴースト名>
にしないと来ないようです。コメントと食い違っているようなので報告
しておきます。

:rem
ただ、なぜ「TalkGhostGhangedEx」と"G"になっているのが謎なんですが‥‥
「TalkGhostChangedEx」でいいと思うのですが‥‥?
:endrem

32 :さとー ◆wtNnKAwArI :04/11/14 09:25 ID:7x5NSInw
>>31
>なぜ"G"?
タイポです。まったくお恥ずかしい限りで。
SSPのOnSurfaceChangeの仕様を勘違いしていた件も合わせ、さっそく直します。

>MATERIAは不可
他のゴーストのdescript.txtを読み漁ることまでは出来る(というか既にやってる)
のですが、\0の名前からゴースト名を推測する時、同じ\0の名前があると曖昧さが
残るので…。そう言うケースを無視するなら実装できますが、既に\0側の名前かぶり
は起きているので、無視するわけにも行きますまい。

うーむ、テンション低いまま更新するとドジるなあ。


33 :maron.kis:04/11/14 16:43 ID:/Yd+Ef+s
>>32
OpenKEEPS 3.1.5のフルネームを使ったゴースト切り替えを有効に
している場合で短時間の台詞を優先にしていると自分自身のリロード
でも短時間の台詞が出てしまうようです。現在の仕様だと自分自身も
専用反応と同じ扱いなのでこういう動作をしているのだと思います。
これを避けるため自分専用エントリを用意して常に短時間の台詞より
優先するといった動作ではどうでしょうか?

例:ゴーストのフルネームが「偽黒姉」、さくら側の名前が「黒姉」の場合

#ゴーストのフルネームを指定(SSP/CROW用)
TalkGhostChangingSelf.黒姉.偽黒姉 : 切り替え前の台詞
TalkGhostChangedSelf.黒姉.偽黒姉 : 切り替え後の台詞

#MATERIAなどフルネーム情報が無い、または他の同名ゴーストの場合
TalkGhostChangingSelf.黒姉 : 切り替え前の台詞
TalkGhostChangedSelf.黒姉 : 切り替え後の台詞

ただ、この動作だとMATERIAで他の同名ゴーストに切り替えた場合は
リロードの台詞が出てしまいますが‥‥

>既に\0側の名前かぶりは起きているので、無視するわけにも行きますまい。
黒姉ゴーストだと同名がたくさんいますしね(笑)

よろしくお願いします。

34 :maron.kis:04/11/21 11:37 ID:CGyegen2
テンプレート辞書のロード順番が気になったので書きます。

現在のOpenKEEPSは自動読み込みにしているとHDD上にある順番でテンプレート
辞書を読み込んでいるようですがtemplate\hogeにある辞書をtemplateフォルダ
の辞書より後から読ませたい場合とかに指定できないので不具合が出ます。
自動読み込みをやめて手動で指定すれば済みますが開発環境でたまたま問題
なかったりすると気が付かない可能性が高いかも?「自動読み込み時はテンプ
レートフォルダ→サブフォルダの順で読み込む」といった決まりを作っておい
たほうが良いのではないでしょうか?

:rem
ちなみに私が気が付いたのはおすすめサイトの登録順番を複数の辞書に分けて
書いている時でした。テンプレートフォルダに置いた辞書の続きをサブフォル
ダに置いたら後に追加されるのではなく先に表示されてしまいました。ログを
見たらサブフォルダのほうが先に読み込まれていました。
:endrem

35 :さとー ◆wtNnKAwArI :04/11/24 00:31 ID:QKTlV+yQ
開発版 Ver.3.1.6をリリースしました。
・エントリ名の「Change」が「Ghange」になっていた恥ずかしいバグ修正
・再起動時にTalkRebooting/TalkRebootedエントリが使用可能に
以上の2点を変更しています。

フォルダ読み込み順序はまた今度…。この要望が出るということは、たぶん
間違いなく「アルファベット順で読んで欲しい」「アルファベット逆順で」
という要望もあるということですから。でも、sortをどうしよう…。
評価してsortするか、評価前にsortするか。


36 :maron.kis:04/11/24 23:26 ID:Q8/gLSog
OpenKEEPSの更新作業お疲れ様でした。
エントリ名、再起動時の件、確認しました。
ありがとうございました。

>フォルダ読み込み順序はまた今度…。
了解しました。とりあえず現状の対策としては

読み込み順番が狂うとまずいエントリは複数のファイルに書かない。
HDD上の並びを読み込む順番に変える(ぉ

でしょうか。

37 :うにゅう:04/12/02 12:37 ID:OoQMzPL+
お世話になっています
OpenKEEPSでゴーストを製作させていただいてるものです
質問なのですが、kero側だけ右クリックを不可にすることは
できるでしょうか
よろしければ、可能な場合、方法を教えてください

38 :さとー ◆wtNnKAwArI :04/12/02 23:45 ID:Q8Q0uv5M
>>37
不完全ながら可能です。
開発版Ver.3.1.2以降を使い、openkeeps.kis内のkp.config.userightbutton
オプションを有効にした状態で、ghost-keeps.kis内に次のように書きます。
> C1SingleclickRight : \e
これで、kero側の右クリックメニューだけ出なくなります。

これがなぜ「不完全」かというと、トーク中にkero側を右クリックすると、
バルーンが消えてしまうからです。SSPの\Cタグを使って回避することも
試してみたのですが、問題の解決には至りませんでした。
とりあえず、今回はこれでお試しください。

#これは、本体側の協力がないと完全には実現できないかもしれません。
#ちょっと各所で相談してみます。


39 :うにゅう:04/12/03 12:53 ID:OHdJ4ARQ
ありがとうございます
さっそく導入させていただきました
あと、トーク中にkero側を右クリック…、ということでしたが、私の環境では
トークが終了してから右クリックするとバルーンが消えるというものでした
これは、\tを使っているからでしょうか

40 :さとー ◆wtNnKAwArI :04/12/04 09:51 ID:X78zaqt2
>>39
現象としては、私の環境で起きたものと一緒です。単に表現の違いです。
\tは使ってないトークで起きたので、これは無関係でしょう。

もしkero側がトークをしないタイプのゴースト(例:ゴースト「54」)ならば、
こんな手も使えます。
・kero側のシェルを\1タグで表示しない。極小のダミーだけ表示する
・umeiciさんのSAORIモジュール「EasyBalloon」で、本当の相方シェルを表示する
この方法なら、kero側右クリック反応は間違いなく出ません。

単に機能レベルで何がしたいかではなく、アイデアレベルで何がしたいのか
分かると、さらに適切な方法を提案出来るかもしれません。
差し支えのない範囲で、教えていただけたら嬉しいです。


41 :うにゅう:04/12/05 12:28 ID:kQ0uMwGQ
今回のkero側の右クリックを消去したいと考えたのは、終了という項目を
「EasyBalloon」のメニューオンリーで行いたかったからです
「resource.quitbutton.visible:0」でも右クリックの終了項目は消去できる
みたいですが、どうせなら完全に消去してしまおうと考えました

とりあえず、サンプルゴーストを
http://www32.tok2.com/home/moriba/upload/data/nua_431.zip
なぜかゴーストの動作自体は途中で変な動きをして止まってしまいますが、
これでもだいたいは私のやりたいことは理解していただけると思います

42 :さとー ◆wtNnKAwArI :04/12/06 01:54 ID:ouFOFcaM
>>41
情報ありがとうございます。
なるほど、EasyBalloonへメニュー一本化ですか。quitbutton.visibleだと、
オーナードローメニュー自体は出てしまうので、対策は必要ですね…。

SSPの仕様をよく読み返してみると、この件は華和梨の仕様を一箇所変えれば
対応出来そうです。この週末はテスト完了までは行きませんでしたが、継続
してテスト中です。しばしお待ちを。


43 :さとー ◆wtNnKAwArI :04/12/13 23:43 ID:oaU5TBMw
前回書き込みから少し間が空いたので、近況報告などを。

■ 華和梨を改造すれば何とかなる?(オーナードローメニューを封じる)
実験してみましたが、ダメでした。
#「200 OK」を返しつつValue無しなどという、外道手はSSPが許してくれなかった(苦笑)

メニューの完全独自化をする場合は、やはり本体側の協力が必要そうです。

■ テンプレート辞書読み込み順の指定
「フォルダを優先して読む」は目処がつきましたが、ソートは実用上難しそうです。
華和梨側も作ってる立場としては、ソートは組み込みコマンドにしたほうが良さそう。
過剰スペックを求めて既に出ている問題を解決できないのは申し訳ないので、今週末に
フォルダ優先読み込みのみ、先に実装します。

……それだけではちょっと気が引けるので、Tipsを1つ。
テンプレート辞書フォルダを複数設定する場合、フォルダを検索する順番は、
openkeeps.kisに記載した順番です。これを使うと、次のようなことが出来ます。
 1.読み込み順序に依存する辞書を、別のフォルダに保存する
 2.openkeeps.kis内TemplateDirエントリへ、読み込んで欲しい順にフォルダを記述する

こうすると、完璧とは行きませんが読み込み順の制御が出来ます。
ただし、検索するフォルダが「ダブる」と、「同じエントリ内容が重複」という嫌らしい
トラブルが起きます。設定にはご注意ください。


44 :うにゅう:04/12/14 09:49 ID:yFQACvEk
とりあえずは、現状のものでも極端に変な動きはしないようなので、
これを導入しようと思います
また、なにか問題が起きましたら質問させて頂きますね
ありがとうございました

45 :さとー ◆wtNnKAwArI :04/12/19 22:27 ID:UCtHA85U
開発版Ver.3.1.7をリリースしました。
テンプレート辞書をサブフォルダ内まで再帰読み込みする時、サブフォルダ内を
優先して辞書を読みに行く仕様に変更しました。
また、SAORIモジュール自動読み込み設定の際、呼び出し用関数も自動的に定義
するように変更しました。
今回はloader.kisのみの変更になります。

そろそろバグ報告が少なくなくなりつつあります。メジャーなバグが見つからない
場合、来月中旬をめどに、本バージョンの内容を安定版としてリリースします。


46 :maron.kis:04/12/20 22:14 ID:44Cg+qwU
>>45
OpenKEEPSの更新作業お疲れ様でした。辞書の読み込み順番がサブフォルダ、
テンプレートフォルダになっていることを確認しました。

でも、私は逆のほうが良かったですねぇ〜。サブフォルダに実験用のスクリ
プトを置いたりするので。これの読み込み順番をopenkeeps.kisあたりで設定
できるといいのですが‥‥

47 :さとー ◆wtNnKAwArI :04/12/26 18:59 ID:ADZJPCmU
>>46
Ver.3.1.8で読み込み順序制御オプションつけました。
openkeeps.kis内、「kp.config.usesubdirfirst」オプションがそれです。
デフォルト設定はVer.3.1.7と同じ動作で、このオプションをオフにすると
maron.kisさんご要望の動作になります。お試しください。


48 :maron.kis:04/12/26 23:45 ID:hXiwnTJg
>>47
OpenKEEPSの更新作業お疲れ様でした。オプションで読み込み順番が
変えられることを確認しました。ありがとうございました。


49 :maron.kis:04/12/29 23:39 ID:J8nbWL1A
MATERIAでネットワーク更新中に栞が更新されるとリロードするようですが
この影響で${UpdateFileTotal}の値が空になってしまうようです。この値は
OnUpdateReadyのr0ですがOnUpdate.OnDownloadBeginのr2でも取れるので
こちらでもセットしておいたほうがいいような気がします。

OpenKEEPS 3.1.8、MATERIA583にて確認しました。

:rem

うちでは更新ファイルの全数表示に使っているため、表示が空になると

-------------------------------
1/

黒煙を上げて燃え上がるファイル

nisekuro.kis

を受信しています。

-------------------------------

といった表示になってしまいます‥‥

:endrem


50 :さとー ◆wtNnKAwArI :04/12/31 00:27 ID:BCuAbdcA
>>49
この問題、UpdateFileTotalをネットワーク更新時に引き継ぐエントリにすることで
解決できそうです。関係してる問題が他にもあるか、ちょっと調査してみます。

51 :さとー ◆wtNnKAwArI :05/01/02 18:22 ID:MRoqvmUM
>>50
やはり関係している問題がありました。
今回の問題、単に「UpdateFileTotalエントリが空になる」という問題ではなく、
「OpenKEEPSが感知できていない栞リロードが存在する」、という問題です。
#感知できていれば、バックアップすることが可能です。

具体的には、インストールイベントで感知できていない栞リロードが発生しうると
考えています。supplementで栞を含んでいた場合、インストール完了イベント前に
栞のリロードが起こるはずです。現在、対策を検討中です。
#華和梨は頻繁に更新してないので、問題となることは少ないはずですが……。

こんな事情ですので、しばらくお待ちください。


52 :maron.kis:05/01/03 00:12 ID:oRp0RGlc
>>51
ありがとうございます。更新ファイルがバラなら華和梨自身が変わらなければ
問題無いですが*.zipにアーカイブされていて華和梨を含む場合、アーカイブの
MD5が変わっていればDLされるため華和梨の新旧にかかわらず上書きされて途中
でリロードするため毎回この問題が起きます。今のところCROWが*.zip更新に
未対応のためうちの公開ゴーストでは使用していないので大きな問題はあり
ませんが。

ちなみに*.zip更新で問題になるのはゴーストとシェルを一緒に更新した
時で先に華和梨を含んだ*.zipが落ちてくると展開後すぐにリロードされる
ためその後のシェル側の更新でUpdateFileTotalエントリが空になります。

SSPでは全体のDLが終わった後に展開、リロードしているようなのでこの問題
は起きないようです。


53 :さとー ◆wtNnKAwArI :05/01/10 23:10 ID:UCV0WTgM
>>52
お待たせしました。対策版をVer.3.1.9としてリリースしました。
#SSPのゴーストキャッシュ対策のつもりでやったコード内に、バックアップデータが
#消えるというバグがVer.3.0.0からあった模様……。
#今回のUpdateFileTotalの件でチェックして、初めて気づきました。

いつもの通り、Ver.3.xに対して上位互換です。お試しください。



54 :maron.kis:05/01/11 21:24 ID:581gHdGM
>>53
OpenKEEPSの修正作業お疲れ様でした。試してみたところUpdateFileTotalが
消えることはなくなりました。ありがとうございました。
しかし、今度はUpdateFileNoが1つ足りない場合があるようです。
ghost\master\ghost.zip(これにはshiori.dllを含みます)
shell\master\descript.txt
shell\surface1\descript.txt
shell\surface2\descript.txt
shell\surface3\descript.txt
という更新データを作りMATERIAで更新するとghost.zipでは
----------------------------
1/5
永遠に更新されないファイル
ghost.zip
を受信しています。
----------------------------
といった表示になりますが、ghost.zipが展開されて栞がリロードされると
----------------------------
1/5
やる気が感じられないファイル
descript.txt
を受信しています。
----------------------------
というようにUpdateFileNoが1つ足りなくなっています。この後、このまま
終わりまで1つ足りない場合もあれば次の表示でいきなり正常な値が出たり
します。華和梨のログを見るとr1は常に正常な値で来ているようなのですが‥‥?

OpenKEEPS 3.1.9使用テストゴースト、MATERIA 583で確認しました。
よろしくお願いします。

55 :さとー ◆wtNnKAwArI :05/01/11 23:00 ID:hZpcaXXc
>>54
私がドジやってしまったようです。本体種類による0オリジン補正が、
再起動直後は死んでます。1分経つと確実に拾えるのですが…。
やっつけ的手法ですが、手はあるのでVer.3.1.10で対応します。


56 :maron.kis:05/01/15 21:38 ID:LRhXrYLY
SSPのOnGhostCallCompleteイベントに対応してみました。

#イベント:ゴーストが呼び出された(SSPのみ)===================================

event.OnGhostCallComplete : $(
TalkSearch "kp.onghostcallcomplete";
)
kp.onghostcallcomplete (
TalkGhostCallCompleteEx.$(NormReference 0).$(NormReference 2),
TalkGhostCallComplete.$(NormReference 0),
TalkGhostCallComplete
)
#保護対象エントリであることを宣言
kp.EntryToProtect : onghostcallcomplete
#------------------------------------------------------------------------------
#TalkGhostCallCompleteEx.<さくら側の名前>.<ゴーストのフルネーム>
#TalkGhostCallComplete.<さくら側の名前>
#TalkGhostCallComplete

TalkGhostCallCompleteEx.黒姉.偽黒姉 : \h\s[0]偽黒姉さんだね。\w8\u\s[10]画面が狭くなるかもな。\e
TalkGhostCallComplete.きぃ : \h\s[0]OpenKEEPSのサンプルゴーストだね。\w8\u\s[10]ぷしゅうは風船やな。\e
TalkGhostCallComplete : \h\s[0]$(SReference 0)さんが来たよ。\w8\u\s[10]ライバル登場やな。\e
#==============================================================================

こんなのはどうでしょうか?キーワードには未対応ですが。
偽黒姉1/15版に実装してみましたのでそちらも参考にしてください。

57 :maron.kis:05/01/15 23:38 ID:LRhXrYLY
>>55
OpenKEEPSの修正作業お疲れ様でした。3.1.10で正しく表示されることを
確認しました。ありがとうございました。


58 :さとー ◆wtNnKAwArI :05/02/27 23:15 ID:EnDy71TE
安定版Ver.3.2.0をリリースしました。バージョン番号を除くと、中身は
開発版Ver.3.1.10と同じです。
OnGhostCallComplete系統は、関連イベントも整備すると結構作業量として
大きくなりそうだったので、Ver.3.3系列で実装することにし、
今回は実装を見合わせました。ご了承を。


59 :うにゅう:05/03/04 08:19 ID:yWKnwbTQ
sentence : さとーさん助けてください

60 :うにゅう:05/03/04 12:19 ID:yWKnwbTQ
sentence : なんとかなりました!

61 :maron.kis:05/07/17 16:34 ID:05c3IkNk
OpenKEEPS 3.2.0でOnVanishedを送ってもイベントが発生しないようです。
dict-keeps-baseevent.kisを見ると

kp.onghostchanged.vanish (
TalkOtherGhostVanished.${beforeghost},
TalkOtherGhostVanished
)

と書かれています。多分上からゴースト名を指定、汎用反応の順になっている
と思うのですがテンプレートのTalkVanishedエントリが無いようです。
TalkOtherGhostVanishedにするとイベントが発生します。

確認をお願いします。


62 :さとー ◆wtNnKAwArI :05/07/17 23:29 ID:Irergbbk
>>61
…流石に3年間もこのバグに誰も気付かなかったというのは、ちょと堪えますね。
ご指摘の通り、テンプレートとスクリプトでエントリ名にずれがあります。
とりあえず、TalkVanishedの代わりに、TalkOtherGhostVanishedをテンプレートに
書いてお使いください。

…これ、どう処理しましょう。
今回は、テンプレート側のエントリ名を変更したい気も。
「TalkVanished」だと、「TalkVanishほにゃらら」と意味合いが違う割に
よく似た名前になって、少し紛らわしいように思えます。


63 :maron.kis:05/07/18 00:19 ID:jETrjKgc
返信ありがとうござます。やはりエントリ名が違っていましたか。
テンプレート側をTalkOtherGhostVanishedに変更して対応します。


64 :maron.kis:05/07/24 00:28 ID:nXPt7+Kw
OpenKEEPSでマウスホイールをクリックした時のイベントが無いので独自に
別ルーチンを書いてホイールクリックの反応をつけてみたのですが同じ反応
部位に右クリックの反応があるとそちらが優先されてしまいます。スクリプト
自体は両方来ますが右クリックのメッセージが終わった時に\eが出るため
見かけ上は右クリック反応だけ来ているように見えます。dict-keeps-baseevent.kis
のほうを修正しないとダメみたいです。できれば次期バージョンでの対応を
お願いします。


65 :maron.kis:05/08/31 02:00 ID:TGAZEsjU
OnChoiceTimeoutのr0を使ってタイムアウトした選択肢専用のメッセージを
出したいのですがどうすればできますか?OpenKEEPSのゴースト切り替えの
ようにキーワードを設定してそれがあったら専用反応、無ければ汎用反応
というような動作にしたいのですが‥‥


66 :さとー ◆wtNnKAwArI :05/09/01 00:02 ID:7ea900TA
>>65
OnGhostChanged同様の手法は無理ですが、メニューグループ機能でほぼ同じことを
実現できます。以下、実例で示します。

まず\q[]を使う文中で、キーワードを設定します。キーワードはエントリ名に
使える文字で決めてください。このキーワードを、kp.MenuGroupエントリに
setstrで書き込みます。以下の例では、「乗り物好み」がキーワードです。

sentence : (
\1\s[10]\0\s[0]あなたは車派?\w8それとも鉄道派?\w8\n
 \q["もちろん車,car"]\n
 \q["やっぱり鉄道,train"]\n
\e
$(setstr kp.MenuGroup 乗り物好み)
)

OnChoiceTimeoutイベントでは、「TalkTimeout.<キーワード>」エントリに
トークを設定すると、先ほどの方法でキーワードを設定した場合に使われます。
キーワードは設定されているのに、「TalkTimeout.<キーワード>」エントリが
ない場合、TalkTimeoutエントリが使われます。

TalkTimeout.乗り物好み : \1\s[10]\0\s[4]どっちが好きなんですかぁ?\e
TalkTimeout : \1\s[10]\0\s[4]ちゃんと答えてくださいよぅ\e

なおkp.MenuGroupエントリは、選択肢を選ぶかタイムアウトすると、自動的に
中身を消します。違うキーワードが誤って使われる心配はありません。

こんな感じですが、どうでしょう?目的に沿うでしょうか。


67 :maron.kis:05/09/01 01:58 ID:3oksG/1k
>>66
ありがとうございます。このような機能があるとは知りませんでした。
これなら簡単に専用反応が出せますね。


68 :いなご:05/09/23 09:25 ID:X8sgw7IA
はじめまして。つい1月前に初めてゴーストに手をだしたのですが,
色々調べた上でOpenKEEPSを選びました。正しい選択でした。

コミュニケートトーク(ユーザとのトーク)のところで
# <FlagMode>.TalkComm.<正規化ゴースト名>.<ID>.match : キーワード群
のところの,「キーワード群」の書き方が良くわかりません。
一見エントリのようですが,「おはよう, おは」と書いても「」内を
一語として扱っているようです。複数のキーワードを参照するには
どうすればよいでしょうか?

69 :さとー ◆wtNnKAwArI :05/09/23 19:33 ID:2XGJbB9k
>>68
OpenKEEPSを採用いただき、ありがとうございます。
「キーワード群」は実際にエントリですが、複数のキーワードを書くと、
「書いたキーワードが全部相手の文章中にあった場合にマッチ」になります。
複数のキーワードで同一の対応をしたい場合ですが、次のようになります。

TalkComm.emily.1.match : お芋
TalkComm.emily.2.match : さつまいも
TalkComm.emily.3.match : ポテト
TalkComm.emily.1, TalkComm.emily.2, TalkComm.emily.3 : \1\s[10]\0\s[5]エミリはお芋好きだね。\e

この例では、ID=1〜3に「お芋」「さつまいも」「ポテト」を割り振り、
単語を複数のエントリへ一括して登録する書式で、同一の応答にしています。
すると、「お芋」「さつまいも」「ポテト」のどの単語が相手の文章中に
あっても、常に「エミリはお芋好きだね。」と答えます。

#OpenKEEPSの今の仕様は「AND条件」、いなごさんの予想した使用は「OR条件」
#ということになりますね。OR条件も、使用頻度多いのかな。
#簡単に書ける方法を作れないか、試してみます。

70 :& ◆MXzrSnWpgU :05/09/23 21:44 ID:xXdHM8kk
>>69
さとーさん,早速ありがとうございました。
なるほど,ANDでしたか。たしかに「おはよう,おは」だと
「おはよう」は通ります。前に試したときは別の組合わせだったかも。
でも,実際のところCommunicateBoxに力を入れて作ってる人は
多いのかな?

71 :うにゅう:05/10/20 07:25 ID:Nr/aZGdM
openkeeps.kis に datasaveparam の設定をする場所がありますけど、
ここに終了時にデータをセーブするエントリを記述した場合、
ゴーストリロード(またはSSPのデバックでのSHIORIリロード)で
データが消えるという事象が発生しました。

ちなみに、Templete配下の辞書に datasaveparam の設定を記述した場合は
データが消えたりはしませんでした。

72 :さとー ◆wtNnKAwArI :05/10/22 18:55 ID:VTk1JAts
>>71
現象の再現を確認しました。
ただ、
・openkeeps.kis以外にセーブデータを書くことを想定していなかった
・使い勝手からいくと、openkeeps.kis以外に書いた場合の方が便利そう
と言った点から、どういう修正をかけるべきか考え中です。
少々お時間を下さい。


73 :さとー ◆wtNnKAwArI :05/10/30 23:22 ID:qRMMs8tQ
>>71
OpenKEEPS Ver.3.3.0 alpha7で対策してみたので、問題ないかお試しください。
これでうまく行かない場合、私が問題を誤解している可能性あり……。


74 :うにゅう:05/11/01 01:29 ID:iUIEf/pU
確認しました。大丈夫みたいです。
対処ありがとうございました。

75 :うにゅう:05/12/15 21:22 ID:XpHsF/VA
>>75
ウィルス。踏むと死。

76 :うにゅう:06/05/24 01:11 ID:xkw5v7a2
里々にあるreplaceafterのように、
「、」や「。」の後にウェイトを自動で置くような事ってできますか?

77 :うにゅう:06/05/24 05:48 ID:xO4ZCpr2
>>88
ヒント:ghost-keeps-translate.kis

78 :88:06/05/26 01:26 ID:dpAFekx2
ありがとうございます。できました。

持っているゴーストでOpenKEEPS使ってるのを見てみたんですけど、
それを使わずに直接スクリプトを書いてあるのばかりだったんで、
それでは駄目なのかと思ってました。

79 :任意たん@開発中:2007/05/16(水) 23:55:31 ID:LGjRg5CE0
OpenKEEPS 3.2.0(3.3.0alpha8でも?)きのこのカテゴリ別のトークエントリ(TalkKinokoCreate.Type.きのこ、など)が
うまく動作していないようです。

dict-keeps-winlocal.kis の KinokoCheki 関数の236行目付近を見ると

235: ) else if $(EntrySize $@arg[1]".Type."${kinokotype}) $(
236:  Talk $@arg[1]".Type."${kinokoname};
237: ) else $(

と書かれていますが、エントリの命名規則からすると236行目は

236:  Talk $@arg[1]".Type."${kinokotype};

であるような気がしますがどうなのでしょうか?
ご確認お願いいたします。

40KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail(省略可)

0ch BBS 2007-01-24