タイトルK.U.R.U.M.I.のリンクタグについて
記事No:199
投稿日:06/11/01(Wed) 16:28
名前:rito
はじめまして。ritoと申します。
K.U.R.U.M.I.を使用させていただいてます。
ゲームのデータを使いながら二次創作出来るのは凄いですね!(^^)
ほんとにありがとうございます。
リンクの部分をカスタマイズしたいのですが、どのようにすればいいのでしょうか。

・クリックされた時に効果音を鳴らす
・選択済みのリンクテキストの文字色を変える
・制限時間付きの選択肢を作る

選択肢の出現時やカーソルが乗った時のSEはコメントアウトで書かれてたもので出来ましたが、クリック後に鳴らす方法がわかりませんでした。clickseを指定するとエラーが出てしまいました。
あとの2つについては全くわかりません。
吉里吉里についてはある程度勉強したのでクリック後のSEと制限時間付きのは出来るようになったのですが・・・K.U.R.U.M.I.のマクロに組み込む方法がわからなかったので、ここで質問させていただきました。
教えていただけると助かります。よろしくお願い致します。

タイトルRe: K.U.R.U.M.I.のリンクタグについて
記事No:201
投稿日:06/11/03(Fri) 15:41
名前:KaTana [site]
どうも初めまして!
おお、K.U.R.U.M.I.を使って下さるとは嬉しいですね。

反響がほとんどなかったし、情報が古くなってきたので(使ってる吉里吉里のバージョンは2.18だし……)、容量削減のためそろそろ削除しようかと思ってたところでした。
まあ、需要はそう多くないでしょうし、横のフレームのメニューからは消そうかと思いますが、二次創作のページからは辿れるようにはしておくつもりです。

ところで、お使いになっているのはNever7版とEver17版のどちらでしょう?
もしEver17だったら、参考のためにCD版かDVD版か教えてくださると幸いです。

質問についてですが、K.U.R.U.M.I.の選択肢の処理はちょっとややこしい作りになっていて、改造は少し難しいかもしれません。
あの選択肢関係のマクロは、中央に選択肢ウィンドウを表示するために用意したもので、あれを使わないとゲームが作れないというわけでもないので、自力で[link]タグを書くという方法もありかとは思います。

一応、K.U.R.U.M.I.の既存のマクロを改造する方法も書いておきます。
ちょっと長くなるので個別にレスします。
なお、Ever17版の方を想定しての回答です。

タイトル1.選択肢クリックに効果音
記事No:202
投稿日:06/11/03(Fri) 15:42
名前:KaTana [site]
1.選択肢クリックに効果音

clickse属性を指定するとエラーになる理由と、改善方法を示しておきます。
とりあえず、文末にあるように[SelectItem]の一部を書き換えればclickse属性が使えるようになるので、理由はスルーしてもOKです。


選択肢を記述するためのリンクタグは[SelectItem]マクロに記述してありますが、ここにclickse属性を追加するとエラーになってしまいます。

これは、KAGの内部動作の問題で、次の原因によるものです。

KAGではclickse属性の指定があると、内部的に、SEを鳴らす命令をexp属性の内容に連結して実行します。
このとき、現在の[SelectItem]内のexp属性に指定しているような、;を行末につけたスクリプトだと連結が上手くいかず、スクリプトエラーになってしまうわけです。

そこで、exp属性に与えるスクリプトを、今やっているような、
  命令1;命令2;命令3;
という書き方ではなく、
  命令1,命令2,命令3
という風に書くと、連結に問題は発生せず上手くいきます。


具体的には、[SelectItem]を次のように書き換えます。

この部分を、
[eval exp="var tmp_sel_item_script = 'kag.historyLayer.reline();kag.historyLayer.reline();kag.historyLayer.store(\'⇒ ' + mp.sentence + '\');kag.historyLayer.reline();kag.historyLayer.reline();'"]
[eval exp=" tmp_sel_item_script += 'kag.fore.messages[1].visible=false;'"]
[eval exp=" tmp_sel_item_script += 'kag.fore.layers[kag.numCharacterLayers-1].freeImage();'"]
[eval exp=" tmp_sel_item_script += 'kag.allocateCharacterLayers(kag.numCharacterLayers-1);'"]

このように書き換えれば、clickse属性が使えるようになります。
[eval exp="var tmp_sel_item_script = 'kag.historyLayer.reline(),kag.historyLayer.reline(),kag.historyLayer.store(\'⇒ ' + mp.sentence + '\'),kag.historyLayer.reline(),kag.historyLayer.reline(),'"]
[eval exp=" tmp_sel_item_script += 'kag.fore.messages[1].visible=false,'"]
[eval exp=" tmp_sel_item_script += 'kag.fore.layers[kag.numCharacterLayers-1].freeImage(),'"]
[eval exp=" tmp_sel_item_script += 'kag.allocateCharacterLayers(kag.numCharacterLayers-1)'"]

タイトル返信ありがとうございます!
記事No:205
投稿日:06/11/07(Tue) 16:34
名前:rito
詳しいご説明ありがとうございます!!
説明だけじゃなくタグまで書いてくださって嬉しい限りです。
早速実行してみますね!(^-^)

使ってるのはEver17版のCD版です。
実はK.U.R.U.M.I.は公開された時から使わせていただいてます。
このツールが使いたくてPCのEver17を買いました(笑)
それに吉里吉里タグのコメントがわかりやすかったので、タグを覚える時にもかなり参考にさせていただきました。

