トップページgamedev
1001コメント411KB

■吉里吉里/KAG/TJS雑談質問スレ■その9

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。2006/10/10(火) 06:04:10ID:gTzd6sC4
ノベル製作ツール吉里吉里/KAGを使用している人達が雑談や質問をするスレッドです。
本家BBSで聞きづらい質問や初歩的な質問などでもよいのでわからないことがあればどうぞ。
自分のゲームの進行状況や製作ツール等についての話、TJS等の質問もお待ちしています。
マルチポストはやめましょう。個人叩きも禁止です。

8 http://pc8.2ch.net/test/read.cgi/gamedev/1147590108/
7 http://pc8.2ch.net/test/read.cgi/gamedev/1138099311/
6 http://pc8.2ch.net/test/read.cgi/gamedev/1116774771/
5 http://pc8.2ch.net/test/read.cgi/gamedev/1095183786/
4(タイトルは3) http://pc5.2ch.net/test/read.cgi/gamedev/1081199649/
3 http://pc5.2ch.net/test/read.cgi/gamedev/1067436686/
2(再利用) http://pc2.2ch.net/test/read.cgi/gamedev/1044256119/
1 http://pc2.2ch.net/test/read.cgi/gamedev/1021890648/

吉里吉里2/KAG3雑談質問スレ_過去ログ
http://www.geocities.jp/kirikiri_log/

【公式】
kikyou.info
http://kikyou.info/

吉里吉里ダウンロードページ
http://kikyou.info/tvp/
0803名前は開発中のものです。2006/12/06(水) 00:48:03ID:m893LVlH
されない
0804名前は開発中のものです。2006/12/06(水) 01:06:23ID:HJku8YQM
>801
確かmoveはtransCountに数えられなかったと思うな。
俺はlocklinkかsetSelProcessLockか、waitclick使う手もあるかな、くらいしか思いつかないorz
呼び出し先で弄らない限りmoveには影響ないし、俺はそのまま使ってるけど。
特に765の履歴くらいなら問題なさそう。
0805名前は開発中のものです。2006/12/06(水) 01:17:16ID:6xuN4ZJv
>>804
moveみたけりゃmoveCountで見れるんじゃね
0806名前は開発中のものです。2006/12/06(水) 01:33:01ID:HJku8YQM
>805
おお、どうもです。…俺アフォスorz
0807名前は開発中のものです。2006/12/06(水) 02:13:41ID:ZAY29R90
>>802
されます(ただし前回読み込んだ画像が画像キャッシュに残ってる場合)
0808名前は開発中のものです。2006/12/06(水) 09:50:07ID:9WO+8TY2
予め大量の画像ファイルをキャッシュしておきたいのですが
どう書くのが効率良いですか?

visible=falseで全部指定?
0809名前は開発中のものです。2006/12/06(水) 12:10:35ID:QbMNKU3+
>>803 >>807
thx

数十個の ButtonLayer に対し、ほぼ同時に同じ画像を読み込もうとしてたので、
多分キャッシュされていますね。ありがとうございます。
0810名前は開発中のものです。2006/12/06(水) 12:23:26ID:9GJnnXFF
touchImage()
0811名前は開発中のものです。2006/12/06(水) 12:24:44ID:T8IPH/88
>808
OUTFOCUS WikiのKAGマクロ集に
システム関連でtouchimagesという画像データをキャッシュするマクロがある
ttp://hpcgi1.nifty.com/gutchie/wifky/wifky.pl?p=KAG%A5%DE%A5%AF%A5%ED%BD%B8
ので、このマクロのstorages属性に、
キャッシュさせたい画像ファイル名を「;」で区切った文字列を指定すると
効率が良さそうです。
0812名前は開発中のものです。2006/12/06(水) 13:16:18ID:qHyDUzo2
touchImageが実際にキャッシュするかどうかはVMが決める。確実にキャッシュするならオフスクリーンに全部描画しかない。


効率もくそも確実にやるにはこれしかない。
それかキャッシュするネイティブコードを書くか
0813名前は開発中のものです。2006/12/06(水) 13:41:37ID:ZAY29R90
>touchImageが実際にキャッシュするかどうかはVMが決める。
いやいやそこはVMじゃないし

>確実にキャッシュするならオフスクリーンに全部描画しかない。
「描画」という言葉のイメージから想像できるようなことは
やらんだろうなぁ

ttp://devdoc.kikyou.info/tvp/docs/kag3doc/contents/TJSTips.html#id276

ここ参照
0814名前は開発中のものです。2006/12/06(水) 14:27:46ID:m893LVlH
何か勘違いしてるようだけどキャッシュと画像の共有は別物ですよ
0815名前は開発中のものです。2006/12/06(水) 14:31:43ID:m893LVlH
おっと、>>807宛てね。
0816名前は開発中のものです。2006/12/06(水) 16:59:34ID:ZAY29R90
どのレベルで「別物」って言っているのかわからないけど、別物だという根拠は?
0817名前は開発中のものです。2006/12/06(水) 17:11:15ID:BfWFwrkA
>>802
画像に対して共有が解除されるような処理をしなければ
共有されますよ。

