したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

ゴーストをつくろうとしてる人たちが話すスレ

1任意たん@age推奨:2017/07/02(日) 21:33:32
ゴーストをつくりたいんだ

1139任意たん@age推奨:2024/03/19(火) 14:31:26
すみません、質問させて下さい。
ゴーストのカラーピッカーを出して、¥1のうにゅうの色をカラーピッカーの色に替える、みたいなことをしたいのですが、どうすればいいのか分かりません。
ゴーストCOLORSのように色を反映させたいです。
imgctl_saori.dllというsaoriを使うのかな?と思うのですがどのようにすればいいでしょうか?

1140任意たん@age推奨:2024/03/20(水) 16:43:00
>>1139
この説明で行けそうでしょうか。


1. 普通のうにゅうの絵(以下、画像Aと略記)と、画像Aと同じ大きさの白一色の画像(以下、画像Bと略記)、画像Aと同じ大きさで色変えしたい箇所を完全な白、それ以外を完全な黒で塗りつぶした画像(以下、画像Cと略記)を用意する
※画像Cを作る際、アンチエイリアス(境界のぼかし)などがかからないように注意

2. 画像Cを「【画像Bのファイル名】.pna」というファイル名に変更する
pnaについて
https://ssp.shillest.net/ukadoc/manual/manual_shell.html#:~:text=%E3%81%AF%E5%88%B6%E9%99%90%E3%81%AA%E3%81%97%E3%80%82-,surface*.pna,-%E3%82%B5%E3%83%BC%E3%83%95%E3%82%A7%E3%82%B9%E3%81%AE%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1

3. 画像Aと画像Bをシェル定義して(画像Aの手前に画像Bがoverlayされるようにする)、ゴーストを起動し、白いうにゅうが表示されることを確認

4. さくらスクリプト「\![open,dialog,color,パラメータ]」でカラーピッカーを出す
https://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#_!_open,dialog,color,%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF_

5. カラーピッカーで指定された色を取得する
https://ssp.shillest.net/ukadoc/manual/list_shiori_event.html#OnSystemDialog
※イベントIDをOn〜にした場合、そのIDのイベントが発生する

6. imgctl_saori.dllをSAORIとして読み込む

7. imgctl_saori.dllにて、画像BへToDIBコマンドを実行する
※里々の場合、(pwd)でsatori.dllのある場所の絶対パスが得られる
そこから末尾の「ghost\master\」を消して、末尾に「shell\【シェルのフォルダ名】\【画像Bのファイル名】.png」を足せば画像Bの絶対パスができる

8. imgctl_saori.dllにて、7で得られたDIBハンドルと、座標0,0で、PixelDIBコマンドを実行する

9. imgctl_saori.dllにて、7で得られたDIBハンドルと、8で得られた0x00BBGGRR形式の整数と、5で指定された色を0x00BBGGRR形式の整数に変換したもの(R+G×256+B×256×256)とで、RepaintDIBコマンドを実行する

10. imgctl_saori.dllにて、画像Bのパスと、画像BのDIBハンドルとで、DIBtoPNGコマンドを実行する

11. さくらスクリプト「\![reload,shell]」でシェルを再読み込みする
https://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#_!_reload,shell_

12. 成功すればうにゅうの色が変わっている

13. imgctl_saori.dllにて、画像BのDIBハンドルへ、DeleteDIBコマンドを実行する

14. 再度色変えする時は、4〜13の手順を再び行う

1141任意たん@age推奨:2024/03/20(水) 16:46:51
>>1140 のURLリンクが不完全になってしまいました。
必要であれば、手動でコピペして飛んでください。

11421139:2024/03/20(水) 21:41:03
>>1140-1141
詳しく書いてくださりありがとうございます!!
多分できそうです!!やってみます!!

11431139:2024/03/22(金) 05:24:36
おかげさまでうにゅうの色を変えることができました。
ありがとうございます。
ですが、うにゅうの色が何度作り直しても白くならず黒いシルエットのうにゅうになってしまいます。
画像bを直接開いてみて色が変わったことは確認できました。
どのようにすればうにゅうの色が白くなりますでしょうか?
surfaces.txtにはこのように書いています。
surface10
{
element0,base,A.png,0,0
element1,overlay,B.png,0,0
}

11441139:2024/03/22(金) 05:30:56
一行目、間違えてうにゅうの色と書きましたが、
実際は色を変えることができました、でした。すみません。

11451139:2024/03/22(金) 07:00:42
何度もすみません、
どうやら真っ白一色の画像だと透過色だと判定されるので左上1ドットを違う色にすればいいことが分かりました
ただ、この場合、ユーザさんが左上の色と同じ色を偶然指定した時にまたおかしくなりそうです
確率としては低そうですが…

1146任意たん@age推奨:2024/03/22(金) 14:27:22
>>1145
色々と想定が抜けていました。すみません。
色変え用画像とシェルで使う画像を分け、imgctl_saori.dllのToneDIBで色変えすると良いかもしれません。

