伺的なフォーラム

伺か向けのフォーラム。自由に使ってください。ユーザアカウント登録なしで閲覧できます。

共有アカウント: 774user / 774user

ログインしていません。

#26 2017-02-20 04:44:05

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

現象としては「追従スクリプトを実行後にネットワーク更新すると追従されなくなる」ということで良いのでしょうか。
これを前提として以下は記述しています。

ネットワーク更新後は、SHIORIやSAORIなどが再読込されます。
早い話が、ゴースト自体の再起動に近い(異なる部分もあります)と考えてください。
したがって、ネットワーク更新成功時にも追従スクリプトを実行させるとうまくいくかもしれません。

#この「追従スクリプト」は
#起動時のイベント(OnBoot、OnFirstBoot、OnGhostChangedなど)で
#実行されているものとします
@追従スクリプト
\1\![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]φ
\p[2]\![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]φ
\![set,sticky-window,0,1,2]

#ネットワーク更新成功時の処理を以下のように書き換えます
#\1側に改行が入るので、トークでは「\1\_l[0,0]」などで調整してください
*OnUpdateComplete
(追従スクリプト)
>ネットワーク更新(R0)

*ネットワーク更新changed
:更新に成功したよ。

オフライン

#27 2017-02-23 00:05:18

MA
メンバー
登録日: 2017-02-04
投稿: 13

Re: 里々での開発相談

>>26
どうなんでしょう、ネットワーク更新後ゴーストを再起動させる等しても追従しない状態が変わらないので、追従スクリプト自体は実行されてはいます。
追従スクリプトの内容と実行手順自体は同じの筈です。
今すぐにはじっくり解明できそうにないので、れしばの結果だけとりあえず載せさせていただきます。

ネットワーク更新元:全追従
  return: \1\![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]\![set,sticky-window,0,1,2]\n\0起動台詞\n\1\0\n\![bind,メニュー,,0]\n\![bind,メニューパーツ,,0]\n\1
status code : 200
--- Response ---
Value=\1\s[10]\p[2]\s[10]\p[3]\s[10]\1\![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]\![set,sticky-window,0,1,2]\n\0起動台詞\n\0\n\![bind,メニュー,,0]\n\![bind,メニューパーツ,,0]\n\1\e

ネットワーク更新先:一部未追従
  return: \1\![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]\![set,sticky-window,0,1,2]\n\0起動台詞\n\1\0\n\![bind,メニュー,,0]\n\![bind,メニューパーツ,,0]\n\1
status code : 200
--- Response ---
Value=\1\s[10]\1\![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]\![set,sticky-window,0,1,2]\n\0起動台詞\n\0\n\![bind,メニュー,,0]\n\![bind,メニューパーツ,,0]\n\1\e

編集者 MA (2017-02-23 00:06:32)

オフライン

#28 2017-02-23 02:42:08

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

もしかしたら、スコープが指定されていないことが原因かもしれません。
「ネットワーク更新元」では「\1\s[10]\p[2]\s[10]\p[3]\s[10]」と全てのスコープにサーフェスが指定され、SSPがウインドウを生成しています。
それに対し、「ネットワーク更新先」では「\1\s[10]」のみで\p[2]以降のスコープが指定されていません。

透明な画像を用意して、\p[2]のサーフェスとして指定するとうまくいく可能性があります。
#26で示した@追従スクリプトの一部を「\p[2]\s[99]![set,alignmenttodesktop,free]\![move,0,0,0,0,left.top,left.top]」のようにサーフェス指定を追加した上で実行してみてください。
(サーフェス99はshell/masterフォルダにsurface99.pngなどの透明画像を置いてください)

オフライン

#29 2017-02-23 23:28:44

MA
メンバー
登録日: 2017-02-04
投稿: 13

Re: 里々での開発相談

>>28
無事解決できました。ありがとうございます。ネットワーク更新元では弄っているうちにp2のサーフェスをいつの間にか指定していたのかもしれません。
0,1以降のバルーンを使う際の注意点みたいですね。

オフライン

#30 2017-11-05 00:29:09

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