キャッシュは行わないようにも出来るので
共有とは別のお話しです。
0818名前は開発中のものです。2006/12/06(水) 18:06:58ID:HjI+5jiO
touchImageは画像をメモリに置こうとしてるからフラグ立てて数値的なメタデータを同一にするだけでメモリいじってないassignImagesとは処理が違うと思うぞ?

レイヤが画像へのポインタ持ってるだけならデータは一カ所にしてtouchImageとloadImagesでアクセスするメモリは同じでよさそうだけどそれだとキャッシュ用メモリの指定プロパティいらないし

問題はloadImagesとtouchImageがどういう処理してるかだろ。

>>807はただのバカと吉里吉里の実装知ってるのとどっちなんだ?
0819名前は開発中のものです。2006/12/06(水) 18:52:16ID:m893LVlH
>>816-818
touchImagesでの画像キャッシュっていうのは
loadImagesで読み込む際に外部ファイルから読み込むのではなくて
メモリ上のデータを読み込むのに使われてます。
外部ファイルから読み込むよりメモリから読み込む方がずっと高速なので
予めキャッシュに入れておくことで画像読み込みを高速化できます。
この場合、ただ読み込み元が違うだけで個々のレイヤのグラフィックハンドルは別々に作成されるから
読み込めば読み込むほどメモリを消費することになります。

一方、assignImagesの場合は、グラフィックハンドルをコピーするだけなので
画像の読み込み自体が行われません。assignImagesで複数レイヤに画像を使っても、
画像自体の使用メモリは最初に読み込んだ画像のみです。
ポインタをコピーするだけだから、最も高速です。

実際の操作として何が違うのかというと、
例えば、layer1、layer2、layer3の画像をそれぞれassignImagesで共有させた場合、
layer1の画像をfillRectなどで塗り潰した場合、layer2、layer3の画像も変化します。
キャッシュからそれぞれに同じ画像を読み込ませた場合は、
それぞれ異なるグラフィックハンドルなわけで、
layer1の画像に変更を加えてもlayer2、layer3は変化しません。

どういうレベルとか関係なく、キャッシュと共有とでは内部処理そのものが違います。
ちなみに、通常loadImagesで同じ画像を読み込んだ場合には画像の共有はされていません。
0820名前は開発中のものです。2006/12/06(水) 19:07:23ID:j3d23AZM
値渡しと参照渡し
0821名前は開発中のものです。2006/12/06(水) 20:12:19ID:ZAY29R90
えーと、じゃあ実装レベルでの説明します

>例えば、layer1、layer2、layer3の画像をそれぞれassignImagesで共有させた場合、
>layer1の画像をfillRectなどで塗り潰した場合、layer2、layer3の画像も変化します。
しません。というか変化したらたぶんバグです。
なぜかというと、画像に変更を加える直前に共有が解除されるからです。
(例)
tTJSNI_BaseLayer::FillRect()->tTVPBaseBitmap::Fill()->tTVPNativeBaseBitmap::GetScanLineForWrite()->
tTVPNativeBaseBitmap::Independ()

画像キャッシュと画像の共有は根本的には同じ処理です。
画像が読み込まれてキャッシュに入る場合は
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/GraphicsLoaderIntf.cpp#L2464 TVPLoadGraphic()
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/GraphicsLoaderIntf.cpp#L2081 tTVPGraphicImageData::AssignBitmap()
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/LayerBitmapIntf.h#L133 tTVPBaseBitmap::tTVPBaseBitmap()
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/win32/LayerBitmapImpl.cpp#L1749 tTVPNativeBaseBitmap::tTVPNativeBaseBitmap()
ここでBitmap=r.Bitmapとなっています。BitmapはtTVPBitmap *型で画像バッファを表しています。
つまり、実体であるtTVPBitmapへのポインタのコピーをしているだけです。
(TVPAllocGraphicCacheOnHeapはTVPAfterSystemInit()内で常にfalseに設定されている)
0822名前は開発中のものです。2006/12/06(水) 20:13:45ID:ZAY29R90
画像がキャッシュから読み込まれる場合は
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/GraphicsLoaderIntf.cpp#L2438 TVPLoadGraphic()
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/GraphicsLoaderIntf.cpp#L2103 tTVPGraphicImageData::AssignToBitmap()
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/win32/LayerBitmapImpl.cpp#L1855 tTBPNativeBaseBitmap::AssignBitmap()
ここでBitmap = rhs.Bitmapとなっています。ここでも実体であるtTVPBitmapへの
ポインタのコピーをしているだけです。