以下、具体的な手順です。

2-1. A.pngにうにゅうを白〜黒のグレースケールで描く。透過用の色は白黒以外でもよい。
白い部分ほど色が乗る。

2-2. B.pngの色変えしたい部分をrgb値(1,1,1)の黒、
それ以外は白(255,255,255)で塗りつぶした画像を、
B.png(シェル合成に使う用)およびC.png(色変更の元の素材)として保存する。
左上1ピクセルは白(255,255,255)にすること。
※ほんの少し不正確だが、真っ黒(0,0,0)だと指定された色によっては乗算がおかしくなる。

2-3. surfaces.txtでB.pngをoverlayしている箇所を、overlaymultiplyに書き換える。
例:
surface10
{
element0,base,A.png,0,0
element1,overlaymultiply,B.png,0,0
}

色変えは >>1140 の手順4〜13のうち、7〜10の代わりに以下を行う

2-4. imgctl_saori.dllにて、C.pngへToDIBコマンドを実行する

2-5. imgctl_saori.dllにて、3で得られたDIBハンドルと、
カラーピッカー後のOnSystemDialogのReference2とで、ToneDIBコマンドを実行する

2-6. imgctl_saori.dllにて、B.pngのパスと、3で得られたDIBハンドルとで、DIBtoPNGコマンドを実行する

11471139:2024/03/22(金) 22:10:32
>>1146
ありがとうございます。無事に動作確認しました。

11481139:2024/03/28(木) 17:14:55
何度もすみません。
\![reload,shell]でシェルをリロードした後にイベントの続きを書きたいのですが、うまくいきません。

*シェルのリロード
(imgctl_saori,DeleteDIB,(DIBハンドル))
\![reload,shell]
>色を教えたあとのトーク

こんな風に書いているのですが、シェルリロード前に「色を教えたあとのトーク」が一瞬表示された後シェルチェンジ→何も言わない
になってしまいます…。
シェルリロード後はどこに飛ぶのでしょうか?

1149任意たん@age推奨:2024/03/29(金) 08:42:16
\![reload,shell]では、シェルリロード後に喋りを書いても中断されてしまいます。
また、リロード後に喋れるイベントが来ることもありません。

そのため、\![change,shell,現在のシェル名]で同じシェルへ変更しましょう。
「*OnShellChanged」が来ます。(ここでゴーストが喋れます)

「*シェルのリロード」で変数に何かを入れておいて、
「*OnShellChanged」で通常時のシェル変更後の反応と分岐させてください。

喋り終わったら、変数を消すか中身を分岐しない内容に書き換えるかをしてください。

11501139:2024/03/29(金) 14:03:32
>>1149
ありがとうございます。
一度シェルチェンジするのですね。
OnSecondChangeで拾うしかないかなと考えていました。
ご助言助かりました。

1151任意たん@age推奨:2024/04/22(月) 23:10:42
どなたか助言をお願いします。

里々を使用しています。
ユーザから検索ワードを入力してもらい、Xで完全一致検索をする方法はありますか?

例)
\j[https://twitter.com/search?q="(検索ワード)"&src=typed_query&f=live]

結果)
Xで"(検索ワード)"と検索したページが開く
検索ワードは引用符で囲われている