里々にて、ゴーストを開発しています。
「ある時点」でのbindによる着せ替え情報(メガネを着けている、外している 猫耳を着けている、外している等)を記録しておいて、必要になった時にその情報を読み込んで着せ替えできるようにしたいです。
OnNotifyDressupInfoを使えば良いということは分かるのですが、具体的にどうすれば良いか分かりません
教えて頂けると助かります。

オフライン

#31 2017-11-06 18:00:54

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

以下の処理で、「着せ替え状態_【スコープ番号】_【カテゴリー名】_【パーツ名】」という変数が、パーツごとに0か1で記録されます。
0が無効、1が有効です。【タブ】はタブ文字です。
¥0側のカテゴリー名「顔面」のパーツ名「メガネ」だと、変数名は「着せ替え状態_0_顔面_メガネ」となります。

*OnNotifyDressupInfo
$着せ替え判定ループ処理カウンタ=(Rの数)-1
$B3【タブ】(バイト値、3)
$引数区切り追加【タブ】(B3)
>着せ替え判定ループ処理
#カテゴリー名やパーツ名にバイト値3が含まれる可能性がある場合は「B3」変数の部分を変えてください

*着せ替え判定ループ処理
>着せ替え判定ループ終了【タブ】(着せ替え判定ループ処理カウンタ)<0
$この変数は記録されません【タブ】(nop,(split(B3)(R(着せ替え判定ループ処理カウンタ))(B3)(バイト値、1)(B3)0(B3)1))
$着せ替え状態_(S0)_(S1)_(S2)【タブ】(S4)
$着せ替え判定ループ処理カウンタ=(着せ替え判定ループ処理カウンタ)-1
>着せ替え判定ループ処理

*着せ替え判定ループ終了
$引数区切り削除【タブ】(B3)
$着せ替え判定ループ処理カウンタ【タブ】
$B3【タブ】

上の処理に含まれていないパターン
1. メガネに該当するパーツが複数種類ある場合の判定
2. 着せ替えの状態を判定したいシェルが複数ある

◆1の場合

>メガネをかけている【タブ】(count,(着せ替え状態_0_顔面_赤ふちメガネ)(着せ替え状態_0_顔面_黒ふちメガネ)(着せ替え状態_0_顔面_ふちなしメガネ),1)

などと書くことで、変数に一つ以上1(=有効)があれば「メガネをかけている」へ飛びます。
・注意点
半角カンマを引数区切りとして用いているので、カテゴリー名かパーツ名の中に半角カンマが含まれているとバグります。
その場合(バイト値、1)など、その中に含まれていないであろう文字を代わりに使ってください。


◆2の場合
OnNotifyShellInfoのR0に現在のシェル名が入っているので、それを変数へ記録してください。
以下の例では、記録される変数の名前が「着せ替え状態_【現在のシェル名】_【スコープ番号】_【カテゴリー名】_【パーツ名】」となっています。

*OnNotifyShellInfo
$現在のシェル【タブ】(R0)

*OnNotifyDressupInfo
$着せ替え判定ループ処理カウンタ=(Rの数)-1
$B3【タブ】(バイト値、3)
$引数区切り追加【タブ】(B3)
>着せ替え判定ループ処理
#シェル名やカテゴリー名やパーツ名にバイト値3が含まれる可能性がある場合は「B3」変数の部分を変えてください

*着せ替え判定ループ処理
>着せ替え判定ループ終了【タブ】(着せ替え判定ループ処理カウンタ)<0
$この変数は記録されません【タブ】(nop,(split(B3)(R(着せ替え判定ループ処理カウンタ))(B3)(バイト値、1)(B3)0(B3)1))
$着せ替え状態_(現在のシェル)_(S0)_(S1)_(S2)【タブ】(S4)
$着せ替え判定ループ処理カウンタ=(着せ替え判定ループ処理カウンタ)-1
>着せ替え判定ループ処理

*着せ替え判定ループ終了
$引数区切り削除【タブ】(B3)
$着せ替え判定ループ処理カウンタ【タブ】
$B3【タブ】

オフライン

#32 2017-11-06 18:13:21

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

>>30
すみませんものすごく勘違いしていました。ある時点での状態を記録して、後でその状態に戻せるようにしたい、ということですね。
さくらスクリプトでこういうものがあるのですが(ukadoc)、それを活用すればできます。
具体例は今から書くので少しお待ちください。

