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

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

1089任意たん@age推奨:2022/11/05(土) 19:03:02
横から失礼します。
里々だとこんな感じになりますね。

以下は着せ替えの例です。
シェルの場合は「@着せ替え全部解除」を削除し、「@ランダムにしたい着せ替えパターン」に「\![change,shell,シェルの名前]」を列挙します。
【タブ】はキーボードでtabキーを押したときに出るタブ記号に変換してください。

#起動イベントを差し替える
#まず着せ替え処理してから起動処理や起動トークをする
#起動時に別のイベント入れてるなら、それも同じような修正がいる
#具体的には「*OnGhostChanged」と「*OnVanished」がある場合同じ修正をする

#----追加ここから
*起動
(set,着せ替えトーク無効フラグ,1)(着せ替え全部解除)(ランダムにしたい着せ替えパターン)(起動時の処理)(set,着せ替えトーク無効フラグ,)
#----追加ここまで

#今までの「*起動」の名前だけを「*起動時の処理」に変更する
*起動時の処理
>なんかイベント【タブ】(なんか条件)
>普通の起動

*普通の起動
:ようこそ

*普通の起動
ようきたな
:いらっしゃい

#----処理部追加ここから
#まずは着せ替えを全部解除した状態にしてから、付けたい着せ替えだけ装着させる

#カテゴリ名を空にすると、そのカテゴリ全てを操作できる
@着せ替え全部解除
\![bind,帽子,,0]\![bind,服,,0]#シェルに存在する着せ替えカテゴリ全部の解除記述をしておく

@ランダムにしたい着せ替えパターン
\![bind,帽子,ハット,1]\![bind,服,ジャケット,1]
\![bind,帽子,ヘルメット,1]\![bind,服,作業服,1]

#----処理部追加ここまで

#着せ替え時にトークしてる場合、一旦無効化しておく
#辞書に「*OnDressupChanged」がないなら以下は不要
*OnDressupChanged
>なにもしない【タブ】(着せ替えトーク無効フラグ)
>(R0)側が(R1)を装着【タブ】(R2) == 1

*0側がヘルメットを装着
:ご安全に!

*なにもしない
#処理を何も書かない

1090任意たん@age推奨:2022/11/05(土) 20:20:11
>>1089
詳しく教えてくださりありがとうございます!

ただ、>>1089をコピペさせていただき記述してみたのですが、
理解が足らないためか思うような挙動になりませんでした…
そこでお願いなのですが、「伺か投稿場」さんの汎用アプロダにゴーストのフォルダを丸ごとアップロードしたので
ファイルを直接見ていただいてアドバイスを頂戴することは可能でしょうか
重ね重ねのお願いになってしまい恐縮です…

1091任意たん@age推奨:2022/11/05(土) 21:55:19
>>1090
失礼しました。
「*起動」に「:」(全角コロン)をつけてください。
着せ替えは\0側にしか設定されていないのに、スコープ切り替えの「:」がないため、\1側を着せ替えようとしています。

*起動
:(set,着せ替えトーク無効フラグ,1)(着せ替え全部解除)(ランダムにしたい着せ替えパターン)(起動時の処理)(set,着せ替えトーク無効フラグ,)

1092任意たん@age推奨:2022/11/05(土) 22:05:32
>>1091
ありがとうございます。コロンをつけ足したところ無事理想の状態になりました!
この度は大変お世話になりました!

1093任意たん@age推奨:2022/12/07(水) 01:34:50
初心者質問ですみません。
loopを使ってユーザーからもらった単語をリストにしているのですが、
これに個別でお気に入りマークを付けたい場合どのようにしたらいいでしょうか…
クリックで☆→★と変化させたいのですが、個別に変更できず全て同じマークになってしまったり上手く動いてくれません。
分かりにくい説明で恐縮ですが、アドバイス頂けたら嬉しいです

1094任意たん@age推奨:2022/12/07(水) 09:03:51
里々を使っているとして回答します。
「*OnUserInput」があり、入力すると「*〜〜を教えてもらった」にジャンプすること前提です。

注意事項として、半角のカンマとアンダーバーが単語に入れられません。

「*テストメニュー」は任意の名前にしてください。
「*テストメニュー」へジャンプする処理が2箇所になるので変更を忘れないようお願いします。