完全一致検索がしたいのですが、さくらスクリプトで " を使用する方法はありますでしょうか?
SSP 2.6.62までは
\j[https://twitter.com/search?q=%22(検索ワード)%22&src=typed_query&f=live]
のような書き方で動いていたのですが、SSP 2.6.63のバージョンアップでURL内の%が%25に置換されるようになり、
想定した動作をしなくなってしまいました。。。

1152任意たん@age推奨:2024/04/23(火) 16:58:33
>>1151
さくらスクリプトでダブルクォーテーションを引数に含める方法は、現状では無さそうです。
https://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#notes_escape

SSPのバージョンアップによる変更では、URLを取り扱うとき、URLエンコードされていない文字列(全角文字など)が含まれていると、自動的にURLエンコードされるようです。
なので文字列をURLエンコードできれば問題なくなるのですが、里々単体では少し困難です。
AKARI as SAORIなどを導入するのが比較的簡単な方法かと思います。
AKARI as SAORIの配布ページ: https://github.com/nikolat/akari-as-saori
※右側の「Releases」→「akari-as-saori.zip」からDLできます。(上ほど新しい)


この下に、AKARI as SAORIを用いた実装例を書いておきます。
※タブ文字を【タブ】と表記しています。
※区切り字問題を避けるため、vncallを使用しています。
〜〜〜〜
*検索テスト
$検索ワード【タブ】ユーザの入力した文字列
$検索ワード【タブ】(vncall,akari,URLエンコード実行1,検索ワード,URLエンコード実行2)
\j["https://twitter.com/search?q=%22(検索ワード)%22&src=typed_query&f=live"]

@URLエンコード実行1
urlencode
@URLエンコード実行2
utf8

1153任意たん@age推奨:2024/04/23(火) 23:19:25
>>1152
ご教授ありがとうございます!
ご指摘の方法で、希望の動作をするようになりました。
URLエンコード出来るSAORIを探してもみたのですが、灯の中に含まれていたとは気付きませんでした……伺かの奥深さを思い知りました。
実装方法までご案内くださり、大変助かりました。
ありがとうございます。

1154任意たん@age推奨:2024/04/26(金) 08:17:37
SAORIを使わずにダブルクオートを引数に含める方法がドキュメントに追記されました。
(謝辞:Donさん)
https://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#notes_escape

1155任意たん@age推奨:2024/04/26(金) 09:07:51
>>1154
ありがとうございます、助かります。
(検索ワード)にダブルクオートが連続で奇数個(1、3、5〜)入っているとおかしくなるので、
検索用URLを開く前に取り除いておくなど対処の必要がありますね。

〜〜〜〜
*検索テスト
$検索ワード【タブ】ユーザの入力した文字列
$検索ワード【タブ】(vncall,erase,検索ワード,ダブルクオート)
\j["https://twitter.com/search?q=""(検索ワード)""&src=typed_query&f=live"]

@ダブルクオート
"

1156任意たん@age推奨:2024/04/27(土) 23:15:23
>>1155
色々な方法があるのですね。
AKARI as SAORIで先にURLエンコードするのが一番安全かな?と思い、こちらの方法を採用しました。
SAORIを増やさない対応方法も、今後活用していきたいです。

今回の件と直接は関係ないのですが、*sakura.recommendsites で
ジャンプ先URLに()を含めるとジャンプ時に表示される会話文が再生されないようでした。
もし理由や回避方法をご存知だったら教えていただけますでしょうか。
お気に入りメニューから機能実行→URLジャンプとトーク再生、といった方法で何とかなってはいるのですが…

1157任意たん@age推奨:2024/04/29(月) 13:01:12
>>1156
後半の件、自分の所でも試してみました。
れしばを見つつ実際に動作させると、URLジャンプは動作する&スクリプト(会話)が空、の状態でOnRecommendsiteChoiceが来ますね。
現状でできる回避方法は、おっしゃられている通りの方法(URLにスクリプトを入れて別の関数に飛ばす)のが一番簡単かつ簡潔に済みそうです。
この現象が里々の不具合なのか仕様なのかはわかりませんでした。

1158任意たん@age推奨:2024/05/01(水) 05:02:18
yayaテンプレの紺野ややめが起動できない(正確にはそれに同梱されているyaya.dllが動かない)…
SSPは最新2.6.64です

1159任意たん@age推奨:2024/05/02(木) 21:40:29
>>1157
確認いただきありがとうございます。
やっぱり、現段階では難しそうですね…
里々Mc169-4で今回の件を対応してくださったようなのですが、完全ではないようなので、現状の処理が一番安全かな…となりました。
自分が大事な記述を見落としてるだけ…とかではなかったので、ひとまずホッとしています。
ご協力ありがとうございます。

1160任意たん@age推奨:2024/05/12(日) 13:52:16
>>1158
なんというタイミング……。
もう10日も過ぎているから自己解決してる気もするが、おそらく同じところで躓いて整備班BTSに泣きついた身としては一応ここにも書いておこうかと。
紺野ややめはnarのやつを使う。
配布場所へのリンクは文屋の「新規ゴースト作成」ページで探す。
ここから入手できたものが「安定版」のテンプレゴーストであり配布用のYAYAということ、らしい。
githubから入手できるやつは最新の「開発版」だと解釈している。
それは単体だと「dic/system」に辞書が入ってないので動かない。
「開発版」で作りたいなら「yaya-dic」とかいうリポジトリだかがあるからそこから辞書を入手して組み合わせれば動くのではなかろうか(試してないが)。

1161任意たん@age推奨:2024/12/14(土) 23:40:48
シェルについて質問させてください。live2Dのような動きをするシェルはどのようにすれば作れますでしょうか?連番pngを出力するというのはわかります。表情を付けたりまばたきや口パクをさせたり、さらにポーズ差分を付けるとなると複雑でわからなくなります。ご助言いただけると嬉しいです。

1162任意たん@age推奨:2024/12/15(日) 05:42:17
>>1161
まずLIVE2Dのような動きをしない普通のシェルは作れますか?

1163任意たん@age推奨:2024/12/15(日) 09:08:49
ありがとうございます。
一応作ることは出来ますが、シェル制作についての知識の足りなさも痛感しています。色々方法があるとは思いますしどの程度の動きをさせたいのかによっても作り方は変わると思いますので最初に漠然とした質問をしてすみませんでした。
以前作った試作品についてお話させてください。
本体、目、口、前髪とパーツをレイヤ分けし、ゆらゆらする動作を作りました。これをそれぞれパーツごとに30コマの画像として出力し、以下のように組みました。まばたきと口パクも数コマ出力しています

//本体+目+口
surface0
{
element0,base,0000.png,0,0
element1,overlay,eye/0000.png,0,0
element2,overlay,mouse/0000.png,0,0
}
(略)
surface30
{
element0,base,0030.png,0,0
element1,overlay,eye/0030.png,0,0
element2,overlay,mouse/0030.png,0,0
}
//まばたき
surface100
{
element0,overlay,eye-blink/0000.png,0,0
}
(略)
surface106
{
element0,overlay,eye-blink/0006.png,0,0
}
//前髪
surface200
{
element0,base,forelock/0000.png,0,0
}
(略)
surface230
{
element0,base,forelock/0030.png,0,0
}
//口パク
surface300
{
element0,overlay,mousoe-talk/0000.png,0,0
}
(略)
surface304
{
element0,overlay,mouse-talk/0005.png,0,0
}
surface.append0
{
animation0.interval,always
animation0.option,shared-index
animation0.pattern1,base,1,20,0,0
animation0.pattern2,base,2,20,0,0
(略)
animation0.pattern29,base,29,20,0,0
animation0.pattern30,base,30,20,0,0
//まばたき
animation1.interval,sometimes
animation1.option,shared-index
animation1.pattern1,overlay,101,10,0,0
animation1.pattern2,overlay,102,10,0,0
animation1.pattern3,overlay,103,10,0,0
animation1.pattern4,overlay,104,10,0,0
animation1.pattern5,overlay,105,10,0,0
animation1.pattern6,overlay,106,10,0,0
animation1.pattern7,overlay,-1,10,0,0
//前髪
animation5.interval,always
animation5.option,shared-index
animation5.pattern1,overlay,201,20,0,0
animation5.pattern2,overlay,202,20,0,0
(略)
animation5.pattern29,overlay,229,20,0,0
animation5.pattern30,overlay,230,20,0,0
//口パク
animation6.interval,talk,2
animation6.option,shared-index
animation6.pattern1,overlay,301,20,0,0
animation6.pattern2,overlay,302,20,0,0
animation6.pattern3,overlay,303,20,0,0
animation6.pattern4,overlay,304,20,0,0
animation6.pattern5,overlay,-1,20,0,0
}
・目(まばたき)の上に前髪が来るように前髪は別アニメとして設定しています
・表情変更された時アニメがリセットされないようanimation*.option,shared-indexを設定しています
・まばたきは目パーツ30コマ分の範囲がマスクされるように肌色を下に置いています。口パクも同様です

これで一応ゆらゆら動作させることは出来るのですが、顔の位置が変わる画像に対してsometimeとoverlayでまばたきを設定するのはそれほどいい設定方法だとは思えずにいます。口パクも同様です。
animation0の顔の位置と連動してanimation1でまばたきができるといいのですがよくわからずにおりました。画像制作の時点で工夫すべきなのか記述で何とか出来るのか悩んでいます。ご助言いただければ幸いです。

1164任意たん@age推奨:2024/12/15(日) 12:22:32
>>1163
element0,base,0000.png,0,0
は本体の顔で、0001.png〜0030.pngにかけて角度が変わっていくものと推察します
以下はその推察に基づいてお話します。

surface0とsurface1とでは顔の角度が変わるので
前髪、目、口の角度も相応に変わるかと思います
そのため、surface0のまばたきとsurface1のまばたきとでは
パーツの角度が違うために別々に設定する必要があるはずです

surface.append0の内容のうち
animation0は顔の角度のアニメーションなので
これは削除して独立させます

animation1以下はsurface0用のアニメーションなので
これらはすべてsurface0内に統合します

surface1内に
element0,base,0001.png,0,0用の角度の前髪、まばたき、口パクを記述します
これらに使用されるパーツはbase,0001.png用の角度で作られるので
surface0のまばたき用のsurface100〜surface106は使用できません
前髪、口パクについても同様です

surface0〜surface30用にそれぞれ専用のアニメーションを設定したら
surface1000(数字は適当)
{
element0,base,0000.png,0,0
element1,overlay,eye/0000.png,0,0
element2,overlay,mouse/0000.png,0,0

animation0.interval,always
animation0.option,shared-index
animation0.pattern1,base,1,20,0,0
animation0.pattern2,base,2,20,0,0
(略)
animation0.pattern29,base,29,20,0,0
animation0.pattern30,base,30,20,0,0
}
とすることで顔の角度に合わせて
各パーツがアニメーションするサーフェスができるかと思います

動作確認ができないので
多分そうだろうという予測で書いています
違っていたらごめんなさい

1165任意たん@age推奨:2024/12/15(日) 20:24:39
>>1164
ご推察いただいた通りの仕様です。0000.pngは顔と体パーツになり、0001.png〜0030.pngにかけて少しずつ角度が変わった後0000.pngの位置に戻りループするものです。説明不足を補って読み解いてくださり感謝いたします。
それとmouthがmouseという誤記になっておりました。紛らわしい記述をしてしまい申し訳ありません。

surface0-30 顔体・目・口パーツ
surface100-130 まばたき画像1(半目)
surface140-170 まばたき画像2(閉じる)
surface300-330 口パク画像1(半開け)
surface340-370 口パク画像2(開ける)
surface200-230 前髪画像
それぞれsurface0-30に対応して位置・角度が変わりループする画像です

surface.append0
{
//まばたき
animation1.interval,sometimes
animation1.option,shared-index
animation1.pattern1,overlay,100,50,0,0
animation1.pattern2,overlay,140,50,0,0
animation1.pattern3,overlay,-1,50,0,0
//口パク
animation2.interval,talk,1
animation2.option,shared-index
animation2.pattern1,overlay,300,50,0,0
animation2.pattern2,overlay,340,50,0,0
animation2.pattern3,overlay,-1,50,0,0
//前髪
animation3.interval,always
animation3.option,shared-index
animation3.pattern1,overlay,200,0,0,0
}
(略)
surface.append30
{
//まばたき
animation1.interval,sometimes
animation1.option,shared-index
animation1.pattern1,overlay,130,50,0,0
animation1.pattern2,overlay,170,50,0,0
animation1.pattern3,overlay,-1,50,0,0
//口パク
animation2.interval,talk,1
animation2.option,shared-index
animation2.pattern1,overlay,330,50,0,0
animation2.pattern2,overlay,370,50,0,0
animation2.pattern3,overlay,-1,50,0,0
//前髪
animation3.interval,always
animation3.option,shared-index
animation3.pattern1,overlay,230,0,0,0
}

surface1000
{
element0,base,0000.png,0,0
element1,overlay,eye/0000.png,0,0
element2,overlay,mouse/0000.png,0,0

animation0.interval,always
animation0.option,shared-index
animation0.pattern1,base,1,20,0,0
animation0.pattern2,base,2,20,0,0
(略)
animation0.pattern29,base,29,20,0,0
animation0.pattern30,base,30,20,0,0
}

以上のように作り直してみました。
ご指示に添えているかあまり自信がありません。確認いただきご指摘があればお願いいたします…。
この状態でsurface1000を確認するとアニメは0(ALWY)のみが表示されアニメしています。surface0-30に設定した各アニメは表示されません。
surface0-30にはそれぞれ1(RAND),2(TALK),3(ONCE)が設定されており1と2を選ぶとまばたきと口パクをし、前髪が表示されています。

1166任意たん@age推奨:2024/12/16(月) 02:24:22
横槍失礼します。
現時点でのSSPでは、アニメーションからアニメーションを呼び出すことは(着せ替えのbind以外では)できなかったと思います。
(surface1000からアニメーションとして呼び出したsurface0〜30のアニメーションは動作せず、
ベースサーフェスのみが表示される)
参考情報1: https://ssp.shillest.net/ukadoc/manual/descript_shell_surfaces.html#introduction_drawmethod
参考情報2: https://wikiwiki.jp/ukatec/%E5%A4%9A%E9%87%8D%E7%9D%80%E3%81%9B%E6%9B%BF%E3%81%88%E5%AE%9A%E7%BE%A9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

そのため、構成段階での工夫が必要になります。
(体全体が動くモーションをするタイミングとまばたき口パクをするタイミングを分ける等)

1167任意たん@age推奨:2024/12/16(月) 19:34:44
>>1166
ありがとうございます。情報をいただけて助かります。
素人考えですが、アニメーション呼び出しが必要な部分(まばたき、口パク、前髪等)は多重着せ替えで設定することで上手くいきそうにも思えます。
単純に>>1165のsurface1〜30のまばたき、口パクアニメーションをbindで設定し直せばよさそうと思ったのですが、surface1000にもanimation1〜3を設定しなければおそらく動きませんし、surface1000に設定されたanimation1〜3はHUBサーフェスでなければそこに設定されたアニメをするだけだと思われました。結局以下のように書いてみましたがこれは失敗です。
(surfaces.txt)
surface.append1000
{
animation0.interval,bind+always
animation0.option,shared-index
animation0.pattern1,base,1,20,0,0
(略)
animation0.pattern30,base,30,20,0,0
//まばたき
animation1.interval,bind+random,5
animation1.pattern1,overlay,5000,50,0,0
animation1.pattern2,overlay,5001,50,0,0
animation1.pattern3,overlay,5000,50,0,0
animation1.pattern4,overlay,-1,50,0,0
}
//まばたき1
surface5000
{
element0,base,hub.png,0,0
animation0.interval,bind+always
animation0.option,shared-index
animation0.pattern0,overlay,100,20,0,0
(略)
animation0.pattern30,overlay,130,20,0,0
}
//閉じ
surface5001
{
element0,overlay,hub.png,0,0
animation0.interval,bind+always
animation0.option,shared-index
animation0.pattern0,overlay,140,20,0,0
(略)
animation0.pattern30,overlay,170,20,0,0
}
(descript.txt)
sakura.bindoption.group,基本動作,mustselect
sakura.bindgroup0.default,1
sakura.bindgroup0.name,基本動作,ー
sakura.bindoption.group,まばたき,mustselect
sakura.bindgroup5000.default,1
sakura.bindgroup5000.name,まばたき,ー
まばたきのHUBサーフェスであるsurface5000と5001にanimation0をalwaysで設定することでsurface1000と同じタイミングでちょうどいい画像が呼び出されるといいなと思いましたが、理解が足りていませんでした。多重着せ替えは便利ですが難しいです。出来そうではあるように思いますが…。

おっしゃっていただいたように構成段階での工夫をするのが無難に思われます。ご助言に感謝いたします。
例えば、まばたきは体全体が動くモーションに組み込んでもいいのかもしれません。そして口パクは諦めて、トーク時はゴースト側で口を開けた表情に変更することでそれっぽさは出そうです。
または、まばたき口パクに使われる目や口の位置は、どこに来てどの組み合わせになっても違和感ない程度の範囲で動かすという画像を制作をするのもいい方法かもしれません。
もう少し試行錯誤を続けてみます。ありがとうございます。

1168任意たん@age推奨:2024/12/16(月) 21:49:04
>>1167
シェル「Heavy Pressure」でそれに近い実装がされていますね
https://cherry.narnaloader.ukagaka.net/ghost.php?ghost=heavy_pressure

1169任意たん@age推奨:2024/12/17(火) 18:18:40
>>1168
教えていただいてありがとうございます!すごい!これが見てみたかったというそのものが…

1170任意たん@age推奨:2025/03/29(土) 20:33:34
初心者ながらどうしても分からない点があってご相談させてください。
現在、里々を使用してゴーストを作成しているのですが、里々Wikiに書かれている「初回起動イベント」と同じものを作成した所、
その条件式が作動してジャンプ先にジャンプをしてくれません。以下はそのプログラムです。

*初回
>起動【タブ】(初回イベントを完遂)==1

:テスト

\![raise,初回イベント完了]

###インラインイベント
*初回イベント完了
$初回イベントを完遂=(初回イベントを完遂)+1


*起動
>初回【タブ】(初回イベントを完遂)==0
>(時間帯)に起動

問題点についてですが、2回目の起動時、初回イベントを完遂が0の場合に本来は「初回」の方へジャンプさせたいのですが
「(時間帯)に移動」にジャンプしてしまいます。里々Wikiの「困ったときの対処法」のページも読みましたが、
どうしても解決する事が出来なかったので、もしよろしければ原因を教えていただけると幸いです。

1171任意たん@age推奨:2025/03/29(土) 20:52:07
何度も書き込みしてしまいすみません。>>1170です。
前レスや対処法のページを確認して気づきましたが、どうやら「replace.txt」「replace_after.txt」の二つのファイルが
存在しなかったせいで動かなかったようです。ご迷惑をおかけしました。

1172任意たん@age推奨:2025/05/04(日) 14:43:10
どなたかご助力お願いします。
ゴーストの開発初心者です。
ななっち様配布の、
ゴースト開発のとっかかりとして「いじってもいい」ゴースト
として配布されています、
湯空温泉 旅館舞桜別館をベースに改変してみようと、
さとりすと2を使わせて頂きながら触っているところなのですが、
「次に喋るトークを予約する」
という機能を、思ったように動かせないでいます……。

里々wikiのランダムトークについてのページに記載されています、下記のとおりにコピペ


:トラックにかぼちゃ、なす、トマトが乗っています。
急カーブで落ちたのはどれ?
:えーと……。
$次のトーク【タブ】答え

*答え
うーむ、わからん。
:答えは「スピード」でした。
ざんねーん。

(※【タブ】の部分については、キーボード端にあるTabキーを押して空白のみを入れ込んだうえで、
さとりすとの編集画面上に表示される、$次のトーク>> 、という変数が黄色になっていること、
ジャンプ先の項目の名前欄には、答え、という次のトークの題名も記入しています)

しているつもりなのですが、
ジャンプ先の次のトークだけではなく、その他の通常のランダムトークも順序を無視して喋ってしまいます。
どうすれば正しく次のトークを予約し、トークを続けられるでしょうか?

1173ナマモノ7号 ◆AglxOFU/zQ:2025/05/04(日) 16:42:54
>>1172
「湯空温泉 旅館舞桜別館」では、ランダムトークは無名の「*」ではなく、「*ランダムトーク」という文として書かれているようです。
なので、前半の『トラックにかぼちゃ(略)』というトークの名前を「*ランダムトーク」にしてみてください。

また、キャラをつついてランダムトークをしてもらう選択肢では、予約トークが行われないようになっています。
つつきメニューの選択肢でも予約があればそのトークをする、という状態にしたい場合、dic_menu.txtにある以下の項目を変更してください。

#変更前
*ランダムトークをきく
>ランダムトーク

#変更後
*ランダムトークをきく


1174任意たん@age推奨:2025/05/04(日) 19:09:07
つつきメニューの選択肢でも予約があればそのトークをする、
という状態にはできたと思います、これも悩んでいたところでした。
ありがとうございます……!
ただ、トークの予約はまだ完全にできているようではないようで、
順序が守られず他のトークに飛んだり、
1、2,3つの順で予約してあるトークのうち、
1、2まではつづくのに、3つめは喋らず、他のトークになってしまいます。

ちなみに、頂いたアドバイスにおいて、

前半の『トラックにかぼちゃ(略)』というトークの名前を
「*ランダムトーク」にしてみてください。

というのは、
下記のような修正方法である、という解釈で正しかったでしょうか?

#変更前

:トラックにかぼちゃ、なす、トマトが乗っています。
急カーブで落ちたのはどれ?
$次のトーク 答え

#変更後
*ランダムトーク
:トラックにかぼちゃ、なす、トマトが乗っています。
急カーブで落ちたのはどれ?
$次のトーク 答え

1175任意たん@age推奨:2025/05/04(日) 20:10:48
>>1174
多分こうなっているんじゃないかというのを推測で返信していますが、
違ったら教えてください。

>ただ、トークの予約はまだ完全にできているようではないようで、
>順序が守られず他のトークに飛んだり、
>1、2,3つの順で予約してあるトークのうち、
>1、2まではつづくのに、3つめは喋らず、他のトークになってしまいます。

里々は「*【題名】」という文(*で始まるもの)が複数あると、それらの中から1つだけをランダムに選んで実行します。
「湯空温泉 旅館舞桜別館」では、里々本来のランダムトークである「*」を、「*ランダムトーク」へジャンプするためだけに使っています。
そのため、里々wikiにあるように「*」でトークを書いてしまうと、トークは複数個の「*」からランダムで実行されてしまいます。

#〜〜〜〜
#例の始まり
#〜〜〜〜


>ランダムトーク
#このゴーストでは、ここ以外に無名の「*」が存在しないようにしてください

#*
#:このトークのシャープを外すと、一つ上の「φ*」と
#このトークとの、どちらかがランダムで選ばれてしまいます。

#※φは、里々で意味のある文字(*など)を無効化するために使っています※

*ランダムトーク
:このトークには続きがあと2個あります。
いま喋っているのは1個めです。
$次のトーク ランダムトークの続き1

*ランダムトークの続き1
:このトークには続きがあと1個あります。
いま喋っているのは2個めです。
$次のトーク ランダムトークの続き2

*ランダムトークの続き2
:このトークは前のトークの続きです。
いま喋っているのは3個めです。

*ランダムトーク
:これは特に続きのないトークです。
例として入れてあります。

#〜〜〜〜
#例の終わり
#〜〜〜〜


>ちなみに、頂いたアドバイスにおいて、(略)
その解釈で合っています。

1176任意たん@age推奨:2025/05/04(日) 20:15:36
>>1175 にて、変数代入のタブ文字(「$次のトーク」の後)が、投稿の際に空白になってしまいました。
実際の辞書ではタブ文字にするなどしてください。

1177任意たん@age推奨:2025/05/04(日) 21:29:52
>>1172です。

>>1175さん、詳細かつ例文の記述まで、ありがとうございます。
けれども、申しわけありません。
未だ解決に至れておりません……。
示して頂いた例文について、質問させてください。


>ランダムトーク
#このゴーストでは、ここ以外に無名の「*」が存在しないようにしてください

の、ここ以外、というのは、どこの場所を示すものでしょうか。
さとりすと上の表記になりますが、
画面左端に出るファイルイベントツリーの中に並んでいる
*ランダムトーク
あるいは、その真下にある
* (※ここに記述されている、>ランダムトーク、のこと)
ものを指しているのでしょうか……?

自らの無学ゆえ理解が至らないとは弁えているつもりです。
お手数おかけして申し訳ありません……。

1178任意たん@age推奨:2025/05/04(日) 21:51:42
>>1177
さとりすとをリスト化モードで使っているのですね、気付いていませんでした。すみません。
(さとりすとを初期状態から変更していなければリスト化モードの状態です)

>の、ここ以外、というのは、どこの場所を示すものでしょうか。
後者です。

さとりすとの表示で言うと、左枠「dic_talk.txt」の中に「*」があり、それをシングルクリックすると下枠に「>ランダムトーク」が出ます。
・そこに「>ランダムトーク」のひとつだけがあり、それ以外のものは何もない
・ゴースト内の他のdic_〇〇.txtすべてを含めた中に「*」が無い
という状態にしてください。
「*」が複数ある、または「*」の中身が複数あると、どれが実行されるかわからなくなってしまいます。

以下はさとりすとのスクショです。
https://i.postimg.cc/NMfWS194/image.png

1179任意たん@age推奨:2025/05/04(日) 22:12:30
>>1178
追加のスクショです。 >>1175 の例をさとりすとで入力したものです。
https://postimg.cc/Cn8jdYCb
https://postimg.cc/8svWRpW6
https://postimg.cc/HJj8Vddj
https://postimg.cc/rDftVK6v

1180任意たん@age推奨:2025/05/04(日) 22:34:33
>>1177
横から失礼します
里々wikiの*の項目を読むと役に立つかもしれません
https://soliton.sub.jp/satori/?%E7%89%B9%E6%AE%8A%E8%A8%98%E5%8F%B7%E4%B8%80%E8%A6%A7#d0671588

1181任意たん@age推奨:2025/05/04(日) 22:57:38
スクショまで……ありがとうございます!
例文と、試しに自作したトークともに、
予約の順序通りに続けられるようになってきました!
ただ不思議なことに、ソロゴーストなのでkero側は存在しないはずなのですが、
例文のふたつめ以降で、
吹き出しの位置、向き、ともにsakura側とは異なる、
明らかにkero側としか思えないバルーン表示にくわえて、

?このトークには続きがあと1個あります。
いま喋っているのは2個めです。

?このトークは前のトークの続きです。
いま喋っているのは3個めです。

と言った具合に、
本来なら、ːがあるべき文頭に?が入ってしまいます。
さとりすとを閉じて開きなおし、例文のトークを確認したところ、
閉じる前はたしかにːだった文頭が?に変化していて、
自分の頭も疑問符だらけになってます……。
複数回、さとりすとを閉じ開きして確認したので、
見間違いではないはずですが、これはどうすればいいのでしょうか?

1182任意たん@age推奨:2025/05/04(日) 23:08:04
>>1180さん
ありがとうございます……!
改めて読みなおしてきます(/・ω・)/

1183任意たん@age推奨:2025/05/04(日) 23:40:37
>>1181
なぜかはわかりませんが、全角コロンが文字化けていますね。
誤 「ː」
正 「:」

1184任意たん@age推奨:2025/05/05(月) 00:02:05
>>1183さん
ごめんなさい、単純なことに半角でコロンを置いていたみたいです……(恥9
文字化けによるkero側出現、解決しました。
それと、おそらくですが次のトークの予約の記述も、
問題なくできるようになったと思います。スムーズに動かせています。
非常に助かりました……!
夜分遅くまでお力添えしていただき、ありがとうございました( ˘ω˘ )

1185任意たん@age推奨:2025/05/05(月) 20:37:51
>>1172の者です。
昨日、大変お世話になりました。
またご助力願いたく、質問させてください。
自作のマスターシェル(キャラクター何とか機とコロペタを使用して作成)を使いたいため、
湯空温泉 舞桜旅館別館のshellフォルダと、自作shellのフォルダを、
フォルダごと入れ替えてみたところ、
ランダムトークや予約トーク、つつきメニューの表示とその内容の操作などは問題なく動くものの、
頭なでられや胸つつかれの触り反応が機能しなくなりました。
カーソル表示は、shellフォルダの入れ替え前までと同じ、
頭や胸の該当部位に重ねると手のマーク形状には変化します。
どうすれば、自作のshellでも頭なでられや胸つつかれによる、
触り反応のトークを以前のように出せられるのでしょうか……。

1186任意たん@age推奨:2025/05/05(月) 21:32:05
>>1185
触り部位のIDが違ってたりはしてないでしょうか?
例えば、頭のIDが元シェルでは『Head』、自作シェルでは『head』と違っていた場合、
頭に当たり判定があること自体は同じなのでカーソル変化は発生するものの、
触って呼び出されるトークは元シェルの場合は『0Head〜』、自作シェルの場合は『0head〜』となり、元シェルと自作シェルでトークが発生するしないが分かれることになります。
IDは、さとりすとでしたらサーフェスビューワv3タブを開いてから『設定』→『触り判定を表示』で視覚的に確認できます。
自作シェルの触り部位のIDと、元のシェルの触り部位のIDに違いがないかをチェックしてみてください。

1187任意たん@age推奨:2025/05/05(月) 21:37:05
>>1185
自作シェルの方のsurfaces.txtはご自分で書かれたものをお使いでしょうか?
その中に「collision【数字】,【数字】,【数字】,【数字】,【数字】,【当たり判定の名前】」のような箇所があると思います。
そこの当たり判定の名前が「Bust」「Head」のように大文字アルファベットになってしまっていませんでしょうか?

自作シェルの記述(surfaces.txtなど)とゴースト側の記述(dic_call_response.txtにある)が一致するようにしてください。
(アルファベットの大文字小文字は基本的に別の文字として認識されます)

※余談ですが、SSPはアルファベット大文字小文字に関わらず、
head・Head・HEAD(頭)やbust・Bust・BUST(胸)のような名前の当たり判定に対して、自動的にカーソルの形を変えてくれているようです。

1188任意たん@age推奨:2025/05/05(月) 22:14:34
>>1186さん
触り部位のIDが違っていました。
ご推察のとおり、Headとheadという形で、大文字と小文字の差異が原因だったようです。
記述を揃えたところ、問題なく動作できるようになりました。
初歩的な見落としでした、お恥ずかしい限りです……。
ご返信とご助言、ありがとうございました!


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板