オフライン

#33 2017-11-06 21:42:14

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

【タブ】はタブ文字です。
引数区切りや分割用の区切り文字がカテゴリー名やパーツ名に含まれる場合は、処理に別の引数区切りを使うなどの対処が必要です。
・初期状態からあるもの 「,」「,」「、」「、」「バイト値1」
・この処理で独自に使っているもの 「バイト値3」

・記録を複数持ったりそれに名前を付けてリスト保存したりしたい
・キャラクターのスコープ番号(\0、\1など)が変わる可能性がある(ソロモード時に\1のキャラクターが\0の位置に来るとか)
という場合はお知らせください。

*着せ替えメニュー
:\c\q[◆現在の着せ替えを記録する,現在の着せ替えを記録する]
\q[◆着せ替えを記録した状態に戻す,着せ替えを記録した状態に戻す]

\q[◆閉じる,script:\e]

*OnNotifyShellInfo
$現在のシェル【タブ】(R0)


*OnNotifyDressupInfo
$(現在のシェル)の着せ替え状態【タブ】(現在のシェル)
$着せ替え判定ループカウンタ=(Rの数)-1
$B3【タブ】(バイト値、3)
>着せ替え判定ループ.処理

*着せ替え判定ループ.処理
>着せ替え判定ループ.終了【タブ】(着せ替え判定ループカウンタ)<0
$この変数は記録されません【タブ】(nop,(vncall,split,R(着せ替え判定ループカウンタ),バイト値、1,着せ替え判定ループ.ゼロ,着せ替え判定ループ.イチ))
$(現在のシェル)の着せ替え状態【タブ】((現在のシェル)の着せ替え状態)(B3)(S0)(バイト値、1)(S1)(バイト値、1)(S2)(バイト値、1)(S4)
$着せ替え判定ループカウンタ=(着せ替え判定ループカウンタ)-1
>着せ替え判定ループ.処理

@着せ替え判定ループ.ゼロ
0
@着せ替え判定ループ.イチ
1

*着せ替え判定ループ.終了
$着せ替え判定ループカウンタ【タブ】
$B3【タブ】


*現在の着せ替えを記録する
$着せ替え状態の記録【タブ】((現在のシェル)の着せ替え状態)
:\_q現在の着せ替え状態を記録しましたφ。\_q\x
>着せ替えメニュー


*着せ替えを記録した状態に戻す
$B3【タブ】(バイト値、3)
$この変数は記録されません【タブ】(nop,(vncall,split,着せ替え状態の記録,B3))
>着せ替えを記録した状態に戻す.シェルが違う【タブ】(vncall,equal,現在のシェル,S0)==0
:\![quicksection,1](for,1,(calc,(Sの数)-1),1,(vncall,着せ替えを記録した状態に戻す.処理1,S(C0)))φ
変更が完了しましたφ。\![quicksection,0]\x
$B3【タブ】
>着せ替えメニュー

*着せ替えを記録した状態に戻す.シェルが違う
:\_q記録時のシェルと現在のシェルが異なりますφ。\_q\x
>着せ替えメニュー

@着せ替えを記録した状態に戻す.処理1
(call(バイト値、1)着せ替えを記録した状態に戻す.処理2(バイト値、1)(S(C0)))

@着せ替えを記録した状態に戻す.処理2
\(A0)\![bind,"(A1)","(A2)","(A3)"]

オフライン

#34 2017-11-09 01:09:44

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

ありがとうございます。
少し理解に時間が掛かりましたが期待通り動きました。
ご丁寧にありがとうございました。

オフライン

#35 2018-01-15 23:16:54

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

SSP2.4.13.3000, 里々で開発をしております
原因が全く分からないのですが、自分が開発してるゴーストが
SSPカレントディレクトリ\date\script.txt