「教えてもらった単語」にユーザが入力した単語を追加していく処理としています。
現在のユーザからもらった単語を格納している単語群の名前に置き換えてください。
単語群の名前のほか、3箇所にあります。

#----satori_conf.txt
#「*初期化」の一番最後の行に追加
*初期化
#既存の処理
$お気に入り単語=なし
#----satori_conf.txt

#----任意の辞書ファイル
*テストメニュー

_単語を教える
_単語のリスト

*単語を教える
:※半角のカンマと半角のアンダーバーは使えません。
\![open,inputbox,追加単語]

#半角のカンマが入ると処理がエラーになるので半角カンマを削除する
*追加単語を教えてもらった
(単語の追加、教えてもらった単語、(erase(バイト値,1)(追加単語)(バイト値,1),))
>テストメニュー

*単語のリスト
$単語群「教えてもらった単語」の重複回避=降順、トーク中
(loop,単語リスト化処理,(単語群「教えてもらった単語」の数))
$一時・単語=
_メニューに戻る テストメニュー

*単語リスト化処理
$一時・単語=(教えてもらった単語)
:(when,(count,(お気に入り単語),_(一時・単語)),★,☆)\q[(一時・単語),Onユーザが単語をお気に入りした,(一時・単語)]

*Onユーザが単語をお気に入りした
(when,(count,(お気に入り単語),_(R0))
,(set,お気に入り単語,(erase,(お気に入り単語),_(R0)))
,(set,お気に入り単語,(お気に入り単語)_(R0))

>単語のリスト
#----任意の辞書ファイル

選択肢と(R0)に関しては以下のukadocを参照してください。
http://ssp.shillest.net/ukadoc/manual/list_sakura_script.html#_q_%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB,OnID,r0,r1,..._

(単語群「〜〜」の存在)では、単語群の中身まで確認できないため、
お気に入りにした単語を1つの変数「お気に入り単語」の中に持っています。
(お気に入り単語)の中身は、たとえば「いちごまぐろ」などの羅列となります。
その後、(count、(お気に入り単語)、いちご)として、存在すれば★を表示します。
(count関数のカッコ展開の結果が1以上になる場合存在)

ただし、区切り文字がないと誤ヒットする可能性があります。
たとえば(count、(お気に入り単語)、ごま)とすると、
「いちごまぐろ」に「ごま」が含まれるため誤ヒットしてしまいます。
そこで、「_いちご_まぐろ」とアンダーバーを区切りとします。
存在するか判定する際も、「_ごま」とアンダーバー込みで検索すると誤ヒットしません。

アンダーバーを頭につけて検索するため、$お気に入り単語の初期値の「なし」は絶対にヒットしません。
ユーザがあらためて「なし」を入力した場合のみヒットするようになります。

1095任意たん@age推奨:2022/12/08(木) 03:48:32
>>1094
丁寧にありがとうございます!
アンダーバーを使った判定は思いつかなかったので大変参考になりました。
お気に入りの表示は形だけのつもりだったのですがちゃんと運用できそうです、ありがとうございます!

1096任意たん@age推奨:2023/03/21(火) 22:40:20
イベント雑談スレの787-789のくだりを里々wikiに書きました。
ありがとうございます。
http://soliton.sub.jp/satori/?%E5%90%8D%E5%89%8D%E3%82%92%E8%A6%9A%E3%81%88%E3%81%95%E3%81%9B%E3%82%8B#u9f9ee02

1097任意たん@age推奨:2023/03/23(木) 09:20:38
ゴマカレーかなんかでトークが縦書きのゴーストっていなかったっけ?ググっても出てこないわ

1098任意たん@age推奨:2023/03/23(木) 21:33:29
>>1097
ゴマカレーじゃなくてこんうかだけど、あーるでぃーさん所のtcidelamが縦書きだね

1099任意たん@age推奨:2023/03/25(土) 23:32:23
>>1098
こんうかか!ありがとう
ゴマカレだと思いこんでたから一人じゃ一生辿り着けんかったわ

1100任意たん@age推奨:2023/04/08(土) 11:27:05
前いろいろあった者です。
もう一度あの頃みたいにやり直したいなと思い来ました。
もう一度、ゴーストを作らせてもらえませんでしょうか?

1101任意たん@age推奨:2023/04/08(土) 14:27:19
いろいろとか言われても知らないし
誰に許可とる趣味でもないんだから好きにやればいいんじゃないでしょうか。

1102任意たん@age推奨:2023/04/08(土) 22:30:02
>>1100
前いろいろとか、いちいちそういう断り文句を書く必要がまず無い。
好きにゴースト作って、出来上がったら然るべき場所で公開すればいい。
なにかゴースト制作関連で質問ができたら書き込んでおくれ。

1103任意たん@age推奨:2023/04/08(土) 23:28:31
違ったらごめんだけど察しはつく
余計なこと言わなきゃ誰も気づかんわ、識別だってないんだし

1104任意たん@age推奨:2023/04/09(日) 11:07:42
色々あって去ったデベとか数人しか思い浮かばんしな
なんにせよ昔の事だし気にすんな

1105任意たん@age推奨:2023/04/09(日) 17:26:59
最近問題を起こしたならやめておいた方が無難だが
なにを起こしたのかにもよるしここに言いに来る時点でなあ
好きにやればいいけどまた問題起こさないといいな

1106任意たん@age推奨:2023/04/10(月) 10:42:39
やっちまったもんはしゃーないしな、返してくれとも俺からは言わん
違ったらすまんな
戻ってきてくれて嬉しいよ

1107任意たん@age推奨:2023/04/12(水) 01:27:52
どうでもいいから早くお前のゴーストを見せてくれ
ゴーストなんて多ければ多いほどいいんだから

1108任意たん@age推奨:2023/04/13(木) 10:16:19
周りがどうしても気になるならゴーストマスカレードに匿名で出したら?
ランダム交代禁止とかゴースト内の制限はいろいろと多いけど
http://earlduant.blog.fc2.com/blog-entry-872.html

1109任意たん@age推奨:2023/04/13(木) 13:05:17
別にイベントに参加しなくても勝手に作って勝手に上げればいい

1110任意たん@age推奨:2023/05/11(木) 21:56:43

すみません、YAYAについてなのですがお助け下さいおねがいします。

wikiのマニュアル/基本/繰り返しにforの使い方が書いてありますが、これを紺野ややめに組み込んでも説明通りに動きません。
説明だと「0回目,2回目...9回目が改行しながら出力されます。」とあるのですが、〇回目が一つしか出ず、数字もランダムみたいなんです。

https://i.gyazo.com/bfa125b92202dce78eb857dada1d6316.png

OnKeyPressの中にwhen 'b'を追加して動かしているのですが、bを押せばとりあえず表示が出るのでここは合ってると思うのですが……。
何か大きなものを見落としているのかもしれませんが、それが何なのかさっぱりわかりませんorz

1111任意たん@age推奨:2023/05/12(金) 04:00:36
>>1110
1110さんの書き方だと、when 'b' の中身が配列として解釈され、ランダムな択一で出力されているようですね。
うまく説明できず申し訳ないのですが、以下のようにしてみてください。

####

when "b" {
for _result = "", _i = 0 ; _i < 10 ; _i = _i+1{
_result = _result + _i+"回目\n"
}
_result
}

1112任意たん@age推奨:2023/05/13(土) 07:00:48

>>1111
ありがとうございます、無事動きました。
……なのですが、やっぱりよくわかりませんでした。もしよろしければ、もう少しお助け下さい。

>>1111

1行目:when "b" {
これはキーボードの「b」が押されたら{}内部を実行する、ぐらいの意味。この場合は "b" でも 'b' でも特に違いは無い。

2行目:for _result = "", _i = 0 ; _i < 10 ; _i = _i+1{
forが繰り返し命令? 初期設定で_resultに空白入れて文字変数にして、_i = 0が初期値、i <10が終了条件、_i+1がループ毎に実行される。

3行目:_result = _result + _i+"回目\n"
_resultに空白と_i の数字と「回目」と改行を合体させて「〇回目」という文字列を作る。

4行目:}
2行目for の終点。

5行目:_result
3行目で作った文字列「〇回目」をここでバルーンに出力。

6行目:}
1行目when "b" の終点。

と、私は認識しているのですが、どうでしょうか? 
ただ、これだと、

謎1:i <10が終了条件
直前で _i = 0 が入るなら、即 0 < 10 成立で終わりそうに思うのですが……。
むしろ続行条件に見えます、謎です。

謎2:5行目の_result
forって、「 for 初期設定 条件 { 処理 } 」 って構造で、条件を満たすまで処理を{}の内部で繰り返すと思っていたのですが、そうだとすると5行目の_resultがforの{}の外側に居る理由がわかりません。
C言語?だとそういう処理なんでしょうか?

もし気が向いたらお答えください、おねがいします。
……YAYA、私には向いてなさそうですねorz

1113任意たん@age推奨:2023/05/13(土) 08:13:38
>>1112

*1行目
今回の場合は"b"でも'b'でも違いは無い、という理解で合っています。
(ごく短い、単なる文字列であるため)

""で囲む場合、変数や関数を内部に埋め込むことができます。
''で囲むと、それらが展開されません。

*2行目
_i<10は終了条件ではなく、式が真ではなくなったらループを脱出する、というものです。(脱出判定式)
この場合、_iが10より小さい場合はループが続行され、_iが10以上になったらループが終わります。

*3行目
2行目の脱出判定式が真である間、3行目の処理が繰り返されます。

具体的には、以下のようになっています。
脱出判定: _i<10は0<10で偽のため、続行
繰り返し1回目: 『_result(空の文字列変数)、_i(0の数値)、「回目\n」』を連結した文字列をローカル変数_resultへ代入
ループ毎に実行する式: _i=_i+1で、_iは1になる
脱出判定: _i<10は1<10で偽のため、続行
繰り返し2回目: 『_result(0回目\n)、_i(1の数値)、「回目\n」』を連結した文字列をローカル変数_resultへ代入
ループ毎に実行する式: _i=_i+1で、_iは2になる
脱出判定: _i<10は2<10で偽のため、続行
繰り返し3回目: 『_result(0回目\n1回目\n)、_i(2の数値)、「回目\n」』を連結した文字列をローカル変数_resultへ代入
ループ毎に実行する式: _i=_i+1で、_iは3になる
(以下略)

*4・5・6行目
その理解で合っています。

*謎1
2行目の解説でも書きましたが、その位置の式が「成立しなくなったら」終わり、というものです。

*謎2
5行目の文字列出力はforの繰り返し処理の後に実行されてほしかったので、forの後に書きました。
3行目の繰り返し処理で変数「_result」の中へ最終的に出力して欲しい内容を作り、
その後単体で変数の内容を出力しています。

以下の内容をOnKeyPressへ加えてCキーを押すと、
バルーンには変数「username」の中身である『ユーザーさん』が出ると思います。(紺野ややめの場合)
when "c" {
username
}

1114任意たん@age推奨:2023/05/13(土) 13:47:11
横から失礼。
>>1113
『繰り返し処理の後に実行されてほしかったので』とあるけど、要するに

計算→表示→計算→表示→……→計算→表示
とするより、
計算→計算→……計算→表示
とした方が処理が少なくていいよね、ということだと思う。

1115任意たん@age推奨:2023/05/13(土) 17:08:59

>>1113
ありがとうございます。5行目の_resultに10ループぶん溜め込んで纏めて出力していたのですね。
私は初心者なので、計算+出力を10回ループ、に拘って勉強していたので発想が追いつきませんでしたorz

>>1114
上記の通り、最適化よりも基本に忠実、で頭が固まっていました……。



本来目指していたものは、

when 'n' {
for _result = "", _rotate = "" , _i = 0 ; _i < 360 ; _i = _i+10{

_result = _result + _i+"度\n"

_rad = _i * 3.14159265358 / 180
_x = SIN(_rad) * 100
_xxx = TOINT(_x)
_rotate = "\![set,scaling,"+ _xxx+ ",100]\n\"

_rotate

}

}

これで、n押したらシェルが一回転するかな〜?と思ったんですがやっぱりダメでした。
>>1110同様ランダム動作にしかならんですorz
勝手に配列処理を禁止に出来たら上手くいきそうなのになぁ……。

1116任意たん@age推奨:2023/05/13(土) 17:19:58
あ、_result = _result + _i+"度\n"消すの忘れてた、ごめんなさい。

1117任意たん@age推奨:2023/05/13(土) 18:09:00
>>1115

文/YAYA wikiの「マニュアル/文法/7.フロー制御」のページのスクリプトの例を見る限り、
ループの内部で文字列を出力した時、ループの回数ごとを要素とした配列が結果として出てくるのは、仕様なのかもしれません。
ループ内部で出力確定子やallが効けば質問者さんの理想に近づく気がしましたが、自分の試した限りではできませんでした。

when 'n' {
for _rotate = "" , _i = 0 ; _i < 360 ; _i = _i+10{
_rad = _i * 3.14159265358 / 180
_x = SIN(_rad) * 100
_xxx = TOINT(_x)
_rotate = _rotate + "\![set,scaling,"+ _xxx+ ",100]\w1"
}
_rotate
}

########
ただし、独立した関数として書くなら、allが効きます。
//OnKeyPressのcase分岐の中にこれを書く
when 'n' {
Kururinpa
}

//独立した関数としてこれを書く
Kururinpa : all
{
for _i = 0 ; _i < 360 ; _i = _i+10{
_rad = _i * 3.14159265358 / 180
_x = SIN(_rad) * 100
_xxx = TOINT(_x)
"\![set,scaling,"+ _xxx+ ",100]\w1"
}
}

11181117:2023/05/13(土) 18:18:40
>>1117
出力にウェイトを噛ませています、というのを書き忘れていました。
(「\w1」がそれです)
無いと一瞬ですべてが行われてしまい、回転している感じにはならなかったので。

1119任意たん@age推奨:2023/05/13(土) 20:25:42

>>1117
ありがとうございます、無事上手くいきました。
ループの内部だと配列確定は仕様なのですね、YAYAって難しい……。

……正しくはSIN(_rad) じゃなくてCOS(_rad)だという事に気付かず、無駄に苦労しましたorz


後は、 里々から回転数・1描写あたりの角度・1描写あたりのウェイトをYAYA as SAORI に送って動くように出来たら、野望が達成できそうです。
ただ、YAYAよりもC言語を学ぶのが先になりそうです……。

1120任意たん@age推奨:2023/05/13(土) 21:07:50
>>1119
よかったです。陰ながら応援しています。

1121任意たん@age推奨:2023/05/14(日) 02:56:07
>>1120
ありがとうです、がんばります。

……>>1117で作って頂いたKururinpa、早速YAYA as SAORIに突っ込んでみたものの全く動かず、
色々考えてみたらSAORIが直接さくらスクリプトを実行するわけじゃないから、YAYA as SAORIから
RES.RESULTでさくらスクリプトを受け取って里々が実行しないとダメなんだな、と思いました。

YAYA as SAORIに計算全て任せると結果がRES.RESULTに配列で還ってくるので、
ループ部分は里々で作ってその都度YAYA as SAORIにさくらスクリプトを作らせる方針で逝こうと思います。

1122任意たん@age推奨:2023/05/14(日) 08:02:56
>>1121
余計なお世話でしたらごめんなさいなのですが、こういうことでしょうか。

◆yaya as saoriに追加する内容
Kururinpa
{
//引数0(1つめ):回転数を正の数で
//引数1(2つめ):1描写あたりの角度を正の数で
//引数2(3つめ):1描写あたりのウェイトをミリ秒単位の整数で
//すべて半角数字を想定

if ARRAYSIZE(REQ.ARGS) < 3 {
//引数が足りなかった
LOGGING("Kururinpa: 引数が不足しています")
-1
return
}
elseif ISREALSTR(REQ.ARGS[0])==0 || TOREAL(REQ.ARGS[0]) <= 0 {
//引数0に正の数以外が入っていた
LOGGING("Kururinpa: 引数1つめが正の数ではありません")
-1
return
}
elseif ISREALSTR(REQ.ARGS[1])==0 || TOREAL(REQ.ARGS[1]) <= 0 {
//引数1に正の数以外が入っていた
LOGGING("Kururinpa: 引数2つめが正の数ではありません")
-1
return
}
elseif ISINTSTR(REQ.ARGS[2])==0 && TOINT(REQ.ARGS[2]) < 0 {
//引数2に正の整数以外が入っていた
LOGGING("Kururinpa: 引数3つめが正の整数ではありません")
-1
return
}

_w = ''
if TOINT(REQ.ARGS[2]) > 0 {
//引数2が1以上ならさくらスクリプトでウェイトを入れる
_w = '\_w[' + REQ.ARGS[2] + ']'
}
//引数2が0なら何もしない(変数_wを空のままにしておく)

_a0 = TOREAL(REQ.ARGS[0])
_a1 = TOREAL(REQ.ARGS[1])
//里々からの引数は文字列型で来るので、数値型へ変更する

for _result='' , _i = 0 ; _i < ( _a0 * 360 ) ; _i = _i + _a1 {
_rad = _i * 3.14159265358 / 180
_x = COS(_rad) * 100
_xxx = TOINT(_x)
_result = _result + '\![set,scaling,' + _xxx + ',100]' + _w
}

RES.RESULT = _result
//変数「RES.RESULT」へ代入された内容が里々へ返る
}

◆里々に追加する内容
*nキーを押した
:(aya,Kururinpa,1,10,20)

11231122:2023/05/14(日) 08:09:41
すみません、>>1122には間違いが入っています。
//引数2に正の整数以外が入っていた の上の行は正しくはこうなります。

elseif ISINTSTR(REQ.ARGS[2])==0 || TOINT(REQ.ARGS[2]) < 0 {

1124任意たん@age推奨:2023/05/14(日) 14:33:58

>>1122
ありがとうございます、いろいろ間違えたり勘違いしながらも無事に動かせました。
ayasaori.logの中で

// request
EXECUTE SAORI/1.0
Charset: Shift_JIS
Sender: SATORI
SecurityLevel: Local
Argument0: Kururinpa
Argument1: 1
Argument2: 10
Argument3: 20

と書かれているのに、

REQ.ARGS[0]←Argument1が入る
REQ.ARGS[1]←Argument2が入る
REQ.ARGS[2]←Argument3が入る

なのがとても不思議な感じでした。

1125任意たん@age推奨:2023/05/27(土) 07:46:17

度々すみません、>>1124です。
>>1122さんに作って頂いたKururinpaを弄って色々作っているのですが、
シェルを縦に縮めて戻す関数を作っているのですが、上手くいかないですorz


gravity
{
//引数0(1つめ):伸縮の最小値を正の数で
//引数1(2つめ):1描写あたりの伸縮率変動値を正の数で
//引数2(3つめ):1描写あたりのウェイトをミリ秒単位の整数で

_a0 = TOREAL(REQ.ARGS[0])
_a1 = TOREAL(REQ.ARGS[1])
_w = '\_w[' + REQ.ARGS[2] + ']'

for _resultd='' , _id = 100 ; _id < _a0 ; _id = _id - _a1 {
_resultd = _resultd + '\![set,scaling,100,' + _id + ']' + _w
}

for _resultu='' , _iu = _a0 ; _iu > 100 ; _iu = _iu + _a1 {
_resultu = _resultu + '\![set,scaling,100,' + _iu + ']' + _w
}

RES.RESULT = _resultd + _resultu

}

これを紺野ややめに移植して、REQ.ARGSを数字に置き換えても何も起きないです。
何が間違ってるのかわかりません、どうかお助け下さい……。

1126任意たん@age推奨:2023/05/27(土) 12:34:35
>>1125
脱出判定式(条件に合致するとループ終了)が、
ループ処理1回目開始前から成立してしまっているのだと思います。

1つ目の判定式を「_id >= _a0」、
2つ目の判定式を「_iu <= 100」へ変えてみてください。

1127任意たん@age推奨:2023/05/27(土) 19:08:50
>>1126
ありがとうございます、無事動きました。
……また条件勘違いしてました、ごめんなさいorz

1128任意たん@age推奨:2023/06/10(土) 15:29:54
すみません、バルーンをシェルの裏側に表示させる方法ってありますか?
\![set,zorder,スコープID,スコープID,...]でシェル同士の優先は設定できるけど、
バルーンとシェルの設定は見当たらないのですが、無いんでしょうか?

1129任意たん@age推奨:2023/06/15(木) 15:08:50
>>1128
バルーンをシェルより奥に表示させる方法は、自分の見た限りでは今のところ無いと思います。
既存の仕様で疑似的に表現できないか試行してみましたが、
sticky-windowとzorderを組み合わせるだけではダメでした。

1130任意たん@age推奨:2023/06/15(木) 18:50:09
>>1129
ありがとうございました。やはり無いみたいですね……。

1131任意たん@age推奨:2024/03/13(水) 08:13:12
里々で、現在のサーフェスに応じてランダムトークを分岐させたいのですが方法はありますか?
会話時サーフェス戻しを無効にし、

*【タブ】(サーフェス0)==0
:なんちゃら。

*【タブ】(サーフェス0)==1
:かんちゃら。

というように記述してみたのですが動作しませんでした

1132任意たん@age推奨:2024/03/13(水) 17:01:01
>>1131
その記述単体に問題は無さそうです。
動作しないというのは、以下のどれでしょうか?
・何もランダムトークをしなくなる
・分岐を設定したトークが出てこない
・分岐を設定したトークが意図通りでない時に出てくる
(サーフェス0番の顔の時にサーフェス1番の分岐が出てくる、など)
・その他

1133任意たん@age推奨:2024/03/13(水) 17:58:01
>>1132
・分岐を設定したトークが意図通りでない時に出てくる
>>1131では省略しましたが、正しくは以下の辞書になっています(後出しで申し訳ありません)


*OnTalk
$サーフェス変化トークタイマ【タブ】(乱数30〜50)
>(R1)【タブ】(R0)
()

*サーフェス変化トーク
>ポーズ0【タブ】(乱数1〜2)==1
>ポーズ1【タブ】(乱数1〜3)==1
>ポーズ2【タブ】(乱数1〜5)==1
>ポーズ3【タブ】(乱数1〜7)==1

*ポーズ0
:(0)
*ポーズ1
:(1)
*ポーズ2
:(2)
*ポーズ3
:(3)

*【タブ】(サーフェス0)==0||1
:(0)なんちゃら。

*【タブ】(サーフェス0)==2||3
:(2)かんちゃら。


時間経過でランダムにサーフェスが変化する処理を入れつつ、
サーフェス0番か1番のときに「:(0)なんちゃら。」、サーフェス2番か3番のときに「:(2)かんちゃら。」とトークさせたいのですが、
現在のサーフェスとは無関係に「:(0)なんちゃら。」も「:(2)かんちゃら。」も出てきてしまいます

1134任意たん@age推奨:2024/03/13(水) 18:20:41
>>1133
条件を||や&&でつなげて複数書く時は、それぞれが式になるようにしてください。

*【タブ】(サーフェス0)==0||(サーフェス0)==1
:(0)なんちゃら。

*【タブ】(サーフェス0)==2||(サーフェス0)==3
:(2)かんちゃら。

1135任意たん@age推奨:2024/03/13(水) 18:49:22
>>1134
式を書き換えたら想定通り動作しました、ひどい凡ミスにつきあわせてしまいすみません…
ありがとうございました

1136任意たん@age推奨:2024/03/14(木) 15:55:57
>>1135
解決したようで良かったです。

1137任意たん@age推奨:2024/03/14(木) 18:20:27
それだけなら

*【タブ】(サーフェス0)<2
:(0)なんちゃら。

*【タブ】(サーフェス0)>1
:(2)かんちゃら。

これでも動きそうな気がする

1138任意たん@age推奨:2024/03/14(木) 20:07:51
>>1136
お手数おかけしました、ありがとうございます

>>1137
ありがとうございます
実際に使用予定のシェルではサーフェス番号が飛ぶ予定だったので||を使っていましたが、例の通りなら確かにその方がスマートになりますね
(本来のシェルで辞書を書いていてうまくいかなかったので、単純化した仮のシェルで原因を探っていました)
式の書き方の一つとして頭に入れておきたいと思います

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=&quot;(検索ワード)"&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=&quot;&quot;(検索ワード)""&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で今回の件を対応してくださったようなのですが、完全ではないようなので、現状の処理が一番安全かな…となりました。
自分が大事な記述を見落としてるだけ…とかではなかったので、ひとまずホッとしています。
ご協力ありがとうございます。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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