1 :
1 :
2011/06/03(金) 15:46:28.78 ID:sVbys187 ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。
※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!
吉里吉里スレ過去ログ倉庫
ttp://bbs.bokunatu.com/krkr/ 吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/ 吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/ ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
■TJSをもっと使うために
ゲームのインターフェイスをカスタマイズしたい、また
KAGの命令に無いことをしたくなったらまずここを読んでみよう。
必要に応じて
>>3-5 の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
前スレ
http://hibari.2ch.net/test/read.cgi/gamedev/1296706327/
2 :
1 :2011/06/03(金) 15:47:14.78 ID:sVbys187
3 :
1 :2011/06/03(金) 15:47:40.18 ID:sVbys187
4 :
1 :2011/06/03(金) 15:47:59.01 ID:sVbys187
5 :
1 :2011/06/03(金) 15:48:14.14 ID:sVbys187
まほろ禁止
!,-/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ, i''./:::::::::::::::::::::://::::::l:l'i::::::ヽ:::::::ヽ:::::::::::::::l丶 〉!:::::::::::::::l:::::://l:::::/ll .lヽ:::l !ヽ::::l:ヽ::::::::i::l::l ヽ::::::::::::::l:l::::/:l .l:::/ l l,ヽ:l-l-l:::lヽ:ヽ::::::l:l.ll l::l.l:::::::ll.l:::l''l~~∨' ' ' _,-'i-∨ l::::l::::l:l,,l_
>>1 スレ立て乙です
初歩的な質問失礼します
吉里吉里のラベルは
*00
みたいな半角数字のみでも大丈夫でしょうか?
試してみて今のところエラー出てないですが、
後々問題があったりすのでしょうか?
>>12 大丈夫だよ。
確かリファレンスにラベル名は半角英数が無難でいいって書いてあったと思う。
ラベル名が数字の人は多いと思う。
>>12 大丈夫、やった実績あるよ。
>>991 試してみようと思ったら、ごった煮さんところのファイルが
今日の日付で更新されてたw 見てるのか誰か知らせたのか。
プラグインを新しいのにすれば大丈夫。
でも、直接知らせてあげた方がいいと思う。
15 :
12 :2011/06/04(土) 23:01:29.52 ID:njScTAL7
>>14 今確認してみたら、確かに更新されていて、
[wqsp]は無事使えるようになってました!
他の動作しない部分はまだ試していないので分からないのですが、
明日また色々やってみて駄目だったら、メールしてみようと思います。
ありがとうございました!
この式の書き方、どこかおかしいですか? f.npc1[6][9]とf.npc1[6][7]がかぶってたら*loop4に行って選びなおさせるようにしたいんだけど、ループしないみたいだ tf.baをf.npc1[6][9]に入れ替えたりしてみたけど意味がなかった [if exp="f.npc1[6][7] == '読書' && tf.ba == 1"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '散歩' && tf.ba == 2"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '勉強' && tf.ba == 3"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '絵描き' && tf.ba == 4"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '執筆' && tf.ba == 5"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '音楽鑑賞' && tf.ba == 6"][jump target=*loop4][endif] [if exp="f.npc1[6][7] =='特にない' && tf.ba == 7"][jump target=*loop4][endif] [if exp="f.npc1[6][7] =='トレーニング' && tf.ba == 8"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '人間観察' && tf.ba == 9"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '討論' && tf.ba == 10"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '酒' && tf.ba == 11"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == 'ギャンブル' && tf.ba == 12"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '楽器演奏' && tf.ba == 13"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '釣り' && tf.ba == 14"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '武道' && tf.ba == 15"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '乗馬' && tf.ba == 16"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == 'ジョギング' && tf.ba == 17"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '登山' && tf.ba == 18"][jump target=*loop4][endif] [if exp="f.npc1[6][7] == '料理' && tf.ba == 19"][jump target=*loop4][endif] [return]
>>17 解決しました…その部分の前の乱数が駄目だったみたいでした
他に色々不具合も出ているみたいだし、ゲームを作るって難しいな
TJS初心者です。どなたか教えてください。 TJSに挑戦!から選択用レイヤを借りて選択ボタン作ったのですが、 画面で選択ボタンが表示中に右クリックサブルーチンを出して消すと、 選択ボタンまで一緒に消えてしまいます。 原因はButtonLinkPlugin.kSのabsoluteでしょうか。
20です すいません自己解決しました。 TJSに挑戦!の掲示板に管理人さんが解決策書いてました。
既読スキップをしたいのに最初の選択肢後、文章が未読になってスキップができません。 これはどのような原因が考えられるでしょうか。 最初の選択肢前までの文章はスキップできるんですが… 選択肢は普通にlinkで囲ってるだけですし、原因が分かりません。 どうぞよろしくお願いします。
>> 22 多分、選択肢後にラベルをこまめに入れてないんではない だろうか。 既読スキップはラベル単位で実装されていて、シナリオ上 あるラベルを通過した時に、初めて「一つ前のラベルから そのラベル」までが既読とマークされる。ので、一ページ ごとに既読判定したければ、一ページごとにラベルを挿入する 必要があるよ。
24 :
22 :2011/06/07(火) 23:18:45.15 ID:EwhGXajG
>>23 返答ありがとうございました。
再度ラベルを見直すきっかけになり、原因が分かりました。
(ラベル名にハイフンを使ってました…)
初歩的なミスでしたが、長期間悩んでいたのでスッキリしました!
本当ににありがとうございました!
25 :
名前は開発中のものです。 :2011/06/08(水) 04:47:19.77 ID:DDKpe1ck
ハイフンのかわりに_(アンダーバー)使う癖つけとくほうがいいと思う。
>>24 先頭にハイフン、だよね?ラベル先頭のハイフンは
ローカルラベルなので、記録されないんだよね。
先頭に_だとエラーになるはず。
27 :
名前は開発中のものです。 :2011/06/08(水) 08:28:14.71 ID:DDKpe1ck
先頭にハイフン……だと!?
セーブ用ラベルって、[l]の度に入れるものって認識であってる? (決まった地点でしかセーブできないゲームは除く)
マニュアルは読んだのですが最終確認させてください。 本編の途中で動画を流そうと思うのですが、 mpegが一番問題の少ないファイル形式でしょうか??
playvideo するとメッセージレイヤが消えてしまうんですが、ビデオはどこの階層で動いてるんですか? オーバーレイモードだと、ビデオしか映んなくなっちゃうのかな・・・
最前面、リファレンス読め
35 :
33 :2011/06/10(金) 13:30:19.77 ID:L9TavonL
ありがとうございます まだ触りたてで、リファレンスみてもよくわかんなくてすいません やりたいのは、 1.動画のループを流す 2.シナリオを進める 3.あるところまできたらループ動画の切り替え ってことなのですが、レイヤ描画モードでならできるでしょうか? 常時、動画をループさせたいのですが、クリックすると止まってしまったりして、どうしたらいいでしょうか
吉里吉里でソーシャルゲームを作りたいのですが 参考になる作品ありますか
とりあえず「ソーシャルゲーム」という言葉の意味を理解してますか? 定義的にブラウザごと実装するようなものでないかぎり吉里吉里では作れず、 そうすると吉里吉里を使うメリットはぶっちゃけゼロなわけですが
38 :
名前は開発中のものです。 :2011/06/10(金) 17:27:45.45 ID:kPBEkDhT
ちょっと
>>12 のことなんだけど、ラベルって縦棒つけなくても問題ないの?
*prorougu「|」←これ
もしこれ大丈夫だったら今までずっとコピペして持ってきてた俺がバカみたいだ
>>38 縦棒ありのラベルは、セーブポイントになる
縦棒がないラベルは、セーブポイントにならない
コピペして、って? キーボードから入力できないとか?
41 :
名前は開発中のものです。 :2011/06/10(金) 17:54:31.02 ID:kPBEkDhT
>>39 レスサンクス
そういうことなのね
>>40 昔どうやって入力するかわからないころずっとコピペしてたんだ
まぁ、ググッたら普通にでてきたがな
>>35 そういう形式なら吉里吉里以外のほうが容易くね?Flashとか
43 :
名前は開発中のものです。 :2011/06/12(日) 04:48:28.86 ID:CDcQyodQ
>>35 レイヤ描写モードでloopをtrueに。それで希望の動作できるよ。やったことある。
[videolayer channel=1 layer=1 page=back]
[videolayer channel=2 layer=1 page=fore]
[video visible=true mode="layer" loop=true]
[openvideo storage="hanabi.mpg"]
[preparevideo][wp for=prepare]
[playvideo]
[layopt layer=1 page=back visible=true]
[layopt layer=1 page=fore visible=false]
[trans method=crossfade time=1500][wt]
中略
[backlay]
[layopt layer=1 page=back visible=false]
[trans method=crossfade time=1500][wt]
[stopvideo]
[clearvideolayer channel=1]
[clearvideolayer channel=2]
くだ質っぽいけど、オブジェクトメンバのイテレーションってTJS2できます? 具体的にはglobalのメンバ列挙してdeleteして掃除したいんだ JavaScript脳になりすぎていて見た目似てるのが逆につらい・・・
45 :
44 :2011/06/12(日) 21:00:03.13 ID:ZSpGJ+EJ
過去ログ検索してたら自己解決しましたさーせん Array.assign(dic) でキー含めて配列化できるのね globalにも適用できました
吉里吉里上のJavascript実装あるで
47 :
44 :2011/06/12(日) 23:03:51.03 ID:ZSpGJ+EJ
>>46 v8使ったjsプラグインのことですかね?
KAGがTJS2だから混ぜると噛み合わせ悪いんじゃないかなとか、
KAG内部弄る際にはいやでもTJS2だからしょうがないかなとかで
食わず嫌い気味でした。
後戻りのリスク・コスト考えるとなかなか・・・w
実績どんなものなんでしょうね
実際に使ってるのは見たことない tjsからjavascriptに変えるメリットなさそうだし
実績は知らないw どうせなら KAGをまるごと移植、ぐらいしないといまいちダメかもね
どうせならKAGつくり直してくれー
KAGより吉里吉里本体をだな…
52 :
44 :2011/06/13(月) 01:07:55.75 ID:d8ArHbzi
やっぱそうですよねぇw>実績 速度的にもv8のjsの方が遥かに速かったりして魅力的なんで、 今回KAG3/TJS2弄くり回して理解したら、次は移植も考えてみようかな
53 :
名前は開発中のものです。 :2011/06/13(月) 19:40:00.74 ID:wzJyrNPX
大変困っています…… 超初心者で申し訳ない中、教えていただきたいのですが…… 例えば [wait time=200] [image storage="画像1.bmp" layer=base page=fore] [backlay] [layopt layer=message0 page=back visible=false] [trans time=1000 method=crossfade] [wt] [image storage="画像2.bmp" layer=base page=back] [trans time=1000 method=crossfade] [wt] [ct] [layopt layer=message0 page=back visible=true] [trans time=1000 method=crossfade] [wt] という風に画像をフェードで切り替えさせながら進めていっているのですが、最後に [jump storage=first.ks target=*start_menu] でタイトルに戻ると、タイトル画面のメッセージレイヤが全て非表示になってしまっています (タイトル画面の文字にリンクをつけて、各パートに飛ばせるようにしています) 何をしてもタイトル画像だけが表示される状態が続いていまして、本当に困っています 分かりにくいヘルプで申し訳ありませんが、どなたか解決方法をご存じないでしょうか?
そのタイトル画面でメッセージレイヤ表示するように 明確に記述しとけばいいじゃん
55 :
名前は開発中のものです。 :2011/06/13(月) 20:12:58.55 ID:wzJyrNPX
>>54 回答ありがとうございますm(_ _)m
先日はじめたばかりで分からないことが多すぎてかなりテンパっております……
例えばどういうタグでしょうか?
お手数おかけしてまことに申し訳ありませんが、お教えいただけると大変助かります
56 :
名前は開発中のものです。 :2011/06/13(月) 20:15:37.54 ID:FF/lTZsB
サブルーチンとマクロについてなんですが、 マクロには属性指定できるとありますが、サブルーチンには属性を付けることはできないんでしょうか?
>>55 多分メッセージレイヤが非表示になってるんじゃなくて
ctでメッセージレイヤをリセットしてるからリンクが消える。
ct消すかjumpした後でリンクを再設置すればいい。
そしてリファレンスを熟読しろ。
>>56 無理、サブルーチンに入る前に変数作ってサブルーチン中に読み出すとかなら何とか
58 :
35 :2011/06/13(月) 20:52:55.88 ID:FF/lTZsB
>>43 ありがとうございます。
ちょっとわからないところがあったのですが、videolayerのchannelってどういう意味なんでしょうか。
動画自体はslotがあるので、これで足りる気がするのですが、ヘルプみてもわかりませんでした・・。
あと、
>>43 の例では動画の切り替えはどのタイミングで次の動画を読み込むべきでしょうか?
[videolayer channel=1 layer=1 page=back]
[videolayer channel=2 layer=1 page=fore]
[video visible=true mode="layer" loop=true]
[openvideo storage="hanabi.mpg"]
[preparevideo][wp for=prepare]
[playvideo]
[layopt layer=1 page=back visible=true]
[layopt layer=1 page=fore visible=false]
[trans method=crossfade time=1500][wt]
つぎのビデオ[p][cm]
[openvideo storage="hanabi2.mpg"]
[preparevideo][wp for=prepare]
[playvideo]
[layopt layer=1 page=back visible=true]
[layopt layer=1 page=fore visible=false]
[trans method=crossfade time=1500][wt]
って感じで平気でしょうか?
59 :
名前は開発中のものです。 :2011/06/14(火) 03:06:18.04 ID:HLp140za
横から悪いがV8へのKAGの移植なら俺も考えたことあるんだけどV8って仕様古いから移植したところでmozillaの現行仕様と比べてできないことが多いんだよね。 そうなるとjs脳は活かせないよ。
話題性だけあればそれで十分なんじゃね? なんかこの業界そういう技術的な話題がないし衰退してきてるように思う
V8が古いとか嘘だろバリバリの最先端だぞ mozillaがどうこうってそりゃDOMの実装とかは含まないに決まってるだろ JavaScript処理系とブラウザ組み込み時のAPIをごっちゃにするでない
いや、V8は実装こそ新しいけど、仕様は古いよ。 Ecmascript3 準拠で Javascript1.7 から一部機能が足りてない状態で yield とか使えない。 Firefox の SpiderMonkey は今 Javascript 1.8.5 で、 Ecmascript も5に準拠
あー前衛的なもの使おうとするとそうなんだね 俺は実際のweb開発じゃ1.5ベース、使っても1.6程度のjs脳でしたわ KAG程度に規模のでかいもの書こうとするとstrictモードとかは欲しいかもね
webだとさらに他の実装もあるからねぇ Ecmascript5 準拠をうたってるのはあとは IE9 ぐらいだっけ? ゲーム用途だと yield は無いとけっこうしょんぼりだと思う
で、それを使って具体的にどんなゲームができるんですか スクリプト初心者の俺には想像もつかないです
>>63 js1.7/1.8の機能は全く前衛的ではないよ。今のスクリプトにはあって当然の機能をjsが持ってなかったから他言語から輸入しただけ。
最近の言語はやたらPythonの影響受けてるからね。
糞実装が氾濫してるwebだと仕方ないけどそれでもyieldとジェネレータのある言語で並列処理自分で書くの時間の無駄だとは思わない?
実装に丸投げすれば並列のコードはほぼワンライナーだからロジックに集中できるし視認性高いし直感的になるよ。
ある程度の規模になるとそういうの無いといずれ破堤するのは見えてるからね。ビジュアルなデバッガもほしいけど。
>>64 たしかに見た感じChakraくらい。
ごった煮さんの所の、 キャラレイヤ管理プラグインでキャラクター表示させつつ、 時間エフェクト追加スクリプト使う方法が分からないー 誰か分かる人いたら教えてくだせえ と聞きつつ、 もうちょっと自分でも頑張ってみる
最近おもったけど、ユキチカとエキチカを混同してる人がやたら多い。
吉里吉里でスマホのゲーム作れますか?
スマートファンはリナックスだね
吉里吉里/TJSノベルゲーム開発ガイドに Brainf*ckが収録されてることに今ごろ気付いた これで何をしろとwww
初歩的な質問ですいません メニュー画面でBGMを流し、「スタート」「再開」を押すとフェードアウトするようにしたいんですが [fadeoutbgm time=5000]をメニュー画面部分の最後に使うと開始から5秒でフェードアウトしてしまいます 何が間違ってるんでしょうか 質問2 2周目はヒロインの立ち絵を全部変更するようにしたいんですが 立ち絵指定を訂正したシナリオをもう1個作る以外にスマートなやり方ってありますか?
質問1 押したjump先にフェードアウトのタグを置く 質問2 storageの指定を変数にして ゲーム開始時に1週目か2週目か判定して変数にファイル名を入れる
質問2が楽しそうw
こういう時は
>>75 の考え方でマクロ使うよね。
[macro name=tachie]
;一周目がhoge001a.png、二周目がhoge001b.pngと仮定
;何周目かはsf.syuukaiに格納されているとする
[eval exp="tf.storage = mp.storage+((sf.syuukai>0)?'b':'a')"]
[img * storage=&tf.storage]
[endmacro]
動作確認してないけど、まぁこんなかんじ?
ところであと数年は使う予定のレンタル鯖の容量が余ってるんだけどこのスレ用のアップローダを提供したら皆嬉しい? エスパーするのに疲れたんじゃゴルァとりあえずエラーログうpしろやーとか、プラグイン作ったけどサイト作ってまで面倒見る気は無いんだぜーとか 主にそういう用途で使うアップローダ。
うれしいよ!
凄く嬉しい プラグインうpする人がいるとスレが活性化しそうだし
>>75-76 ありがとうございます。やってみます。例も感謝
変更って言っても同キャラがメガネオフして私服になる程度ですけどねw
否定的意見はなさそうですな。おk。 でも、うpしたURLのドメインがtype-moonやdenpa.orgで胸熱って流れはこれからも時々発生して欲しいけどw
>>73 そりゃあ決まってるだろ。
+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.
でもどこに出力されるんだ。
ユキチカはストレートでちびちびやるべき
>>77 期待!
そして質問です。
画面上には表示したくないけどメッセージ履歴には表示したい(例えば[p]の後に、--------- ←こういう区切りを入れるとか)
文字があるときが結構でてきてしまったので、指定した文字がメッセージ履歴にだけ表示されるマクロを作ろうかと思ってるんだけど、メッセージ履歴にどうアクセスすればいいのか全然分からない。
currentタグで選択出来るわけないよな……
どうやってマクロを作ればいいのか教えてほしいです。
>>84 kagだけで対処するなら、こんなやり方はどうだ?
一時的に別のメッセージレイヤーに切り替えて、
透明の文字を、ウエイト無しで表示し
その後もとのメッセージレイヤーに戻して、[locate x=0 y=0]の位置から
通常の文字を表示する
てす
>>68 ありがとう!
規制されてたもんでご報告が遅れました。
色々やってみたけどキャラレイヤ管理プラグインで使ってるレイヤ番号指定しても変わらなかったので、
差し替え画像用意して変える事にしました。
キャラレイヤ管理プラグインだと差し替え簡単だし。
というわけでありがとー。
>84 前にここで教えてもらった拡張タグ kag.tagHandlers.htext = function(elm) { if(historyWriteEnabled) historyLayer.store(elm.text); return 0; } incontextof kag; で、以下のタグで使用 @htext text="-------------------"
84です。
あとから読んだら
>>84 が、何を言ってるかわかりにくいな。
>>85 そのやり方は簡単そうだから俺でも簡単にマクロ作れそう。
やってみる。ありがとう。
>>88 もっと過去ログを読まないとダメだな……
拡張タグは便利だね。
とりあえず2つとも試してみます。
ごめん、メッセージ履歴関係でもう一つ。 [mappfont]で割り当てたレンダリングフォントをメッセージ履歴で使いたい。 first.ksで[font face="ほげほげ"] [mappfont storage="hogehoge.tft"] って割り当ててあるとして、Config.tjsで、 // メッセージ履歴の設定です // ◆ フォント名 ;fontName = "ほげほげ"; って設定してるんだけど、どうもうまくいかない(たぶんMPゴシック?で表示される) どうすればメッセージ履歴にレンダリングフォントを使えるんだろう。 教えてください。
>>90 Config.tjsとfirst.ksが参照される順番というのもあるだろうし
履歴レイヤは別物なのでmappfontじたいが対応していないのでは
あと大きなお世話だと思うけど、
レンダリング元フォントのライセンスはクリアーしてるかい
kag.historyLayer.font.mapPrerenderedFont('hogehoge.tft') を実行したら変わったけど、何か正しくない気がするので (俺みたいに)スキルが充分で無いのを鑑み、見た目に拘らない姿勢も重要かと
KAGの別ディレクトリに同じファイル名があるとまずいのでしょうか? 例えば image\a.png fgimage\a.png とある場合、a.pngを読み込むとどうなるんだろう
ディレクトリサービス以外の文脈でディレクトリって言葉が使われるのを見るのは久しぶりだw 吉里吉里リファレンスの"Storages"クラスに"addAutoPath"という関数がある。 そこには、 「 自動検索パスは、後に指定したものがより優先されて検索されます。」 という説明がある。 そしてKAGでは、 Storages.addAutoPath(System.exePath + "video/"); // exePath 以下の video/ Storages.addAutoPath("video/"); // video フォルダ Storages.addAutoPath("others/"); // その他 Storages.addAutoPath("rule/"); // ルール画像フォルダ Storages.addAutoPath("sound/"); // 効果音フォルダ Storages.addAutoPath("bgm/"); // BGM フォルダ Storages.addAutoPath("fgimage/"); // 前景画像フォルダ Storages.addAutoPath("bgimage/"); // 背景画像フォルダ Storages.addAutoPath("scenario/"); // シナリオフォルダ Storages.addAutoPath("image/"); // そのほかの画像フォルダ Storages.addAutoPath("system/"); // システムフォルダ という順番で実行されている。あとは分かるな?
つまり同じファイル名はNG ってことですね 大事なことだと思うんだけど、どこかに書いてあったかな
明示的にパス指定すればよめるからNGではない。パッチとかで困ることになるから同じファイル名は使わないのが無難ではある。
97 :
90 :2011/06/21(火) 19:30:05.85 ID:e2hjvMz3
>>91-92 サンクス。
とりあえず
>>92 でやってみて今のところ特に問題はなさそうなので使ってみる。
でも、確かに背伸びしすぎないことも必要なのかもね。
そういう細部はもっと上達してからにします。
あ、レンダリング元フォントは要連絡で再配布可のもので、連絡済だから大丈夫だと思う。
>>97 横から悪いがフォントのラスタ化と再配布は別物だけど配布元には伝わってるの?
ふつうラスタ化はPDFのみとか用途限定だけど。
99 :
名前は開発中のものです。 :2011/06/22(水) 00:05:37.77 ID:FT51G9ga
インライン画像をアニメーションさせる事ってできますか? 伏字部分がウネウネ動いている感じにしたいのだが・・・ 試しにLineBreak.asdをコピペリネームして自前の画像に差し替えたところ、画像が静止したままでした。 初歩的な質問かもしれないですが教えてもらえると助かります。
素朴な疑問なんですが 吉里吉里ロゴの 「吉里吉里エンジンを使用したソフトウェア作品に含む場合、 あるいは非商用で利用する場合のみ、自由に加工、表示をしてくださって構いません。」 って書いてあるけど、 商用で利用する場合はロゴ表示しちゃ駄目って事? それとも商用の場合はロゴ加工が駄目って事?
二段目の「非商用」は吉里吉里エンジンを使用したソフトウェア作品じゃなくて、 ロゴ自体を非商用で利用するということじゃないの?
tjsで背景画像を表示したいのですが、どうすればいいのでしょうか?
>>101 吉里吉里エンジンを使用してなくても、
非商用ならロゴ加工しても可能ですよー…ってことだったのか。
商用で吉里吉里エンジン使用してて、
その上でロゴを加工して表示OKならそれでいいんだ…。
ありがとー。
2chで聞いてないでロゴ作った奴に聞けよ 複数の意味に取れるライセンス文なんて本人にしか分からんだろ。
>>103 ライセンス関係はこういう曖昧な事が多い
法律もそうだけど、柔軟性を持たせるため必ず違った解釈や抜け道が出来るようになってるから
>104の言うとおりこういうのは本人に聞かないと明確な回答は得られないよ
>>109 LayerPlugin.ks
20行目:
setPos(20, 600);
→ setPos(20, 600-chHeight);
43行目:
foreLay.copyRect(0, nobiryou+1, imgLay, 0, nobiryou+1,chWidth,nobiryou +1);
→ foreLay.copyRect(0, chHeight-(nobiryou+1), imgLay, 0, chHeight-(nobiryou+1), chWidth, nobiryou+1);
>>110 nobiryou-1で上にあげようとはしたのですが
setPosが間違っていたとは・・・
ありがとうございますm(__)m
>>107 曖昧って……唯一
>>101 が言ってる通りの解釈しか存在しないでしょ。
例題は3つの文に分けられる。
1.吉里吉里エンジンを使用したソフトウェア作品に含む場合(、あるいは)
2.非商用で利用する場合(のみ)
3.自由に加工、表示をしてくださって構いません
"あるいは" というのは "or" だから、1or2ということになる。
したがって
1+3=吉里吉里エンジンを使用したソフトウェア作品に含む場合、自由に加工、表示をしてくださって構いません
2+3=非商用で利用する場合、自由に加工、表示をしてくださって構いません
という2つの条件があり、"のみ" というのはそれ以外はないわけだから、
上記2つ以外の条件による、自由な加工、表示は認めないことを意味する。
これ以外の解釈は存在しないと思う。
113 :
100 :2011/06/23(木) 12:18:37.98 ID:bfASx3Ed
あるいはって単語自体が自分の中であやふやだったんだよなー 日本語難しいぜ ちゃんと考えられる人が羨ましい というわけでありがとう
変な質問ですが、画面上のハイパーリンク選択肢に 北へ行く 南へ行く と表示させ、北を選択した後のメッセージ履歴には 北海道へ行くことにした と表示させることはできますか? 上手く説明できませんが選択肢の文章を置き換えたいです(できれば空白も含めて)
>>114 [nowait]
ノーウェイトで表示してすぐ消す[er]
[endnowait]
>>114 選択肢の表示部分は履歴に残さないよう[history]タグで指定してやる
あとは選択肢の飛び先で
[eval exp="kag.historyLayer.store('履歴に残したいテキスト')"]とやればOK
117 :
名前は開発中のものです。 :2011/06/23(木) 16:33:29.15 ID:v+8i6BiP
Android版吉里吉里が出るのはいつ?
118 :
114 :2011/06/23(木) 16:55:11.08 ID:OlidjMWE
ありがとうございます! 試してみます
流れを切ってすみません。 TJSで作成したレイヤをシステムボタンから呼び出すようにしているのですが、 レイヤ表示中にマウスホイールでシナリオが進んでしまいます。 作成したメニュー画面には、.setMode();を指定していますが、 メッセージレイヤも子レイヤ扱いになってしまうのでしょうか? マウスへの出力停止もやってみましたが、うまくいきません。 何が問題なのでしょうか?
>>117 KAGEXのサブセットならすでにある。
でもまあAndroidでやるなら一から開発になるだろう。
吉里吉里に拘る必要はない。
拘るとかじゃなくて 今までのスクリプトをそのままAndroidで出したいんじゃないの?
122 :
名前は開発中のものです。 :2011/06/24(金) 10:05:18.74 ID:YiDL5h8A
EXE形式みたいに、Android実行アプリを吐き出せるとかなり嬉しいけど。
描画位置の座標とか素材画像ファイルのサイズとか音声ファイルの変換諸々全自動で やっても結局手作業で変換しなおして座標指定し直しじゃないと実用に耐えない、ってなりそう。
>>121 ,122
エンジンと開発ツールをjavaで作ってclassファイル吐けばあとはdexに任せるしか無いから
簡単にできるけどそこまでしてKAGのシナリオファイルのフォーマットやタグをわざわざ全く別の環境で使おうとは思わんな。
KAGは容易に修得できるかも知れんが設計が古かったり歴史由来の仕様が残ってたり色々スマートじゃない。
一番の問題はKAGのソースそのものだと思う。作る側からすれば新しい環境であれを引き継ぎたくはない。すぐに破堤するよ。
windowsにおいて実績があってレガシーだということこそがとても価値有ることだと思うよ。
新エンジン開発でjsもどきとHTMLもどきを使うより本物のがいいしね。それこそ大多数の人が学習なしに使える。
AndroidってC++も使えるようになってるんでしょ?
>>125 コアAPIはC++で書いてるけどアプリはJavaのみじゃなかったっけ。
C++のライブラリ直接使えるんかな。
NDKにEGLがないしただのJNIだからjavaは必須。
128 :
名前は開発中のものです。 :2011/06/27(月) 10:44:27.84 ID:vjqyr0Wu
皆さん、詳しいですね−! Android版吉里吉里に期待age スマフォでお手軽にノベル見られたら嬉しいわ。
iPhpneでも動くようにお願いします
iPhone のが移植楽そうだね 既に XNovel とか手軽なものがあるから、あえて吉里吉里みたいな 大がかりなものを移植する物好きはいないだろうが……
新たに作るならなんでもいいんだけど これまで吉里吉里で作ったものを、画面リサイズだけでほぼそのまま動かせる ようなものができたら、需要ありそう
音の規格の問題とかあるから、結局手間はかかるよ……。
ファイル形式は一括コンバート出来るだろうから、 そんな大した手間でもあるまい。
iPhoneってArtemisの独壇場じゃん。KAGライクだしおなじKAGライクをわざわざmac用意してApple Developer Program契約とかなんの面白みもない。
大きな声じゃ言えんがアルテミスの出来いまいちだからなー もっと既存リソース流用できる仕組みがあればなあとは思う
メッセージレイヤ内の文字はどのKAG変数(kag.○○)に記憶されているのでしょうか?
どこにも記録されてません。自分で仕組みを作る必要があります。
>>137 そうですか…、解答ありがとうございました。
どなたか、KAGParserのstore/restoreの方法を教えて下さい。 tf.a = new KAGParser(); // tf.a を新しく KAGParser インスタンスに tf.b = tf.a.store(); // tf.b に状態をセーブ tf.a.restore(tf.b); // tf.b からリストア と実行すると、三行目で「ハードウェア例外が発生しました」に なります。 Exception : Access Violation(read access to 0x00000000) ただセーブ・ロードしたいだけなのに…
aかbがnullなんじゃない?
tf.aもtf.bもnull/voidじゃないし、ちゃんとそれらしい値が入って いることは確認済です。
tf.b.storageName が "" だとこのようになることがわかりました。 実在するシナリオファイルを適当に入れれば O.K. だけど、 言えば吉里吉里のバグじゃん。酷いや。 if (tf.b.storageName == "") tf.b.storageNamae = "title.ks"; tf.a.restore(tf.b); もしくは if (tf.b.storageName == "") tf.a = new KAGParser(); else tf.a.restore(tf.b); で回避可能。
シナリオを一度も読み込んでないからstorageNameがtvtVoidになってるだけ tjs側でKAGParser.loadScenario(name)するかKAGParser.curStorage="hoge.ks" KAGが走ったら真っ先にfirst.ks読みに行くから何も処理してないKAGParserインスタンスをストアすることはないからそういうのは想定してないんじゃないの? 実際に >tf.a = new KAGParser(); // tf.a を新しく KAGParser インスタンスに >tf.b = tf.a.store(); // tf.b に状態をセーブ >tf.a.restore(tf.b); // tf.b からリストア なんて使い方はしないから。 AssertionError投げといたほうがいいがバグではない。単に使い方間違ってるだけ。
使い方を間違ってる、と断言はできない。マニュアルにそうしちゃ ダメとも書いてないし、試してみたら、assign() は普通に動いたし。 「バグと断言もできないが、まぁ回避策で我慢して使うしかないね」 というのが正しい。 普通やってこない入力もちゃんと考えてエラートラップするのが 「システム」だと思うけどね。いくらゲームとはいえ。
アホか。 ここで愚痴ってないでバグ報告しろよ。
エラートラップとかいつの時代だ。例外処理があるだろ。 assignはメンバのコピーをやってんだから動くだろ。 store/restoreは永続化してるんだからやってることが違う。 マニュアルに書いてないも何も、もともと非公開だしKAGParserは直に触るもんじゃない。 バグだと思うなら報告してこい。
ま、待ってくれ……直に触るものではないのになぜマニュアルに載ってるんだ……
もともと非公開で触ってほしくないなら非公開のままにしておけばいいんだ……
おかしい、絶対おかしい……
あ、おかしいのはW.Dee氏ではなく
>>146 の頭な。わかってると思うけど念のため
>>144 や、どうみてもバグだろう。いわゆるぬるぽ。
でもって、正しく エラートラップされてるからこそ Exception : Access Violation(read access to 0x00000000) なんだろうて。
該当部と思われる部分はなおしといたので、次のバイナリ更新でなおると思われ。
乙でございます
@if exp="kag.lastMouseDownX==void" @eval exp="tf.rclickHidari = 300" @elsif exp="kag.lastMouseDownX >= 600" @eval exp="tf.rclickHidari = 600" @else @eval exp="tf.rclickHidari = kag.lastMouseDownX" @endif @if exp="kag.lastMouseDownY==void" @eval exp="tf.rclickUe = 300" @elsif exp="kag.lastMouseDownY >= 600" @eval exp="tf.rclickUe = 600" @else @eval exp="tf.rclickUe = kag.lastMouseDownY" @endif @position left="&tf.rclickHidari" top="&tf.rclickUe" layer=message0 吉里吉里2.32r2を使用しています。条件voidはマウス不使用の時用。 ウィンドウ時はメニュー用レイヤをポインター付近に出せるんですが フルスクリーン時はかなり位置がずれます。 位置ずれを解消するにはどうしたらいいんでしょう?
void と 比較するときは === と、記述じゃなかったっけ?
>>150 フルスクリーン時は座標が変わってるので、マウス座標は、
X座標はkag.width/kag.scWidth倍
Y座標はkag.height/kag.scHeight倍
しないと位置がずれる。ウィンドウ表示の時は
kag.width = kag.scWidth だからずれないのよ。
153 :
150 :2011/07/03(日) 21:56:55.60 ID:JqgyooM7
レスありがとうございます。 ヒントを頼りにいろいろ試していますが なかなか位置のずれが解消できません。 画面外にレイヤが出て行ってしまうのか 可視画面にメニューが現れないことも あって、うまくいきません。 一応ワイド画面PCのことも考慮して やってはいるんですが… もう少し粘ってみます。
>>152 @eval exp="tf.rclickHidari = kag.lastMouseDownX"
を、
@eval exp="tf.rclickHidari = kag.lastMouseDownX*kag.scWidth/kag.width"
加えて
@eval exp="tf.rclickUe = kag.lastMouseDownY"
を
@eval exp="tf.rclickUe = kag.lastMouseDownY*kag.scHeight/kag.height"
ではダメ?
クリッカブルマップの事で質問させてくだせえ 「クリッカブル2」って名前の画像で、 クリッカブル_p.pngとクリッカブル.ma使いたい時はどうすりゃいいのー?
>>155 image タグの mapimage 属性、mapaction 属性
158 :
150 :2011/07/05(火) 20:52:15.79 ID:JVQ3vRok
レスありがとうございます。 このスレのおかげでマウスポインター付近に メニュー用レイヤが出るようになりました。 本当に助かりました。 今、まだつまずいている箇所がありますが もう少しがんばってみてダメだったら また質問にきます。 本当にありがとうございました。
>>158 結局どうやって解決したか書いてくれると、後で同じ問題に
引っかかった人が助かるので、是非具体的な解決策を書いて欲しい
ウインドウに キャラの名前 セリフセリフセリフセリフセリフセリフセリフ セリフセリフセリフセリフ のように出したいんですが、名前とセリフの間の行間が何故か調整できません。 font sizeやlinesize、style linespacingの指定を挟んでみましたが、行間が変わりません。 タグで書くと キャラの名前[r] [font size=小さいサイズ] [r] [font size=元のサイズ] セリフセリフ のような感じですが、どうすればうまくいくでしょうか
>>160 行間はフォントサイズ変えても変わらないから
改行じゃなくてlocateタグ使えば?
[locate y=0]キャラの名前
[locate y=20]セリフセリフ
クリック待ちグリフの質問です。24×24ピクセルの画像8個を並べて 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8……という順に表示したいのですが 1,2,3,4,5,6,7,8,8,7,6,5,4,3,2,1……となってしまいます。 LineBreak.asd と PageBreak.asd は以下の通りです。 @loadcell @loop ; @macro name=copyone @copy dx=0 dy=0 sx=%x sy=0 sw=24 sh=24 @wait time=200 @endmacro ; *start @copyone x=0 @copyone x=24 @copyone x=48 @copyone x=72 @copyone x=96 @copyone x=120 @copyone x=144 @copyone x=168 ; @jump target=*start どのように直したら良いのでしょうか?
最近数年前に戻りたいなんて考えちゃうぜ。 消えてるサイトからいっぱいDLしておけばよかった…orz
あるある
フゥーーーッハハハハ!
>>164 !今日からお前はラボメンナンバー164だ!
この狂気のマッドサイエンティスト、鳳凰院狂真の実験台になってもらうぞ!
吉里吉里3は出るの?出ないの?
いろいろやろうとして逆に破綻したんじゃないだろうか
>>163 標準のクリック待ちグリフ画像ファイルをぶちこんで
ちゃんと動くなら、画像がおかしい?アルファチャンネルとか
>>163 そちらのLineBreak.asdをコピペして動かしてみたら、
ちゃんと想定どおりに動くので、どこか別のディレクトリに
別のLineBreak.asdが残ってるんじゃないかな。
171 :
163 :2011/07/10(日) 19:56:36.58 ID:/Ps4k8ge
>>169 >>170 教えて頂いた通りにやってみました。
標準のクリック待ちグリフ画像ファイルでは問題なかったので
新しく画像を作り直し(作り方は前回と同じですが)、
別のLineBreak.asdは存在しないようでしたが
念のためプロジェクトフォルダ全体を新しくして
やり直したら上手く動きました。
どうもありがとうございました。
:(;゙゚'ω゚'):え?声優ボイスにSpeex採用しない方が良いの?
新イベきたなー・・・もういいって
ごめ、誤爆orz
言い出してからすっかりわすれてましたが(ぉ
アップローダーを作りましたので良かったら利用してください
http://upload.bokunatu.com/krkr/ 画像サムネイルはアップ時とは別のタイミングで生成してますのですぐには反映されません。
詳細にはvew.cgi表示時にサムネイル生成し、その後何か新しいファイルがうpされた時にindex.htmlなどに反映させています。
害は無いので気が向いた時にでも手を入れたいと思います。
画面下のNoの所に「krkr」keyに「dee」と入れてdelを押すと管理モードに移行します、
スレ住人皆で管理する事とさせてください。
無いとは思いますがやばい動画とかうpされたときはご協力をお願いします。
また、説明文で書いておくべき事があれば指摘お願いします。
その他、何かあったらスレに書いて頂ければ対応します。
とりあえず乙
乙 主に管理押しつけるのは悪いなと内心思ってた 適当でokok
つぎからテンプレ入りか
最近、本を買って勉強し始めた者なんですが、質問があります。 簡単なビジュアルノベル、もしくはアドベンチャーゲームをつくろうと思っているのですが、 選択肢を入れるタグ[link]の項に至る前に、様々な関数がでてきました。 やはりテキスト通り先に関数を勉強するべきでしょうか? こんな質問をしたのも、関数の項をパッと見ただけなんですがくじけてしまいそうで・・・ 関数を勉強しておかないと選択肢のタグを使えなかったりするのでしょうか? 拙い文章で申し訳ありません。ご回答よろしくおねがいします。
>>180 んなこたぁない
tjsを使えなくても吉里吉里でゲーム作ってる奴はいっぱいいるよ
何の本を読んでるのか関数って勘違いして使ってないか気になるが
せいぜい数の比較演算子(>や>=とか)と同定演算子(== とか !=)で
変数による条件分岐くらいできないとアドベンチャーゲームはきついと思う
分岐なしのビジュアルノベルならラベルに飛ぶだけだから大丈夫かな
とりあえずノベルでも吉里吉里で作ってみれば
少しずつ分かってくるようになるかもよ
というか最初はKAGだけでもいいから「一本ちゃんと最後まで作る」に専念したほうがいいと思う
ところで_w_deeって本当に本人のアカウントなのか 想像していた人物像と少しイメージ違うんだけど……
>>181 >>182 ご回答ありがとうございます!
複雑なことはなるべく避けて、まずは可能な限りの知識で一本創り上げてみようと思います!
会いたいとは思わないです。 ごめんなさい。
益々3の開発が遅れるな
吉里吉里3はWxWidgets使っているらしいけど 俺はWxWidgetsよりQtの方が好きだ!
Qtって商売に使ったら金払わないといかんの?
ソース開示するなら使ってもいいんじゃない? それで商売になるならね ソース開示したくないなら金だな 吉里吉里みたいなソフトでGPL汚染するのはあまりよくないかもね
今のQtはLGPLも選択できるけどな
ていうか吉里吉里3ってもう嘘の話だよね
Qtはないわ。ライセンス的な意味で。
LGPLでどう「ない」のか詳しく
LGPL版だとリバースエンジニアリング禁止出来ないからライセンス的に解析し放題だろ。商用だと懸念材料。 あとオリジナルがLGPLのQtだと独自ビルドするときに商用版Qtに移行できん。 自分とこのプロジェクトでライセンス選んで使う分にはいいがすでに決め打ちされてると使いにくい。
http://www.sra.co.jp/qt/licence/index.html ・Qt LGPL 版を使用して作成したアプリケーションのライセンスに、リバースエンジニアリングを禁止する条項を入れてはなりません。
・同一プロジェクト内で、Qt 商用版を使用する開発者がいる場合に、他の開発者が Qt LGPL/GPL 版のみを使用することはできません。
Qt を使用して作成されたソースコードに共通部分がある場合に、同一プロジェクトとみなされます。
・Qt LGPL 版で開発をした後に、Qt 商用版に移ることはできません。
うざいよねえ やむを得ない場合に限り仕方なくならという感じだ
どうせ法的に刑事でリバースエンジニアリングは保護されるから無駄だよ あなたが藁に縋るのは自由だけど
あ、刑事で、じゃないやw
鮭児だろ
リバースエンジニアリング禁止って書いておいても タイ━━━━||Φ|(|゚|∀|゚|)|Φ||━━━━ホ!! 出来るわけじゃないんだったら、LGPLのソフトウェア使っていても関係なくね?
リバースエンジニアリングがおkの場合はクローン作るときとかにおいてリバースエンジニアリングしか 手段がない場合でかつクリーンルームのような権利を侵害しない方法をとった場合のみだよ。 訴えるかどうかは別として。
吉里吉里3って2と何が変わるの?
期待が集まってるのはクロスプラットフォーム化か?
時間かけすぎたせいで、世の中の流れに取り残されてるよな Linuxあたりとのクロスプラットフォームができます! みたいな感じだったと思うけど、今や Linux? なにそれ? そんなことよりiOS版とAndroid版マダー? という状況
というかLinuxでWindowsのソフト動かせるようになるやつあるんだろ? Linuxの人はもともとそういうの使ってるんじゃないかと 何かメリットあるのかなあ
折角だから3ではGPU利用して描画する機能実装しろ
GPU描画はなんか取り組まれていたような気もする
>>207 if-engineってのが最近発表あったよね
吉里吉里・NScripter互換っていってるが、吉里吉里に関しては
多分KAGエミュレータが載ってるだけでTJS処理系まで実装してはいないかな
>>210 そんなのがあるのかー
でも全部tjsで組んでる俺にとってはまったくの無価値(泣
あと2年もすれば
「プラットフォームの性能が低いのでKAGのエミュレーション程度で十分だと思いました」
なんて言い訳は通用しないぐらいまで性能が上がりそうよね
描画がHTML5でよくあそこまでやったと思う。ただ、技術デモ止まりじゃないか?
213 :
名前は開発中のものです。 :2011/07/16(土) 15:22:26.68 ID:sWzIkmmP
最近になって吉里吉里を使い始めました セーブ関連の呼び出しで躓いて検索してみたところ 「初心者はおさかな定食さんのプラグインを使いうといいよ」という回答が多くありました ただ、おさかなさんは休止中なうえ、急ぎじゃないので請求するのもためらわれます 同じような右クリック直接呼び出し等のプラグインを配布されているサイトはあるのでしょうか
>>213 知っているかもしれないけど、吉里吉里に付属しているのもあるよ。
kag3\kag3plugin\sample\rclick_tjs.ks
>>212 描画はcanvas2dもあるしWebGLもあるしゲームエンジン作るには十分だよ
足りないのは音周りかな。PC向けはなんとかなるがモバイル用はきっつい
TJSはかっちりした仕様書ないのがつらいが、大してデカい言語仕様じゃないから
少し詳しい人がいればjsへのトランスレータが作れると思う
>>215 素のwebGLは拷問だぜ。それにcanvasはIEが・・・。
Unityみたいにmonoベースにするとクロスプラットフォームかつ複数言語で実装できるんだけどなぁ。
このご時世に使用人口の少ない俺言語を再実装する利点がはたしてあるのか。
よくiPhoneだのAndroidと言われるがUnityはすでに動作実績があるから同じmonoベースなら新たな苦労は少ないような。
ライセンスもMITが選べたはずだからmonoは良いと思うんだけどなぁ。
monoのソースを見ると、巨大すぎて心がくじけるぞw 最小構成をどうやってくんだらいいのかさっぱりわからない Unity が偉大なのはそれをやりきったところにある。かなりの人数の技術者投入してるんじゃないかなぁ
javaでいいならRhinoがあるよ。 Androidでも動くヨ。 配布物にAnt一発な最小構成があるYO。 ぶっちゃけAndroidオンリーならRhinoでも悪くないヨ。 趣味開発ならw >monoのソースを見ると、巨大すぎて心がくじけるぞw NN5の根本的に間違ってるソースが人生の中で一番衝撃だったわ。 やっとコンパイラ通ったと思ったらソース捨てますとか宣言されてどれだけの人間が発狂したものか。 UnityのmonoはJITとっぱらってAOTコンパイラに差し替えた最小構成でだいぶ小さくなってんじゃなかったっけ? iPhoneやコンシューマ機がJIT載せられないための戦略だったとおもう。 イマドキだとマルチプラットフォームというとスマートフォンも対応するのがトレンドだしすでに実績のある物使っていかないとやってらんねえ。
流れを切ってしまうようで申し訳ありません。 [macro name=naku] [image storage="&tf.chara" layer=0 page=back visible=true pos="&tf.pos"] [trans time=500 method=crossfade] [wt] [endmacro] 中略 [eval exp="tf.chara='泣',tf.pos='center'"] [naku] テキストに載ってたエンティティっていうものを使ってマクロを呼び出す前に 変数の中身を変えて表示するキャラと表情を変えたいと思い、 上記のようなものを打ち込んで試したら、吉里吉里が強制終了してしまいます (エラーメッセージすらでません…) なにか重大な問題がありますでしょうか?
>>219 問題なく動いた
別の所でエラー出てると思う
>>220 確認ありがとうございます!
一から見なおしてみます
>>213 おさかなじゃない所で拾って使ってるよー
今時間無いので帰ったらまた
>>214 デフォのものより扱いやすい(そして見た目がかっこいい?)と聞いたので気になって
丁寧にありがとうございます
>>222 よろしくお願いします
ここで聞いていいのか分からんけども、トランジションの画像計算ってどういう計算式なのか分かる人居ないだろうか。
ヒント:吉里吉里はソースが公開されてます
>>226 リポジトリ落として中身見てるんだけど、該当部分見つからなくて……
>>227 ユニバーサルトランジションのことなら、
Cで書かれたソースなら core/visual/tvpgl.c に集約されてる。 UnivTran で検索しる
アセンブリ言語版は core/visual/IA32/univtrans.nas
ただ、ループ展開した比較的冗長なコードになってる、たばねればかなり単純な式になるがそのくらいは自分でがんばれ
>>228 おお、ありがとう! 助かった。
ざっと見たところ処理追うの結構大変そうだけど頑張ってみる。
吉里吉里で外部プログラムを起動する命令ってありますか? 例えばだけど吉里吉里からメモ帳起動したり
>230 System.shellExecute
ループ展開したアセンブリ・・・。 いまだとメニーコア意識したコード書いたほうが速そうだな。
画像そのものをメッセージレイヤにする方法はありますか? 出来る場合、その方法を教えて頂けると助かります
>>234 質問があいまいだけど、positionタグのframe属性のことかな
すいません、質問です。 KAGのmoveタグについてですが、変数で指定した座標に画像を動かすことは可能でしょうか? 具体的には、 [eval exp="f.turn_my_arrive=100"] [eval exp="f.turn_my_arrivepoint='(&f.turn_my_arrive,100,255)'"] [move layer=0 time="1000" path="&f.turn_my_arrivepoint"] でレイヤー0を(100,100)に動かしたいのですが、この記述だと(0,100)にレイヤーが移動してしまい、 &f.turn_my_arriveを""や''で囲むと文法エラーが発生してしまいます。 何か解決方法はあるでしょうか。
>>236 eval expで&を使ってるから文法エラーに
なるんだと思う
&を使うのは属性に変数を使うときだけ
editタグで入力された文字列が漢字かひらがなかカタカナのどれなのか 判断するのって、正規表現を使えばいいの? [if exp="/['亜-腕弌-熙'].test(f.主人公)"] [jump target="*ruby"] [endif] これをしようとしたら、 if ( ← エラーの発生した前後のタグを示している場合もあります ) 文字列定数/正規表現/オクテット即値が終わらないままスクリプトの終端に達しました っていうエラーログが出るんだけど、('ぁ-ん'とかでも同じエラーが出る) 吉里吉里の正規表現は日本語使えないのかな。 とんちんかんなこと言ってたらスマソ
>238 これでカタカナ判定いけるけど。 [if exp="/[^ァ-ヶー]/.test(f.主人公)"] 正規表現間違ってるだけだと思う。
>>224 レスが遅くなってすみません
助かりました。ありがとうございました
>>236 &の使い方を根本的に間違えてる
&はKAG(KAGParser)の機能で、「属性値の先頭に&をおくと後ろの文字列を eval したものを結果として使う」
なので、記述の途中で使うことはできないし、もちろんTJSでもその機能として使うことはできない
この場合だと、2つ目の式が間違いで eval は普通にTJSの式を書けば良いのだから
[eval exp="f.turn_my_arrivepoint='('+f.turn_my_arrive+',100,255)'"]
これが正解。
余談だが、" と ' のどちらを外に使うかは好みだけど通常の式では文字列は "" でくくってる
ことが多いだろうから、KAG用のくくりでは ' を外にしたほうがわかりやすいとは思う
ちなみにTJSには「@つき文字列即値」という超便利機能があるので
ttp://devdoc.kikyou.info/tvp/docs/tjs2doc/contents/token.html#id370 [eval exp="f.turn_my_arrivepoint=@''(${f.turn_my_arrive},100,255)'"]
こうすればすっきり書ける
あ、ごめん。この場合は @の直後は ' だね。 @"書式付き文字列" @'書式付き文字列' のいずれでも使える
連投すまぬ それを言い出したらそもそも&と@の合わせ技でいいんだった。これでいけるはず [move layer=0 time="1000" path='&@''(${f.turn_my_arrive},100,255)"']
根本的に間違えてる(キリッ と言った後に2つもレスを消費する男の人
喧嘩は辞めてようw
>>219 の質問をしたものですが、
02:37:49 first.ks : [backlay]
02:37:49 first.ks : [eval exp="tf.chara='泣2',tf.pos='center'"]
02:37:49 first.ks : [naku]
02:37:49 泣 の読み込みに 0ms かかりました
02:37:49 first.ks : [l]
02:37:50 first.ks :
02:37:50 first.ks : [eval exp="tf.chara='照2',tf.pos='center'"]
02:37:50 first.ks : [tereru]
02:37:50 照 の読み込みに 11ms かかりました
02:37:51 first.ks : [l]
tf.charaに指定したファイル名と違うものを読み込んでしまうんです…
強制終了はしなくなったものの、何か問題があるのでしょうか?
吉里吉里3プロジェクトは風呂敷を広げすぎてデスマになっちゃったんですか?
>>239 本当だ……
カタカナ判定はできたけど相変わらず漢字はエラーが出る。
いろいろ試してみるしかないのかな。
>>246 変数やマクロばかり目が向いている様だけど
実はトランジションが期待通り動いてないとかなー
>>219 trans消して、imageだけでforeページに画像を読み込んで
お望みどおりの絵が出るか試してみー
あと余談。マクロの属性を、変数を介さず
[naku storage="xxx" pos="yyy"]みたいに直接組めばいいんでない
ありがちな変数名はいずれどこかで被るぞ
>>250 trans消してリトライしたところ正常に絵が表示されました
トランジションが何か間違っていたということですか?
余談についてなんですが、
最初は変数とか勉強したことの確認の意味であんなやり方を考えてたのですが
実際作るとなると変数を介さない方が遥かに良いですね…
その場合、マクロの定義のimageの部分は
[image layer=0 page=back visible=true]
で
呼び出すときには
[naku storage="泣" pos="right"]
これで大丈夫ですか?
>>251 やっぱりね。さて
>>219 のtransタグでは
layer属性値を省略しているが、それがシステムにどう解釈されるか
タグリファレンスを読み直そう
それでダメなら
多分layer0のback画面の設定がおかしいと思われる
位置、サイズ、可視・不可視など
注意点はtransの項目を良く見れば書いてある
「レイヤ(表裏)の状態と、トランジションの関係」は
今のうちに把握しておいたほうが後々ムキーってならない
ではがんばれ
>>252 ゴチャゴチャしてきたので一からリファレンス、サンプルを見ながら書きなおしてみたら出来ました
ですがそのサンプルにもまだ自分が理解出来ない構文が多いので
変数を使って色々試すのはまだ実用的でないと判断しました;
詰まなくてよかったです、ありがとうございます!
254 :
名前は開発中のものです。 :2011/07/20(水) 15:09:35.28 ID:BqPGTR0L
>>251 横から失礼します
そのやり方を前に試したんだけど、
正しい拡張子のファイルが見つからないってエラーが出ます
今は一々トランスの文コピペする作業
そのやり方で成功します?
sage忘れごめんなさい。
>>251 締めたところ悪いが
>その場合、マクロの定義のimageの部分は
>[image layer=0 page=back visible=true]
ではなく
[image * layer=0 page=back visible=true]
または
[image layer=0 page=back visible=true storage=%storage|泣 pos=%pos|center]
みたいにデフォルト値を入れておくと楽だぞ(あとはstorageは%stoに略すとか)
これではじめて
>[naku storage="泣" pos="right"]
で呼び出せる
>>254 エラーはマクロ定義の時にimageタグのstorageが抜けてるから
定義してないのに後から[macro1 storage=hoge]とかやっても
画像hogeは読み込まれない
>>256 マクロの属性っててっきりリファレンスに載ってるiroみたいに使えるのが決まってるのかと思ってました…
デフォルト値を決めておいた場合にだけ[naku]だけで泣かせるトランジションが使えるってことですよね
レイヤーを分けてキャラをたくさん登場させる場合は
[image layer=%layer|0 page=back visible=true storage=%storage|泣 pos=%pos|center]
ってことですよね(教えていただいたのにこれで間違ってたらごめんなさい)
マクロを何行も何個もコピーして改変する必要無くなりました!
やっぱり素人が自分だけで考えたんじゃ効率がいい事はできないですね
ありがとうございます!
今更
>>238 が解決(?)したので一応書いておく。
>>239 ありがとう!
そもそも
>>238 は文法自体が間違ってた(´・ω・`)
とりあえず漢字の正規表現は
[if exp="/[一-熙]/.test(f.主人公)"]
で判定できた。
ただ全部の漢字は判定していないような気もするので
他に何か良い書き方があったら教えてほしい
259 :
名前は開発中のものです。 :2011/07/21(木) 17:25:15.31 ID:mDXQowtU
マクロ内にセーブポイント *|←これ仕込ませたいと思っているんですが どうにか実装する方法ないでしょうか
原理的に無理
>>261 わかりました。ご解答ありがとうございます
どこでもセーブってこの手のゲームのツールだと標準装備でもおかしくないと思う。 むしろなぜそこは自分でやってくださいなのか不思議なくらい一般的な機能だよね。
理由:ネットにそう書いてあったから
すごい初歩的な質問で申し訳ないんですが、 KAGはTJS2で作られてる、吉里吉里でノベルゲームを作り易くするスクリプトで、 そのKAGがシナリオファイルのテキストとタグを理解して吉里吉里で出力しているって考え方で大丈夫ですか? それと、吉里吉里自体は何の言語で作られてるんですか? なんか講座のサイト見てたらふと気になってしまいました。
Android用のKAG互換エンジンが軒並みスクリプト持ってないんで自分の互換エンジンに
javascript積んでみたが使う場面がないなwどうりでスクリプト持ってないはずだわw
>>266 前半は合ってる。それで間違いない。
吉里吉里はC++とアセンブリで書かれてる。
>>267 勉強になります、ありがとうございます!
もう少し講座サイトを読み進めて勉強してみます
>>265 ジャンプはできないけどcallはできるんですねなるほど・・・ saveanyware使ってみようと思います。
ありがとう!
whereだったorz うーんひとつ解決するとまたひとつ問題が・・・
271 :
名前は開発中のものです。 :2011/07/24(日) 14:51:47.06 ID:ogUpggD5
tjs初心者レベルの者ですが、どなたかアドバイスしてください 現在立ち絵の表示処理をKAGのマクロで作っていて、それを運用していますが、 これを使うと文章の表示が止まってしまいテンポが悪いんです 既存立ち絵の移動や新立ち絵の表示など、処理が複数段階あるため、 末尾のwtやwmを削ればいいという状態でもないので、 1000行近いマクロを全部tjsで作り直すしかないのかと悩んでます やはりtjsで作り直すしかないでしょうか? その場合、どのような設計にすると労力が少なくてすむでしょうか? どなたかご教授お願いします
>既存立ち絵の移動や新立ち絵の表示など、処理が複数段階あるため 毎回立ち絵に関するマクロのタイミングで、 巨大なマクロの処理をするので遅くなっていると思われるので tjsで組むのとは違うが、こんな対処方法はどうか? ひとつのマクロに全部まとめないで、バラしてマクロを作り [macro]〜[endmacro]の範囲内の容量を小さくまとめ 演出の用途に応じてマクロを使い分ける
273 :
名前は開発中のものです。 :2011/07/24(日) 15:39:07.22 ID:ogUpggD5
>>272 レスありがとうございます
すいません、言葉が足りませんでした
以下の処理Aと処理Bを同時に行いたいんです
(処理A)
既存立ち絵の消去または移動→空いた場所に新規立ち絵表示→既存立ち絵表情変化
(処理B)
“A子「なにやってるの?」”という文章をメッセージレイヤに表示
つまり、「待ち時間が長いので短縮したい」ではなく、
「処理の終了を待ちたくない」なんです
まぎらわしくてすいません
非同期トランジションをしたいって話か?
275 :
名前は開発中のものです。 :2011/07/24(日) 16:20:40.19 ID:ogUpggD5
>>274 トランジション限定というより、
立ち絵処理まるまる一つをKAGのメイン制御から外れた形で
実行させたいんです
[tatiedel chara="B子"]
[tatie chara="A子"]
[tatieface chara="C子" face="驚き"]
A子「なにやってるの?」
↑この書き方で、1行目の実行と4行目のメッセージ表示が同時に行われ、
1行目の処理が終わると2行目、3行目が順次実行される、というのが理想です
>>273 プログラミングじゃなくて演出論ですまなんだが…
それキャラボイス有りが前提の演出方法だと思うんだけど、声は出ますのかな?
277 :
名前は開発中のものです。 :2011/07/24(日) 16:37:52.72 ID:ogUpggD5
>>276 声は出ませんが、おっしゃることは分かります
画面の上と下で同時に変化を起こされても、見てるほうは追いつかないってことですよね?
その点も検討して、今までは立ち絵処理→文章表示と順番に処理していました
でもいずれは声入りの作品も考えたいし、
消去→表示→表情変化の流れの間、ずっと文章を表示せずに
空のメッセージウィンドウを表示したままというのが気になったので、
作り直しを考えたという感じです
>>277 意図を汲んでくれてありがとう( ´∀`)
279 :
名前は開発中のものです。 :2011/07/24(日) 17:00:51.37 ID:ogUpggD5
>>278 お礼言われた!
こちらこそ、ご意見本当にありがとうございます
身内以外からのそういったご意見は、とても参考になります
>>275 こんなアルゴリズムで組んだらどうだろう
レイヤー第1グループのfore面に、更新する画像を opacity=255 で配置済
*|セーブポイント
レイヤー第2グループのfore面に、更新する画像を opacity=0 で配置
[move]で、レイヤー第1グループの画像をopacity=0になるように同座標に移動開始
[move]で、レイヤー第2グループの画像をopacity=255になるように同座標に移動開始
本文を表示開始
すべての[move]の動作終了まち
レイヤー第1グループ一式とレイヤー第2グループを入れ替える
クリック待ち
281 :
名前は開発中のものです。 :2011/07/24(日) 18:37:29.79 ID:ogUpggD5
>>280 こう書いて運用する方法ですね
[tatiedel chara="B子"]
A子「なにやってるの?」
[tatie chara="A子"]
[tatieface chara="C子" face="驚き"]
>[tatiedel chara="B子"]
だけならそれでいいと思うのですが、
>[tatie chara="A子"]
>[tatieface chara="C子" face="驚き"]
の部分が、メッセージ表示を待っての処理になってしまうので、
この2行もメッセージ表示とは無関係に処理したいんです
282 :
名前は開発中のものです。 :2011/07/24(日) 18:40:25.86 ID:ogUpggD5
>>280 ご意見いただいたのに申し訳ありません
でも、単発の演出を作る時には非常に有効な方法だと思いますので、
そういうものを作る際は大いに参考にさせていただ
283 :
名前は開発中のものです。 :2011/07/24(日) 18:42:44.58 ID:ogUpggD5
失礼しました そういうものを作る際は大いに参考にさせていただきます
284 :
名前は開発中のものです。 :2011/07/24(日) 19:45:58.73 ID:ctS4QL9S
調べても情報がないので、質問させて下さい。 上部のメニューバーの栞を挟むをクリックすると、 ズラッとデータの一覧がでますが、 linkタグやグラフィカルボタンなどを押したときに、 同じような動作をさせるにはどうしたらいいのでしょうか。 kag.loadBookMarkFromFileWithAskだとダイアログボックス?が出てしまうし……
>>284 栞の一覧を画面上に表示してそこから栞を選ぶという機能であれば
KAGスクリプトでサブルーチンを作って実行すれば良いですよ
「セーブ・ロード画面をつくる」的な題名で
色んな人がサンプルを公開しているはずだけどな。今は無いの?
>>286 リファレンス眺めた感じやれそうな気がする
中途半端な実装だなーとは思うけどwちょっと試してみよう
調べてるうちにねちゃった。すまん。 kag.restoreMenu.popup(tpmReturnCmd,9,9) 座標をちゃんとした位置に調整する必要があるけど。 でも開くだけでそれ以降は正常動作しないわー。 ごめんわからん。
>>288 いいえ、わざわざありがとうございました。
自分でも必死こいて情報あさってみましたが、
[link exp="kag.onRestoreMenuClick()"]続きから[endlink]
↑2003年の情報だと、これで先程の画像のようにできたっぽいですが、
いまは反応しませんね。
TJSをちょろちょろと書き換えれば、カンタンにできそうなのですが……
もうちょっと粘ってみます。
kag.storeMenu.popup(tpmNoNotify,9,9) でいけた。
>>290 わああああああああありがとうございます!
できました。感謝!!
いえいえ、俺も妙な技覚えて面白かったですw 記念にメモ [nowait] [link exp="kag.storeMenu.popup(tpmNoNotify,9,9)"]セーブ[endlink][r] [link exp="kag.restoreMenu.popup(tpmNoNotify,9,9)"]続きから[endlink] [endnowait] ※数字はメニューを出す位置
あ、でもこれ全画面化中にポップアップさせると、 ゲームのウィンドウが最小化してしまいますね…… うーん……
>>293 [nowait]
[link exp="kag.storeMenu.popup(,9,9)"]セーブ[endlink][r]
[link exp="kag.restoreMenu.popup(,9,9)"]続きから[endlink]
[endnowait]
こうしたらどうなる?こっちではうまくいった。
>>294 何度もすいません。ありがとうございます。
これだと最小化しないですが、
全画面時にポップアップすると、サブメニューが画面外にいってしまいます。
それにあわせて()の数値を調整すると、
ウィンドウモードの時に妙な位置にいってしまうので、これも問題がありますね。
.Clickは効きませんし……。
参りました。
今日は晩酌で酔いがまわる前にw
>>295 ポップアップの前にフルスクリーンかどうか調べる必要がありますね。
適切な座標を求めるヒントは確かこのスレか前スレにあった気がしますが、
厳密に計算しなくても条件分けでそれぞれ適当な数値をあたえてやれば用は足りますねw
ここまでくるとKAG上でやるより一旦外に出した方が良いと思います。
[iscript]
function hoge(){
if(kag.fullScreen)
{
kag.storeMenu.popup(,xx,yy)"
} else {
kag.storeMenu.popup(,xx,yy)"
}
}
function hoge2()
{
略。上と同様な流れ
}
[endscript]
[nowait]
[link exp="hoge()"]セーブ[endlink][r]
[link exp="hoge2()"]続きから[endlink]
[endnowait]
Clickが聞かない件については不明
>>296 ありがとうございます、それでやってみようと思います!
質問です。 KAGWindow_config()のような、なんらかの関数内で プロパティを定義することは不可能なのでしょうか? たとえば、KAGWindow_config内で this.func = function{};のようなノリでプロパティを登録したいのです。 失敗例 KAGWindow_config内に property prop { getter { return 'hoge'; } } とするとpropがみつかりませんのエラー その後の箇所に this.prop1 = ∝ としても ('&prop'ね) propがみつかりませんのエラーとなってしまいます
オートモード使用時:音声が終了するまで次の処理へ進みたくない。 スキップ時:音声など気にせず即スキップしたい。 共通:音声再生中に、次の音声を再生する場合。 1クリック目は音声を停止せず、音声の終了を待ち今の音声が終わったら自動的に音声を再生させたい。 さらにもう1度クリックがあった場合強制的に次の音声を再生する処理へいきたい こんな感じの処理を求めてるのですが共通の部分がどうしてもうまくできません どうやったら自動的に再生されたり、2回目のクリックで強制的に次の処理へいかせたりすることができるでしょうか?
>>299 検証せず適当に…
se.tjsのfunction onStatusChanged()をいじったり
kag.leftClickHookをいじったり?(cf.TJSをもっと使うために)
何回目とかそういうのは変数作って判定
とか?
なお音声がらみだけの質問なので
KAGシナリオの進行と絡める方法は別におねがい
蛇足。状態を画面に図示しないと
「共通」機能はユーザーにとって直感的にうつらないと思った
wsってタグがあってな
基本機能が貧弱すぎるな 吉里吉里3はとん挫したようだが吉里吉里4が企画されるようなことがあれば、 もっと生産性を考慮した設計にしてもらいたい
別に吉里吉里2は貧弱だと思わないけどな。むしろ無駄に拡張性ある TJS2もノベゲエンジン書く程度なら妥協できるレベルだ だがKAG3、お前はダメだ
304 :
名前は開発中のものです。 :2011/07/29(金) 14:41:37.06 ID:uTpo5eez
KAG3ってなにがだめなん?
ロートルの私からすると、タグ形式って時点で終わってます
306 :
名前は開発中のものです。 :2011/07/29(金) 15:55:11.37 ID:OGgjKdIr
ロートル(笑)
307 :
名前は開発中のものです。 :2011/07/29(金) 17:05:57.76 ID:uTpo5eez
プログラマーの視点とパートタイムなスクリプターの視点では乖離してるからなんともいえないなあ。 そこはプログラマーが妥協してあげるところではないかと個人的には思う。 もしやり取りにて定型的な面倒が起こっているならば、 その箇所は自作ツールにて自動/半自動で問題を解決できるかもしてない。
まあ、設計は悪いよな。KAG3。 後から後から他人のコード付け足してスパゲッティ化が進んでるし。 吉里吉里自体はレイヤ周り以外いいと思う。
KAGは基本設計は悪くないけど、システム機能とADV用機能がまぜこぜで 「何でもできてしまう」のが欠陥だね。バグの原因だし移植の壁にもなってる。 システムよりの命令は排除して別途専用のフレームワークを準備するのが妥当ではある
吉里吉里もKAGもそんな詳しくないけですけど、 KAGってそんなに多機能だったんですか? タグをポチポチ打ち込んでくだけでできちゃうから もっとシンプルで物足りないくらいなのかと思ってました
それどんなLiveMaker
割と奥が深い KAGの初心者向けの本とか結構分厚い まぁそれだけで言いきるのもアレだけど
システム周りはファイル操作含めてパーミッションあった方がよかったな。 実行中にエラー出させてコンソール開いて何でも出来すぎる。
コンソールとか潰して自前コンパイル、対応するexe以外拒否するような ロジックをスクリプト側にも記述、くらいのことはさくっとできるだろ そういうの気にするようなプロダクトなんてまずそうそうないと思うが
UIを気軽に好き勝手作れるのは好きだな ボタンで作れば使いまわしやすいし
>>310 多機能というか、ADV用の記述命令でシステム処理も書くようになっていて、そこで
競合する処理が簡単にかけてしまい、また人によってその記述の方法がばらばらに
なるので可搬性がむちゃくちゃ低いのです
わかりやすい例をあげると、コンフィグ画面とかをメッセージ窓をつかって作ってる人が多いと思いますが、
これにメッセージ窓1番を使ってある場合、自分が作るときは作中でメッセージ窓1番を使わないように
配慮すれば問題になりにくいですが、他の人がつくったシナリオデータを移植する場合に、
その中でメッセージ窓1が使われてると、そのままではもう動きません。全面的な書き直しが必要になります。
これは、システム系をTJSで書いたプラグインとその追加命令だけで実現、とかしない限りは避けられない問題で、
そこまでいくとそれはもう KAG ではない別のなにかです
それやるとプラグイン周りが複雑になりすぎてKAGに負えなくなるんだよね。 まあスクリプタが何も考えずにtjs書きまくるのが問題なんだけど。 誰が保守するんだ?どうやって使いまわすんだ?次使うときまた書きなおすのか?何のためにスクリプトで書いてんのか分かってんのかと・・・。 で、KAG使う必要性がなくなってくるというかKAGじゃ対処できない。
KAGでシステム面をいじれすぎて使いまわしづらいんですね TJSを勉強すると回避できたりするんですか? そもそもTJSをしっかり勉強してたらKAGが必要なくなるとか…?
>>318 システム周りをプラグインにしてしまえば使いまわし出来るよ
layer も自分で管理するようにすればレイヤー番号にも縛られなくて済むよ
安易にいじりやすすぎる、というのは確かにあるな 他のADVエンジン触ってると仕様の縛りがけっこう強くて、筋違いなストレスを感じる 吉里吉里のフリーダムさに慣れすぎるのも考えものかもしれない……
なるほど… 今まで簡単なゲームだけ作れればいいと思ってたけど、 使い回しとか、便利さとか考えて片手間にTJSもちょっと勉強してみようかなぁ
KAG標準だけで良い層とTJSでゴリゴリ改造する層は吉里吉里で満足できるのな 問題は中途半端な層で、中途半端にヤイヤイ改造するからイライラの元になるのだろう
話の流れ理解できてるか? tjsが何でも出来すぎてtjs(スクリプト)である必要が無いのと可搬性・再利用性に欠けるって話してんだよ。 可搬性がないのはスクリプトのくせに低レベルな構文や関数しか無いのも原因だfor-inすらないんだぞ。
>>323 君が一番理解できてない。KAGの可搬性の無さは別にtjsだけが原因ではないし、tjs の構文は全く関係無い
そうだそうだ!!!!!!!
326 :
名前は開発中のものです。 :2011/07/31(日) 13:46:22.30 ID:/N9LM3eb
>>323 顔真っ赤だぞ
なんちゃってプログラマー様(笑)
流れぶった切るけどゴメン。吉里吉里で自作ゲームを作ってみたいと思って 何か良い解説本はないか、過去スレとか解説系サイトをググってみたら 「吉里吉里/KAGノベルゲーム制作入門」がサンプル付きでわかりやすいと出てきた。 普段、テンプレを用いた自サイトのHTMLタグたちを少々改変する位しか それっぽい行為をした事がないド初心者だけど、この本ってわかりやすい? あと、他にも良いサンプル付き解説本があったら教えてほしいです。
サンプルつきの解説本か・・・やってる人いないのかな
>>327 自分もそれ買いましたけども、サンプル多めで内容もわかりやすいですよ
ただ、自分は本当に初心者だったので豊富なサンプルをどう活用すればいいのかちょっと戸惑いました
本を読んでから色々なサイトの解説も分かるようになったので導入編としていいかもしれないです
>>327 吉里吉里・解説本の中で、その本が最も丁寧に書いてある。
その本から入るのが、たぶん一番分かりやすいと思う。
ttp://kikyou.info/tvp/ ここから、最新版の
kr2_232r2.zip
translib2.lzh……なくてもいいが、どうせ必要になる
を落としてくる
kr2_232r2.zipを解凍し
kirikiri2フォルダの、krkr.eXe を、任意のフォルダにコピー
kag3フォルダの、templateフォルダを、krkr.eXeをコピーしたフォルダにコピー
template\system の、Config.~new を Config.tjs にリネーム
translib2.lzhを解凍し、中身を template\rule にコピー
template フォルダを data フォルダにリネーム
意気揚々と、krkr.eXe をダブルクリック
ゲームのシステムを「全部」作るのかよ……たいていの人はここで挫折する
本や、サイトを参考に、とりあえず妥協できるゲームのシステムにする
作り方のコツを、先人から聞く
改造してゆくうちにレベルアップしてゆき、ゲームを自由に作れる
初歩的な質問で申し訳ないのですが、 リファレンスを見ても理解できなかったので質問させてください。 メニューのオートモードを押した際、「AUTO中」と画像を表示したいです。 tjsで、 「指定画像を任意の場所に表示する」という命令、 または、 「指定カグシナリオ(.ks)へ飛ばす」という命令は、どう書けばいいでしょうか。 kag.callExtraConductorだと、エラーが出て使えないらしいので、 他の案を探しています。
>>332 kag.レイヤ指定.loadImages()
kag.process()
KAG命令をTJSに置き換えたいなあと思い始めたら、テンプレの
Inside KAG3を見ると分かり易い
AUTO表示については、専用レイヤに予め画像を読み込んでおいて
kag.fore.layers[xxx].visible=true(false)で表示オンオフをしてみては
>>333 ありがとうございます、参考にして組んでみます。
おかげ様で、オートモード中画像表示は実装できました。ありがとうございます。 もう一つ理解出来ない部分があるのですが…… メニューの「オートモード」と「タイトルへ戻る」を押せないようにしたい所で、 [eval exp="kag.autoModeMenuItem.enabled = false"] [eval exp="kag.goToStartMenuItem.enabled = false"]と記述しているのですが、効きません。 何か解決法はありませんでしょうか。
ヒストリーレイヤーに 画像いれたり 線いれたり ボイス再生機能つけたり ロードしても一定数のヒストリーを表示させることって できますかね
できるか?と言えば、できる だが、そのためにどれだけの改造の労力がかかるかは 初心者は知らない 許してやろう、肝要な心で この、一言で表している尋常じゃない仕様を ……ざわ ……ざわ 画像をいれたければ、画像を入れる方法を!しかもヒストリーを表示している時にっ 線を入れる?下線の事か?大方、リンクにオンマウスで下線を出したいのだろう ボイス再生機能?タグリファレンスを見ろ答えがのっている ヒストリーを表示させる?なぜ表示されないのか、理由があるからだ 無理を通すにはそれなりのリスクとチャレンジが必要 初心者はリファレンスが読めない リファレンスは辞書だ、必要な時に、必要な箇所を調べ 知識を補充・確認するものだ 10万3千冊の魔導書を全て記憶するインなんとかさんじゃあるまいし 全部覚える必要などない
確かに考え付くのは簡単だけど 実際やるのはめんどくさい 慣れもあるんだろうけど、 一々サイトのサンプルとか解説とか 前に打ち込んだやつ見ながらじゃないと出来ない
言い忘れたけど
>>337 はよく見かける気持ち悪い人だからあまり気にせず勉強してね
>>336 ちょっとURL忘れたけど履歴拡張のプラグイン公開してるサイトさんがあるからググってみて
質問です pimageをmoveさせる事は可能でしょうか? セル方式アニメではなくミニスチル内からはみ出さず キャラや背景をスライドさせたいです 可能ならば方法を教えて貰えると助かります
>>336 >>342 他
返事送れてすみません ありがとうございますこれです><ありがとうございます
勢いあまって2回お礼いってしまったorz
>>341 TJSでゴリゴリやるのには慣れてないってことでおk?
KAGの範囲内であるなら一言で言うと無理だけど、具体的にどういう動きをさせようとしてるのか
ちょっとわからないので絵コンテくさいものを描いて見せて欲しいかも。
それによっては何か別のアプローチがあるかもしれない。
346 :
341 :2011/08/04(木) 18:20:26.71 ID:Tt/eLqjt
>>346 吉里吉里ではレイヤより大きな画像を読み込んで、レイヤからは
その一部分だけ見える、みたいなことができるので、
1. 窓レイヤを作る
2. 窓レイヤにキャラクタ画像を読み込む
3. 窓レイヤ内のキャラクタ画像表示位置をずらしながら
4. それに同期して窓レイヤを動かす
で実現できるよ。
1.,2.,4.はKAGでも十分可能。3.はセルアニメの.asd
ファイルをひねればできなくもない、くらい。
TJS使えるなら 3.はsetImagePos()使えば簡単なんだけど…。
うpした後で気付いたけど、窓部分をくりぬいた背景画像で目隠しするだけでも 同じ見た目を実現できるね。なんてこったい……。
wwwww
351 :
341 :2011/08/05(金) 20:00:06.01 ID:q479Wepx
>>347-348 どうもありがとうございます!
調べてみたら自分は擬似スプライトというものをやりたいようでした
おかげでやりたいことが実現しそうです
>>347 だと窓もmoveできるから背景くりぬきより柔軟な演出ができそうですね
因みに
>>349 のように
レイヤーn番にメッセージレイヤー以外の画面をコピーして
窓部分をくり抜こうと試みた事があるのですが
くりぬき方がわからず断念したことがあります
よければこちらもご教授賜りたいです
窓以外の上下左右で分割してcopyRect()も考えましたが
窓が複数ある場合を考えると面倒になりそうで…
>>351 348に触発されて、窓をスクロールさせるのを作ったのでupload。
素材やスクリプト等はそのまま使わせてもらいました。多謝。
http://upload.bokunatu.com/krkr/vew.cgi/bknt0012 もともとの346のイメージはこんなんかなぁと。
これはクリッピングアニメーションで実現してる。
実現方法には全く関係ないけど、.asdファイル内のマクロ
ではmp.が使えないから全部変数をtf.にしなくちゃいけなくて、
簡単にどこかで重複しちゃうだろうから汎用化が難しい!
というのを学んだ…。
みんな優しいなあ
参考になるなぁ こういうこと考えて組み立てられるようになりたい
>>352 レポジトリにあがってる最新の krkr.exe バイナリでは任意のコンダクタで独自に mp が使えるようになってるよ。試してみそ
従来は & による実体参照や、cond や if とかは全部グローバルコンテキストで動いてたんだけど
rev 4942 以降で、該当オブジェクトのコンテキストで動くように仕様変更されたので、
普通にメンバ変数が参照できるようになった。なお、mp は macroParams のエイリアスになってる
>>355 それはナイス情報、ありがとう!
実際その変更はいろんなところで助かる!
今回は最初、.asdのマクロ先頭で
tf.local_abc = kag.fore.layers[0].Anim_segments[0].macroParams
とかすれば、以降 tf.local_abc.* がローカル変数として使えるなー、
と思ったんだけど、layerやsegmentきめうちがカッコ悪いし表記も
面倒で諦めちゃってた…。
.asdの中から、自分が表示されてるレイヤオブジェクトがわかれば
もう少しスマートなんだけど、その方法は思いつかなかったし。
>>356 asd を実行してるのは AnimationConductor だから、メンバ変数の owner に元レイヤを持ってるので、
その最新の吉里吉里上なら、実体参照中で owner という名前で参照できるはずです。
もちろん書式つき文字列との組み合わせも可能
ついでに、Scripts.eval も実行コンテキストがとれるように拡張されてるので、
# 第二引数:ファイル名、第三引数:行番号、第四引数:コンテキスト 第三までは従来からあった隠しオプション
AnimationLayer 中の function eval(elm) の Scripts.eval 呼び出し部を
Scripts.eval(elm.exp, "layer:" + name, 0, this);
とか書き換えておくと、eval タグの実行コンテキストが対象レイヤになって便利かと
>>357 情報ありがとう。
新しい吉里吉里を使えばownerで参照できるのはその
通りだよね。356の後半は「今の吉里吉里では」だった
ですよ。
吉里吉里やKAG本体は、後にVerUpする時のことも考えて
極力書き換えないようにしてるなぁ。ゲーム作ってる
最中にVerUpが必要になった時、単純に上書きできなく
なっちゃうから…。
KAGにはだいぶ慣れてきましたが、ちょっと背伸びをして、TJSを使おうとするととたんに厳しくなります・・・ 今日も、マウスホイールの回転状態を検知させたくて、週末ずっとTJSの入門編をあさっていたんですが、全然たどりつきませんでした(;_;) MainWindow.tjs の、 function onMouseWheel(shift, delta, x, y) の中に、KAGで参照できるような仕掛けをつくればいいと思ったんですが var tf.delta = delta; ではエラーになってしまいます。KAGの変数と、TJSの変数では扱いが違うのでしょうか。
>>359 tf はすでにあるから var いらない
361 :
359 :2011/08/07(日) 22:02:08.64 ID:JyuW9LZG
362 :
359 :2011/08/07(日) 22:16:47.44 ID:JyuW9LZG
>361 tfっていうのは、tfという名の辞書配列なの。 だから既に配列として宣言済ってことね。 辞書配列だから、tf.deltaはtf["delta"]とも書けるよ。
364 :
341 :2011/08/08(月) 16:52:23.23 ID:BAYYemPM
>>352 ありがとうございます!
サンプルとても助かります
.asdファイルについてとても勉強になりました
未熟丸出しでも思いきって質問してよかったです
>>346 で抜けてしまいましたが
>>175 アップローダーの提供ありがとうございました!
それと
>>351 でレイヤーをくり抜けなかったと書きましたが
レイヤーにダミーで画像を読み込んだらcolorRect()ですんなり解決しました
何度も質問してすみませんでした
365 :
359 :2011/08/08(月) 20:15:35.78 ID:Tt/8p/xN
>>363 解説ありがとうございます!
なるほど、そういう仕組みになってるんですね。
MainWindow.tjs に var tflags = %[];
initialize.tjs に var tf = kag.tflags;
って記述してある部分ですね。
辞書配列の解説してあるページを調べたら
どのページでもちゃんと解説してありました。
勉強不足で申し訳ありませんでした
366 :
名前は開発中のものです。 :2011/08/10(水) 11:20:00.17 ID:XINp3e1v
超初心者からの質問です。 あるゲームでは、会話をしている時に 下の方にメッセージウィンドウが出ていますよね。 それと同じようにAさんが一言発した後、 メッセージをクリアしてBさんに言葉を発させたいのですが、 Aさんの時に設定したフォントやサイズが [er]、[ct]、[cm]のどれを使っても全部デフォルトに戻ってしまうんです。 皆さん毎回Aさん、Bさんごとに設定しているのですか? どう調べればいいか分からず、ここに質問させていただきました。 どなたか伝授していただけるとありがたいです…
デフォルトに戻らないからどっかの設定が間違ってる
>>367 いや、[er][ct][cm] どれでも、フォントスタイルや属性はデフォルトに戻るでしょう?
私は、メッセージの前に毎回設定してますよ。
ただ、いちいち毎回フォントの内容を設定するのはめんどくさいので
最初にマクロで
;少女用フォントマクロ
[macro name="girlfont"]
[font color="0x00FFFF"]
[endmacro]
などとして、
[girlfont]「こんにちわー」[resetfont][l][r]
のようにしてます。
これだと、あとからフォント設定を変えたいときも
マクロの修正だけで、全て変更できるので便利です。
369 :
名前は開発中のものです。 :2011/08/10(水) 22:12:55.75 ID:XINp3e1v
>>368 おぉぉぉぉ〜!こんなことができるのですね!!!
とっっっても勉強になりました。
また調べても分からない事があれば、ここで質問させていただきます。
本当にありがとうございました!!!
.ks文で一時的に特定のキー(VK_ENTERキー等)を使用不可にする方法ってありますかね?
自力で解決できました
デバッグモードがON時にゲームを起動させると自動的に監視式を表示してくれる方法って何かないかな。 コンソールやコントローラなら知ってるんだけど
「あどばんすど吉里吉里/TJSノベルゲーム開発ガイド」の サンプルをもとにプログラムを組んでいるんだが、 メニューボタンの読み込みサイズってどこで指定すればいいのかわからない。 てっきり「初期x位置」の値を変えればいいかと思ったんだけど いじっても特に変化なしで、ボタンが途中で切れて表示されている。 ここでかれこれ6時間以上詰まっているのでどなたかよろしくお願いします。
通常のボタンと同じ理屈じゃないのか?三分の一ずつ状態に割り当ててる。
あどばんすど〜ってのggったがそれ本のサンプルか? さすがにその本持ってないとわからんぜ、一部ソース貼ったりはできない? エスパーすると、タイトルからしてtjsでの実装なのかな 普通にsetSizeなんちゃらとかじゃない? これでボタン画像が横に連結されてないとかだったら笑う サンプル使ってるなら大丈夫な気はするが
なるほど、ボタンって3つ連結した状態にしないといけないんですね・・・。 私2つ連結した状態の画像にしていました。 ありがとうございます。
すみません、もう一点お願いします。 また上記の書籍に関してなのですが メッセージレイヤー0を呼び出すと 自動的に画像つきのものが呼ばれるようになっておりますが その設定はどこでされているのでしょうか? フォルダ内の画像をすべて探したのですが メッセージレイヤーで使用されている画像が見当たらず 手がかりがない状態です。 何度もすみません
すみません自己解決しました。
失礼します。どうしてもわからない部分がありましたので、書き込みをさせていただきました。
ttp://www.geocities.co.jp/Bookend/2352/krkrplugins/ このサイトにて、配布している。どこでもセーブプラグイン改を実装し、シナリオテキストの先頭に
[call storage="SaveAnywhere.ks"]\
[call storage="Macro_Text.ks"]\
以上の文字列を記入したのですが、なぜかその部分で改ページが起こってしまいます。
改ページになってしまうようなコマンドは入れていないと思うのですが、どうしてもわかりません。
もしよろしければ、アドバイスいただけないでしょうか。
KAGEXのスライダーでコンフィグ画面からメッセージウィンドウの透明度変更するのってどうやるんだろうか どなたかヒントを教えて頂けないでしょうか
すみません、変数とか使用したら実装できました(一応似たような質問が今後出たときように載せておきます KAGEXのコンフィグ画面でウィンドウ透明度(スライダー)変更 first.ks //変数を初期化させる(初期化の方法とかは各自で指定してください sf.messageopacity = 255; コンフィグ画面.ks //スライダーで [slider width=208 height=20 opacity=0 tab="config_bar_on" min=0 max=255 value=sf.messageopacity nohilight] //戻る際に実行 [layopt layer=0 opacity="&sf.messageopacity"]
続き macro.ks //initscene内でテキストウィンドウを指定するところで [image storage="透明化させる画像" layer=0 ] [layopt layer=0 opacity="&sf.messageopacity" left=0 top=535 width=1280 height=165 visible=true autohide] //その後透過させないメッセージレイヤーなど指定してください(既存のままでおk? (そもそもこんなのに躓くのがうち以外にいるのか疑問ですが) スレ汚しすみませんでした(なんで書きこむまで延々とわからなかったのに毎回書き込んでから自己解決するんかな……orz
KAGEXなんて物があったんですね。調べてみたらレイヤ機能が拡張されてるらしいですね。 あまり初心者向けな解説サイトが無かったのですが、KAGを一通り勉強してから触れたほうが飲み込み早いですか? 拡張版って聞くと最初からそちらを勉強したほうがいいのかなって思ったんですが・・・
正直KAGEXさっぱり分からん
KAGやってからのほうがいいとおもう
>>379 system/Config.tjsでignoreCR=false;が指定されているからだと思う。
同ページの上の方にあるように、同ページのプラグインはignoreCR=true
を前提として書かれているので、ignoreCR=falseで使う人は
プラグインの中の空行やらに適宜 '\' を追記する必要がある。
ignoreCR=falseって一般的なのかなぁ。「無作為に抽出した
同人ゲーム20本のうちなんと7割がignoreCR=falseでした!」
みたいなデータがあれば、同ページの管理者の方に連絡して
かけあってもいいかも。
あと別件、KAGEXは便利機能満載でもっとユーザが増えてもいい
のに、配布状態がすぐ使える形でないのと、マニュアルの未整備
っぷりでものすごく損をしてると思う。高機能すぎて使うのに
癖があるから、先にKAGやっといた方が判りやすいのはそうだと
思うけれど。
数年前KAGEX使おうとしたら、改行関連で訳分からんバグがあったから捨てた 今は流石に直ってるとは思うけど、今から導入しようと思っても ドキュメントも何もかも不足すぎて敷居超高い
スタッフロールからタイトル画面(クリッカブルマップ・ボタン使用)に戻ろうとしてるんだけどさ、 スタッフロール終わってからだと、うんともすんとも言わないんだよ…。 メッセージレイヤが表示されてないっぽい感じになるんだが、 普通に起動したらちゃんと機能してるし、 問題はスタッフロール終わってタイトルにジャンプしたら起きるんだよ… なんかぐだぐだ書いてしまったが、 アドバイス頼むー
戻る位置間違えて、メッセージレイヤが非表示のままになってるだけだと思うが。 gotostartで戻ってるなら特にやりがちなミス。
jumpで戻ってるけど一緒か! やっぱりメッセージレイヤが非表示になってるのかな…… そりゃそうだよなー クリッカブルマップの画像読み込む直前にメッセージレイヤ表示って書いてる筈なんだが 見直してくるわ!ありがとう!!
改行関連のバグってあれか 既読スキップ時にLinemodeがvn,free,texだとシナリオ読み込むときに止まるってやつか?(未だに原因つかめないorz pageなら問題なく動作するのに
vnもfreeも使ってるけどそんなのなったことないな
>>392 そうなのか。
んじゃoverrideかその辺で何かミスったかな。
>>386 ありがとうございます、無事解決しました!コンフィグの設定のほうを見落としていました。
390だけど解決した!ありがとー
吉里吉里KAGで作ったソフトを配布する時にインストーラー付けようと思うんだけど、 おすすめのある?
KAGEXはKKDE落としたら付いてくる。
付いてくるKAGも前のバージョンで古いから心配だけど評価する分にはいいんじゃない?
http://doujingame-shien.net/course/krkr.htm の13.を参考にOverride.tjsに
//メッセージ履歴表示時にメッセージを隠す
HistoryLayer.origClearBack = HistoryLayer.clearBack;
HistoryLayer.clearBack = function(n)
{
kag.fore.messages[0].visible = false;
return origClearBack(...);
};
HistoryLayer.orighide = HistoryLayer.hide;
HistoryLayer.hide = function()
{
kag.fore.messages[0].visible = true;
return orighide(...);
};
って書いて履歴表示時にメッセージを隠したのですが×ボタンや右クリックで閉じる
ときはメッセージが復活するんだけど、メニューのシステム>メッセージ履歴を表示
チェックを外して履歴を消した時にはメッセージ表示が復活しない。
この場合にもメッセージを戻すにはどうしたらいいんですか?
KKDE2はもう開発終了なのか
>>397 ボタン・マウスクリックで履歴を抜けるときは、
kag.historyLayer.onMouseDown()等 → kag.historyLayer.hide() → kag.hideHistory() → kag.historyLayer.dispUninit()
だけど、メニューから履歴を抜ける時は、
kag.onShowHistoryMenuItemClick() → kag.hideHistory() → kag.historyLayer.dispUninit()
だから、後者はkag.historyLayer.hide()を通らないためそうなる。
clearBack()/hide()でメッセージレイヤを操作すると同じような
ことが起こるので、dispInit()とdispUnInit()で操作することを
オススメするよ。
また、メッセージレイヤの消去も、kag.fore.messages[0].visible
をつつくのではなくて、kag.hideMessageLayerByUser()と
kag.showMessageLayerByUser()を使った方がより汎用的で
よくないだろうか。メッセージレイヤは消えたけどシステム
ボタンは残っている、とか、他のメッセージレイヤが消えない、
ような問題を防ぐため。
…もういっそここのExtHistoryLayerを使った方がいいかも。
ttp://www.geocities.jp/keep_creating/krkrplugins/ チェックしてみたら、ここのは上で述べたように実装してた。
丁寧に解説ありがとうございます 後者の流れは自力では見つけられなかったと思います メッセージレイヤは二つ使ってるので付け足して使ってました 例示では似た行の繰り返しになるので削って書きましたが 紹介されたやり方の方がスマートですね 紹介されたプラグインはとても高機能ですね 必要になったら導入させてもらいます
402 :
397 :2011/08/19(金) 04:17:35.31 ID:YIAnwwQS
試したらkag.hideMessageLayerByUser()だとメニューバーの「メッセージ履歴を表示」の enabledがfalseになってメニューバーから履歴表示を解除できなくなりましたので 地道にvisibleを操作することにします
質問させていただきます。初心者です。
選択肢にマウス乗っけたらフォントの色が変わる、っていうのを
組み込みたいんですが、数時間ググってもズバリ的中なものは見つからず…
なんとか、
http://www.kirikiri.info/bbslog/log/005379 ここらへんの情報にたどり着いたのでonenterを使ってなんとかできないかと試行錯誤しましたが
どうにもわからず、軽く挫折してます。。。
プラグインも、サイトが閉鎖して入手できませんでした。
もしよろしければ、どこをどういじれば実現できるのか、
解説お願いします。
文字を描画しなおさないと無理なんじゃないかな? onenterで選択肢の番号を変数に記録して、裏に表をコピーして文字を消去 再描画中に色を変えたい手前で変数の番号が合えばフォントの色を変える、過ぎれば元に戻す 裏を表にする
>>403 ここの過去ログ(
>>2 2 772番から)それらしい話題が出てたよ。
MessageLayer.tjs のhighlightLayerのタイプをltMultiplicative(乗算合成)に変えるやりかた。
試してないのでわからないけど、
乗算合成なので、何色でも好きな色に変えるというわけにはいかなそう。
あと、当時と違って、メッセージレイヤのタイプのデフォルト値(Config.tjs)が現在、ltAddAlphaになっていたと思うので
もしかしたら、そこは注意しないといけないかもしれない。
>>404-405 お返事ありがとうございます。
自分はなかなか、難しい事をやってるみたいですね。。。
矩形は出せるのにー。
アドバイスを参考にtjsまわりから、もっといじってみます。
変数の中に改行っていれられませんか? [eval exp=tf.text="今日はいい天気です改行明日もいい天気になるといいな"] [emb exp="tf.text"]
ダメだと思って一応\n挟んだら出来て驚いた 詳しい人に聞きたいが、\nと[r]て何か違いあるのか [eval exp=tf.text="今日はいい天気です\n明日もいい天気になるといいな"] でいけた、履歴も問題ないっぽい
\nはTJSで使う改行正規表現で、[r]はKAGで設定してる改行制御。 変数内にあるデータは文字列として扱われ、[r]はスクリプトとして取り扱われず改行されないが \nはTJS上の正規表現であるため、TJS上で改行とされ改行が有効になる・・・とかっていう推測
TJS2リファレンスのトークンの文字列即値に載ってる特別な扱いをする文字と KAGのタグの違い embは変数を表示するタグ、ではなくTJS式を評価して置き換わるタグ、とKAGリファレンスに書いてある 「評価」という意味が分からないが・・・ 詳しい人に聞きたいと書かれると答えにくいねw
いや、この例ではevalタグの中で代入される時には 既に改行コードに置き換わってるだろうからembは関係ないのか?
embはラインごとにバッファに入れて書いてる \nは評価された時点で改行コードになるわけだからそこで文字列が分割されてるんじゃない?
>>403 文字色が白の場合のみ上手くいくと思う。他の場合は値を工夫する
以下サンプル
;メッセージレイヤ0のハイライトを乗算にする
[eval exp="kag.fore.messages[0].highlightLayer.type=ltPsMultiplicative"]
[eval exp="kag.back.messages[0].highlightLayer.type=ltPsMultiplicative"]
;リンク(デフォルト値はcolor=0x0080ff opacity=64)
[link color=0xff0000 opacity=255]test[endlink]
[p][cm]
[link color=0x00ff00 opacity=255]一度消しても維持される[endlink]
[p][cm]
;元に戻す時は以下
[eval exp="kag.fore.messages[0].highlightLayer.type=kag.fore.messages[0].layerType"]
[eval exp="kag.back.messages[0].highlightLayer.type=kag.back.messages[0].layerType"]
;リンク
[link]test[endlink]
tjsがわかるならaddButtonとdrawStateあたり書き換えるなりなんなりで テキストボタン使えるようにして色を指定するってのが楽なやり方かも 枠を消せばテキストリンクっぽい見た目になる
415 :
403 :2011/08/22(月) 09:47:44.21 ID:BsCGoWnt
>>413 そのコードを使ったらあっさり解決してしまいました。。。
感謝です。
一つお伺いしたいのですが、乗算合成ということは
文字の部分だけ色が変わってる、っていう処理なんですか?
>>415 ちょっとはぐぐれカス
http://p-lux.net/?no=827 http://www.designwalker.com/2009/07/photoshop-blend-mode.html ここらからリンクをたどればひととおり説明されてる。
メッセージレイヤは背景レイヤの子レイヤ。
そして、リンクタグの青い四角(highlightLayer)はメッセージレイヤの子レイヤ。背景レイヤからみたら孫。
子レイヤは親より手前にくる。
リンクにマウスカーソルが乗ったらhighlightLayerの該当の場所を指定した色と濃さで四角く塗り潰されリンクがハイライトされて見える。
マウスが離れたら透明に塗り直されてハイライトが消えた状態になる。
>>413 はhighlightLayerのブレンドモードを乗算にして文字の色だけが変わったように見せている。
テキスト枠用にmessage0
ボタン用にmessage1
本文テキスト用にmessage2
といった割り当てに一票。前景レイヤを使うと表示順や立ち絵やらの割り当ての際に気を使う必要が出て煩わしいから。
なんだかんだで優しいんだなw
ツンデレが多いんだよ
420 :
415 :2011/08/23(火) 05:35:56.52 ID:cscE3gND
>>417 さすがにググりましたよ!
どこも書き方が難しいんですもの。
しかし、ありがとうございました。
ROMに戻ります。
シュタゲ8bitまさかの吉里吉里2/KAG PAINTとLINEはLayerExと自前っぽい。あと展開対策してるな。
質問です 本編でおまけシナリオAのフラグを立てる ↓ メニュー画面にAへのリンクを追加 ↓ A内でさらにおまけシナリオBのフラグを立てる ↓ メニュー画面でAへのリンクを削除、Bのリンクを追加 こういうことをやりたいと思ってますが おまけの追加はできても削除の仕方がわかりません。 A・Bそれぞれへのリンク部分に変数を使って表示を分けるという考え方でいいんでしょうか。
>>422 Bのフラグをtrueにした時Aのフラグをfalseにすればいいんじゃないの?
表示はif使えばいいんだし
本編でsf.A=true
メニューでsf.Aがtrueか判定。trueなら表示
A内でsf.B=true及びsf.A=false
メニューでsf.A及びsf.B判定。各自trueなら表示 falseなら非表示
Aフラグは別の所でも使われてるかもしれないから Aへのリンクの表示の判定をif(sf.B==false&&sf.A==true)とするほうが 間違いがなさそう
>>423 trueがあるのだから当然falseもあるということに全く気付いていませんでした…お恥ずかしい。
おかげさまで表示できました。ありがとうございます!
>>424 入れ違いすみません。凄く参考になりました。ありがとうございました。
>>417 リファレンス>値の範囲は 0.0 〜 1.0 とします。
提示されたリンク先でやっと意味に気づきました。dです。
前景レイヤだと、アニメーションの表示、ptextタグ(斜め文字)といったKAGの機能が、
テキスト枠を派手に演出したいときとかに使える可能性はあります。
管理の煩雑さでいうと、最初に前景レイヤの数を十分余裕をもって設定し、
マクロを上手に使えれば、あまり負担にならない気もします。なので、前景レイヤに1/3票ということで...by 416
吉里吉里3は頓挫だな 無理なら無理って言えよ
社会のルールを知らない坊やは2ちゃんねるに来ちゃいけませんよ?
右クリックデフォルトのメッセージレイヤー消去を メニュー画面でのみ動作しないようにするにはどうすればいいですか? メニューにあるリンクは消えると不自然に感じるので…
@rclick enabled=false
432 :
430 :2011/08/25(木) 16:48:35.49 ID:nkuQdFsP
おおーありがとうございます 「右クリック 消去」でググってたけど「右クリック 使用不可」にすればよかったのかあ
吉里吉里でFlASHムービーを使っていて、前にkrkr.exeで起動させたときまでは、 なんの不具合もなく再生できていたのですが、 今日、起動させたらムービーが再生できなくなっていました。 タグを弄ったわけでもなく、 ファイルを弄ったわけでもないのですが、原因は何が考えられるのでしょうか? 調べたのですが、みつからなくて・・。
あとブラウザ関連でflashplayerがうまく関連づけられてないか
ありがとうございます。
>>434 吉里吉里のフォルダ自体は弄ってないので、
プラグインはそのままあります。
>>435 そういえばFlashの更新をしたので、
それが原因な気もしてきました・・。
ブラウザでは問題なく.swfファイルは見られるんですが・・。
KAGEXのサンプルにあるやつでメッセージウィンドウに表情窓だすとエラーになるんだがやったことある人いる? もしいたらエラー吐くか吐かないか教えて。(吐かなければこっちのミスだろうし
文章表示がカクツキます。 原因がわかりません 誰か助けて
>>438 文字のカクつきってスキップとかの?
それならたしか仕様だと思う。
一応どなたかが文字のフェード表示の仕方公開してた記憶があるからそれ使うとかいいんじゃない?
一緒に素早いスキップ方法とかも書いてあったと思うし
>>437 どうやってるのか書いてくれないと検証できないよ
サンプル使って試したことはないけど表情窓自体は普通に使えてる
>>440 たしかにやり方描いてないと検証できないわなw
基本的にはサンプルを使用で下記を変更しています
macro,ks
[position layer=message0 frame="messagewindow" opacity=255 faceLeft=10 faceTop=20 faceWidth=165 faceHeight=165 width=1280 height=165 left=0 top=535 marginL=200 marginT=50 marginR=200 marginB=20 nameLeft(一部中略) visible=true]
(表情窓の表示指定追加)
envinit.tjs
faceLevelName : "f",
(表情窓レベル指定)
これでdisknameタグ(【】)使うと
dispname ( ← エラーの発生した前後のタグを示している場合もあります )
(void) から Object へ型を変換できません。Object 型が要求される文脈で Object 型以外の値が渡されるとこのエラーが発生します
ってなるのよね。
なにか方法間違ってるのかな。
>>441 macro.ks の[initscene]マクロの一番最後に[backlay]つけると直る。
これはtjs読めないと詰まっちゃうんだろうな。
トランジションするために『裏ページの』メッセージレイヤの表情窓に画像読み込もうとしてエラーでてる。
表ページだけで裏ページの表情窓は指定されてないのでアウト。
対策として[backlay]で表ページのメッセージレイヤをコピーすればおk。
>>442 の続き
教訓として[position]とかでメッセージレイヤの設定変更したら常に[backlay]しておくといいよ。
本当は[syncmsg]でもいいはずだけど今みたらバグってた……。
ワールド拡張では内部的にレイヤをトランジションとかコピーとかしまくってます。
ワールド拡張独自のキャラクタとか舞台とかは上手いことやってくれてる。
けれどもKAGの機構をそのまま使ってるメッセージレイヤは不整合おこしたりするので
手動で表裏の設定あわせておくと安全。
>>443 [backlay]か。そういえば今まで殆ど使ったことなかった。
わざわざありがとうです。
もう少しtjs読めるようになりたいorz
tjs読めないとソースがドキュメントになっちゃってるKAGEXは無理
KAGEX研究した作例とか作ろうと思ってたけど、予想以上に手癖が強いみたいね。 やっぱりKAGベースにしたほうが良さそうね。 ま、結局は立ち絵の実装のアプローチで足踏みして迷ってしまうんだけどw 自分の流儀押し付けるのも嫌らしいし、どうしたもんだろね。 目パチ、口パクまでフォローするとどうにもフクザツに見えるよねぇ……。 吉里吉里信者としては現状のニーズも手間次第でクリア可能って言える情報をWEBに置いておきたいのだけど。
>目パチ、口パクまでフォローするとどうにもフクザツに見えるよねぇ……。 もっと単純に考えて動きをもたせるならtjsで制御すればいい。 なんでもかんでもKAGにやらせるのが間違い。 それにKAGEXを使いこなせるまで把握してる奴ってどれくらい居るんだ?
タグリファレンス一応あるけどまだ未完成だしねぇ
TJSの敷居を下げる一番の方法は、TJS使ってるソースを公開する事じゃないかな。 プラグイン作ったなら、そのプラグインを使った完動状態のソースとか。
おさかな定食復活きぼん
初歩的な質問いいですか? キャラが死んでしまったときとかに立ち絵を半透明化して 幽霊みたいにしたいんですができるでしょうか?
リファレンスくらい読もうぜ。 imageタグのopacityを変更すれば変わる デフォルト(指定しない)が255で不透明、0にすると完全に透明で見えなくなる 半透明にしたいなら120くらいで試して、後は調整すればいいお
>>452 ありがとうございます
一通り目を通したと思っていたんですが・・・
もうちょっとちゃんと確認できるようにがんばるお!
初心者的な質問で失礼します。 「シュタインズゲート」の8bitをやってみて面白かったので コマンド入力式と、あと従来のコマンド選択式の 混合のゲームを作ってみたいと思ったのですが、 吉里吉里での制作は可能でしょうか? どのようにすればよいでしょう?
コマンド入力式・・・editとかinputとか コマンド選択式・・・超余裕
>>455 できるはできるが漠然としすぎててなんとも答えられない
「どのようにすればいいのでしょう」といわれても、そもそも実装の仕様が分からんことにはな
8bitは吉里吉里だと言っとろーが。このマッドサイエンティストが!
459 :
455です :2011/08/28(日) 07:40:38.62 ID:FdeFqG2V
>>456-458 ありがとうございます。言葉足らずでスミマセン。
ごっちゃになってました。
ふだんは選択式で進めながら、入力式は、
いざというときにシュタゲみたいなtalkとかの動詞をボックスに入れさせたり
想定していない単語の時にはエラーメッセージを返したり、
昔のサウンドノベルみたいにクライマックスで犯人の名前を入力させたり
みたいな使い方ができればなぁと。
460 :
455です :2011/08/28(日) 07:42:57.46 ID:FdeFqG2V
選択式はふつうにできるのは理解していますので、 知りたかったのは、まず第一に、そもそも 吉里吉里で作るひとつのゲームの中で入力式と選択式が混在できるのか でした。 で、もしできるのであれば、どのレベル?というか、 吉里吉里いじり始めの初心者にも可能なのか TJSとかをガリガリするレベルでないと難しいのか を知りたかったのです。 [吉里吉里 コマンド入力]とかで検索しても、なかなか見つからなかたので・・・
リファレンスを読め これはもう何年も前から言われてることだけど、KAGやTJSについて知りたいなら リファレンスがいちばん詳しいし、結果的に知識を得るための近道にもなる
462 :
455です :2011/08/28(日) 08:14:39.30 ID:FdeFqG2V
>>461 ありがとうございます。
とりあえずリファレンスを読んでみます。
読めば当たり前?の質問をしてしまってスレ汚し申し訳ありませんでした。
というか、いくつか吉里吉里製のゲームをすれば、名前入力画面が 出るようなものにはすぐぶち当たると思うんだが。 それこそ初めて作りましたー、レベルの奴でも。
inputの文字列の入力なんだけどさ ダイアログボックスじゃなくて、画面上でやるにはどうすりゃいいの? いや、というか、ダイアログボックスを可愛く出来れば問題無いんだけどな できるのか探してみつつ、 分かる人いたら教えてくれー
input じゃなくて edit をつかってみれば? 擬似的に、ダイアログの画像を、image や pimage で場に出して ptext でメッセージを記述して 入力の箇所は edit を使用して配置する
8bitはexpat使ってるが立ち絵にSVGでも使ったのか シーンごとのコマンドの外部化にでも使ったのかなんだろうなあれ。
吉里吉里3は頓挫だな 無理なら無理って言えよ
>>465 editなんてあったんだなー
ありがとう。やりたかった感じで出来たよー
吉里吉里で最小化時のアイコン変更ってできるんでしょうか。 もしできるのであればどなたかヒントを頂けないでしょうか
releaserで変更するのではなくて?
windowEx.dll使えばできる
>>470 releaserだと一時的にアイコンを変更するわけじゃないので……
>>471 KAGEXに付いてるやつですよね。
(しかもこれで検索したら過去ログでこれ使えばできる的なの出てきたorz)
あとはこれをどう使えばいいのかか。調べてこよう
Menus.tjsあたりを編集すればいいのかな
タイトル画面からcallタグで以下のファイル名「rclick_l.ks」内の*load_menuを呼び出して セーブデータを呼び出す物を作ったのですが、本来なら右クリックしたら タイトル画面にもどってくれると思っていたのですが、メッセージレイヤが消えたり付いたりしかしてくれません… 何処が間違えているのでしょうか? 「first.ks」 *load_go [call storage="rclick_l.ks" target="*load_menu"] [rclick enabled=false] ======================= 「rclick_l.ks」 *load_menu [rclick storage="rclick_l.ks" jump="*load_return" enabled=true] [tempsave place=1] 中略 *load_return [tempload place=1] [return]
>>472 ・windowEx.dllはレポジトリの最新版
・Override.tjsでwindowEx.dllをリンク
・AfterInit.tjsに下記コード:
var MinimizedIconFile = System.exePath + "hoge.ico";
kag.onHide = function { System.setApplicationIcon(MinimizedIconFile); } incontextof kag;
kag.onShow = function { System.setApplicationIcon(); } incontextof kag;
kag.registerExEvent();
・アイコンはxp3アーカイブに含められないので注意
476 :
472 :2011/08/30(火) 02:36:59.75 ID:cnujg2Eu
>>475 詳しいやり方ありがとうです。
windowEx.dllはkag3ex3内のやつですよね
外部例外でエラーになるんですがこれってPCの方の問題でしょうか
478 :
472 :2011/08/30(火) 02:59:48.25 ID:cnujg2Eu
>>477 なん……だと
でもそれもそうか。最新版って書いてあるんだからtrunkのほう探さないとダメか。
ずっとbranches内探してたよorz
ありがとうおかげでちゃんと望み通りの機能ができました。
次からはちゃんとtrunkの方も探そう
吉里吉里はこういう細かい仕様をいじりだすと楽しくてたまらんよなあ
>>479 おかげで本業(絵)が疎かになっていますけどねw(ペン持ちたくない
KAGEXって何でこんな分かりにくい開発体制なの? 導入どころかちょっと気になって詳細調べようとするのすら敷居高いんだけど
まあソフトの開発ってそれだけ大変だってことだと思う ゲームプレイする側にはわからなかったことが今ではわかる ちょっと質問したいことができたので質問します @ IEやfirefoxみたいに画面サイズを自由に変更したいんだけど無理かな? 四隅にカーソル合わせるとサイズ変更できるとか A 初期のPSみたいに能力値をいくつか設定して 例)文系:80理系:100運動:20ストレス:40 そこから条件分岐を発生させたいんですが、 加算減算でつまずいてしまいうまくいきません 変数に変動値加えて画面に表示させるっていうのが こんなにむずかしいとは・・・
>>474 rclick jump属性の使い方をまちごうておる。それとも投稿時の打ち間違い?
>>483 T.KAGEXでデフォルト装備だからできないことはないけど詳しくはわからないorz(あてはその機能外しちゃったけど
U.初期のPSってのがよくわからないからあれなんだけど
;各種能力初期値設定
@eval exp="f.humanities=80"
@eval exp="f.science=100"
@eval exp="f.movement=20"
@eval exp="f.stress=40"
;理系が100なら分岐(この分岐は好感度として詳しく解説しているサイトがあるからそこ参照
[if exp="f.humanities>=100"]
[jump storage="hoge.ks"]
[endif]
;能力値を+1
[eval exp="f.hoge++"]
;能力値を+20
[eval exp="f.hoge+=20"]
;メッセージレイヤーに現在値を表示
[emb exp="f.hoge"]
>>485 ありがとうございます
@はKAGEXで少し調べてみます
あとAですがときめきメモリアルとか悠久幻想曲とか
SSですがピアキャロットへようこそ2とか
あのあたりをイメージしています
わかりにくくてすみません
こんばんは、初めて書き込みますん KAGは何年もいじっているのですがTJSについてはさっぱりの初心者です 選択肢ひとつひとつにひとつのレイヤを使おうとしています 1.領域内にマウスカーソルが入った時にレイヤの背景画像変更&文字色変更ができる 2.moveタグで移動できる 3.トランジションがかけられる の3点を行えるメッセージレイヤを作りたいのですが難しいでしょうか? 検索してTJSに挑戦!というサイトの「選択肢プラグイン」というのが近かったのですがmoveタグで操作できない&トランジションもかけられず 仕方なくメッセージレイヤ2枚にして片方にテキスト表示、片方をグラフィカルボタンにして重ねてみたものの、タグがすごく複雑でmoveの時に環境によってレイヤがズレたりしてしまいます
>>488 ありがとうございます
こういう風に作ればよかったのか
ぜんぜん違うじゃん俺
490 :
名前は開発中のものです。 :2011/08/31(水) 20:10:04.59 ID:jvF6dCRC
私はfirst.ksに全てのマクロ(フォントなど)を書いています。 ある地点でセーブ(first.ks内に書いてある)をし、 いったんゲームを終わらせてからロード(first.ks内に書いてある)をすると、 マクロが有効になりません。 ロードをせずにぶっ続けでやった時は、マクロが有効になります。 ちなみにストーリーなどはfirst.ks以外に書いてあるので、 (常にfirst.ksから呼び出しています。) マクロは読み込まれているとは思うのですが… 説明が下手で、とても分かりづらくてすみません。。 どなたか分かる方いらっしゃいますでしょうか?
systemフォルダのConfig.tjsの「 栞にマクロの情報を保存するかどうか」の項目を trueからfalseに変更する
492 :
名前は開発中のものです。 :2011/08/31(水) 22:45:20.45 ID:jvF6dCRC
>>491 上手く行きました!
falseにしてみたんですが、どうして上手くいったかよく分からないので
じっくり調べてみます。ありがとうございました!!
プロパティオブジェクトを、incontextof などで上書きする方法を教えてください function MessageLayer_config_override を弄ってて、関数の場合は this.finalize = function() { ... } incontextof this; で上書き可能なのは分かるのですが、プロパティの場合に this.prop = property { ... } incontextof this; とするとエラーがでてしまいます。 FunctionとPropertyで違うようなのですが・・・分かる人いましたらお願いします
>>493 おそらく結論は、式中関数はあるけど式中Propertyはない(リファを読む限り)。
>プロパティオブジェクトを、incontextof などで上書きする方法を教えてください
incontextofはコンテキストの入れ替えだと思うのでイミフ等。
以下、何をやっているのかちょっと分かりかねますが。
これって吉里吉里自体のwindowを表示する前に 画像を数秒表示(windowの枠無しで)させてから 吉里吉里のwindowを表示させるってことは出来るんでしょうか 例えば恋と選挙とチョコレートの起動時みたいな感じなんですけど
>>497 おお、おっしゃるとおりスプラッシュスクリーンというやつです。
名前がわかると結構調べられますね。
とりあえず前者と後者両方見てみて実装できそうなのを試してみます。
ありがとうございました。
本来、起動時間が遅いのごまかす為に出す画像なので 無いに越したこと無いのだが あると恰好いいかもしれないか
>>497 このサイトの人、すごいあれこれいっぱい作ってるのに分かりにくい
勿体ない
たしかにわかりにくかったですけど実装するのは特に難しくなかったです (スプラッシュスクリーンしか試してませんが)
DXスプライトの使用例作ってくれないかな。いまいちわからん
自分
>>150 ですが、
1)マウス検知した数字を変数にする
2)1の変数を使ってメニュー位置を計算
3)2の数値に例の剰余算をする
という手順のために画面外へメニューが出てしまったようです。
なので…
1)マウス検知した数字を変数にする
2)1の変数に例の剰余算をする
3)2の数値を使ってメニュー位置を計算
で解決しました。
報告が遅くなってすみません。
リストファイルなどで定義された項目を指定されたら その内容を書きだすにはどうしたらいいでしょうか? わかりにくいので例を挙げますと 単語の目次がありそれをクリックすると横にその内容が表示されるような感じです。 一応辞書機能を目標にしていますので シナリオ内でフラグなどを使って項目を開放していきたいのですが…
>504 簡単なのは、 リスト表示→クリック→サブルーチンで項目内容表示(この時にリストも再表示)
>505 その方法を試したら辞書画面は一応機能したんですが、 目次に[link]を使用してサブルーチンの内容を表示させたのですが、 これってlinkで同ファイル内の *hoge @call storage="list.ks" tareget=*hoge に飛ばすようにするんではなく、直接callさせる方法ってないのでしょうか。 目次が多ければ多いほどいちいち書いていくと量が途方も無いことになるのでどうにかしたいのですが
507 :
506 :2011/09/04(日) 11:22:10.30 ID:Ucsc3tGS
あ、ごめんなさい。 linkでリストのラベルにジャンプさせても大丈夫だったんですね。 しかもcallの場合はエラーになるし。
>507 @link exp="kag.callExtraConductor('シナリオ.ks','*ラベル名')" シナリオが同一ファイル内なら、シナリオ.ksは省略可
あと手入れは面倒くさいけど、吉里吉里初心者でも分かりやすく単純な構造なら、以下みたいに書けばいい。 もっと効率の良い書き方は、作っていくうちに分かるだろうから、とりあえず実装してみるレベル。 *start ;リスト表示部分 [link exp="f.no=1" taget=*start]項目1[endlink] [link exp="f.no=2" taget=*start]項目2[endlink] : : ;本文部分 [if exp="f.no==1"] 項目1の内容 [elsif exp="f.no==2"] 項目2の内容 [elsif exp="f.no==3"] : :
マクロ内に[eval exp="mp.hoge=true"]を記述をし、 シナリオ内で[マクロネーム hoge=sf.hoge]をすると [eval exp="sf.hoge=true"]という意味になると思っていたのですがtrueになりません。 もしかしてmp.hogeには変数を代入することはできないのでしょうか
仮引数に代入しても実引数には関係ない。
>>510 その eval 記述の意味は 「mp.hoge に値を代入」であって、
当然結果は mp.hoge の値が true になってるだけ。書いてる通りに動いてるよ。
目的をはたすにはこうする
[eval exp='Scripts.eval(@"${mp.hoge}=true")']
あるいはもう sf しか使わないのがわかってるのなら
[eval exp="sf[mp.hoge]=true"] として、引数は [マクロネーム hoge=hoge] とする
>>512 >>510 が聞きたいのはマクロ定義で[eval exp="mp.hoge=true"]とするとマクロ中の属性でmp.hogeが参照できますかって意味だぞ。
んでマクロでhoge=sf.hogeとするとsf.hogeにmp.hogeの値が代入されると思ってる。
>>511 >>512 なるほど、一応sfのみの予定ですので後者を使用しようと思います。
ご回答いただけましてありがとうございます
>>513 質問の仕方が適切ではなくすみません。
512さんが示してくれたようにmp.hogeをシナリオで別の変数を指定して、指定した変数をtrueにしたかったんです
TJS2でちょっと疑問です リファレンスによると * 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で掛けた値が演算子全体の値になります。値は実数として扱われます。 "値は実数として扱われます"って話だけど今の吉里吉里は整数同士だと整数を返すよね? これって将来的には整数同士でも実数を返すように修正されるの? あと、監視式で.a=-1,a>>>=1,aとしたら-1になったけどなんで? ついでに==とかで行われてる型変換の詳細もお願いです "00"==0が0なのが納得いかない
>>516 * 演算子と / 演算子のところは記述不足じゃないかなぁ。修正もされないんじゃね? ここで聞くより掲示板で dee たんに聞いたほうがいいと思われ
>>>= はバグっぽいね。a = a >>> 1 なら正常に動いてる
== は == 演算子の仕様のとこに左が先に評価とあるから、おそらくそちらに型をあわせるんじゃないかと
(string)0 は "0" だから "00" == "0" は偽。 明示的に型変換してから比較が妥当とおもわれ。
余談だけど頭0ではじまってる文字列は数値変換すると8進数になるから注意な
>>517 ソース読めとか言われるかと思った、レスくれてありがと
0=="00"も0だけど?多分、数値と文字なら文字にしてからの比較かと
!"00"と値が違うのは何とかならないのかと思う
そこはいいとしても[]==0は0なのに[]>0ではrealに変換できないとか言い出すし意味が分からない
とりあえず掲示板とやらを探してみます
typeof(kag.saveAnywhere_object)とすれば宣言してない場合もエラーでないで通るかなーとおもったら メンバがみつかりませんとエラーが出てしまった。 最初へ戻るをするとなぜかlabelマクロが定義されていない状態になるという状況をなぜか調べたいのだが・・・ 誰か助けて!
>>518 探すってかダウンロードしたサイトにあるっしょ>掲示板
なるほど > 文字にしてからの変換
でも型変換命令あるんだからそれで明示指定すれば困ることは無いんじゃないかと
!値 の場合は、真偽値があるからそれに変換してからの比較だよね。全体のルール自体は一貫性とれてると思われ。
というかなんでそんな変な比較しようとするのん?そこが不思議だ
[]==0が真偽値同士の比較に変換。[]>0が数値の比較なんでrealに変換できないで問題ないんじゃ? TJSは真偽値型がないから型変換して!trueがぜんぶfalseになるんだから真偽値同士の比較は可能。 []はrealに変換できないから型エラーであってると思うけど。
先日mp.hogeについて質問したものなんですが、 マクロ内で[if exp="%f"]と書いて シナリオ内で[マクロネーム f="tf.hoge=='文字'"] と記述しているのですがこれを マクロ内で[if exp="tf.hoge==[%f]"] シナリオ内で[マクロネーム f="文字"] などにするにはどうすればいいのでしょうか。
[%f]って何? [マクロネーム f="文字"]で、f.文字がtrueなら真を返すみたいなんだったら別の書き方だろうし
>>522 >シナリオ内で[マクロネーム f="文字"]
[if exp="tf.hoge == mp.f"]
ついでに前回質問
>>515 他にもやり方はあるが
[macro name=マクロネーム]
[eval exp="sf[mp.hoge] = true"]
[endmacro]
で
[マクロネーム hoge=huga]
でsf.hugaをtrueにできる
525 :
518 :2011/09/06(火) 11:08:49.12 ID:bKdHP6pg
>>520 > というかなんでそんな変な比較しようとするのん?そこが不思議だ
仰るとおり型変換すれば問題ないですね
頭に+付けるだけのことを何言ってんの?って思われても仕方ないとは思う
もともとは"/"付きで呼び出すファイルを修正するためにkag.onConductorJumpを改造したんだけど
空文字以外の文字列は真だと思ってた所為で!elm.storage&&...とやっちゃったのが始まり
elm.storage!=0&&...に変えたら期待通り動くようになって良かったんだけど
でも!=がやってる型変換がリファレンスみても"適切に変換されてから比較されます"とか
いい加減な説明しかなくて気持ち悪かったから聞いてみました
オブジェクトと数値を比較する予定はまったくないです
>>521 > []==0が真偽値同士の比較に変換
オブジェクトの真偽値って存在してたら真でしたっけ?どっかに書いてあった気もするけど見つからない
やらないけどif(typeof.オブジェクト=="undefined")をif(!.オブジェクト)に変えても良かったりします?
> []>0が数値の比較なんでrealに変換できないで問題ないんじゃ?
でも0は整数だよ?intに変換できないなら解るけどなんでreal?
整数同士でも中では実数にしてから比較してたら嫌じゃない?
とココまで書いてたら解ったかも、intより範囲の広いrealを優先する変換なのかな
割と普通な感じがしてきた
そこそこスッキリしたから掲示板はまた今度にします^^
ごめんなさい訂正です × !elm.storage&&... ○ elm.storage&&... 空文字以外の文字列は真だと思ってたからココで空文字とvoidを省いてるつもりだった 今気づいたけどelm.storage!=0でも消えるのはvoidだけで空文字は残るんだね 次にindexOfがあってそこで弾かれてるはずだけど
質問です セーブしたときに表示される今日の日付の西暦を 11/09/06のように下二桁のみにすることは出来るんでしょうか 可能であれば教えてほしいです
>>526 空文字/void除去判定は void が文字列にすると "" だから elm.storage != "" が一番すっきりすると思われ
>>527 substringで頭の2文字を削って表示しちゃうとかは?
>>528 結局、今回は文字だけ残すのが良いと思ってtypeofにしちゃいました
ただ確かにすっきりしますね、ありがとうございます
せっかくだし本来の問題も聞いてみる
[jump storage="a/b.ks"]として呼び出すb.ksにパッチを当てる方法ってどんなのがありますか?
>530 patch.xp3 の中に a/b.ks を置くだけでは? 単純に検索される名前と同名で先に合致するものをおけばいいはず。 まあ、ややこしくなるから「ファイル指定でフォルダ指定はしない」ってルールでの運用をするのが一番楽
>>531 patch.xp3のプロジェクトフォルダの中にaフォルダ作ってその中にb.ksを入れてみろって事ですよね?
ほにゃほにゃでpatch.xp3をみたら確かにa/b.ksは入ってるけど
でも、それじゃ読めないですよ
[call storage=a/b.ks]とStorages.isExistentStorage('a/b.ks')で確かめました
> ファイル指定でフォルダ指定はしない
まあそうですよね、、
説明不足でした > [call storage=a/b.ks]とStorages.isExistentStorage('a/b.ks')で確かめました 修正前を読まれるとややこしいからa/b.ksはpatch内にしか存在しないパスです
>>532 すまん。ためしたら確かに駄目だった。これで良かったような気がしたのは気のせいだったか
自動パス指定はファイル名指定(1階層) しか有効では無い模様。
あと、仮にそれが有効だったとしても、プロジェクトフォルダちょっかは探索の前に
最優先アクセスされるから、パス入ってるとそれが最優先で見つかってアウトだね
結論としては KAGの中ではパス指定は使わずユニークなファイル名にしろ、でFAかな
もうだしちゃったものだと、うーん、シナリオファイルまるごとそうとっかえして起動する
ファイルから変えてしまうしか無い気がする
>>530 自動検索パスの追加は追加されたパスしか見ないからディレクトリ掘るなら自分で追加する必要がある。
必要なディレクトリ階層は事前に分かるんだからKAG側の自動検索パスの追加を増やしとけば手っ取り早いよ。
事前に階層がわからないならXP3デコーダ書いてパス追加するところでディレクトリ構造見に行けばいい。
ちゃんと試してないけど、パッチ内でのパスが分かってるなら 元々のAfterInit.tjsの最初か最後あたりに Storages.addAutoPath(Storages.extractStoragePath(Storages.getPlacedPath("AfterInit.tjs")) + "a/"); みたいなのを追加したAfterInit.tjsをpatchに入れるのはどうだろ
吉里吉里ユーザーではありませんが教えてください。 システム関係の素材を頼まれることが多いんですが、 システムボタンで横に3つ連結した画像と4つ連結した画像の使い方の違いって何ですか? 人によってバラバラだけど吉里吉里公式では3つがデフォ?みたいで気になります。 たとえば素材サイトにおいてあったとしたら、どちらが使いやすいんでしょうか。
>>537 自分そんなに詳しい方じゃないから間違ってたらすまん
4つ連結のボタンはkagじゃなくtjsで組んだやつに多くて
おさかな定食とか有名所で配布してるのは
通常+押した+オンマウス+フォーカス
って感じに並んでる
フォーカス差分があるのはボタンを押した時
次のボタンにフォーカスが移動してしまうから
3つだとフォーカス差分はオンマウス差分が使われるが
今押したはずのボタンの隣が変化してはユーザーが混乱するので
4つ目は通常時と変化を付けないか地味目な差分を用意する
また、フォーカスじゃなくてボタン使用不可時に4つ目の差分を使う所もある
素材として配布するなら3つでいいと思う
そしてできれば連結などの加工自由にしてくれれば
素材配布者が4つ目について気を配ることはないと思う
539 :
537 :2011/09/07(水) 13:50:05.62 ID:2G3wX6nt
>>538 丁寧な解説ありがとうございます。
バージョン違い?など見当外れのことを考えていたので勉強になりました。
システム的に複雑なことができる人は画像処理で躓くこともないと思うので、
アドバイスの通り3つ連結で加工可にしたいと思います。
そういえば [eval exp="sf.hoge=mp.hoge"] ○ って これ自体はきちんと機能するのに linkタグで式を評価すると機能しないんだよな。 [link exp="sf.hoge=mp.hoge"] × これってバグなのか?
mpはmacro抜ける時になくなるものだから、linkを実行するときには残ってないんじゃないか
よくわからんが [link exp="&'sf.hoge=' + mp.hoge"] みたいなのをやりたいのかな
>>541 そっかそういえばマクロ内のみの変数だっけか。忘れてたわ
>>542 そうだね。そんな感じに動作してほしいね。
代替策として普通の変数使ってたけどそういう方法もあるのか。
こっちのほうが簡潔でいいなぁ
特定のメッセージレイヤーのみcm方法ってないのかな。 リファレンスざっと見てみたけど見つからなかったのだが。 今はcm使って消えた他のメッセージレイヤーを再読み込みさせてるけど効率が悪いorz もしリファレンスとかにあったならごめん、見逃していたと思う
[er]じゃダメなの?
>>545 そういえばこれも現在のメッセージレイヤーだから
一応特定のメッセージレイヤーのクリアだよな。
と思って以前試してみたんだけどなぜか全てクリアされるという不可解な現象が起こって……
オレが何かミスってるのかな。
特定のメッセージレイヤーにbuttonはっつけて ずっとそれ使いたいけど、どっかでcmとか使ったらそのbuttonも消えちゃうから 結局レイヤー使用する直前で毎回貼り付けないといけなくなる
カレントレイヤー 移動させて erすればいいだけじゃないの?
>と思って以前試してみたんだけどなぜか全てクリアされるという不可解な現象が起こって…… 可能性@ 意図してないところ【プラグイン】でcm ctが使われている 可能性A カレントレイヤーの指定が間違っている【故に指定したと思ってるところとは違うところが消え、全て消えたと錯覚した】 可能性B 私の知らない何か
[er]もう一度試したらきちんと機能したわ…… 一体何が原因だったんだorz
ちょい質問。 非同期でメッセージレイヤーを連続移動させたいんだけど [move]を連続で書くと前のmoveは無視され [wm]を書くとクリック待ちが発生して同期になってしまう。 理想的には右から左に移動した後にまた右に戻ってほしいのよ非同期で KAGEXでもできないのかね。 (以前似たようなことやった記憶あるけどやり方忘れてしまったorz)
kagex ならアクション機能の連続アクションを使えばできると思われ
>>552 やっぱりメッセージレイヤーとかにもアクション使えるのか。
どのタグにアクション指定すればいいんだろうか
@action layer=message0 action=... とかでうごかない?
>>554 アクションってそういう記述方法もあるのか。
すべてenvinitに記述して[タグ アクション名]っていう方法しかないのだと思ってたorz
しかもリファレンス確認したらactionタグ載ってたしorz
にしてもこれ連続アクションってどうやるんだ。
一つしか動作しなかったり文法エラーと怒られたり……
……あ、本当に文法エラーだ。 なんだよ連続アクションの最初に%付いてるとか。 結果。 目的の動作できましたm(_ _)m(なぜかvalueをマイナス値にしても右に移動してくれないがw)
「ぽけっとの中のいたち」というサイトで公開されている 「半調ユニバーサルトランジション」のマクロなんですが [macro name=base_uni_pail_density] [eval exp="tf.transtime=mp.trtime"] [clickskip enabled=false cond="kag.skipMode<=1"] [backlay layer=base] [pimage dx=0 dy=0 layer=base page=back storage=%img opacity=128] [trans time=&tf.transtime\2 method=universal rule=%rule vague=1] [wt] [image storage=%img layer=base page=back opacity=256] [trans time=&tf.transtime\2 method=universal rule=%rule vague=1] [wt] [clickskip enabled=true] [endmacro] このスクリプトのlayerの部分を、baseのままだと初めから正しく動くのですが ここを「layer=3」みたいに前景レイヤーを指定すると、最初の一回だけ 半調が効かずにトランジションされて、二回目以降からbaseの時のように 正しく半調トランジションされます。 この、最初の一回だけ正しく半調トランスされないのは、何が原因なんでしょうか?
すまない、もう一つ質問が 非同期アクションの終了時に変数を評価するのってどうすればいいんだろうか 普通にアクションタグの下にevalを書いても即時評価されてしまうし waitで終了時までの時間をカウントすると同期になってしまうし…… あとさっきのやつ絶対座標だったんだな。envinitでは相対で書いてたから混乱してた
>>555 envinit に書くやつは world拡張用のものだから、それの範疇外のメッセージ窓で使うときはKAG側の tag 使えってことやね
>>558 onActionCompletedあたりで拾えばいいんじゃねーの
tjs使えないなら知らね
>>560 onActionCompletedか。
TJSあまり触ってないからなぁ。
ちょっと試してみるわ
力を貸してください ガシャポンに3回挑戦できる ↓ 景品の種類は10種類 ↓ 1回引くごとに出てきた景品にまつわるシナリオが入る ↓ これを3回繰り返す どれが出るかは当然ランダム でもシナリオの都合上ダブりは絶対出ない こういうことをやりたいです。 シナリオランダムジャンプは逆引きマニュアルの @jump target="&['*A', '*B', '*C'][intrandom(0,2)]" を参考にしましたが ダブりを出さないようにするにはどうすればいいんでしょうか?
linkタグを使うにあたってタグリファレンスを読んでいたのですが、 >exp 属性を指定すれば、リンクをクリックされたときに変数に値を代入するというような動作も行わせることができます。 上のような文を見て、この方法を使おうと思ったのですが例がなかなか見つかりません exp属性を使うときにどう記述すればいいのでしょうか? 試しに [link target=*label1 exp="tf.hoge = 1"]1[endlink] [s] と記述したのですが、その後変数を表示させても何も入ってません・・・
=と==の違いについてリファレンスを読みねえ
=についてのリファレンスを読んだのですが [eval exp="f.flag1 = 1000"] 代入については上記の式で合ってますよね・・・? linkタグで選択肢をクリックしたと同時に変数に値を代入させたいのですが・・・ ジャンプ先で代入するしか方法がないのでしょうか?
>>565 linkでのexpの書き方はあってるよ。
監視式で変数が変わってるのも確認した。
だから変数が変わらないのは違う場所が原因なんじゃないかな
>>566 リファレンスを確認したところ変数の表示の仕方が間違っていました・・・
無事成功しました。ありがとうございました
>>562 [iscript]
f.label=[];
f.label=["*a","*b","*c","*d","*e","*f","*g","*h","*i","*j"];
[endscript]
[macro name= ivent]
[eval exp="f.atari=intrandom(0,tf.i)"]
[eval exp="mp.label = f.label[f.atari]"]
[eval exp="tf.残り回数=tf.残り回数-1"]
[eval exp="tf.i=tf.i-1"]
[jump target="&mp.label"]
[endmacro]
*test
[eval exp="tf.i=9"]
[eval exp="tf.残り回数=2"]
*roop
[if exp="tf.残り回数<0"]
[jump target="*終わり"]
[endif]
[ivent]
[s]
*a
Aのivent[l]
[eval exp="f.label.erase(f.atari)"]
[jump target="*roop"]
;(以下ラベル記述)
*終わり
こういうかんじで配列に入れて使ったのはeraseで削除したらどうだろう
なんか勘違いしてたらごめん
>>568 レスが遅くなってすみません。
まさにイメージ通りのガシャポンになりました!
本当にありがとうございました!
>>569 ×roop○loopだった…
ちなみに台によって景品を変える場合2次元配列を使って
[iscript]
f.景品=[]; //[0][1][2]というガシャポンにそれぞれ景品を入れます
for(var i = 0; i < 3; i++) f.景品[i] = [];
f.景品[0]=["a","b","c"];
f.景品[1]=["d","e","f"];
f.景品[2]=["g","h","i","j"];
[endscript]
[macro name= gasyapon]
[if exp="f.景品[mp.台].count>0"]
[eval exp="tf.景品種類=f.景品[mp.台].count-1"]
[eval exp="f.atari=intrandom(0,tf.景品種類)"]
[eval exp="mp.label='*'+f.景品[mp.台][f.atari]"]
[link target="&mp.label" exp="&'f.景品['+mp.台+'].'+'erase('+f.atari+')'"]
;↑変な書き方だけどこうしないとちゃんと動作しない
ガシャポン台[emb exp="mp.台"]
[endlink]
[else]
品切れ
[endif]
[endmacro]
*loop [cm] [nowait] [gasyapon 台=0][r] [gasyapon 台=1][r] [gasyapon 台=2][r] [link target="*終わり"]やめる[endlink] [endnowait] [s] *終わり おしまい[l] [s] *a [cm] aがでた[l] [jump target="*loop"] ;以降同じように記述 景品の数や試行回数に制限つけないならmacroのifとlinkのexpを省く KAGリファレンスの「TJSをもっと使うために」のmpと配列 TJSリファレンスのArrayクラスのとこを読むと色々工夫できると思う
素人まるだしの質問で申し訳ありませんが、爆発シーンなどで 画面が発光するエフェクトのサンプルなどがあるサイトを知ってる方が いましたら教えて頂けますか
知ってる方はいますよ
@layopt visible属性と@waitを使って ポケモンショックみたいなのはすぐ出来ますよ ( ´−`)b
>>573 こういう日本語読解力のないバカは放っておいて……
>>572 サイトを知っている人を尋ねるより、サイトそのものを尋ねた方が早いと思うよ
ちなみに俺はそういうサイトを知っている人は知らない
サンプルなどがあるサイトを知ってる方がいましたら(サイトを)教えて頂けますか
っていう意味だろう。
>>575 は日本語読解力ないけど親切な人。
>>575 は面白いやつだな
>>572 素人丸出し以前に何故ここで聞くんだ?としか
確認してないけどぽけっとの中のいたちあたりにあるんじゃね?
>>577 ありがとう
日本語記述力のない人間と、日本語読解力のない人間を、両方同時に遊んであげた次第です
Flashが再生できなくなったんだけど吉里吉里のバグなのかな? OSはXP Home SP3 影響したと思われる操作は、一度FlashPlayerをアンインストールしてから 最新版10.3をインストールしたことくらい
違うと思うが……逆になぜそれで吉里吉里のバグだと思ったのか聞いてみたい。 君の言ってることは、今まで動いてたガソリン車に軽油を給油して車が動かなくなって、 「ガソリン車に軽油を入れたら車が動かなくなったんだけど、前に入れてたガソリンの不具合なのかな?」 と問うぐらい不可解。なぜ軽油を疑わないの?
なんだ日本語力のない中学生だったのか その質問にガソリン車と軽油で答えるのは全くの見当外れ 例えが下手だと頭悪いのばれるからやめといたほうがいいよ!
mpeg1最強伝説
>>581 回答すらできない無能には言われたくねーw
もう一回言っておくか。
『無能』には言われたくねーw
!,-/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ, i''./:::::::::::::::::::::://::::::l:l'i::::::ヽ:::::::ヽ:::::::::::::::l丶 〉!:::::::::::::::l:::::://l:::::/ll .lヽ:::l !ヽ::::l:ヽ::::::::i::l::l ヽ::::::::::::::l:l::::/:l .l:::/ l l,ヽ:l-l-l:::lヽ:ヽ::::::l:l.ll l::l.l:::::::ll.l:::l''l~~∨' ' ' _,-'i-∨ l::::l::::l:l,,l_
比喩をわざわざ出す必要は無いと思うが、 ガソリン車と軽油の比喩がなぜ的外れか聞きたい。
586 :
572 :2011/09/13(火) 20:48:07.07 ID:DlVoBQkm
変に荒れてしまってすみません。 短い間隔でトラジションを繰り返すなどやって見たのですが、 良くゲームで見るような感じにはならず、何かサンプルが有ればと思ったまでです。 昨日、サイトも調べてみたのですが、思った様なサンプルが見つからず、何か良いサンプルか 機能があればと思い、こちらに書き込んだしだいです。
>>580 ブラウザや他のFlash利用するアプリケーションでは問題が発生してないから
FlashPlayerの問題ではなさそうだと思っただけ
検索しても同様の例が見つからなかったからここで聞いてみたんだ
>>585 FlashPlayerがガソリンなら軽油なんて話に出てきてないからじゃないかな?
よくわからないけど
588 :
名前は開発中のものです。 :2011/09/13(火) 21:59:19.01 ID:pm96Yzld
低脳ども晒し上げ
質問してもよろしいでしょうか? TJSでメニュー画面を表示するプラグインを作成しており、 現在、メニューを表示し、終了ボタンで閉じるところまで完成しました。 今後、閉じるボタン以外にも、右クリックすることで メニュー画面を閉じる命令を作成したいと思っています。 レイヤクラスのonMouse系イベントで指定できると思ったのですが、 表示レイヤ内に指定しても反応しません。 フォーカスは指定しているつもりなのですが、どこがおかしいのでしょうか? 下にTJSを表示しています。 close処理については、ボタンの設定・呼び出し部分は省略しています。 よろしくお願いします。
function MenuPlugin(){super.KAGPlugin();} function finalize(){super.finalize(...);} var MenuLay; function Menu(){ MenuLay = new Layer(kag, kag.fore.base); with(MenuLay){ .setPos(0, 0); .loadImages("wall"); .setMode(); .setSizeToImageSize(); .visible = true; .focusable = true; .focus = true; }
//右クリックの設定 function onMouseUp(x, y, button, shift){ System.inform("レイヤがクリックされました。"); if(button == mbRight) close(); .onMouseUp(...); } } //close処理呼び出し部分は省略しています。 function CloseBtnClick(){ kag.trigger('closed'); with(ItemMenuLay){.visible = false;}
取りあえず、関係しそうな hitThreshold ( 当たり判定の敷居値 ) hitType ( 当たり判定のタイプ ) とかLayerのプロパティは一通り確認済んでる?
あとMenuLayをLayerからnewしてるけど function onMouseUpって、どのオブジェクトのクラスの記述?
hitType=htProvince; と指定したら、マウスポインタの形が変わりましたが、 クリックは反応しませんでした。 プロパティを確認したところ、focus,focusableはtrue, focusedはfalseになっていました。 MenuLayは、スーパークラスの onMouseUpのつもりです。 function onMouse〜は自動で呼び出しされると思っていたのですが、 違うのでしょうか?
>>595 えっと、そのスーパークラスっていうのがLayerクラスのつもりなら
まず、Layerのクラスのオーバーライドは安易にしちゃだめ。
MenuLay.onMouseUp_bk = MenuLay.onMouseUp; //元の関数の待避
MenuLay.onMouseUp = function(x, y, button, shift){ //関数のオーバーライド
System.inform("レイヤがクリックされました。");
if(button == mbRight) close();
onMouseUp_bk(...);
};
とかやってMenuLayオブジェクトのメンバー関数をオーバーライドするか、
MenuLayをLayerを継承したクラス記述してそこからオブジェクトを作る。
tjsのクラスとかの基本的なところが怪しそうな予感が……
もしそうなら、ここらへんで、基本の確認をお薦め
TJSに挑戦!
ttp://www.geocities.co.jp/tjschallenger/ TJS入門
ttp://homepage1.nifty.com/gutchie/kirikiri_kag/tjs_primer.html もしこちらがなにか勘違いしてたらごめん。
吉里吉里で作ったゲームをブラウザで動作させる事って出来ませんか?
>>587 FlashPlayerが軽油だろ?
FlashPlayerをインストールしたことで再生できなくなったんだから
その程度の読解力しかないなら不可解って言われるんだよ
スレ違いどころか板違いですわ
「吉里吉里のシナリオにツクールのスクリプト加えたら動きませんでした」
って内容にガソリン車と軽油で答えるなら納得出来るけど
>>580 はズレてる
FlashPlayerをインストールしたからといって
ガソリン車に軽油を入れた時のようなトラブルが必ず発生するわけではないから
まず確認するべきは、 ・FlashPlayer (ActiveX) を古いバージョンに戻してみる (10.0 とか 9とか) だな。古い Flash Player は Adobe のサイトで開発者むけに配布されてる。 ただ、1度新しいバージョンをいれてしまうと、レジストリにそのバージョン番号が記録されて チェックされるので、別途配布されてるアンインストーラを使って完全クリアしてからでないといれられないので注意。 詳細はぐぐれ あとは、具体的に動かなくなったスクリプト記述をあげた上で、 このスレでFlash を吉里吉里で使ってる人で、同じく 10.3 にあげた人がいないか聞いて、 確認してもらうのが妥当だろう。10.3 にするとおかしくなったという報告が同様にあるなら、 Flash Player の仕様がなにかしら変わってそれに吉里吉里が追従できてない=吉里吉里がおかしい、ってことになる セキュリティ関係の仕様とかが変わって必要なAPI呼び出しが増えたりして 動かなくなるってのはありえなくはない。ブラウザとかはどんどん更新されるからなかなか 気付かなかったり、あるいは FlashPlayer 側がブラウザを認識して回避してくれたりするけど、 Flash は吉里吉里のことは知らないからそういう配慮はしてくれないからね おそらくバージョン差に起因する問題だからガソリンと軽油の例えは根本的におかしい。 ガソリンをバージョンアップしたら軽油になったりはしない
確か232r2に吉里吉里が上がった時、添付されてるdllがおかしかったらしくてFlash再生できなかったけど、吉里吉里のバージョン上げてさらに古いファイル使ってるってことはない?
602 :
590 :2011/09/14(水) 22:49:55.00 ID:kRM7SIod
>>596 回答くださってありがとうございます。初心者質問すみません。
レイヤクラスのイベントを呼び出し、処理を実行したいと思い、こちらを参考にしていました。
ttp://www.geocities.co.jp/tjschallenger/TJS0307.html 安易にオーバーライドしてはいけないということはなんとなくわかりましたが、
きちんと動作をするイベントの作成の仕方がわかりませんでした。
イベントは、レイヤを作成するためのクラスにあらかじめ記述しておき、
それを利用したレイヤを作成することでしか動かないのでしょうか?
どうやらイベントの使い方や記述について根本的にわかっていないようです。
もう少し勉強したいと思っていますが、このような理解で大丈夫でしょうか?
>>602 >レイヤクラスのイベントを呼び出し、処理を実行したいと思い、こちらを参考にしていました。
>
ttp://www.geocities.co.jp/tjschallenger/TJS0307.html Section 3.7で「レイヤがクリックされました」というメッセージを表示するところまで理解して出来るようになったということでしょうか?
なら、そこでfunction onMouseDownの記述を追加して「レイヤが右クリックされました」というメッセージを表示させる
応用は出来ますね?
こちらの書き方も悪く、言葉が錯綜してきているのかもしれません。
上の講座を0章から5章まで、順序だてて体系的に学ぶと良いと思います。
>3の吉里吉里2 リファレンスとTJS2 リファレンスを片手に。
プログラミングの経験がないと相当な時間と労力が掛かると思うので、難易度が高いと感じるのであれば、
今回は自前の右クリックメニューにこだわらず、DLしたアーカイブに含まれるkag3\kag3plugin\sample\rclick_tjs.ks
の利用の検討も。(kag3pluginフォルダの中にはプラグイン製作他、参考になるものもが色々と含まれています)
onActionCompletedってKAGEXで追加された奴なのかな
>>570-571 凄く参考になりました!丁寧な解説までありがとうございます。
教えて頂いたリファレンスをよく読んで、自分でもカスタマイズできるよう頑張ってみます!
おまけ用にリバーシのプラグイン作ったらうけるんじゃね?って思ってざっと調べたんだけどもね。 公開されてるいい感じの思考ルーチンってGPLライセンスになってるみたいで、 これを移植させてもらうとしたら「俺の作ったプラグインが商用で採用されちゃったぜ、俺TUEEE!」ってニヨニヨできなくなるってことだよね? 作りもせんうちからそんな心配して、特定されたら死ぬほど恥ずかしいんだけどさw
思考ゲームで思考ルーチンを他から持ってきたら作ったのガワだけやんw GPLだとソースコード全開示でOK。俺TUEEEE!は、してもライセンス違反ではない。
608 :
590 :2011/09/15(木) 21:51:44.39 ID:wCOhdba6
>>603 ご丁寧にありがとうございます。
無事にメッセージを表示できました。
教えていただいた講座は、きちんと順を追って勉強して行きたいと思います。
プラグインの使用も考えてみたいと思います。
色々とご親切にありがとうございました。
>>607 そうだよガワだよw楽してうけたいんだよ
GPLで書かれたプラグインを刺したら本体までGPLに縛られてそっちのソースも開示しなきゃならんくなるって解釈したんだけど……勘違い?
どこもかしこもソースおっぴろげとか、そんな世界を想像したら胸が熱くなった
楽してうけたいはいいんだけどそれで俺TUEEEE!は出来ないだろ 自分が楽してる事を自分で知ってるんだから それとも催眠術的な儀式なの?
>>610 クラスパス例外がついてないならそうなるな。
俺TUEEEEE! FREEEE!
win8になるとマウス無しハードウェアキーボードなし前提で考えなきゃいけないからHUDレスが全く普及してないエロゲエンジンの世界だと対応が大変だな。 それにmetroとデスクトップが混在する事になるからデスクトップアプリ側も積極的にGPU使って行かないとmetro側はGPUと ベクタグラフィックと複数サイズのビットマップでどんな解像度・表示領域でも綺麗に見えるのにデスクトップ側はCPUだけの 補完じゃmetroアプリと比べて見劣りする事になる。ここらがユーザーエクスペリエンスとして差異の違和感が生じるからゲー ムエンジンとしてどうするかの問題になる。 ADVエンジンだと見た目が特に重要な要素だからエンジン側がどこまでカバーするかが重要になるだろうしこれからはwin8に 合わせたりシェーダー使ったりとかをアピールしてくんだろうな。
未だにVistaにすら対応できてなかったりするのに……
メトロUIに必ず対応させなければならないということはない
アンドロイド対応は・・・
選択肢を出すメッセージレイヤーにスクロールバーをつけたいんですが、可能ですか?
そろそろkagexとは別の非同期アクション可能なオープンソースなシステムが出てくるといいな・・・
公開しても誰も使わないことがKAGEXで証明されたからな
そもそもKAGEX自体が「公開されてて誰でも使える」レベルから遠いし
そもそも、誰でも使える有用なものだったらタダで公開しようなんて考えないしな 本当に誰もが(数十万人規模)で使ってくれるなら金にもなるけど 数百人しか使わないレベルなんだからタダで公開しても一銭の得にもならん
え、言っちゃまずかったか? 誰かに夢見させる方針だったとか……? だとしたら空気読めなかった、すまん。
kagexは吉里吉里のカスタマイズのサンプルだろ 有用だよ
>>625 べつにまずかないが、吉里吉里使ってる人がそんなこと言うと自己矛盾に陥らないか?
>>627 何を言いたいのかよく分からん……
吉里吉里使ってる人が、作ったものをタダで公開した場合も同じ結果になる(金にはならない)
だから自分に跳ね返ってくるようなことを言うなと言いたいのかな?
俺は吉里吉里使って作ったものはタダで公開したりせず、ちゃんと金を取るよ
だから一銭の得にならないフレームワークを無料で公開する行為を事実のままに述べたとしても
俺には跳ね返ってこないよ
※一銭の得にもならないというのは言い過ぎで、真に有用で吉里吉里本体と同じぐらい
利用されるようになれば、参考書を一冊書いて小銭を得ることはできるかもしれないね
そこは一応訂正しとく
>>628 dee さんがその価値観の人だったなら、吉里吉里はいまこの世に存在してないよってこと
もちろん価値観はひとそれぞれだけど、正反対の価値観をもって生まれてるもののスレで
まったく反対の価値観を正面からだしてくるってのが不思議だなというかすごいなというか……
何いってんだこいつ Nスクとかみたいにシェアウェアとして存在してただけだろ それだけの価値があるんだから
自己矛盾というから俺が矛盾するという意味かと思ったよ。そうじゃなかったんだな 言いたいことは理解できた。ありがとう
>>630 >>629 は多分、「現在ある吉里吉里が持つ精神」みたいなものについて言ってるんだと思う
吉里吉里がなぜ吉里吉里足りえるのかという哲学的な話ではあるけど……
シェアウェアとして吉里吉里が存在していたらシェアが小さいまま推移して
俺の目に触れることもなかっただろうし、万一触れたとしても有料ゆえに使わなかったと思う
そういう意味では
>>630 が言う吉里吉里は、仮に作者と内容が同じだとしても
今の吉里吉里とは別物だと思う
kagexの有料版がワムのシステムだけどな お金があるところはサポートを受けながらそれを使えばいいと思う それ以外の選択肢(自分で作れはおいといて)があればいいな、と
それ以外の選択肢として無料版のkagex使えばいいじゃない
KAGEXがカスタマイズサンプルってあるけど TJSいじれるくらいの奴に自作KAGって作れる? 興味はあるけどそういう勉強したことなかったんで 覚えておいたほうがいい言語とかあったら教えて下さい
そういうことをしたいのならC++
>>635 俺は最初から自作KAG(というか逐次実行型tjs)だよ
KAGは一度も触ったことがない
似非プログラマだからタグの書式がどうにも気持ち悪くてな
Windowsプログラミングするだけのスキルがないけど
自由度のないスクリプトを使う気にもなれない人間には
吉里吉里+tjsは最適だと思う
KAG触った事も無いって言う人たまにいるけど テキスト表示すら自分で一から構築してる訳?
そりゃそうだ ・タイマーを回して1文字ずつ表示する ・その間キーボードやマウスからスキップ入力があれば一瞬で全部表示する ・ルビ表示の構文が来たらサイズを変えて行間部分に表示する ・クリック待ちに入ったらクリック待ちアイコンを表示する メッセージスキップがオンなら、スキップタイプが「既読のみ」か「すべて」かチェックし 「すべて」なら問答無用、「既読のみ」なら現在行が既読行かチェックして既読行の場合は クリック待ち処理を行わず次の処理に進む こういうのを全部作る…… これを見た人間の反応は二種類だ 「すげえええええ!」 「なんで車輪を再発明するの? 暇なの?」
まあ、暇ということでいいんだと思う でも分かってほしい…… 画面にテキストを表示するにあたって 吉里吉里は、TJSというスクリプト言語を使っていろいろな事をするためのソフトウェアです。[l][r] こういう余計な文字がすべての行の行末に存在する無駄が我慢ならない人間がいることを 吉里吉里は、TJSというスクリプト言語を使っていろいろな事をするためのソフトウェアです。 これでいいじゃないと思う人間がいることを
kagex の主要な機能の一つだな
ID
ルビタグを読んでから行間を広くする処理が耐えられない人間もいるだろう
たまにエロゲで見かけるんだけどページ送り時のウェイトを、 [表示した文字数x0.2秒+2秒] みたいに、文字数に応じて変化させるようなことって出来ますか?
できます
>> 644 KAGデフォルトではできないので、ちょっと作りこまねば ならないよ。探せばインプリ例がどこかにあったはず…
chタグハンドラで chWaitCount++; して、 showLineBreak() と showPageBreak() でオートモードのときに var waittime = chWaitCount * 0.2 + 2; chWaitCount= 0; return waittime; でいけるはず。TJSを最低限理解してれば多分できます 応用すればひらがなと漢字でウェイト時間の加算を分けることも。。。
時代に合わせてばーっジョンアップしてこなかったので今ではKAGが貧弱すぎるな
>> 649 前に全く同じことを誰ぞに言ったら、「プラグインやアドオンで なんとかなるなら、文句言う前に手を動かせ」と怒られたw それはできる人の論理だと思うけど、確かに、なんともならない 機能って少ないよな、とも思った。 逆に、どんな機能が必要なのかリストアップしてみたら?
>>645-648 おお、すごい!ありがとうございます!
吉里吉里ってほんとなんでも出来るんですね
(TJSもっと覚えないと…)
栞をロードした後、データを再開するまでの間に 任意の処理を挟み込む事って出来ませんか? 変数操作したりムービー再生したりみたいな
>>652 デフォルトではできないけれど、ここにRunOnLoad.ksという
のがあって、似た様なことはできる。
ttp://www.geocities.jp/keep_creating/krkrplugins/ # またごった煮さん…
ただ、このプラグインではロード後のmainConductorを
一時停止したりはしていないので、複雑なことをさせようと
するならちょっとつつく必要がある。
ところで。「できないか?」と聞くのはそろそろやめて
ほしい。「できる。以上!」みたいな不親切な回答を呼び
かねないし、質問者に適当な回答をエスパーしなきゃなら
なくて回答者も辛いから。
質問者は、欲しい情報を得るための質問力も磨いてくれ!
652のような質問内容だったら普通はエスパーする必要なんてない 「出来ませんか?」って言われたら、どうすれば出来るのか答えるのが普通の感覚 「できる。以上!」みたいな回答するタイプはガキ
実のある回答を確実にゲットしたけりゃ質問文を練ってね、ってことでしょ
ガキっぽいレスをする事も、スルーする事も自由な場所なんだし
「出来ますか」→「出来ます」みたいなやりとりになるのは
質問内容を絞り込めていない場合が殆どだねー
>>652 は最後の行でセーフ、って感じ
過去レスを読んで560あたりに KAGEXでのonactioncompletedeでaction終了時に処理を挟む的なことが書いてあったのですが、 どなたかこれに関するリファレンスなどが書いてあるサイトをご存じの方いないでしょうか? 私も同様にアクション終了時に評価式を挟みたいのですがよくわからず…
>>656 リファンレスなんかないです
わからないならあきらめましょう
めっちゃ簡単な例をあげると↓みたいな感じ
↓のは個別のアクション終了拾ってるけど他にもMainWindowのonActionCompletedとかactioCompleteHandlerとか
プラグイン書いてonAllActionCompletedかonStopActionあたりで何とかできるかもしれない
何がしたいか分からんので具体的には知らん
@layer name=てすと file=hoge show
@layer name=てすと xpos=500:-500 time=100000
@iscript
var org = kag.allActions[world_object.env.layers['てすと'].targetLayer].onActionCompleted;
kag.allActions[world_object.env.layers['てすと'].targetLayer].onActionCompleted = function() {
org(...);
Debug.message("アクション終了");
};
@endscript
@p
@s
658 :
名前は開発中のものです。 :2011/09/27(火) 23:42:26.88 ID:pKcbKxdW
どこでもセーブプラグイン(autoInsertLabel)を使うと、 デバッグモードの再読み込みしてもksの最初から開始できない・・・ 現在の行から再開されるだけだからデバッグやりづらくて仕方がないよ
ksに最初に通常のセーブラベル付けて あとデバッグ終わるまでコメントアウトしとけばいいじゃん。
豚切り&既出でしたらすみません。 検索してみましたが、それらしいものが見つからなかったので… editタグで作ったエディットボックス内に、ユーザーに入力させる時 最初から全角文字を入力できるようにしたいのですが、どうすればよいでしょうか。 (ウィンドウズのデフォルト状態だと半角英数からいちいち切り替えねばなりません) 何か対処法をご存知の方、教えて頂けると幸いです。
>>660 @edit
@eval exp="kag.fore.messages[0].links[0].object.imeMode=imHira"
@s
messagesとlinksの番号は適当に変更する必要あり
660です。解決しました、ありがとうございました。
誤爆スイマセン
666 :
635 :2011/09/29(木) 23:37:32.46 ID:2RQMhlua
亀だけど
>>636-637 ありがとうございます
やっぱ最低限プログラミングの知識は持ってないとダメっぽいな
C++を勉強してみます
他の色んなレスでも参考になりました
このスレに感謝
前景レイヤーのindexはどうやって参照したらいいのでしょう 監視式に kag.fore.layers[1].index と入れても見つからないといわれます
indexじゃなくてabsolute
>>669 解決できました。ありがとうございます
タグの属性名にすればいいというわけじゃないんですね
671 :
名前は開発中のものです。 :2011/10/03(月) 16:08:42.37 ID:NxebKmbF
初心者ですみません。いきなりですが、 あるエロゲー(吉里吉里ベース)の字幕windowを透明にしたいので、 素材も用意しました。しかしpatch.xp3の生成のやりかたが分かりません。 なんか素材と一緒にpatch.xp3にパックしてフォルダに入れたらokみたいですけど、 具体的なやりかたを教えてくださいませんか? いろいろと調べたし、ググりましたが全部だめでしたーー;
>>671 exe に全部詰め込んでるタイプなら無理
673 :
名前は開発中のものです。 :2011/10/03(月) 16:59:12.98 ID:NxebKmbF
その例のゲームはdata.xp3にデータが入っているので、大丈夫だと思います。 何人か改造できたけど、なんか5分しかかからないと言ってました。
何でそいつらに聞かないの?
675 :
名前は開発中のものです。 :2011/10/03(月) 18:46:14.71 ID:NxebKmbF
やはり難しいですか?別板の情報ですけど、 何か吉里吉里の改造はここで聞けって言われたので、 このならプロの方がたくさんいるし、、、
いいからまずリファレンス読め 「◆ チュートリアル」→「配布しよう」→「◆ パッチ配布」だ
ここの住人はID:NxebKmbFみたいのまで相手にするんだ? 自分のゲーム改造歓迎なのか?
679 :
名前は開発中のものです。 :2011/10/03(月) 22:06:11.28 ID:Gv5Sx+eJ
>>677 なんか変な誤解を与えてしまったみたいですけど。
自分はど素人なので、ただ好奇心があって好きなゲームのごく一部だけ
変更したかった。あくまでも自分で楽しむ目的です。悪用しようとか
暗黙の了解とかはまったく知りませんでした。
今日ウジテレビのニュースで信号無視で爆走する自転車集団を報道してたけど、 そこで捕まえた若者のインタビュー内容が 「自分は赤信号の時は"できるだけ"止まるようにしてるんですけど、何ていうんですか、 暗黙の了解みたいなものがあって……(つまり止まりません)」 みたいな感じだったな。 暗黙の了解って何だ? 犯罪行為を黙認しないことが暗黙の了解? それは別に暗黙の了解じゃなくて普通のことだよな。逆なら暗黙の了解かもしれんが。
自分としてはできるだけ止まるようにしてるけど 「みんなで走ってる時は赤信号でも止まらない」みたいな空気ができてて ←これが暗黙の了解 結局止まらないんですよね(笑) って事なんじゃないか? 人としては間違ってるけど日本語としては間違ってないんじゃないか
やましい事が全く無くて、そのゲームが本当に好きなら ゲームの開発元にゲームの感想を伝えたうえで パッチの作成をお願いすることやね
683 :
680 :2011/10/04(火) 06:27:44.81 ID:E2bpbs/z
>>681 報道された奴は、人としては間違ってるけど日本語としては間違ってない
このスレに現れた奴は、人として間違ってる上に日本語としても間違ってる
と言いたかった
このスレには犯罪行為を見咎めることが暗黙の了解になるような後ろ向きな文化は存在しない、と
>>679 変な誤解も何も、ゲームを展開するのはマナー違反だと覚えておいてほしい。
音楽を作ってる人に「あなたの曲の一部を勝手に改変したいから方法教えて」って言ったら失礼になるのは解るよね?
悪用はしないと宣言したところで同じこと。制作者のスレで方法を訊くなんて論外だよ。
>>682 の言うように感想を伝えたうえで制作者にお願いしてみるといいと思う。
CGモードの製作で行き詰ってます CG閲覧中に、左クリックで次の差分CG表示、右クリックでキャンセルというようにしたいのですが 解説サイトに載っていたwaitclickを使って左クリックを待つ方法だと、右クリックが利かなくなってしまいます なにか良い方法は無いでしょうか
[p]
687 :
885 :2011/10/04(火) 21:53:31.22 ID:FPajs5r9
>>686 的確なアドバイスありがとうございます
いつのまにかpタグはテキスト待ち専用みたいに思い込んでました
もっと柔軟に考えないとだめですね
吉里吉里って中クリック(ホイールクリック)には対応してないんですかね?
ウインドウイベントも同様でございます
吉里吉里は対応してる KAGは対応してない
サウンドノベルゲーム作るのって大変ですか? 僕がシナリオ、妹がイラストと音楽なんですが、プログラムできる人がいません プログラミングにまったく興味がなかった人間でもできる様になりますか?
htmlのタグを書くくらいの難易度だよ まあ、何もわからない状態から、複雑な分岐をするようなのはかなり大変だけど キャラクターごとにシナリオを分岐するくらいなら 作りながら勉強して数ヶ月もあればひと通りのことは出来るようになる
ちょっと行き詰ったので質問させてください 画像を表示するマクロを作ったのですが storage=hogeで画像を呼び出した時、変数に応じて hoge_Aかhoge_Bの画像を呼び出すようにしたい時はどうしたらいいでしょう? ちょっとうまく説明できないのですが教えてください
>>696 ヒント:「エンティティ」でKAGリファレンスを検索
>>697 エンティティですね
リファレンス調べたつもりで見落としてました
ありがとうございます
そのへん使いこなせるようになるとスクリプト組むのが楽しくなってくるよねー
自分もそうなんだけどなんで適当な変数っていうと「hoge」「fuga」が思い浮かぶんだろう どこで覚えたのかよくわからん
>>698 あと、そういうファイル名とかの差し替え処理時は、
あわせて TJSの「@つき文字列即値」を覚えておくと便利
@image storege='&@"file_${f.hoge}"'
こんなかんじで変数を差し込むような形で使える。文字列を加算でつくってると
"" とかがごちゃごちゃしてくるけどこれだと1つにまとめてすっきり
702 :
名前は開発中のものです。 :2011/10/15(土) 14:58:00.38 ID:XdlvwnHF
質問させて頂きます。 メッセージ履歴画面への遷移時と、 復帰時にトランジションを発生させたいのですが、 どのような処理を記載すれば良いでしょうか? 改造Tipや、本などを参考に致しましたが、良い方法が思い付かず。 ご教授をお願いします。
吉里吉里を始めて女の子が対話形式で説明してくれる初心者サイトを一通り見て見ましたが 何を言ってるんだこの人達は…なレベルで途中で頭がこんがらがってしまいました 始めた頃を思い出し何かコツ等ありましたらお願いします いつかこのスレの内容もふむふむと理解できる日が来るのでしょうかね
>>703 あー判るわ・・・
対話形式の一番の難点は読んでる側に、そのお約束が組み立てられないと無理なんだよね(;´∀`)
初心者向きではない・・・図形式ならまだ判るんだけど
女の子が対話形式で説明してくれる初心者サイトは多分 初心者サイトじゃないと思うから違うサイトを探そう
>>703 です
あそこは超初心者向けではなかったのですね
ジャンプ辺りまではなんとなくなるほど状態だったのですが
とりあえず外で空いた時間に読める様に尼で吉里吉里で検索して本を買ってみました
707 :
名前は開発中のものです。 :2011/10/17(月) 21:05:51.69 ID:mbCX+SHO
すみません。 吉里吉里使い始めの素人です。 ひとつ質問させてください。 メッセージレイヤ表示に関して、メッセージレイヤは同時処理ができないので キャラクターの名前表示およびせりふ表示で二つに分けたい場合いかにしたらいいのでしょうか。 ネットでも本でもその部分をどうしたらいいか見つけられず。 わかりにくい説明ですみません。 よろしければ教えていただけると大変助かります。
メッセージレイヤ0と1があるとして positionで名前用のメッセージレイヤ1を望ましい場所・サイズで配置しておいて [current layer=message1] 吉田 [current layer=message0] 妹が爆発した・・・。[l][r] とかでいいんじゃないか
709 :
名前は開発中のものです。 :2011/10/18(火) 00:02:10.65 ID:mAie8T8t
ありがとうございます! 上記で試してみたのですが、 currentタグでメッセージレイヤを分けて支持した後、 message1を残したまま、message0のみメッセージ変更したいのですが、 [cm]タグを使用すると、message1まで一掃されてしまうので、どうしたものかと思案中です。 何かいい知恵はありませんでしょうか。
>>702 KAGだけじゃ無理で、TJSをゴニョしなければならないよ。
言えば、system/MainWindow.tjs の showHistory()/hideHistory()を
なんとかすればいいんだけど、実装は結構面倒なので覚悟必要。
>>709 「ルーク、[er]を使え」ってヨーダが言ってた。
712 :
名前は開発中のものです。 :2011/10/18(火) 18:01:37.85 ID:mAie8T8t
タグリファレンスで[er]を検索してみました! 試してみたところ、やりたいことができました! 自分の説明がわかりずらいものでしたのに、ありがとうございました!
713 :
名前は開発中のものです。 :2011/10/19(水) 12:37:17.62 ID:SIZyHhSf
>711 レスありがとうございます。 TJSの実装に関して知識が浅いので、 変更内容等が見えていないのですが、 勉強して、教えて頂いた部分の処理を解析してから 実装のロジックを考えてみようと思います。
kag.fore.messages[0]のような感じで about.ksが読み込まれているときのウィンドウのメッセージレイヤーにアクセスするにはどうすれば良いですか
715 :
名前は開発中のものです。 :2011/10/19(水) 20:19:29.15 ID:SKQ+CrPd
吉里吉里3が出せなくなったのならKAG4でお願いします
KAG3では吉里吉里2の性能は引き出し切れていないとお考えですか?
今日から始めるんだけど覚えるコツ等はありますか?
おすすめのエディタがあったらよろしくです
>>717 細部から作り始めず、まず枠組みを作ってから
「ひとつずつ」新しい事を試していく
最初に絵なし、選択肢5個ぐらいの単純なゲームを作ろう
(「わらしべ長者」とかな)
その後背景画を入れてみる。次は音を出してみる
前景に人物画を置いてみる。演出が欲しいのでトランジションを使ってみる
完成までに挫折しなければ、KAGまわりは殆ど覚えられるでしょう
あと付属のリファレンスを読む習慣をつける。これ大事
>>714 system/MainWindow.tjs の onHelpAboutMenuItemClick() を
見るよろし。win はグローバル変数からアクセスできないから
そういう方法では見れないんじゃないかなぁ。
>>719 ありがとうございます
最初からあれもこれもやるより
分岐ありの文章表示だけで完走を目指した方が良いって事ですね
リファレンスは何が書いてあるか意味は理解できなかったけど読んでみました
>>721 別に分岐なしでも良いとは思うけど・・・、表示方法や、演出だけでもお約束事多いからね
やりたい事を、完成したそこそこ短い文章で色々と試した方が良いよ
>>720 返事遅くなってすんません。アドバイスありがとうございます
winをtf.に書き換えたら何とかなりました
>>718 TeraPadかKKDEあたりつかえばいいんでね?
こんにちは linkやreturnの挙動をcondで行っているのですが @link * storage="hoge.ks" cond="f.hoge==1 || f.hoge==3 || f.hoge==9 || f.hoge==17 || さらに続く…" とlinkやcond条件を書くうちにタグが横長になって見づらい&把握しづらくなります 今後おそらく100以上の変数条件をcondで扱う予定なのですが condをすっきり書ける方法があったら教えていただきたいです
tjs で関数つくってそれをよぶだけにすればいい
load(file)でリストを読みこませることは出来るのですが、指定箇所から読みこませることは出来るのでしょうか? 例 file.txt t.タイトル1 タイトル1の内容複数行 でfile.txtから"t.〜"の一行を読み込ませたい(出来ればt.は出力させない) t.〜が必ずテキストファイルの最丈夫にあるとは限らない
>>725 とりあえず質問するときは目的と手段の両方を書いたほうが良い回答が得られやすいと思うぞ
一応考えてみたが実際試してないから変なとこは適当に直して
回答案その1
[iscript]
tf.hogecond = [
[1,3,9,17],
[2,3,10,]
];
[endscript]
みたいに事前に定義しておいて、
[link storage="hoge.ks" cond="tf.hogecond[1].find(f.hoge) != -1"]
回答案その2
こっちはやろうとしてることによっては見当はずれで使えないかもしれない
[link storage="hoge1.ks" target="&'*hogelabel_'+tf.hoge"]
みたいに書いておいて
hoge1.ksの中身を
*hogelabel_1
*hogelabel_3
*hogelabel_9
*hogelabel_17
[jump storage="hogehoge1.ks"]
*hogelabel_2
*hogelabel_5
*hogelabel_10
[jump storage="hogehoge2.ks"]
>>727 すまんけど質問の意味がよくわからない。
> load(file)でリストを読みこませることは出来る
というのは、「TJSのArrayクラスのload()メソッドで、ファイルの
各行を配列に読み込ませることはできる」という意味で合ってる?
> 指定箇所から読みこませることは出来るのでしょうか?
というのは、「ファイルの指定した行から指定行数だけ読み込ませる
ことはできるか?」という意味で合ってる?
もしそうなら、Array.load()は第二引数に「モード」が指定できるけど、
行数指定ではないようだからムリなんじゃないだろうか。モードって
何かリファレンスからは全然わかんないけど。
ttp://devdoc.kikyou.info/tvp/docs/tjs2doc/contents/array.html 単純に全部読んで目的のものをArray.find()しちゃダメなんだろうか。
毎回 find は効率悪いから、最初に読んだ後なんかキー情報をもとに辞書にいれとくのがいいね。その例だとこんなかんじ var titlemap = %[]; var a = []; a.load(ファイル); var titleline = []; var title = ""; for (var i=0;i<a.count;i++) { var line = a[i]; if (line.substr(0,2) == "t.") { if (title != "") { titlemap[title] = titleline; title = line.substr(2); titleline = []; } else { titleline.add(line); } } if (title != "") titlemap[title] = titleline;
途中でだしてもーたすまん var titlemap = %[]; var a = []; a.load(ファイル); var titleline = []; var title = ""; for (var i=0;i<a.count;i++) { var line = a[i]; if (line.substr(0,2) == "t.") { if (title != "") { titlemap[title] = titleline; title = line.substr(2); titleline = []; } } else { titleline.add(line); } } if (title != "") titlemap[title] = titleline; これで titlemap を title で検索すると目的の行が入った配列が得られる
732 :
725 :2011/10/25(火) 21:22:57.65 ID:X1CF+eAp
こんばんは
>>726 さん、
>>728 さん、アドバイスありがとうございます。
状況の説明ができてなくて申し訳ありません。
カレンダーのように時間刻みのラベルを書いたksファイルを基準に
各イベントや攻略キャラクターの挙動をサブルーチンで随時呼び出す形のため
各タグのcond属性が煩雑で頭が煮えてしまい
cond="tf.hoge==( 1 || 3 || 5 )"のように書けたらなーと思って書き込みしました。
tjsは苦手ですが勉強しながら、ちょっとずつアドバイスを試してみます。
煮詰まったら、また質問させてください。ありがとうございました <(_ _)>
>>727 他の人も言ってるように一旦全部読みこむのを前提として、
区切り文字を工夫すれば、一旦joinメソッドで結合した後
区切り文字を変えながら2回splitメソッドを使うのも有りかと思う
自分の場合は、他の人に触らせないつもりのファイルであれば
直接tjsの書式で書いて、Scripts.evalStorageで読み込むほうが好きだ
titlelist.txtの内容を
%[
"タイトル1" => [タイトル1の内容1,タイトル1の内容2,タイトル1の内容3],
"タイトル2" => [タイトル2の内容1,タイトル2の内容2],
"タイトル3" => [タイトル3の内容1,タイトル3の内容2,タイトル3の内容3,タイトル3の内容4]
];
みたいに書いておいて
(辞書式配列か2次元配列かは好みで。2次元配列の0番目の要素をタイトルマップにするのもいいかも)
tf.titlelist = Scripts.evalStorage("titlelist.txt")
で読み込む
>>729 >>730 >>733 返事が遅くなりすみません。
普段TJSをいじらなかったので質問の仕方が変ですみません。
やはり一度全て読み込むほうがいいのですか。
ちょっと現在時間が取れないのでおいおい試してみようかと思います。
ありがとうございました。
(いったい辞書機能作るのに何週間かけているんだろう……
文字列を一定の長さで切るにはどうすればいいでしょうか プロポーショナルフォントを使用しているので、文字数で区切るのではうまくいきません
736 :
733 :2011/10/26(水) 21:18:01.91 ID:yqPWIx4S
>>734 あー、そういう目的で、データが巨大になりそうだったら
データをCSVファイルで用意して、csvParser.dllプラグインで読み込むほうが
いいかもしれない
getTextWidth
辞書の項目一つづつ読み込みたいのなら項目ごとにファイルを作るしかないんじゃないか 全部読み込んで良いなら、辞書の本文を\nトークンでまとめて書いた方が扱いやすいと思う
>>736 CSVファイルという手もあったのか
>>739 一応現在は項目ごとにファイルを作っているんですが、
ファイルがやたらと多くなるのは個人的にあまり好きじゃなく……
というこっとからまとめられないかなぁと思っていたんです。
>>735 文字の前進幅が取れないからプロポーショナルフォントは吉里吉里には無理。割りきってgetTextWidth使う。
>>735 ある文字列が、ある領域に対して実際にどこまで表示できるのかを知りたいなら、
::GetTextExtentExPoint()で計算できる。
WINAPIの世界にようこそ。
743 :
735 :2011/10/27(木) 13:14:14.77 ID:DpRVm5tT
>>737 ,738,741,742
アドバイスどうもです
getTextWidthで解決できました
>::GetTextExtentExPoint() WINAPIって命名酷いなwフイタw
745 :
名前は開発中のものです。 :2011/11/01(火) 07:23:41.84 ID:b5xz0Gjr
すごく初歩的なことでマジで申し訳ないんだが、クリッカブルで詰まってるので教えてほしい。
過去ログとかもだいたい見たつもりだけど、見当たらなかったので……。
スタート、ロード、ゲーム終了って3つが選択できるタイトル画面が作りたくて、
imageフォルダ
・画像ファイル title.png
・領域画像ファイル title_p.png
scenarioフォルダ
・領域アクション定義ファイル title.ma
を配置してるんだけど、実行してもクリッカブルが機能してくれない(エラーは出ないし画像ファイルも表示される)
パレットの番号は設定したし、原因が全く見当もつかなくて困ってる。
一応パレットやら何やら自分にミスがあるのかと思って、
ttp://slowfood09.web.fc2.com/howto/kirikiri_gtm/kiri03.html このサイトの下の方にあるソースファイルを動かしてみたんだけど、これも動作しなかった。
クリッカブルを使用する上で、何かコンフィグをいじらないといけないとかいうことってあるの?
是非教えてほしいです。
>>745 すまない自己解決した。
ksファイルの中で直接title_p.pngとtitle.maを指定したらいけた。
マーヒーの法則 「散々調べたつもりで他人にヘルプを求めれば、助けを得るまでの10分以内に自己解決できる」
それが本当なら、すぐ他人にヘルプを求めるな。 そうしたらどんな問題でも10分で解決する。
オレもよく起こるなその現象。お陰で毎回申し訳なく思うわ
>>748 自分自身に「俺はもう散々調べた」と暗示をかけないといけないんだぜ?
「調べたつもり」にならないといけないんだから
修造の出番か
Layer.operateAffineがマルチコア向けに最適化されて爆速になったりしない?
>>752 残念ながら今はしてない。
けど、そういう.dll書けばするよ。ゴゥゴゥ!
既にそのメソッドのマルチコア対応はされてるけど爆速にはならんですな。2〜3割り増し、とかそのくらい
そうかー。 二倍三倍余裕でしたみたいな夢見てたけど簡単じゃないのな。 これに限らず、聞こえはいかにも凄そうなのに恩恵はささやかなんだよなーマルチコアって。 でも、2〜3割分だけでも無理が利くのがわかってよかったよ。 サンクス。
CPUの性能なんてもう10年以上前から限界に達してるよ。 浮動小数点演算なんてGPUにやらせればいい。それこそ2倍以下くらいにはなるかも知れない。
それでもテキスト表示だけだとctrlキーでスキップ速すぎ Aキーで最速オートぐらいでないと場面を把握できない スキップはスペースリターンでも同じだし ctrlキー押してる間だけオートにしようかと思ったが面倒くさいんでやめた
描画をグラボ酷使でやる設計にしろや CPUにやらせてんなや もろグラフィック扱ってんだろが紙芝居ゲーなんて
[link storage=sukiru.Ks target="*&f.koudoushuu[f.sukiruban[0]]"] [emb exp="f.koudoujisho[0]"][endlink][r] sukiru.ks内に*&f.koudoushuu[f.sukiruban[0]]というラベルがないと、 表示されてしまうのですが、書き方とかに問題があるのでしょうか?
多分 target="&'*' + f.koudoushuu[f.sukiruban[0]]" エンティティを調べ直そう
>>760 ありがとうございます! 無事に動作しました!
この書き方は初めて見ました、&を付ければ
いいってもんじゃないんですね・・・
いろいろ考えはるなあ パラメータ変えて全部1にしたら水っぽいな 陽炎は対象の遠近で強度が違う、地面との高さでも違う。高さはルール画像で何とかできるか? ナベの熱気が直上の背景をゆらしつつ上に行くほど薄れていく感じ でも手前の物やナベは揺らさない。ナベの水面は揺れる ピクセルが孤立するとドット感が強いから滑らかさがいるかも レイヤー別にかけられたら遠近の他に人物のオーラや熱気を演出できるかも
画像の大きさを表示前に知るのはどうすればいいんでしょう たとえばtf.file,tf.Width,tf.heightに画像のファイル名、幅、高さを入れて @image layer="0" visible="true" storage=&tf.file top=&"kag.scHeight-tf.height" left=&"kag.scWidth-tf.Width" みたいに右下端に表示する場合などです pos=centerで画像の中心を画面の中心にして下端に表示しているのだから わかるはずだという気がするんですが
visible="false"でいいんと違うの
>>763 もうアップデートされてて、新しいのは「マスク」機能が追加
されてた。これで画面局所的なゆらぎと強度の差異が実現できる
みたい。
画面全体ではなくて、個別のレイヤーにかけるエフェクトみたい
だから、複数レイヤに別々にかけるようにちょっといじれば、
言ってるようなことはできそうね。
ただ、確かにドット感があるから、揺らいだ背後がぼやけるような
機能も欲しいところ。そんなことしたら重くなっちゃうんだろう
けどね。
特殊な用途だし、AEでつくってアニメとして合成表示した方が綺麗で早くて簡単なんじゃ…
>>767 確かに、綺麗で簡単なのはそうだよね。
ただ、ゲーム中で(使用対象が別々で)使用箇所が沢山ある場合は、
やっぱりこういう汎用的な効果が欲しくなってくる。
ぶっちゃけ、AVGなんて選択肢以外は全部アニメでいいじゃん、と
言われると全くその通りなわけで、そうなってないのはやっぱり
製作労力と天秤にかけるからだしね。
特殊な用途と言うが ルールとマスク画像だけで円形の陽炎とか人物の周囲にのみ陽炎とか 場所毎にゆらめきの大きさを変えたりできるこれは 低容量で想像以上にいろんな演出ができるぞ ただ、マスクが画像指定なので カーソルの周囲だけゆらめくとか 某STGのボスの周囲だけが歪むアレができないのが悔しい
770 :
769 :2011/11/06(日) 12:20:39.51 ID:nkE2SYRS
いや、レイヤ指定だから多分できるんだな。 後半は忘れてくれ。
771 :
764 :2011/11/06(日) 12:32:30.03 ID:x5YROOIf
>>765 一度事前にレイヤーに読み込んでみるしかないですか
陽炎プラグインは実行中でもパラメータをいじると反映するのはいいですね
タイマーで強弱の変化とか付けられそうです
あと流れを縦方向に限る必要も無いと思います
ケトルの口から斜めに吹き出す蒸気みたく
ついでにブラーもかけられるといい感じに出来ると思う。 単純なボックスブラーでいいんで。 ゆらぎ0にしたらマスクつきブラーにもなるよーみたいな。 アージュがよくやってた涙で前が見えない、とかの演出につかえますなー。
>>771 >>772 それイカス!
せっかくここでいいアイディア出てるので、中の人に見るように
お知らせした。他力本願で悪いけど、中の人がんばって下さい。
2次元配列のうまいコピーの仕方がわかりません。 f.enemy=[[]]に敵の名前や攻撃力、HPなどの基本データを入れ 戦闘時にtf.出現敵=[[]]に適時コピーして使いまわしたいのですが tf.出現敵[0] = f.enemy[0]; とすると出現敵のHPを削ったときにenemyのHPまで削られるし tf.遭遇敵[0].assign(f.enemy[0]); だと「(void) から Object へ型を変換できません」となります。 ググるとJavaの講座でfor文を使って地道にコピーしろとありましたが TJSも同じなのでしょうか? CSVとやらを使ったほうがよいでしょうか? どなたかお力添えをお願いします。
>>774 2次元配列やtjsがどうこうではなく、csvとやらも基本的には関係なく、
あなたがただ単にいろいろ記述をミスってるだけに見えます
変数の宣言部を見ないと詳しくはわかりませんが
1次元配列と2次元配列の区別がついていなかったり
配列と配列じゃないものの区別がついていなかったりしているように思えます
>>774 TJSでも同じです。地道にコピーしましょう
// 敵情報格納先を空で準備
tf.遭遇敵 = [];
==== この部分を敵の数だけ繰り返す形
// 元情報からコピー
var copyArray = [];
copyArray.assign(f.enemy[敵種類]);
tf.遭遇敵[敵番号] = copyArray;
// あるいは単に以下で順につめていく
tf.遭遇的.add(copyArray);
=== ここまで
これでOKです。要するに、tf.遭遇的[0] は初期状態だと空なはずなので、それをまずつくらないと駄目です
質問させてください。
OUTFOCUS WikiのInside KAG3、『グラフィカルボタンでセーブデータのサムネイル表示』という項目の一番下にあるthumbnail_button.lzhを利用しています。
ttp://hpcgi1.nifty.com/gutchie/wifky/wifky.pl?p=Inside+KAG3+-+%BE%AE%B5%BB#p10 上記ページのサンプルはセーブしかできないと書かれていましたが、ロードにも応用したいと思い、TJSの勉強もかねて改造することにしました。
rclick.ks 60行目 @buttonタグの中にある"kag.storeBookMark('+tf.i+')"を"kag.restoreBookMark('+tf.i+')"へと書き換えればロードへ転用できると思ったのですが、
実際それで動かして、ロード確認のダイアログが出た後に「はい」を押すと「スクリプトで例外が発生しました (void) から Object へ型を変換できません〜」とエラーが帰ってきます。
エラー発生箇所の付近をコンソール等で調べてみると、first.ksの26行目や33行目にある"kag.current.links[buttonnum].object"が関係ありそうというところまでは解ったのですが、それについてどう対処すれば良いのか見当もつかない状態です。
この件についてお知恵を拝借させていただければ幸いです。
>>775 説明が足らず申し訳ありません。
f.enemy[0]=['テスト1', 30]; //名前、HP
f.enemy[1]=['テスト2', 30];
のように基本データを入れていって
戦闘になったらtf.出現敵=[[]]に適時コピー
こうすれば簡単に敵を量産できたり、tf.遭遇敵.countで生存中の敵を数えられたりできると踏んだのです。
>>776 確かに最初
tf.遭遇敵 = [[]];
と宣言して空っぽのままでした。記述例まで書いていただきありがとうございます。
空っぽというアドバイスをもとにリファレンスにあった以下の宣言をいれたところ
tf.遭遇敵 = [] if tf.遭遇敵 === void;
for(var i = 0; i < 3; i++) tf.遭遇敵[i] = [] if tf.遭遇敵[i] === void;
ちゃんとf.enemyとtf.遭遇敵が区別されていました。
まだまだ勉強不足でした。お二方ともありがとうございました。
>>778 クリアして個数に応じて足していく形にしないと、
常に敵の数が3体になってしまうバグになると思われ
>>779 一応戦闘終了時にクリアしてるので大丈夫です
ご心配ありがとうございます(^^
// f.enemy = [ [ "雑魚", 12 ], [ "ボス", 30, [ 40, 50 ] ] ]; として
// 敵生成開始
tf.enemy = new Array();
// 雑魚3人生成
for ( var i=0; i<3; i++ )
{
tf.enemy[ i ] = new Array();
tf.enemy[ i ].assignStruct( f.enemy[0] );
}
// ボス追加
tf.enemy.add( new Array() );
tf.enemy[ tf.enemy.count - 1 ].assignStruct( f.enemy[1] );
常に初期化するなら===voidのチェック不要。
>>779 の言う通り
assignは子配列や子辞書が参照になってしまう。単純コピーはassignStruct
ボスの[2][0]とか[2][1]とかをいじってみるとわかる
自分も昔それでハマったなあ 元のデータは常に保持しておいて使い回したいのに コピー先の変数の中身を弄ったら、元の方も変わって 何でよ何でよってうろたえてたわ
Array.assign(bool)にしてシャローかディープを選ぶ仕様だったら初めに気づいたんだろうな
>>777 それだけじゃわからんしー
せめてエラーログ貼ってよ
>>781 なぜかassignStructの方にassignは参照コピーって書いてあるんだよね
assignの直下とはいえ
うお……savedataフォルダ消すの忘れてwinのユーザ名が丸見えじゃないか あははー
>>787 素早いレスと具体例をありがとう御座います。そして返信遅くなって申し訳ありません。
まさかボタンが消えてしまってたとは気付きませんでした。
挙げていただいたサンプルでの変数の使い方も本当勉強になります。
> _w_dee/ストラップレスのブラがずり落ちるでぃー子 2011/11/08(火) 17:55:57 via twicca > 吉里吉里3は、開発を手伝ってくれるツインテニーソ嫁を捕獲するための > 触手を作るためのCNCフライス盤を作ってるところだからちょっと待ってね。 ワクワク
つまりまだ何も出来てないって事か
stableになるまで2年はかかりそうだな
windows9くらいじゃね?w
アニメーション用の画像を横に連結する場合に画像連結用のソフトを使ってる人いますか? アルファチャンネルが破棄されると困る デフォルトの改行待ち改ページ待ちの画像は透明度をasdで操作できれば一つで良いのにw
αチャンネル保持したまま横に画像連結してくれるアプリを 2chのスレでずっと前に作ってもらった
単なる連結なら「むすびちゃん」っての使ってるわ、操作超簡単 ImageMagickはまとめてサムネイル作ったりするときに使ってるな 俺のはWindows用なんだけど元はUnixのツールだっけ?
マスク部分を単色で塗ってsusieで連結してその後抜いてるな 2値じゃないαはフォトショで
俺は付属の画像フォーマットコンバーターで マスク/メイン分離→それぞれを連結→マスクとメインを再合成してPNG/TLGに変換してる
俺はImageMagick派。 ImageMagickは元々コマンドライン上で使うツールだから 何用ってことはないけど、UNIX向けが最初だった…はず。確か。 上で紹介されてた陽炎プラグイン、おまけで「オーラがメラメラ」が 実装されてた。ゴミが出てたけど、あれちゃんと使えるなら使ってみたい
802 :
794 :2011/11/09(水) 03:51:51.68 ID:nLUY2/z8
>>795-800 ご意見ありがとう
ImageMagickは説明文を読む限りコマンドラインは難しいし、むすびちゃんは簡単だけどAdobeAirを入れないと駄目
SUSIEはアルファを扱えず2値じゃないと厳しい・・・
もう既存のソフトは諦めて、自分で作ることにしました
過去ログを漁っていたらKAGEXを使っていらっしゃるかたがそこそこいたので質問を。 imageで動画を読み込ませているのですが、 なぜか斜め? になって読み込むのですが どのようなことが原因に考えられるのでしょうか?
吉里吉里の進化が止まって久しく、
>>790 を見るに今後も止まり続けることが確定している現在
吉里吉里と同等の自由度や汎用度を持ち合わせている新たなエンジンって出現してるんだろうか
不満点がDirect3Dが使えないことだけの吉里吉里から敢えて乗り換える価値のありそうなものってある?
806 :
名前は開発中のものです。 :2011/11/09(水) 11:54:03.44 ID:Ol+4C8u9
これってのはないな Nスクの人が新しいの作ってて期待はしてるがまだ未知数
>>806 あれ3D方面へのディベロップっぽいけどどうなるのかな
ポリゴンモデルで立ち絵代用とかを視野に入れてるっぽいけど
自由度と汎用度が欲しいだけなら、Unity とか Adobe AIR とかいくらでも選択肢はあるんじゃね
>>807 ラブプラスみたいな感じじゃないの?
やったことないけど
>>804 それだけじゃあ全くわからないけどKAGEX使ってるならimageなんて使わないほうがいいよ
811 :
794 :2011/11/09(水) 19:51:40.02 ID:nLUY2/z8
>>803 いただきました
自分で作った奴と比べてソートができてPNGファイルの圧縮率が良いのが良いですね
バグに苦しめられながら作る必要なかったw
>>810 imageは使わないほうがいいということなので
素直にvideoでやってみたのですが動画が再生(不可視状態?)できないのですが
なにか記述を忘れていたりするのでしょうか?
[video visible=true loop=true]
[playvideo storage=hoge.avi]
それともavi形式が不可能とか……
avi はサポート外やね
>>813 まじか……
KAGEXで使える透過処理を保持できる動画形式って何があるんだろう
aviの利点と欠点は、対応できるコーデックが多すぎるって事だしなぁ エラーの原因になる可能性が高いんで採用しないんだろうなぁ・・・
>>814 αチャンネルを保持できる動画フォーマット自体があまりないので、
通常はmpg等を利用する場合小細工が必要になります。
吉里吉里で簡単にということなら、凄い昔に楓で見たような覚えが…
>>814 環境レイヤのmovieとalphaを使う
KAGEX同梱のサンプルでも透過させて再生してるところあるよ
layerExBTOA.dll必須
メッセージレイヤを全透明にしてフォントを白く表示したいんだけどどうすればいいですか? opacityだと文字ごと透明になってしまう
メッセージレイヤの画像に透明の画像用意して指定
出来ました! ありがとうございます!
「自動で読み進める」で効果音(ボイス)再生終了まで 読み進められないようにするにはどうすればいいですか? [ws buf]だといちいち属性を選択しなければならないようですが…
単に仕様に応じてマクロ化すればいい話では
あんまりよく分からないです マクロで解決できるんですか?
824 :
名前は開発中のものです。 :2011/11/12(土) 02:29:30.90 ID:ZenA4bOJ
>>823 台詞末にマクロ作ってない?
そこに[ws buf=%buf|2 cond="kag.autoMode"]をぶち込めばいいよ
bufはとりあえずデフォ値決めて必要に応じてシナリオ内で変えればいい
ボイス扱ったこと無いから適当に書いたけど
>>824 なるほど
試してみたら出来ました
ありがとうございます
親レイヤのshow(num)というメソッドを 子レイヤのメンバ変数expに格納された文字列から呼び出したいのですが 自分で色々と試したものの出来ませんでした…助けてください(´ω`) 子レイヤは自身のメンバ変数としてexpとnumを持っていてScripts.exec(exp);で呼び出そうとしていました 子レイヤ.exp = 'parent.show(num)' ←'num'という文字列になってしまってだめ 子レイヤ.exp = "%s.show(%d)".sprintf(parent, num); ←(Object 0x01〜中略).show(1)とかになってエラー
ごめんなさい、説明に誤りがありました 子レイヤはnumという変数を持っていません なので 子レイヤ.exp = 親レイヤ.show; とした上で exp(num); の方法は出来ません。説明下手ですみません…
ごめんなさい、説明に誤りがありました 子レイヤはnumという変数を持っていません なので 子レイヤ.exp = 親レイヤ.show; とした上で exp(num); の方法は出来ません。説明下手ですみません…
引数も含めた文字列から親レイヤのメソッドを呼び出したい、ということですね 連投もしちゃうし大変失礼しました(´・ω・`)
ksとtjsを読み込んで dataフォルダ以下の使ってない画像ファイルやら音声ファイルを消してくれるツールって無いでしょうか
自分で書けばいいだけじゃん
つまり無いんですね
動的に作成されるファイル名の間接参照とかあったら消されちゃうんじゃ…
後で消そうと思って画像や音声呼ぶときにフラグ立てるようにしてたけど 完成した時にはすっかり忘れててそのまま公開しちゃった。 足りないよりよっぽどいいよね。
その発想が、他社のリソースを入れたまま発売したりするミスに繋がるんじゃw
吉里吉里Java移植プロジェクトが成功すると色々変わりそうだな
TJSで以下のようなことをしたいのだけど出来ますか? 1.Dictionaryクラスを継承してArrayクラスのように色々なメソッドを持たせたDictionaryクラスを作る 2.↑で作ったクラスで多次元辞書配列を作る
>>838 1. 可能なはず。ただコンストラクタでオブジェクトにクラスのコンテキストがどうバインドされるかは未確認
2. 演算子オーバライドが無いので tjs 的には無理。
iTJS2Dispatch* でそういう処理を疑似的に実現するネイティブクラスを作るのは可能だと思われる
>>839 レスありがとうございます
2は無理そうですか〜…多次元辞書配列でDatabaseのようなものを作りたかったのですがTJSでは無理なんですね
>>826 exp = 'parent.show('+num+')';
ではなかろうか
>>841 子レイヤ.exp = 'parent.show('+num+')'; だと
スクリプトエディタにparent.show(1)と表示されて文法エラーになりました
子レイヤ.exp = 'parent.show('+num+');'; だと
メンバ'parent'が見つかりません、と出ます
直接 parent.show(1); と書くと正常に動きます
親レイヤの属するオブジェクト名がobj、親レイヤの名前がforeだとして
exp = 'obj.fore.show(' + num + ');'; と書けば動きました
よく考えたらparentは親レイヤへの参照なので文字列として渡したら駄目ですね
かといって
exp = '(' + parent + '.show('+ num +');'; と書くと結局
>>826 と同じことに…
自身の名前を得る方法があればなあ・・・お手上げです\(^o^)/
>>842 直接書いてるのはそりゃその場で実行されて結果のvoid が exp に入ってるだけだろう。
全然正常に動いてないと思われ
Scripts.eval は通常グローバルコンテキストで動くから、
グローバルなもの以外は渡してもオブジェクトが無いっていわれるだけだよ
方法論1 : そもそも Scripts.eval を使わない
exp に登録するのを動的関数にする
子レイヤ.exp = function() { parent.show(num); } incontextof 子レイヤ;
子レイヤ中からは以下のように呼び出す
if (exp !== void) exp();
方法論2: 最新βの吉里吉里は Scripts.eval にコンテキスト指定の引数が増えてるのでそれを使う
子レイヤ.exp = "parent.show(num)";
子レイヤ中から呼び出す場合は以下の通り
Scripts.eval(exp,,,this);
引数の意味は以下の通り
Scripts.eval(式, エラー用ファイル名, エラー用行番号, 実行コンテキスト)
もう一つあったわ。 方法論3 実行時に関数構築 子レイヤ.exp = "parent.show(num)"; 呼び出し場所での処理 var f = Scripts.eval("function(){" + exp + ";}"); (f incontextof this)();
>>844 レスありがとうございます
すみません、ちゃんと確認したら全然正常じゃありませんでした
早速方法1と3を試して見たところ、引数として使うnumはやっぱり子レイヤ側に持たせないといけないですよね(´ω`)
実は一時しのぎのつもりで方法1に近い処理をしていました
子レイヤに変数exp(呼び出すメソッドへの参照)と変数aug(引数)を持たせて
exp(aug);で呼んでました
>>827 で書いているのですが、変数num(aug)を子レイヤに持たせずにexpに引数もまとめて突っ込んで呼び出す方法が知りたかったのです
方法1、3でもやっぱりメンバnumが見つかりません、ってなっちゃいました
>>844 さんの言っていることを理解できていないだけなのかもしれませんがが('A`;)
何がしたいかというと、親レイヤ側で子レイヤ=ボタンレイヤを作って そこでボタンレイヤを押した時に呼び出すメソッドとその引数をexpに1行の文字列で簡潔に表記できるようなもの です 方法2が一番理想に近そうなので、後で公式いって試してみます!
>>846 num の値が生成時に指定したもので固定でいいのなら、単順に
子レイヤ.exp = "parent.show(" + num + ")";
でいいんでは?
文字列加算は対応がわかりにくくなるので、「@つき文字列即値」を使って
子レイヤ.exp = @"parent.show(${num})";
とかするのがお奨め
num が親側にあって動的にかわるなら、1. の方法で
子レイヤ.exp = function() { self.parent.show(owner.num); } incontextof %[ self:子レイヤ, owner:this ];
とかやって全部コンテキストにしこんで渡すしかないね。
改行がうざいんだが
>>849 なら、このスレに来なくて良いんじゃないか?
そうよねぇ誰も来てくださいなんてお願いしてないわけですしねぇ
まあちょっと読みにくいのは確かだがな・・・
台詞主体のエロテキストとかなら一行間隔もアリかなぁと思うのだけど……
いまどき行間はクライアント側で好みに調節するから、ないな。
あ?こっちはわざわざ利用してやってるんだが?
わざわざありがとうございます。謹んで御礼申し上げますのでとっととお帰りくださいませ。
質問です rclick_tjs.ksを改造していて ESCキーの他にキーボード操作を割り当てたいと思い RClickConfigLayerクラスのonKeyDownに if(state == 0){// メニュー画面 if(key == #'L'){// ロード画面に切り替え makeLoadMenu(); return; } } と書き加えてみましたが何も起こりません 何がいけなくてどうしたらいいのか教えて下さると助かります 宜しくお願いします
858 :
名前は開発中のものです。 :2011/11/16(水) 23:33:44.46 ID:kEMdQLwC
if(key==VK_L) { かな。詳しくは吉里吉里2リファレンスの仮想キーコード一覧を参照
859 :
857 :2011/11/17(木) 00:51:45.13 ID:kS5N09io
>>858 レスありがとうございます
ですがVK_Lに変えても駄目でした
試しに
if(key == VK_ESCAPE) owner.onConfigClose();
の直後に
if(key == VK_HOME) owner.onConfigClose();
と書いてみましたがキー押しても全く反応せず見当もつかない状態です
860 :
857 :2011/11/17(木) 18:05:00.01 ID:kS5N09io
すみません フォーカスを受け取れるようにしたら自己解決しました スルーで構いませんが後学のため フォーカスを受け取れる以前の状態では 何故ESCAPEキーしか反応しなかったのか わかる人がいれば教えて貰えると参考になります 連投失礼しました
キー処理しているのはそこだけじゃない。 kagウィンドウにも記述があった気がする。 レイヤーでonKey拾う方法以外にキー押下の状態を拾う手法もあってこちらはフォーカスが関係無い。 一度ソース全体を眺めてみた方がいいよ。
fstatプラグインを使って、CSVファイルの更新日時を取得したいのですが なぜかcannot openとなりエラーが出ます ファイル名は変数storageで指定しており、CSVPerserでは読み込めるので原因がさっぱりわかりません
Plugins.link('csvParser.dll'); Plugins.link('fstat.dll'); storage = 'hogehoge.csv'; csv.initStorage(storage); // これは普通に読み込める、ちゃんとデータも取り出せてます var fstat = Storages.fstat(storage); // これがcannot openになる // fstatが辞書配列じゃないから駄目なのかとfstat = %[];としてからでも駄目でした
>>863 fstat か csvParser だったか吉里吉里本体だったかどれだったか忘れたけど、
ファイルのオープン時にロックをしてしまう関係で誰かが開いてると情報が見れなくなるという
バグが以前あったはず。
全部最新のバイナリにすれば解決すると思われ。
>>864 最新の安定版のkr2_232r2を使っているのですが、これでも駄目なんですかね?
一通り調べたら最新のfstatは同梱されていないと書かれていたんですが
どうやって最新のものを入手したらいいのでしょう(´・ω・`)
>>866 ありがとございます
fstat.dllを入れ替えてみましたが、全く同じエラーが出ました
色々試してみたところどうやら自動検索パスが機能していない?ようで
file://〜〜/kr2_232r2/data/scenario/hogehoge.csvのように指定したら読み込めるようになりました
吉里吉里3はすっかり頓挫だな
吉里吉里Javaがマルチプラットフォームの遺志を引き継いでくれるさ おまいらもどうせ吉里吉里3が出たところで吉里吉里2しか使わない奴らが ほとんどだったんだろ?
出来次第ですよ。 乗り換える価値があると思えるぐらいパフォーマンスが向上していれば乗り換えただろうし。
しかし使わせて貰っている分際で偉そうな奴らだなw
マルチプラットフォームとか要らんからWindows 7に正式的に対応した正統な後継バージョンが欲しい マルチプラットフォームって問題引き起こしそうなイメージしかない
デバックやらがめんどくさくなる
>>873 7で動かない要素なんて全く無いけど何が問題?
readmeでは対応してるけどダウンロードページの方は放置されてるね 更新わすれてるだけじゃないの
KAGである程度プログラム組んでからKAGEXの存在を知り、移行しようかなと思ったけれど ソースコード切り貼りするのが大変だし、KAGEX自体もあまり使っている人いないしでそのままKAGにしようか迷っているんだけど KAGEXにすると開発速度上がる?
最初は訳わからんけど慣れればめっちゃ上がる
KAGEXはネット上のドキュメントとか皆無と言っていいくらい無いから 詰まってもオール自力を強いられる
>>878 なるほど、ありがとう。やっぱ速度上がるのか。
それなら今頑張ってもいいような気もする。
>>879 KAGもまだそれほど慣れていないからオール自力っていうのが敷居高いな。
おまけにKAGである程度システム組んじゃったからなあ…。
でも後々のこと考えると今頑張ってみようかな。
KAGEX、簡単なサンプルさえも思ったように実行されない…。 背景の表示って背景画像を「bgimage」へ突っ込んで、envinit.tjsに配列定義して first.ksに「@env stage=背景の名前」を書けばいいんだよな? 全く表示されないんだけど他に何か必要かな?
>>881 すみません、自己解決しました。
省略記法(「@背景の名前」っていう書き方)の方で書くと問題なく動いた。
KAGEXわけがわからん…
そういえば最新版だと@envから@stageに変更されてるわ
>>883 そうだったのか…。教えてくれてありがとう。
長い目で見たら、KAGEX使うより自分でわかりやすいコード書いたほうが絶対楽だと思う
KAG読むかKAGEX読むかだけで大した違いはないんじゃないかな それかKAGも使わないってこと? KAGEXで参考になるところはたくさんあるから一回見とくといいよ
>>885 コードが読みにくいというよりリファレンスがきちんと整備されてないからやりにくいって感じかなあ。
>>886 KAGも併用しているよ。
個人的に画像や効果関連を配列で定義しておけるところが便利だなって思った。
自分まだ初心者だから偉そうには語れないけれど・・・ 笑
今画像表示やトランザクション一通り試して上手くいったんだけど今度は普通の文字が表示されないな。
見た感じ背景読み込んだ後に表示されなくなるからレイヤーの重なり順がおかしいのかも。
でも環境レイヤって一番下だよなあ・・・。
すみません、ちょっと初心者的な質問させてくださいませ。 KAGのリファレンスには「cclick」って命令の記述がありますが、 @cclick って命令打っても「タグ/マクロ"cclick"は存在しません。」って エラー表記が出ます(´・ω・) 意地になってtjsから、 kag.tagHandlers.cclick(); と入れても当たり前ですがンナノネーヨ的にはじかれます。 もしかしてKAGEXではそもそも使えなかったりします?
889 :
888 :2011/11/23(水) 13:50:23.67 ID:Uxfz0R8P
以下、[click]タグによる待機を[cclick]でブレイクできないとした場合のお話。 既存の[p]や[l]タグでのクリック待ち状態を強制的に終わらせるには どうしたら良いものなんでしょうか? より具体的には、[p]で待機中に所定のボタンを押した場合、 待機をブレイクさせて進行再開させたい訳です。 ぜひご教授をお願いしますorz
890 :
888 :2011/11/23(水) 16:18:42.86 ID:Uxfz0R8P
自己解決することができました。 mainwindow.tjsの書き換えが必要かと思ってましたが、 単にonPrimaryClickで外からKAGに「クリックした」と誤認させりゃ 良かっただけの話でしたね。やや強引ですが。 c⌒っ゚д゚)っ < お騒がせしてすみません
ボタンレイヤの挙動に悩まされています ButtonLayer.tjsにマウスクリック時の処理はonMouseExecuteに書いたほうがいいと書かれていたのでonMouseExecuteに書いています button==mbLeftの時、画面に表示された変数numの値が1ずつカウントアップしていき、 numが5になった時にボタンのenabledをfalseにしています そしてenabledがfalseの時、ボタンの色が変わるようにonNodeDisabledに記述しています 普通にボタンを左クリックしていくと、num=5の時に文字色が変わり、ボタンも反応しなくなるのですが 右ボタンを押しながら左クリックしていくと、文字色は変わるもののonMouseExecuteに書かれた処理が実行され続けます この問題の回避策のわかる方、教えて下さい(´・ω・`)
文字色は変わるもののonMouseExecuteに書かれた処理が実行され続けます >numが5になっても6,7,8,,と増え続けます
if(button == mbLeft) ではなく if(button & mbLeft) にしてみては
>>893 それだとそもそもonExecuteが実行されないです('A`)
onExecuteはonMouseUpから呼び出されてるメソッドなのでonMouseUpのほうに
if(button == mbLeft && enabled)と仕込んでも無駄でした
enabledがfalseになってマウスメッセージを受け取れないはずの状態なのに
onMouseイベントが起きてしまっているのがおかしいですね(´・ω・`)
Layerクラスのソースを見られれば原因がわかるんでしょうか…
自分でも色々試しつつ、引き続き回答お待ちしてます
よろしくお願いします
細かい挙動はよくわからんが 変数numが5以下の時は1ずつカウントアップして、 それ以外の時はenabledをfalseにするとかじゃダメなのかな
SLGのテストプレイ用に画面左上に簡易なステータス(略称と数値だけ表示する バー等の画像は使わない物です)を表示したいのですが、 参考になる講座サイトやサンプルはありませんか? 経過日数、好感度という感じに個別にステータスを設定して 数値増減の度に変動させたいです
テストプレイとかデバッグ用か 1メッセージレイヤをもう一つ使う 2画像レイヤにテキストを出力する 3監視式に変数を表示する 4trace タグでコンソールに出力する って感じだろうけど増減の度に自動で更新するのは無いんじゃないか
それならconfigのデバックオンにして 見たい変数を監視窓に入れて自動更新にすればいいじゃないの
うちのはTimerクラス使って、メッセージレイヤを1秒毎に書き換えてる 増減があろうがなかろうが書き換わるけど、テスト以外では外すし別にいいやと
>>895 レスありがとうございます
でも問題はenabledがfalseになっているのにマウスイベントが実行されることです
てか自己解決しました(´ω`)ググっても自分の質問以外出てこなかった…
どうやらマウスボタンを押しっぱなしにすると、押している間、enabledの状態に関係なくボタン・キーの入力が送られてしまい問答無用でイベントが実行される模様
releaseCapture()というメソッドで、その押しっぱなし状態を強制的に解除できました。
onMouseDownに仕込んで解決
俺は吉里吉里についてはほとんど知らないけれど、 windowsの構造上、button downでキャプチャー開始したのに、その場でreleaseCapture()したら、 他のプロセスのウィンドウ上でボタンを話したとき、button upのメッセージが来なくなると思うんだが、 それは平気なのか? 後ドラッグが出来なくなるとおもうが、それも平気なのか?
windowsと吉里吉里のボタンには何の関係もないです
>>900 マウスボタン押してる間はキャプチャ状態になるってのはすごく一般的な仕様で、
それを常に解除してると別の問題出る可能性あるので、
いれこむなら enabled = false; にしてるとこにしたほうがええで
トランジションの位置の変更ってできるのでしょうか? リファレンスには「ルール画像のサイズがトランジションを行いたいレイヤよりも小さい場合は、自動的にタイル状に敷き詰められて使用されます。」 とあり、位置の変更方法がわからなくて困っております
>>902 マウスのイベント取得の話なんだからあるとおもうよ。
舐めプだわー
ごめんなさい誤爆です
上で紹介されてた陽炎プラグイン、いつのまにかβが取れて 正式版らしい。クリッピングが出来たりして汎用性高いけど、 もう一息速度が欲しい。 .dllのソースコードついてるから見たが、結構工夫されてて 確かにこれ以上速くするのは難しいかなぁ。あとはマルチ スレッド化か…。
>.dllのソースコードついてるから見たが、結構工夫されてて確かにこれ以上速くするのは難しいかなぁ。 これは俺の経験では、処理的にMMXの方が高速にかけそうな気がしないでもない。
どうだろう、この処理だったら、余計なパッキングしなくて済むから 今のSSE2でいいんじゃないだろうか。ちょっとMMXで考えてみたけど、 やっぱりパッキングが重いと思った。 MMXの実行速度ってSSE2と比べてどのくらい速いのかな。こればっかりは やってみないとわからないね。
ちょっと質問させてください。 レイヤーに画像を読み込んだ後、そのレイヤーに使われている画像の名前を取得することは可能でしょうか? たとえばlayer10にhoge.jpgという画像を読み込んだ後で、 layer10に使われている画像の名前を取りたいんです。 layer10がhogeだったらhageにする layer10がhageだったらsageにする みたいな使い方をしたいんですが、こういうのって可能でしょうか。
>>912 できないから自分で記録しておけばおk
例えば下みたいなの
loadImages上書きしなくても記録しておく専用の関数作ってもいいしお好きなように
Layer.loadImages_org = Layer.loadImages;
Layer.loadImages = function(image, colorkey) {
this.loadedImage = image;
loadImages_org(...);
};
var layer10 = new Layer(win, par);
layer10.loadImages("hoge");
Debug.message(layer10.loadedImage); // "hoge"
kag.(foreかback).layers[10].Anim_loadParams.storage の値を参照で良いのでは?
>>913 >>914 Anim_loadParams.storage
でうまく取得できました!
ありがとうございます!
メッセージ枠に画像を使いたくて、 Config.tjsの // ◆ メッセージ枠用の画像 // メッセージ枠用の画像のファイル名を指定します。 // "" を指定するとメッセージ枠の画像を使用しません。また、メッセージ枠用の // 画像を指定した場合、position タグでメッセージレイヤのサイズを変更すると // おかしな表示になると思います ;frameGraphic = ""; // position タグの frame 属性に相当 の最後の行の""にファイル名入れたんだが、エラーがでてしまう スクリプトエディタ(例外通知)っていうのには1412:1 メンバ"sf"が見つかりませんってでてる pngのメッセージ枠なんだけど、何故エラーがでるのか教えてくれませんか
917 :
sage :2011/12/02(金) 04:31:06.52 ID:IfxqxAQj
オブジェクトが属するクラス名を調べるにはどうすればいいでしょうか。
>>917 なんで名前欄にsageと入れてしまったんだ orz
吉里吉里で任意のシナリオをデバッグしたいときにはどうしたらいい? リファレンス見ると、first.ksが最初に実行されるって書いてあるんだけど 他のシナリオファイルのデバッグしたいのに毎回first.ksからだから面倒・・・
>>916 sfってことは変数まわりの別の原因だと思うけど
とりあえず枠画像はpositionタグで出してみては
>>919 ユーザーは全員first.ksから入るんだから、デバッグ作業で飛ばしちゃだめじゃん
俺はlinkタグで各シナリオファイルへ飛べるよう、タイトルメニューに一時的に入れてるけど
当然これはイレギュラーな動作なので、栞をロードした場合、
前後のシナリオファイルと連続してプレイした場合も別にチェックするけどね
シナリオフォルダ内を見てリンク生成するのをタイトルに作ると楽 どこでもセーブ使ってる場合は注意しないといかんが
KAGEX触ってみた、選択肢とかメッセージ入力ですげー便利だなーと思う反面 回転とかアクション的な事あまりしないしKAG2に慣れ過ぎてこっちで応用しながら組み立てた方が早いと気付いた 簡単な選択肢バラバラに設定するよりちょっと手間だけどまとめて出来る方が良いし
>>919 オレの場合は、debug.tjsをおいておけば、
・ksファイルをウィンドウへドラッグ&ドロップで再生する機能
・メニューバーとF5キーにスクリプトのリロード機能
を追加するようにしてる。debug.tjs自体は十数行程度。
ど、どうやるの?
自分も気になる…
まず服を脱ぎます
自分の尻を両手でバンバン叩きながら白目をむき
青魚を尻に入れ
びっくりするほどユートピア!
セーブ画面の構築で詰まっているのですがどなたかアドバイスいただけないでしょうか? コードは以下の通りになのですが・・・。 ----------------------------------------------------------------------------- *save_loop3 ; サムネイル画像ボタンの表示位置を指定 [locate x="&tf.save_x[tf.save_i]" y="&tf.save_y[tf.save_i]"] ; サムネイル画像ボタンを配置 [button graphic="savamode_prev_mo.png" target=*save_click exp="&'tf.save_click_num = '+tf.save_i" hint="&get_bookmark_data(tf.save_i+sf.save_now_page*6)" onenter="&'tf.save_message1_layer.clear2(), tf.save_message1_layer.processCh(get_bookmark_data('+(tf.save_i+sf.save_now_page*6)+'))'" onleave="tf.save_message1_layer.clear2()"] ; セーブデータがあるならサムネイル画像ボタンの画像を書き換える [button_loadthumbnail num="&tf.save_i+5" place="&tf.save_i+sf.save_now_page*6"] ;[current layer="&'message' + (tf.save_i+2)"] ;サムネイル画像ボタンの横にセーブした時の日時を表示 ;[emb exp="get_bookmark_data(tf.save_i+sf.save_now_page*6)"] ;栞の日付・見出し表示用レイヤの属性を設定 ; ループカウンタの値を増やし、1ページあたりのセーブ数分繰り返す [jump target=*save_loop3 cond="++tf.save_i<6"] ----------------------------------------------------------------------------- コメントアウトしてある部分がありますが、ここのコメントを外すとループが一回回るだけで終了してしまいます。 tf.saveの値を見てもきちんと0になっており、何故ループしないのかわかりません。 ちなみにコンソールを見てみるとエラーは出ていませんが、 [emb exp="get_bookmark_data(tf.save_i+sf.save_now_page*6)"]でプログラムが終了してしまっているようです。
>>930 そこだけコピペされてもこっちでそのままそのコードを試せないわけだが
まぁループしないのは tf.save_iの数が変わらないからじゃね?
; ループカウンタの値を増やし、1ページあたりのセーブ数分繰り返す
[eval exp="tf.save_i++"]
[jump target=*save_loop3 cond="tf.save_i<6"]
rclisk_tjs.ksを書き換えてセーブ、ロード画面を作ろうとしています。 ―――――――――――――――――――――――― @if exp="typeof(global.rclickconfig_object) == 'undefined'" @iscript class RButtonLayer extends ButtonLayer // parent に onClick イベントを送るようにしたボタンレイヤ {var tag; function RButtonLayer(window, parent) {super.ButtonLayer(window, parent); focusable = false;} function finalize() {super.finalize(...);} function onClick() {super.onClick(...); if(enabled) parent.onButtonClick(this);} } class SaveDataItemLayer extends KAGLayer
933 :
932 :2011/12/04(日) 02:30:09.79 ID:7XK7ynwz
{// 栞一個一個に対応するレイヤ var num; // 栞番号 var bgColor = 0xa0ffffff; // 背景色 ( 0xAARRGGBB ) var focusedColor = 0xffffffff; var commentEdit; // コメントのエディット var protectCheckBox; // 「データ保護」チェックボックス function SaveDataItemLayer(window, parent, num) {super.KAGLayer(window, parent); this.num = num; setImageSize(240, 82); // サイズ face = dfBoth; fillRect(0, 0, imageWidth, imageHeight, bgColor);//★★★ setSizeToImageSize(); hitType = htMask; ―――――――――――――――――――― ★★★の部分辺りを3分割(通常/押された時/オンマウス)のグラフィカルボタンに 差し替えたいのですがloadImagesでグラフィカルボタン用の画像を読み込んだ所 3分割されない元画像のままで表示されてしまって上手くいきません 初心者ながら色々調べていじっていたのですがどうしてもこの部分が理解できなくて・・・ お手数ですがどなたかご助言ください お願いします
>>931 返信ありがとうございます。
全文貼りたかったのですが200行近くになってしまうため一部切り取って投稿しましたが
全文貼ってしまっても大丈夫でしょうか?
カウントを増やす部分をアドバイスいただいた通りに書き直しましたが
前とは同じ部分でプログラムが止まってしまいました。
>>934 ここに貼らずにロダにtxtファイルでうpのがいいかな
それと止まった時のコンソールの内容も併記した方が早い
その前にget_bookmark_dataをよく見直した方がいい
そこが原因なら前後の記述よりも関数の中味の問題
あと前置++部分見落としてたごめんな
>>932 それは SaveDataItemLayer がボタンレイヤクラスじゃなくただのレイヤクラスだから
ボタンレイヤにするなら下記の部分に書き換え
class SaveDataItemLayer extends ButtonLayer
^^^^^^^^^^^
コンストラクタを
super.KAGLayer(window, parent);→super.ButtonLayer(window, parent);
そのままなら画像の再読み込みや再描写の関数作って
onMouseEnter、onMouseLeave、onBlur、onFocus、あたりで呼ぶといい
936 :
935 :2011/12/04(日) 10:29:07.52 ID:Tw9b5y8K
半角スペースで打っちまった 正しくは class SaveDataItemLayer extends ButtonLayer ^^^^^^^^^^^ 連レスすまん
938 :
932 :2011/12/04(日) 22:36:06.58 ID:7XK7ynwz
>>935 >>936 レスありがとうございます!
しかしながらボタンレイヤクラスに書き換えてしまうと、
レイヤ領域にマウスが乗ると表示されていた物が消えてしまいました
加えてloadImagesで画像を読み込むと「レイヤ領域に画像のない領域が発生」
とのエラーも出てしまいました
でもレス頂けたお陰で、何となく理解出来てきたのでもっとよく見直してみます
どうもありがとうございました
939 :
935 :2011/12/04(日) 23:43:10.49 ID:Tw9b5y8K
>>938 勿論ボタンレイヤにするなら色々書き換えないとダメだよ
>レイヤ領域に画像のない領域が発生
setImageSizeとsetSizeToImageSize部分をコメントアウトすれば大丈夫
それからonPaintのsuper.onPaint(...);以外をコメントアウト
>レイヤ領域にマウスが乗ると表示されていた物が消えてしまいました
通常・オンクリック・オンエンター・(オンフォーカス)で
ボタン画像と同じく3または4つ描写しないと消える
ボタン横サイズ×差分数だから描写位置はwidth*0〜3でとればいい
>>937 サムネイル画像ボタンを配置ってhint部分?
どっちにしろ937だけではこっちで動作確認できないからなんとも言えない
試しに↓なら普通にループした
*save_loop3
[locate x="&tf.save_i" y="&tf.save_i*30"]
[emb exp="kag.getBookMarkPageName(tf.save_i+sf.save_now_page*6)"]
[emb exp="kag.getBookMarkDate(tf.save_i+sf.save_now_page*6)"]
[jump target=*save_loop3 cond="++tf.save_i<6"]
940 :
932 :2011/12/05(月) 01:36:09.78 ID:M0ky6cHX
>>939 ご丁寧にありがとうございます
調べてそれらしい所をあれこれ書き換えてはエラー吐かれて調べ直すという
試行錯誤を繰り返していたので助かりました
お陰様で完璧に思うような画面を作ることが出来ました!嬉しいです
本当にどうもありがとうございました!
941 :
934 :2011/12/05(月) 09:13:07.66 ID:rLkuv0kx
>>939 返信ありがとうございます。
プログラムが実行出来なかったとのことで申し訳ありません。
以下にアップロードし直しましたのでよろしくお願いします。
ttp://www.rupan.net/uploader/download/1323043134.zip パスワードは「kiri」です。
「ゲーム開始」で「保存」を押すとループが止まってしまいます。
>サムネイル画像ボタンを配置ってhint部分?
はい、そうです。それとその後ろのonenterの部分でも使用しています。
アドバイスいただいた下記の記述も試してみました。
*save_loop3
[locate x="&tf.save_i" y="&tf.save_i*30"]
[emb exp="kag.getBookMarkPageName(tf.save_i+sf.save_now_page*6)"]
[emb exp="kag.getBookMarkDate(tf.save_i+sf.save_now_page*6)"]
[jump target=*save_loop3 cond="++tf.save_i<6"]
そうすると今度はオブジェクトをvoidに変換できませんというエラーが出てしまいました。
逆アセンブルを見てみましたが「kag.current.links[num]」の中身がvoidのせいで怒られているようです
(間違っていたらすみません)
>>941 修正してみた
とりあえずサムネボタンは使えるようにした
該当部分はコメントで説明してるが細かい所は自分でマージして確認してくれ
ttp://www.rupan.net/uploader/download/1323062210.zip DLも削除もパス一緒
にしても本当に[emb]で止まるのな
というかなんでもないただの文字列でもダメだった
*save_loop2
のボタン表示前なら適当な文字列入れてもエラーがでないが
>[jump target=*save_loop2 cond="++tf.save_i<5"]
以降はエラーが出る上にループしないで止まる
KAGEX触ったこと無いから原因はわからん
ちなみに適当なとこコメントアウトしてこっちのKAGの環境で読み込んだら
難なくループしてmessage2〜7に描写できた(test_kag.ks)
>>942 ありがとうございます。
私の方もKAGの環境なら問題なく出来ました。
もしどうしても上手くいかないようならKAGの環境に戻そうかなと思います。
それにしても何故ループしないのか本当に謎です・・・。
質問させてください。 kagexでasdファイルを使おうとすると、エラーになったり画像が切り替わらなかったりしてうまく動いてくれません。 できればワールド拡張のほうでキャラクターとして登録した画像にasdファイルを使いたいのですが、 kagexはasdファイルを使えないのでしょうか? どなたかご存知でしたら教えていただければ幸いです。
エラーが出るということなので使えないと思います
質問です。すごい初歩的なことで申し訳ないのですが・・・ perspective.dllを使おうとして、 startup.tjsにPlugins.link("perspective.dll");を記入して、 ksファイルに [eval exp="kag.fore.layers[1].perspectiveCopy(kag.back.layers[1],0,0,400,350, 120,30,280,30,0,320,400,320)"] と記述したのですが、 「メンバ "perspectiveCopy" が見つかりません」 というエラーが出てしまいます。 ググってみてもdllの置き場所、dllの読み込みは間違っていなさそうなのですが・・・
質問させて頂きます。 BGMを鳴らすために、下記のように記述したのですが、再生されている筈のBGMが全く聞こえません。 [playbgm storage="bgm.mid"] Config.tjsの設定は"MIDI"になっています。 また、メディアプレイヤーではしっかり聞こえます。 分かる方、教えて頂けたら幸いです。
・storage="bgm.mid"の中の拡張子.midを省いてみる ・使用するファイルの拡張子が『.midi』とか『.smf』になってないか見る ・kagリファレンスの[playbgm]の項を今一度確認する ・『吉里吉里 midi』で検索してみる(今ググったら「midiが再生されない」というトピックが結構あったので参考にされたし) 素人の俺っちにはこれぐらいしか言えないので文句は言いっこなしよ
ボリュームコントロールのMIDIの音量が0になってるとか パソコン環境によってメディアプレイヤーを起動していない時に何故かMIDIの音量が0になる事があった
>>949 の事例は結構頻繁に発生するよね。
ダウンロードソフトが300Mオーバーってのも珍しくないこのご時世だし、ogg形式に差し替えることをおすすめする。
素材のフォーマット変換はひととおり覚えておくと色々便利。
右クリック無効というか、 メッセージレイヤ消さない方法ってありますか?
@rclick enabled=false
自分も
>>431 に教えてもらったw
953 :
917 :2011/12/09(金) 04:38:45.38 ID:EPBbiTpI
できないのでしょうか
そもそもクラス名は1つに決まらないんだから無理じゃね typeofしてもObjectって帰ってくるだけだよね 自分で作ってるクラスならコンストラクタで.classNameか何か設定してしまえばよくね
>>953 undocumented 機能だけど Scripts.getClassNames(obj)[0] で名前はとれる
[0] ってのは、この関数の帰り値は、継承してるクラス名全部の配列だから。
iTJSDispatch2::ClassInstanceInfo(TJS_CII_GET, num, &val)
をエラーがでるまで呼び出した結果一覧になってる
ただし、この関数が返すのはあくまで定義された時に指定された名前なので、
名前をかえたり、グローバルでない名前空間的につくったクラスだと破綻する。まあ、レアケースだろうけど
音楽鑑賞モードの作り方やサンプル出してくれてるところは無いでしょうか。 しろあんさんのはイマイチだし
マックノーウチ! マックノーウチ! (AA略)
自分で作れないくせに名指しでイマイチとか最低だな
大方自分が作りたいものとはイメージが違うので 色んなバリエーションのサンプルや作り方を見たいのですが 他に公開されているサイトはありますか? って言いたかったんだろうけどそういうのは公開してくれてるだけで 有難いし参考になるんだから言い方には少し気をつけような
957です。 軽々しく失礼な言い方をして申し訳ありません。 自分のやりたいイメージと違うと思っての書き込みでしたが勉強もさせて頂いていたのに恩知らずでした。 初心に戻ります…。
どんだけいまいちなのか見てみたけど、デザインの問題だけじゃないの?と。 叩き台にするには十分なできだと思った。 リファレンスとソースみながら部品一個ずつ改造・追加していきなよ。 今作ってる作品に間に合わない!ってのなら今は理想に腕が追いついて無いってことで 涙をのんで次の作品でやれるように後で勉強すればいいよ。
音楽鑑賞モードパッチ出すとかできるしね
無礼な乞食が多くていやんなる。
画面サイズの指定はConfig,tjsの ;scWidth = 800; ;scHeight = 600; という場所に記述すればいいだけですよね? 一回吉里吉里を実行させてウィンドウサイズをいじってしまったら 次起動した時にいじったままのサイズになってしまっていてゲーム画面がぼやけてしまっているのですが どうしたらConfig,tjsで指定した画面サイズに戻るのでしょうか?
よくわからないけど後学の為にスクショとってみてよ
>>965 多分拡大・縮小しちゃったからだと思う。
セーブデータ消せば元に戻るんじゃないだろうか。
俺はごった煮さんとこのWindowResizable.ksを
使わせてもらってるのでそういうので困ったこと
ないなぁ。
@eval exp="kag.innerWidth=kag.scWidth" @eval exp="kag.innerHeight=kag.scHeight" これで戻るんじゃないの?試してないけど
ゲーム開発で埋め込みスクリプト言語がどうのこうのって聞いて よくわからずにLuaとかSquirrelとか勉強始めたが ひょっとして吉里吉里の場合既にそれに相当するものが用意されてるって事か? つまりTJS
TJSという現実的に吉里吉里でしか使えない独自仕様のものがある
TJSが気に入らない場合 Luaなどを埋め込めるの?
確かSquirrelとYAMLのプラグインはあったような気がする
サンクスコ
974 :
917 :2011/12/12(月) 16:23:22.04 ID:dEk16yNx
>>956 ありがとうございます。
試してみます。
すげー初歩的な事かもしれないけどぐぐっても出なかったからここで聞いて良いかな…? ゲームスタートさせて背景を表示した時に左上端に巨大なドット欠けみたいなのが出来るんだけど 原因分かる人いる?
それ、なんか真っ黒のレイヤーが初期サイズ初期位置のまま表示されてるんじゃないか……
>>975 画像読み込んでないレイヤーが表示されてるんじゃね?
Shift+F12した後コンソール見てみ
>>976 >>977 なんとなくそれヒントに頭に指定してたレイヤーの可視を不可視にしたら直りました
一番最初に前景画像表示させる時可視にしないと駄目なのね
リリースするためにreleaser使うと 800/1200くらいで終了してしまい、できたEXEを実行してもエラーで開けません。 どうしたら・・・orz
外字だけを使いたいのに、外字が入ったフォントをいくつも同封しないといけないのが辛い。 5つ使うとして、ルビ、通常、大きい文字で3だから15個 一つ2メガとしても30メガは食ってしまう。 なんとか外字だけを追加する方法はありませんか?
そういうときこそレンダリング済みフォント(名前合ってるっけ…)じゃね?
ファミコンや8ビット時代の処理かよw レンダリング済みフォントは使い勝手が悪すぎる。 外字だけのフォントを作成して、外字登録するだけでいいのでは。
文字数が少ないなら画像でつくって graph 指定するよろし
あくまで外字として使いたいなら、標準の krkrfont.exe だと全部フォントぶっこんでしまうんだけど、
実は吉里吉里のプリレンダフォントは仕様としては指定の文字だけ含めることができる
1.
ttp://ruriko.denpa.org/201003b.html#1101 から入手できる krkrfontex を使って、
指定した文字だけ入ったレンダリングフォントを作成
2. そのフォントを適当な名前でマッピング
例: dummyFont.face = "外字フォント"; dummyFont.mapPrerenderFont("外字フォント.tft")
3. 使いたい場所のフォントの face にカンマ区切りで "外字フォント,メインフォント" の形で指定
例: layer.font.face = "外字フォント,MS ゴシック";
これで文字データがあるところだけはその外字フォント、無い文字は後ろに指定してある通常フォントで描画してくれる
アーカイブに入れたttfファイルを使えるようにするプラグインがあったよねたしか。
それと
>>984 のフォント列記のあわせ技で文字サイズの制約が取れて幸せになれる気がする。
>>985 ttf/otf ファイルを自分でつくれるならそれもアリやね。
addFont プラグインでできる。ただし OS はNT系のみ
あと、これで追加したフォントは、古い版の吉里吉里は認識させる方法が無いので注意な
バージョンいくつからだったか覚えてないけど、まあ、最新のならOK
フォントがらみで質問があります。 krkrfont.exeでwindows7のメイリオのレンダリングフォントを使おうと思うのですが 著作権というか規定が複雑すぎて、問題があるのかないのかすらよくわかりません。 私のケースの場合、何かリスクがあるのでしょうか?
>>987 これに関してはフォントごとにライセンスが違うから、
使いたいフォントの説明をよく読めとしかいえない
>>987 メイリオはWindowsで作業して作成した画像、グラフィック、印刷物中で使う分には問題ないです。
実際、MSに問いあわせるとそういう回答が帰ってくるとのこと
ゲームだと、イベントCGとかに記入されてる文字であるとか、システム画面のような完全に画像の
一部として使ってるようなものなら問題ないことになります。
しかしながら、吉里吉里のレンダリングフォントは、事実上「フォント」であり、通常は「フォントの複製を埋め込んだ状態」と見なされます。
これは、フォント使用の許諾範囲を超えフォントファイルそのものの利用の許諾が必要になるというのが一般的な見解で、
多くのフォントはこれを禁止しているし、MSもこれについて許可を与えているという話はありません。
どうしても確認したければ MSに直接問いあわせる必要があります
勝手に使った場合のリスクとしては、埋め込み用の著作権料支払いを、数十万〜数百万円の単位で求められる可能性があります。
同人で小規模なら気付かれない可能性はありますが、問題になった場合はかなり外部からも騒がれる可能性は高いでしょう。
万が一のリスクとしてはかなり大きいです
吉里吉里って、標準フォントに、tteでもttfでも外字だけを 定義したフォントを登録するだけじゃだめなのか? なんでレンダリングフォントにこだわってるんだ??
外字登録はOSへの登録になるからめんどくさいですよ? あと勝手に書き換えたりしたら.、日頃外字を使ってるユーザからクレームが来るかと
992 :
981 :2011/12/15(木) 17:22:48.34 ID:r7h+pPWQ
>>984 ありがとうございます! こんな便利なプラグインがあったとは
>>991 管理者権限でインストール時にレジストリを設定したりしたらクレームが来るだろうけど
実行時にユーザー権限でそのユーザーの、利用フォントにだけ一時的に関連づければ良いだけだし。
利用フォントが特定できない場合はコードページに丸ごと関連づけても構わないだろう。
第一、一度作ればそれで終わりだから別に使うのは面倒でもなんでもないし。
プログラマの手抜きのいいわけじゃないの?>面倒
もちろんライセンスや演出に問題がないならレンダリングフォントでも不都合はないけどな。
その辺りの仕組みは全然わからないけど、外字って一時的に登録もできるんだ。 素人的には一度上書きしちゃうともう戻せなそうって考えてた。
>>993 外字をそういうふうに細かく操作するAPIが存在しないので対応したくても無理
Microsoft は外字のマシン間での相互運用性を一切保証してません
フォントワークスのスキップってフォント使ってみたら 英字の下の方が切れてた・・・ 行間弄ってもどうにもならない ちゃんと表示させる方法ありますでしょうか?
それより次スレ 毎回スレが埋まっても誰も新スレ立てないから困る
正直30メガくらいどうでもいいって感じがする 吉里吉里のゲームって省設計が求められて無いような・・・
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。