行22(#sspext_talkrandom4)と行236~行282(時報)と行426(#extimemessage verylong)を喋るようになりました
どうすれば抑制できるのでしょうか……

オフライン

#36 2018-01-16 15:18:15

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

>>35
・「旧仕様サポート」がONになっていないでしょうか
オーナードローメニュー(ゴーストのサーフェスかタスクトレイアイコンを右クリックすると出てくるもの)の、「設定」→「旧仕様サポート」にチェックが入っているとそうなります。もしONになっていたら、設定をOFFにしてみて様子を見てみてください。
そもそもONになっていなかった・OFFでも症状が変わらない、という場合はまたご連絡ください。

オフライン

#37 2018-01-16 23:09:14

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

#35です
改善しました。
ありがとうございます。

オフライン

#38 2018-08-04 08:44:12

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

里々で開発しています。
ドラッグしてきたファイルを指定の場所に指定の名前で保存する、という動作を目指しています。
解凍・圧縮したり壁紙を変更したりする動作と同じようなイメージなのですが
OnFileDrop2でファイルを渡す以降がどうしたらいいかわかりません。
ご助力お願いします。

オフライン

#39 2018-08-04 17:20:02

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

>>#38
ファイルを指定の場所に指定の名前で保存する、という機能は里々には今のところ無いはずなので、そういった機能を持つ何らかのsaori(YAYA as SAORIなど)(里々向け簡易解説)を使うといいと思います。

YAYA as SAORIでの作例が必要な場合は書きますのでご連絡ください。

オフライン

#40 2018-08-04 18:40:37

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

>>#39
ありがとうございます。
アドバイスのお陰で動作に成功しました。

オフライン

#41 2019-01-05 04:57:36

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

里々で開発中です。
ランダムトークなどバルーン表示中にOnMinuteChangeなどのイベントを発生させたいのですが、表示中バルーンの消滅を待機してしまいます。
例えば\tを指定していないトークはマウス系のイベントは受け付けるように
強制的にイベントを発生させる方法などはありますでしょうか?ご助言賜りたいです。

オフライン

#42 2019-01-12 15:17:40

ponapalt
メンバー
From: にせは○な地区 蟲取研
登録日: 2016-11-24
投稿: 12
ウェブサイト

Re: 里々での開発相談

少なくともSSP側ではバルーン表示中は特に何も制限かけてないんですが、ふつうにOnMinuteChangeに反応したら喋ってくれませんかね…?
里々の場合自動ランダムトーク機能の兼ね合いがありそうですけど。

オフライン

#43 2019-01-14 19:12:50

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

トークに選択肢を含んでいた為\*\tに関わらず消滅を待機していました。
選択肢をアンカーで代用して解決を図ってみます。ありがとうございます。

オフライン

#44 2019-01-15 11:09:52

ponapalt
メンバー
From: にせは○な地区 蟲取研
登録日: 2016-11-24
投稿: 12
ウェブサイト

Re: 里々での開発相談

「バルーン表示中」かつ「トークは終わった」場合は制限かけてませんが、
「トーク実行中」は他のトークと被らないように制限がかかっています。
選択肢表示中がダメなのは、実行中扱いだからだと思います。

無理やり![timerraise]を仕掛けた上で、分が変わった判定を仕掛けて対処することも可能ですが、トーク中や選択肢表示中に別のトークが割り込むのは操作体験上あまり良くないので、どうしてもという場合の最終手段として考慮してください。

オフライン

#45 2019-01-16 17:04:35

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 里々での開発相談

>>#44
ありがとうございます。
アドバイス大変助かりました。

オフライン

#46 2021-05-24 09:51:36

Katana2
メンバー
登録日: 2021-05-24
投稿: 3

Re: 里々での開発相談

質問よろしいでしょうか?


*冬服時メニュー
:\tなんですか?

_話を聞く    通常トーク
_話しかける
_季節限定トーク
_あなたはだれ
_夏服に着替えをする
_ミニゲーム    ミニゲームメニュー
_なんでもない

として、

*ミニゲームメニュー
:*\t何をする?

_キャップ投げ    キャップ投げゲームメニュー
_やめる    0つつかれ

としたのですが、

この間の「ミニゲーム」を押してもミニゲームメニューに飛びません。



>季節限定トーク    (乱数1~16)==1
>通常トーク

として、

*通常トーク
:(0)この前近所のそば屋とうどん屋に行ったんだけど、
うどん屋とそば屋が喧嘩してたよ。
(略)

などの通常トークなどを設定したのにランダムトークが流れないし、
上記1記載のメニューから該当の項目を押しても流れません。

これらはバグでしょうか?それども何か間違っているでしょうか?

オフライン

#47 2021-05-24 10:21:18

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

>>#46

_選択肢【タブ】ジャンプ先

↑この形式の選択肢がすべてダメな状態でしょうか?
ひとまず予想できる原因を挙げてみますので、ご確認をお願いします。

①選択肢イベントが正しく記述されていない可能性

辞書にOnChoiceSelectOnChoiceSelectExがある場合、それが正しく記述されていないと選択肢ジャンプがうまく行かないかもしれません。
もしどちらかが既に辞書にあるなら、OnChoiceSelectの場合はR0、OnChoiceSelectExの場合はR1へ飛ばすような記述になっていますか?
ケースバイケースですが、一例としては以下のような状態です。

*OnChoiceSelect
>(R0)
*OnChoiceSelectEx
>(R1)

オフライン

#48 2021-05-24 20:43:48

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

>>#46
おそらく、選択肢とジャンプ先の間の文字がスペースで書かれているのが原因だと思われます。
これはタブ文字(キーボードの左側にある「tab」というキーで打てます)でなければいけません。
この文字は基本的なウィンドウズのメモ帳では見えない文字なので、これが見えるエディタを使うか、さとりすとを使うなどをおすすめします。

ひとまず対処法を2つ挙げますので、どちらかを行ってください。

A. 普通にタブ文字を書く

挙げられた辞書の内容の該当箇所へこれらを貼り付けてください。

_話を聞く	通常トーク
_ミニゲーム	ミニゲームメニュー
>季節限定トーク	(乱数1~16)==1
B. replace.txtを使う

ghost/masterのディレクトリ(通常の場合、辞書があるのと同じ場所)にreplace.txtがあると思います。なければ作ってください。(辞書と同じテキストエンコードになるようにしてください)
以下のようにすることで、「【タブ】」がタブ文字へ置き換わります。
この場合、タブ文字の見えないエディタでも目視がしやすくなります。

◆replace.txtに追加する内容
何か既に書かれている場合、改行してから貼り付けてください。
【タブ】の右に見えないタブ文字がありますので、すべてコピーしてください。

【タブ】		

◆辞書での選択肢の書き方

_選択肢【タブ】ジャンプ先

オフライン

#49 2021-05-26 08:54:22

Katana2
メンバー
登録日: 2021-05-24
投稿: 3

Re: 里々での開発相談

確認したところ、タブ文字で記載されています。
れしばで見てみたところ、主な不具合としては
該当のテキストファイルが

カッコの対応関係が正しくない部分があります。
辞書は正しく読み込まれていません。

カッコを単独で表示する場合は φ( と記述してください。

という指摘がされている(どこかは不明)

--- Request ---
GET SHIORI/3.0
ID: OnChoiceSelectEx
Reference0: 話を聞く
Reference1: 通常トーク
Status: choosing,timecritical,balloon(0=0)
--- Operation ---
status code : 204
--- Response ---

--- Request ---
GET SHIORI/3.0
ID: OnChoiceSelect
Reference0: 通常トーク
Status: choosing,timecritical,balloon(0=0)
--- Operation ---
*通常トーク
not matched.
status code : 204
--- Response ---

と記載されていて表記されないというところです。
もう一方のミニゲームメニューも204エラーで表示されません。

オフライン

#50 2021-05-27 20:53:14

ろすえん
メンバー
登録日: 2015-12-21
投稿: 29
ウェブサイト

Re: 里々での開発相談

>>#49
カッコが閉じていないと、その括弧開き以降がカッコの中身として扱われてしまいます。
その中にランダムトーク(無名の関数)や関数(「*ミニゲームメニュー」など)があった場合ジャンプしません。
各種テキストエディタ(サクラエディタTeraPad、Mery、EmEditor、秀丸、VS Code、Atomなど)の対応する括弧を強調する機能や、さとりすとの「辞書の簡易エラーチェック」機能で探しやすくできます。
そのエラーが出ない状態にしてから、もう一度最初の症状が出ないかチェックしてみてください。

オフライン

Board footer