画像の共有をする場合はたとえば
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/LayerIntf.cpp#2090 tTJSNI_BaseLayer::AssignImages()
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/tags/2.29-dev.20061119/kirikiri2/src/core/visual/win32/LayerBitmapImpl.cpp#L1835 tTBPNativeBaseBitmap::Assign()
ここでBitmap = rhs.Bitmapとなっています。ここでも(ry

というわけでどの場合も画像の実体であるtTVPBitmapへのポインタをコピーしてる
だけで、根底にある動作はどれも同じです。グラフィックハンドルが異なるとか
そーいうことは無いということです。
0823名前は開発中のものです。2006/12/07(木) 13:22:22ID:n7mXUS1C
>>822
ソース読んできた。C++のソースがぐちゃぐちゃになりやすいのかDee氏のソースが汚いのか悩んだJava厨です・・・(°ω °)

メジャーver上げる度ソース捨てるのって保守性を確保する理由もあるんじゃ・・・w

バイナリだろうとテキストだろうとファイルにアクセスするクラスは実装されてるのにTJSから直接使えんのね。


#ところでお前ら実装の話になると黙るのに憶測で話すとレス伸びるなw
0824名前は開発中のものです。2006/12/07(木) 13:36:55ID:39uamP1O
おまいらの話なんて\(^o^)/ワケワカラン
0825名前は開発中のものです。2006/12/07(木) 13:45:37ID:K0MkggTU
ほとんどKAGしか使えない人間の俺にはどうでもいい
0826名前は開発中のものです。2006/12/07(木) 16:27:49ID:bTiMMteH
コールスタックについて質問があります。

ロード画面を kag.callExtraConductor('savescreen.ks','*showLoad') で呼び、

*showLoad
[layopt layer="message0" visible="false"]
[layopt layer="message1" visible="true"]
[current layer="message1"]
ボタン表示
[s]
[return]

としています。実際はクロスフェード処理など入れてありますが省略します。
ここから栞のロードをするにしても、ロード画面を閉じるにしても、
[s] で止まったまま [return] に行かず、スタックが溜まったりしないのかと
心配になったのですが、実際はどうなのでしょうか?
0827名前は開発中のものです。2006/12/07(木) 17:43:56ID:50ASmvyv
止まるだろ。普通に考えて(´・ω・`)
0828名前は開発中のものです。2006/12/07(木) 18:27:47ID:NPhMeSgl
>>826
[return]で戻らないなら
kag.process('savescreen.ks','*showLoad');
でいいじゃないか
0829名前は開発中のものです。2006/12/07(木) 18:59:51ID:gSsIT5lX
>>682
瑣末な、気付き。
 [style linespacing=40]
 [link 〜]・・・[endlink][r]
 [style linespacing=20]
 [link 〜]・・・[endlink][r][s]
で、最後の[r]タグがないと、
リンクと半透明矩形の位置がずれるのネッ。

p.s.
>795,796
ツッコミ、サンキュー。
mail欄に sageですね。おk?
0830名前は開発中のものです。2006/12/07(木) 20:39:12ID:X8gCVftT
どなたか解る方がいらっしゃったら教えてください。

[locate x=50 y=50][link onenter="kag.process('','*画像on')" onleave="kag.process('','*画像off')"
exp="kag.restoreBookMark(0), kag.se[0].play(%[storage:'効果音.wav'])"][emb exp="kag.getBookMarkPageName(0)"][endlink]\(一行)


*画像on
@image layer=0 top=50 left=500 storage=画像 visible=true
@s
*画像off
@freeimage layer=0
@s

以上のようなタグでロード画面を作ったのですが、ある特定のラベルをここから読み込むと
「シナリオファイル ***.ks 内にラベル *画像off が見つかりません」
というエラーが出ます。そのラベルに特に変わった部分はなく、他の所と同じマクロで
記述しているものなのですが、他のラベルでは普通に飛べるのに、そこだけ何度やっても
ダメでした。試しに*画像offと同じksファイルにぶちこんでみたんですが、
エラーは出ずに止まりました。(*画像offのsタグのせいだと思われます)
onleave処理がズレてるのは想像つくのですが、何故ここだけなのかが解りません。
とりあえずラベルの前においてあったトランジションをラベルの後に移動したら
回避できたのですが、他のラベルも殆どがトランジション後に書いてあります。
もうさっぱり訳が解りません。
1000近くあるセーブラベルの全部で試したわけではないので、他にも同じ現象を
起こすラベルがありそうで怖いです。
tjsが解れば何とかなるかも、とリファレンスと格闘してみたのですが、
ちんぷんかんぷんでした……。
原因と対処方法をご存知の方がいらっしゃいましたら教えてください。
0831名前は開発中のものです。2006/12/07(木) 21:38:46ID:WQMD2Jtt
>>828
>>826がkag.processじゃなくてcallExtraConductor使ってるのは
ロード画面閉じてそのまま物語を進められるようにじゃないかと。
0832名前は開発中のものです。2006/12/07(木) 23:41:08ID:udA84DdU
>>830
別のシナリオファイルにジャンプした後にonleaveが発生してるんじゃないのか。
んでトランジション中にエラーが出てるんだろう。
てか何でkag.processの引数にシナリオファイルを指定しないの。
08338302006/12/08(金) 00:41:46ID:jtmrwzyF
>>832
レス有難うございます。
kag.processにks指定していないのは、*画像onと*画像offが同ファイル内だからです。
件のラベルは別のシナリオファイルなのですが

 @背景画面切り替えのトランジション(マクロ)
 *ラベル|
 @ct
 @メッセージレイヤ切り替えて非表示>表示のトランジション(マクロ)
 文字表示

という形になっていて、エラーの発生しないラベルも同じように記述しています。
背景だけが表示されてエラーで止まるので、ジャンプした後にonleaveが
発生してるんだと思います。
(でも同じように記述してある他のラベルではエラーが起きないんです。謎すぎです)
この問題のラベルを

 *ラベル|
 @ct
 @背景画面切り替えのトランジション(マクロ)
 @メッセージレイヤ切り替えて非表示>表示のトランジション(マクロ)
 文字表示

にしたらエラーが出なくなったのです。謎すぎです。
08348302006/12/08(金) 01:30:03ID:jtmrwzyF
連投すいません。今とんちんかんなレスをしたことに気付きました。
ksファイルを指定したら、止まります。(*画像offのsタグの仕業)
0835名前は開発中のものです。2006/12/08(金) 02:31:45ID:aOnkcz61
>>834
これではいかんの?
onleave="kag.fore.layers[0].freeImage()"
0836名前は開発中のものです。2006/12/08(金) 02:45:33ID:ugkxsHai
http://www.youtube.com/watch?v=19N1gnzVqgs
4年も経つのにまだこれを超えられないなんて。
0837名前は開発中のものです。2006/12/08(金) 03:36:29ID:aBoPWUGZ
それは吉里吉里userに言っているのか開発者に言っているのか
0838名前は開発中のものです。2006/12/08(金) 03:36:46ID:NCOmzsAI
>830
何でもかんでもtjsで教えるのもよくないかもしれないけど、使いまわすなら>>460も便利だね。
製作がんがってください。
0839名前は開発中のものです。2006/12/08(金) 04:08:18ID:+dMJd+7x
任意のクケイ領域にリンクを設定する方法は画像を用意するしかありませんか?
0840名前は開発中のものです。2006/12/08(金) 04:57:17ID:Yy/Bw9Gp
locate
0841名前は開発中のものです。2006/12/08(金) 05:01:29ID:btKCoplc
>>830
kag.processってタグで言えばジャンプでしょ?
この使い方はいくらなんでもKAGから外れすぎではないかと思う。
KAGの実装から遠い動きをさせるなら素直にTJSを挟むべきかと。

画像の読み込み、On・OffなんてTipsにさえならない基本だし。
この先役に立つから身に付けておく方が吉でしょ。
0842名前は開発中のものです。2006/12/08(金) 05:03:38ID:rwL/Sup+
画像のON・OFFなんてそれこそvisibleでいいような
0843名前は開発中のものです。2006/12/08(金) 05:06:58ID:btKCoplc
>>839
透明なメッセージレイヤを用意
全角スペースで埋めたリンクを置く。
動作未検証。
動いたとしても、ソース見られたらはずかしーw
0844名前は開発中のものです。2006/12/08(金) 05:20:12ID:Yy/Bw9Gp
>839
@locate x="縦位置" y="横位置"
で位置指定ってことね、念のため。
0845名前は開発中のものです。2006/12/08(金) 05:51:49ID:Yy/Bw9Gp
横と縦逆だった…
0846名前は開発中のものです。2006/12/08(金) 09:53:58ID:DoGGLN/g
>836
4年もお前何してたんだ? 超えたいならもっとがんがれよ。
0847名前は開発中のものです。2006/12/08(金) 10:35:31ID:YRd6bEWb
>>839
俺の使ってる荒業的なmacro。属性は普通のbuttonの属性+ x, y, width, height
@macro name="rectBut"
@button graphic="ダミー画像" target="%target" storage="%storage" onleave="%onleave" onenter="%onenter" exp="%exp"
@eval exp="mp.links_obj = kag.fore.messages[0].links[(kag.current.links.count-1)].object"
@eval exp="mp.links_obj.left = mp.x,mp.links_obj.top = mp.y,mp.links_obj.width = mp.width,mp.links_obj.height = mp.height"
@endmacro
これで枠つきの文字ボタンが出来る。tjsで直接ボタンを作らないほうが、タグで消せたり何かと便利。
ボタンのcaptionプロパティに文字を入れると、それが表示される。ここら辺はYesNoDialog.tjsを読むと分かりやすい。
で、枠つきじゃない、本当にただの矩形ボタンが欲しかったら、最後に
@eval exp="mp.links_obj.imageWidth = mp.width*3,mp.links_obj.fillRect(0,0,mp.width*3,mp.height,0),mp.links_obj.Butt_imageLoaded=true"
とか入れれば、無色透明のが出来るはず。
fillRect程度のtjsを理解してれば、色んな矩形ボタンを同じマクロで作れるはず。
0848名前は開発中のものです。2006/12/08(金) 10:51:27ID:NCOmzsAI
興味で聞くんだけど、
画像も字も使わずにリンクを設定するってのはどういう状況で使うんかな?
0849名前は開発中のものです。2006/12/08(金) 11:10:27ID:2guae2nE
>836
吉里吉里エンジンそのものは(当時でも)それぐらいできる能力は十分にあるんだが
あれがすごいのはそのエンジンというよりも(もちろんエンジンもすごいけど)と
その演出方法やいかにそれっぽく見せるかの技術なのでおまえら頑張れよとしか言えない
0850名前は開発中のものです。2006/12/08(金) 11:13:36ID:F4ZENXel
>>848
キャラクターのあたまをなでるとか、
タッチ系イベントがいろいろあると思いますよ?
0851名前は開発中のものです。2006/12/08(金) 14:33:04ID:F4ZENXel
↓のままだと *メニュー 内に表示されたボタンは反応しないのですが、
1行目の [button] をコメントアウトして2行目の [jump] だと反応するようになります。

[button target="〜"] と [jump] で飛ぶのはどのような違いがあるのでしょうか?
このへんの作法がいまいち理解できてなくて行き詰まっています。

ーーーーーーーーーーーーーーーーーーーーー
[button graphic="image/title_btn_start.png" target="*start"]
;[jump target="*start"]
[s]

*メニュー
[current layer="message2"]
[position layer="message2" visible="true"]
[locate x=0 y=0]
[button graphic="image/cfg_save.png"]
[current layer="message0"]
[return]

*start|スタート
[cm]
[button graphic="image/msgBox_menu_load.png" exp="kag.callExtraConductor('','*メニュー')"]
あ[l]あ[l]あ[l]あ[l]
0852名前は開発中のものです。2006/12/08(金) 15:03:35ID:kUwf9nWu
いやもっといろいろわかってないだろ。
いちどすっぱり全部忘れて位置からやりなおせ。
08538512006/12/08(金) 15:27:15ID:F4ZENXel
>>852
はい、まさにいろいろわかっていない状態です。
なので「いろいろ」の部分を具体的に指摘していただけると助かります。
どうかよろしくお願いします。
0854名前は開発中のものです。2006/12/08(金) 15:34:07ID:kUwf9nWu
つ【チュートリアル:選択肢を使おう】
0855名前は開発中のものです。2006/12/08(金) 16:24:43ID:F4ZENXel
>>854
ありがとうございます。
選択肢、ボタンを使う時は [s] で待たせておくということがおっしゃりたいのでしょうか?
試しに「*メニュー」内のボタンの次に [s] で待たせるとボタンは反応するようになりました。

ところで下記のようなロードボタンだった場合、サブルーチンの中に入ったまま
栞をロードしてしまうのではないかと思うのですが、本来このような書き方はしないのでしょうか?

ーーーーーーーーーーーーーーーーーーーーーー
[button graphic="start.png" target="*start"]
;[jump target="*start"]
[s]

*start|スタート
[cm]
[button graphic="image/menu.png" exp="kag.callExtraConductor('','*メニュー')"]
あ[l]あ[l]あ[l]あ[l]

*メニュー
[current layer="message2"][position layer="message2" visible="true"][locate x=0 y=0]
[button graphic="load.png" exp="kag.restoreBokMark(0)"]
[s]
[return]

0856名前は開発中のものです。2006/12/08(金) 16:35:17ID:7iLSYBei
>>839です。

MessageLayer、addButtonの
object.loadImages(elm.graphic, elm.graphickey);

if(elm.graphic!=""){
object.loadImages(elm.graphic, elm.graphickey);
object.width = elm.width;
object.height = elm.height;
}
と変えたら出来ました。お騒がせしました
0857名前は開発中のものです。2006/12/08(金) 16:37:08ID:7iLSYBei
嘘つきました…

if(elm.graphic!=""){
object.loadImages(elm.graphic, elm.graphickey);
}
else{
object.width = elm.width;
object.height = elm.height;
}
です…
0858名前は開発中のものです。2006/12/08(金) 17:33:00ID:btKCoplc
>>857
目標クリアおめでとうございます。
それ、いいね。偽クリッカブルマップとしてお気軽に使えそう。
次はマウスカーソルを書き換える話ですか?
手とか舌とか唇とかw

…歳がわかるなこりゃ
0859名前は開発中のものです。2006/12/08(金) 17:48:14ID:YRd6bEWb
>>858
おまいが何のことをいってるのか、幼い俺としてはさっぱりわからないが、
>>857のやり方だと枠が出るから無理だと思うぞ。

でも>>857の処理は使い勝手が良いな。
caption属性を受け取るようにして、ボタンのフォントにレイヤのフォントを参照させれば
普通にbuttonタグが文字ボタンとして使えそう。
08608302006/12/08(金) 19:00:24ID:jtmrwzyF
830です。アドバイス下さった方々、有難うございました。

>>835
それでやってみましたが、全く同じ状態になりました。
でもそっちの方が無駄がなく綺麗な書き方なので、別の所で使用させて頂きます。

>>838
やってみましたが、別途呼び出しの方だと栞の文字が出ず、
直接記述の方だと画像が出ませんでした……さかのぼってログ見て
ダミー画像先に出してみてもダメでした。多分私に応用力がないせいかと思います。
そのまま置き換えたんじゃダメなんですね、きっと。
温かいお言葉有難うございます。がんがります。

>>841
TJS身に付けたいんで、じっくり頑張ってみます。
今はまだリファレンスの説明文すら地球外言語にしか見えないんで先長そうです。

折角ご助言頂いたのに、気持ちの良い報告ができなくて申し訳ありません。
自分の無能さが悔しいのでもうしばらく頑張ってみますが、
それでもダメだったらおとなしく画像は外そうと思っております。
自分の力量に見合わないことをしてバグに対処できないのではどうしようもないですので。
0861名前は開発中のものです。2006/12/08(金) 23:07:49ID:Q4BOrQbK?2BP(100)
>>859
ホントだ…
opacity=0にしてたから気付かなかった…

>>847のと組み合わせれば枠も消えるんじゃないですかね?
0862名前は開発中のものです。2006/12/08(金) 23:10:52ID:O9GNbXsZ
公式の「ともこ」って「同人ゲーム制作ガイドブック」の著者か
0863名前は開発中のものです。2006/12/08(金) 23:21:44ID:Q4BOrQbK
else{
object.width = elm.width;
object.height = elm.height;
object.fillRect(0,0,object.width,object.height,0);
object.Butt_imageLoaded=true;
}
で良さそうです。
一応つけていますが、画像読み込んでないのでfillRectは不要かもしれません。
0864名前は開発中のものです。2006/12/08(金) 23:49:44ID:YRd6bEWb
>>863
imageWidthをwidth*3にしとかないと、画像のない領域ウンヌンみたいなエラー吐かない?
0865名前は開発中のものです。2006/12/09(土) 00:07:51ID:05zvO7mD
property width
{
setter(x)
{
super.width = x;
imageWidth = x*3;
//Butt_imageLoaded = false;
update();
}
getter
{
return super.width;
}
}
としていたので気付きませんでした…
else{
object.width = elm.width;
object.imageWidth = elm.width*3;
object.height = elm.height;
object.fillRect(0,0,object.imageWidth,object.height,0);
object.Butt_imageLoaded=true;
}
とすればいいのではないでしょうか?
0866名前は開発中のものです。2006/12/09(土) 00:13:30ID:Pr/d6J8v
>>862
こんな今更な質問をかましてくるやつが
吉里吉里解説本出してんのか…
0867名前は開発中のものです。2006/12/09(土) 00:19:47ID:05zvO7mD
if(elm.graphic!=""){
if(Storages.isExistentStorage(elm.graphic)){
object.loadImages(elm.graphic, elm.graphickey);
}
}
else{
object.width = elm.width;
object.imageWidth = elm.width*3;
object.height = elm.height;
object.fillRect(0,0,object.imageWidth,object.imageHeight,0);
if(elm.caption!=""){
object.font.height = elm.fontsize;
object.caption = elm.caption;
object.captionColor = elm.captioncolor;
object.Butt_imageLoaded=false;
}
}
で文字ボタンにも対応。kag側からも呼べるベルはずです。
0868名前は開発中のものです。2006/12/09(土) 00:26:23ID:05zvO7mD
object.fillRect(0,0,object.imageWidth,object.imageHeight,0);
> object.Butt_imageLoaded=true;
if(elm.caption!=""){
↑これ抜けてました…

そろそろ消えます…

@button width=256 height=32
だと見えない幅256,高さ32のリンクが、
@button width=256 height=32 caption="test"
だとtestと書かれたボタンが出来ると思います
0869名前は開発中のものです。2006/12/09(土) 01:42:41ID:+AZbr4S/
>860
838だけど、栞リンクが沢山あるならこの方がいいかな。
[link onenter="image_on(横,縦,'画像名')" onleave="image_off()" exp="lord_exp(栞番号)"]
[emb exp="kag.getBookMarkPageName(0)"][endlink]

[iscript]
function image_on(x, y, image){kag.fore.layers[0].loadImages(%[storage:image,left:x,top:y,visible:true]);}
function image_off(){kag.fore.layers[0].visible=false;}
function lord_exp(num){kag.fore.layers[0].visible=false;kag.se[0].play(%[storage:'効果音名']);kag.restoreBookMark(num);}
[endscript]

ロード用の関数も付けときました。
他のリンクで画像のオンオフ使いたいときはimage_onとimage_offで。
ちなみに[iscript]〜[endscript]の部分は呼び出す前に定義しておかないと意味がないので、first.ksの頭にでも置いてみて。
0870名前は開発中のものです。2006/12/09(土) 02:41:25ID:+AZbr4S/
補足。kag.fore.layers[0]は「前景レイヤ0の表画面」という意味なので、
違うレイヤを使う場合は中の数字を変えてください。
他のレイヤと被らない番号にしておくといいかな。
08718302006/12/09(土) 02:43:13ID:eHilxVqu
>>869
動きました!! 画像も出ました!! あああ、有難うございます!!
凄いです…本当に何とお礼を申し上げたら良いやら……。
ああ本当に止まらないで動いてます……感激です。
これで先に進めます。ついでに床じゃなくて布団で寝られます。
本当に有難うございました。

「ちんぷんかんぷん」から「書けないけど見たらなるほどと思う」に
地味に成長したので、真面目にTJS勉強しようと思います。
08728552006/12/09(土) 16:08:22ID:xMAK8301
>>855 について反応がありませんが、そんなに奇妙な質問でしたでしょうか?
もしローカルルールに反するような書き込みでしたら申し訳ありません。
0873名前は開発中のものです。2006/12/09(土) 16:35:29ID:TL8Sd2Bo
何に躓いてるのかわからない
0874名前は開発中のものです。2006/12/09(土) 19:25:34ID:+AZbr4S/
>855
動作的には問題ないと思うよ。
作法や書き方については、自分でリファレンスや講座サイト見て回ったほうが早いし確実。
0875名前は開発中のものです。2006/12/09(土) 22:50:59ID:HSDuUpH5
すいません。ものすごい基本的な質問です。
辞書配列からキーをひとつずつ取り出すにはどのように書けばいいですか?

javascriptの
for( a in dic )
みたいなことをしたいです。
0876名前は開発中のものです。2006/12/09(土) 23:08:03ID:rxbGpGYi
>>875
配列に変換できるからそれで
0877名前は開発中のものです。2006/12/09(土) 23:51:05ID:z66gWD9P
TJS 使った弾幕STGとかって、前例ありますか?
0878名前は開発中のものです。2006/12/09(土) 23:58:12ID:dtcU5ogo
krkr.STG
0879名前は開発中のものです。2006/12/10(日) 01:00:50ID:YhXpe+sU
>>876
すいません。リファレンスの関連しそうなところを一通り探してみたのですが見つかりませんでした。
どのへんでしょう
0880名前は開発中のものです。2006/12/10(日) 01:09:52ID:LtKWD+xP
リファレンスには載ってないんだなこれがw
俺もKAGのソースとか読んでて気付いた。

連想配列を配列にコピーするだけじゃなかったか?
0881名前は開発中のものです。2006/12/10(日) 01:13:15ID:/3rjJPqz
>>875
つttp://hpcgi1.nifty.com/gutchie/wifky/wifky.pl?p=%B3%E4%A4%C8%CE%A2%B5%BB%A4%C3%A4%DD%A4%A4%A4%E2%A4%CE#p1.1
0882名前は開発中のものです。2006/12/10(日) 01:18:38ID:QDzalIo4
>>880
TJS2リファレンスの「Arrayクラス」「assign」に書いてあるよ。一応。
0883名前は開発中のものです。2006/12/10(日) 01:20:38ID:GImVvA4I
載ってる。

DictionaryをArrayにassignするだけ
0884名前は開発中のものです。2006/12/10(日) 01:21:15ID:GImVvA4I
>>881
>>882

結婚するか?
0885名前は開発中のものです。2006/12/10(日) 01:40:30ID:LtKWD+xP
載ってんのねw
こういうレコードの持ち方って非OOPで嫌いだw

>>866
ライターがコード書ける訳ないだろ?
コード書けなきゃ実装を追えないんでそこら辺の奴と同レベル。本出すのはADVエンジン使うのは簡単で売れるから文章書けてああいうのに興味があるから手を出しただけだろ

コード書けたり、wwwの歴史を知ってるライターってホントに減ったよ。適当なとこの間違った解説サイトに騙されてても本人は気付かない。


0886名前は開発中のものです。2006/12/10(日) 02:12:12ID:5WjNfhyy
>>885
C++ なプラグインから iTJSDispatch2 経由でさわるとキー一覧取得の口があるんだけど、TJS2 の構文にはないんだなぁ。
たしか中途削除の処理とかをきちんと考えるのがめんどくて放置したままみたいなことを dee たんから聞いたような気がする。
TJS3 でははいるんじゃね?

ちなみに Win32OLE とかのプラグインを使って Javascript から吉里吉里をさわると for でまわせる。


08878752006/12/10(日) 02:19:17ID:YhXpe+sU
できました!ありがとうございます!
0888名前は開発中のものです。2006/12/10(日) 02:56:32ID:LtKWD+xP
>>886
列挙属性の付いたメンバ一覧を覗けるようになってんだっけ?


吉里吉里2でfor-inを実装して欲しかったな。インデックス変数を隠蔽したい


実装はされてるけどTJSから使えないのが結構あるからな吉里吉里は


ところで現行の吉里吉里のようにメディア系拡張命令のみでガリガリ最適化するのとDirectXやOpenGL使うのってどっちが楽なんだろ?

移植性の問題で拡張命令でゴリ押ししてるんだろうけどOpenGLじゃ何がダメなんだ?


ゲーム向けのグラボじゃOpenGLの対応がイマイチとかOpenGL用ドライバがあんまない以外になんか問題ある?

やっぱ、厨が「動きません・分かりません・お願いします」か?


まあ実質エロゲエンジンの範疇超えてんのは誰の目からも明らかなんでそこまでリスク負いたくないとかもあるんだろうけど


実行速度考えるとエロゲエンジン以外思いつかんしな。エロゲーマーは動けば気にしないからな・・・
0889名前は開発中のものです。2006/12/10(日) 03:07:37ID:XQaxqkWN
お前はとりあえずその無駄な改行をなんとかしてくれ
0890名前は開発中のものです。2006/12/10(日) 03:51:19ID:GImVvA4I
>>>888

OpenGLはベンダの拡張が多すぎてカード間の互換性がなさすぎる
0891名前は開発中のものです。2006/12/10(日) 04:05:42ID:9GrqlK4q
>>888

Deeさん自身DirectXやOpenGLに詳しくないってのもあるだろうな

本業Linux系開発な人らしいし
0892名前は開発中のものです。2006/12/10(日) 05:43:15ID:LtKWD+xP
>890
まあそうだな

>本業Linux
ああそうなんだ。俺がlinux知った時はまだカーネル1.0すら出てなかったな。httpdが未だにアパッチなのは驚いたし

俺もDirectXとかOpneGL解らんw
0893名前は開発中のものです。2006/12/11(月) 00:36:52ID:WCoSArUc
質問

メッセージレイヤーの
frameOpacityを0にしても背景色が消えない場合ってナニをすれば消える?orz
0894名前は開発中のものです。2006/12/11(月) 00:44:31ID:WCoSArUc
ちなみに
setPosやvisibleは同じタイミングで呼ぶと反映されますorz
0895名前は開発中のものです。2006/12/11(月) 00:59:38ID:33QBV303
>>893
メッセージレイヤの背景の透明度は、レイヤがクリアされた瞬間に反映されるようになってる。
俺も良く理解しているわけではないが、
メッセージレイヤはあくまで一枚のレイヤで、[cm]などを通過するたび
「透明で塗り潰し、背景描画、その上に順次文字描画」という動作をしてるから、
文字を表示したまま背景の透明度だけ変えるというのはできないはず。
文字と背景を別々に捜査するなら、前景レイヤとかで背景を代用するのが正しい手法なんじゃないかな。

あと質問の仕方がわかりづらいよ、ヤクザかおまえは。
0896名前は開発中のものです。2006/12/11(月) 01:18:46ID:H3z/Ju9W
とりあえずerタグとclearメソッドは効果が有りませんでした…

どういう状況の時にこうなるのかわかれば細かい説明もできるのですが…
0897名前は開発中のものです。2006/12/11(月) 01:44:23ID:33QBV303
なんか知らんけどimageModifiedというメンバをtrueにしとかないと、
レイヤの再描画が行われないらしい。むしろ再描画しないで文字だけ消せてるってことは、
俺の解釈はさっぱりまちがってたらしい。
なんかもうそこまでするなら、setPositionメソッドか、positionのタグハンドラを呼び出したらどうだろう。
kag.current.setPosition(%["opacity"=>0]); とか、
kag.tagHandlers.position(%["opacity" => 128]); とか。
0898名前は開発中のものです。2006/12/11(月) 01:55:20ID:cbQbgD15
メッセージレイヤの上に浮動レイヤがあって実際にはそれに文字が描画されてる。
F12のレイヤ構造ダンプを見るとわかる。
0899名前は開発中のものです。2006/12/11(月) 01:57:45ID:cbQbgD15
01:56:23   表メッセージレイヤ0 (object 0x04E52498) (native 0x04E61518) (16,16)-(624,464) (608x448) visible index=1000000 ltAddAlpha
 01:56:23     行描画用浮遊メッセージレイヤ (object 0x04C22C84) (native 0x04D70408) (4,2)-(620,42) (616x40) invisible index=0 ltAddAlpha
0900名前は開発中のものです。2006/12/11(月) 02:20:09ID:H3z/Ju9W
897氏の言う通りimageModifineをTRUEにしたら反映されました!d


よく見たらclearの中身でそういう分岐してました…
0901名前は開発中のものです。2006/12/11(月) 22:09:14ID:mF98c2mh
1〜52の数が書かれた52枚のカードをAとBの2人が引くとします。
(つまりトランプなんですが)
乱数を使って、Aが引くカードを任意の1枚にすることは簡単ですが、
Bが引くカードは1〜52の任意の数でありつつAの引いたのとは
違う数でなければなりません。

私が考えた方法は、
1.まずAが1〜52の乱数で任意の数を引いた後、その数を"Aが引いた数"
  という変数に代入します。
2.次にBも1〜52の乱数を引き、ifコマンドでそれが"Aが引いた数"と同じだったら、
  またBは2.に戻る。違う数が出るまでくり返す。
…というやり方にしました。

何だかスマートじゃなくて気になるんですよね。(´д`;)
TJSが難しくていじれないのでKAG内で処理したいんですが、そうするとやっぱり
この方法しかないでしょうか?
0902名前は開発中のものです。2006/12/11(月) 22:19:39ID:J0tqNWnI
分相応。
レス数が900を超えています。1000を超えると表示できなくなるよ。