色んな意味ですごく助かりました!感謝です。
ほんとうにありがとうございました。

タイトルRe: 返信ありがとうございます!
記事No:206
投稿日:06/11/09(Thu) 19:39
名前:KaTana [site]
お役に立てば何よりですー。
何か完成したら、ゼヒ見せて下さい(^^

また、CD版を使用と教えて下さりありがとうございました。
いつの間にかDVD版が発売されていて、ちょっと驚いたものですから。

それではー。

タイトル2.選択済み選択肢を色変え
記事No:203
投稿日:06/11/03(Fri) 15:43
名前:KaTana [site]
2.選択済み選択肢を色変え

やり方は色々あると思いますが、とりあえず、ジャンプ先のstorageとtargetを使って、選択肢を選んだら"sel_trail_ストレージ_ターゲット"という名前のシステム変数に"1"をセットするようにします。

で、選択肢の文字を表示する際に、その値を見て、色を変えるかどうか判断します。

(このやり方だと、違う選択肢でもジャンプ先が同じなら、まとめて色が変わってしまいますので、ジャンプ先を同じにしないように注意する必要があります)

具体的なやり方ですが、[SelectItem]を次のように書き換えます。
(1.の改造も適用してます)


[macro name=SelectItem]

;スクリプトを一時的に記録する変数を用意(選択肢を選んだあとに実行する処理)
;・ヒストリーに選択した内容を記述
;・選択肢ウィンドウを非表示
;・選択肢ウィンドウ枠を非表示
;・選択肢ウィンドウ枠表示のために増やした前景レイヤを減らす
[eval exp="var tmp_sel_item_script = 'kag.historyLayer.reline(),kag.historyLayer.reline(),kag.historyLayer.store(\'⇒ ' + mp.sentence + '\'),kag.historyLayer.reline(),kag.historyLayer.reline(),'"]
[eval exp=" tmp_sel_item_script += 'kag.fore.messages[1].visible=false,'"]
[eval exp=" tmp_sel_item_script += 'kag.fore.layers[kag.numCharacterLayers-1].freeImage(),'"]
[eval exp=" tmp_sel_item_script += 'kag.allocateCharacterLayers(kag.numCharacterLayers-1)'"]

;ジャンプ先のストレージ名(拡張子除く)とターゲット名(*除く)を求める
[eval exp="var tmp_storage"]
[eval exp="if (mp.storage !== void) tmp_storage = mp.storage.split('.')[0]"]
[eval exp="if (mp.storage === void) tmp_storage = Storages.chopStorageExt(Storages.extractStorageName(kag.conductor.curStorage))"]
[eval exp="var tmp_target = (mp.target===void?'':mp.target.substring(1,mp.target.length-1))"]

;リンク選択時に実行するスクリプトに追加
;・選んだ選択肢を記憶する("sel_trail_ストレージ_ターゲット"というシステム変数を1にする)
[eval exp=" tmp_sel_item_script += ', sf[\'sel_trail_\' + \'' + tmp_storage + '\' + \'_\' + \'' + tmp_target + '\']=1'"]

;リンクの設定
;選択されたとき、TJSスクリプトを実行
[link storage=%storage target=%target exp=&tmp_sel_item_script enterse=se03_01 entersebuf=0 clickse=se00_18 clicksebuf=1]

;変数の消去
[eval exp="delete tmp_sel_item_script;"]

;選んだことのある選択肢は色を変える
[if exp="sf['sel_trail_' + tmp_storage + '_' + tmp_target]==1"]
[font color=0xb0b0b0]
[endif]

;変数の消去
[eval exp="delete tmp_storage"]
[eval exp="delete tmp_target"]

[emb exp="mp.sentence"]

[font color=default]

[endlink]

;描画が終わるまで選択できないように
[locklink]

[endmacro]

タイトル3.制限時間付きの選択肢
記事No:204
投稿日:06/11/03(Fri) 15:50
名前:KaTana [site]
3.制限時間付きの選択肢

この改造はちょっと変更量が多いので、変更したkurumi4ever.ksと必要なルール画像をアーカイブでUpしました。

http://homepage2.nifty.com/wp/kotonoha/kurumi/kurumi4ever061103.zip

解凍して両方のファイルを「K.U.R.U.M.I. for Ever17」のscenarioフォルダにコピーして下さい。
(なお、1.と2.の改造も適用されています)

制限時間付きの選択肢を使うときは、こんな風に[SelectTail]に制限時間とタイムアウト時のジャンプ先を指定して下さい。
[SelectTail timelimit=3000 storage=scenario.ks target=*fail]


実装方法は、トランジションを利用して時間ゲージを消していき、トランジションが終わったらタイムアウトと判定するというやり方です。

変更したマクロは以下のものです。
[selection_window_bgload]
[SelectItem]
[SelectTail]

詳しい変更内容は次の通りです。
・K.U.R.U.M.I.では選択肢のたびに前景レイヤを一つ増やして選択肢ウィンドウの表示につかっていますが、これを二つ増やすようにして、片方を時間ゲージの表示に使います
・選択肢が選ばれたとき、トランジションを停止させ、時間ゲージを消します
・[SelectTail]の最後で、制限時間アリかナシかで分岐させます
・[SelectTail]の最後で、制限時間アリのときは、時間ゲージの処理を行います

参考にしてみて下さい。