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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2010/01/31(日) 19:31:16ID:znLbECSK
ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。

※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!

前スレ:■吉里吉里/KAG/TJS雑談質問スレ■その18
http://pc11.2ch.net/test/read.cgi/gamedev/1244218314/


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

吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/

ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。

必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
0680名前は開発中のものです。2010/04/13(火) 17:36:29ID:555dHs4X
>>678
>>664とか
0681名前は開発中のものです。2010/04/13(火) 18:21:56ID:bTgZrl65
class MyTimer extends Timer
{
var f;

function MyTimer( func )
{
super.Timer();

f = func;
}

function onTimer()
{
f();
}
}

var a = new MyWindow();
var time = new MyTimer( a.move );
time.interval = 1;
time.enabled = true;

でタイマー設定したけど うんともすんともいわないけど?
0682名前は開発中のものです。2010/04/13(火) 18:33:14ID:lsDYf/YD
>>681
うんともすんともいわないのなら、お前のコードが間違っている
0683名前は開発中のものです。2010/04/13(火) 18:38:37ID:1QvSKzvQ
MyWindowクラス内のmoveメソッドが何をやるための物なのか知らんし
new Timer(); ← この時点でonTimerが呼ばれることを否定してないか
0684名前は開発中のものです。2010/04/14(水) 00:43:30ID:gaoSRoJA
>>681
どうでもいいけど"f"を変数名に使うのは一応やめといた方がいいよ
0685名前は開発中のものです。2010/04/14(水) 05:29:24ID:ZTnfYCLx
>>684
わかった。 sf にする。
0686名前は開発中のものです。2010/04/14(水) 20:58:15ID:gC/sYrK8
Scripts.evalStorage と Scripts.execStorage の違いって何でしょうか?
0687名前は開発中のものです。2010/04/15(木) 01:51:51ID:ORlt69RN
文字列の評価とファイルの実行
0688名前は開発中のものです。2010/04/15(木) 14:48:48ID:YfKjGZPm
>>684
うん、どうでもいい
0689名前は開発中のものです。2010/04/15(木) 15:40:06ID:3/DzGgwR
スペシャルねこまんま57号対策として、最も効果的な方法って何だろう?
まさかこの壁にぶち当たる日がくるとは・・・。
0690名前は開発中のものです。2010/04/15(木) 15:59:48ID:4OoukbRH
>>689
泣く子とメモリエディタには勝てん
いちおう http://dsas.blog.klab.org/archives/50829204.html とか参考になるかも
0691名前は開発中のものです。2010/04/15(木) 16:22:12ID:YfKjGZPm
>>689
バカじゃねーの?
0692名前は開発中のものです。2010/04/15(木) 16:51:45ID:EU/LsSOK
対策1
ダミーの変数を山ほど作る

対策2
1. パラメータの処理
2. 処理結果を元にチェックサムを残す
3. ゲーム進行
4. 現在のパラメータとチェックサムを比較。異常があれば停止
5.1に戻る

対策3
数値をアルファベットに変換して文字列として格納
計算を行う直前で数値に戻す

ただの思い付きにつき未検証。
この程度でいいとおもうよ?
それでも対抗されるならそんだけ魅力があるんでしょ。ある意味勝ち。
逆にチートしないと遊べないくらいバランスが悪かったりして……。

吉里吉里コアの起動オプションをいじられるとかだったらシラネ。
自前でコアを改造・コンパイルするしかないんでは。
0693名前は開発中のものです。2010/04/15(木) 17:03:35ID:+LF24uaa
質問です。
[link exp="kag.closeByScript(%[ask:true])" clickse="bell16"] Exit [endlink]
をクリックして終了確認ダイアログの「いいえ」を選択すると
そのページに留まらず、何故か自動的に次のシナリオに進んでしまいます。
単純なミスだとは思いますが、似たような症例が見つからなかったので、
恐れ入りますがご教授願います。
0694名前は開発中のものです。2010/04/15(木) 18:12:23ID:EU/LsSOK
>>693
リンクタグでなく、ボタンでやってみたらどうなる?
0695名前は開発中のものです。2010/04/15(木) 18:28:42ID:UJrfVVKn
closeByScriptは確か、キャンセル動作(つまり「いいえを押した」)時は「クリックしたものとみなす」という体で動作するんじゃなかったっけ。
内部で実際そんな考え方で動いてるかどうかは知らんが、実際ワンクリックされたものと同じ挙動を示した気がした。
だからリンクタグ等でこのメソッドを呼ぶ時は[s]タグを直後に用意するか、もしくは
[link exp="kag.closeByScript(%[ask:true, ignore:true])"]Exit[endlink]
みたいな感じで独自に引数を追加し、MainWindow.tjsのcloseByScriptを直接

function closeByScript(elm){
   /* 中略 */
// closeByScript は、このハンドラが終わった直後に
// 「終了しますか?」のダイアログを表示する。
// 終了する場合はそのまま終了する。
// 終了しない場合は 'not_closed' トリガが発行され、
// 実行は継続する。
// ! ConfigLayer等からcloseByScriptと呼んだ場合、「いいえ」が押されるとメッセージが勝手に進んでしまうので
// elm.ignoreオプションが有る場合は以下を発動しない
if(elm.ignore) return;

conductor.wait(%[
not_closed : askOnClose_save
? (function{
// 実際にこれが呼ばれることはないが、一応
askOnClose = true;
} incontextof this)
: (function{
} incontextof this)
]);
}
}

みたいな具合に改造してやんのがいいんじゃないか。まあ改造するのはめんどくさいから
素直にリンクの直後に[s]置いとけっていう話だけど
0696名前は開発中のものです。2010/04/15(木) 22:00:53ID:6X7UzU50
しねきゃぷしょんっていうフォント使うと一部文字化けする…('芯'と'飛')
どうすれば直るんだ
0697名前は開発中のものです。2010/04/15(木) 23:16:30ID:zSTY2jOg
単にその文字にフォントが割り当てられてない
(バグとかでなく、作られてない)だけじゃないか?
個人制作のフォントにはありがち。

作者に問い合わせるか自分で改造してみるか。
06986962010/04/15(木) 23:23:57ID:6X7UzU50
吉里吉里以外のテキストエディタとかだとちゃんと表示されるから吉里吉里側の問題だと思った
吉里吉里だけ駄目でしたとかフォントの作者に問い合わせても仕方ない気がする
0699名前は開発中のものです。2010/04/16(金) 02:55:07ID:P4xCWJ8X
>>696
アンチエイリアスを切るか、文字sizeが18以下だと文字化け直るぞ。
なんだこりゃ
0700名前は開発中のものです。2010/04/16(金) 16:06:15ID:6EQ1YKj8
>>699
無料で、しかも作者の趣味なんで^^;
0701名前は開発中のものです。2010/04/16(金) 16:36:08ID:omIaxmXm
そういうのって既出なんだっけ?
公式掲示板で過去ログ検索して無かったら報告してみたらどうですか。
0702名前は開発中のものです。2010/04/16(金) 20:33:41ID:eNEQwPUZ
>>699
アンチエイリアスは確認した
俺の環境だと
size1~9 or 11で芯
size23以下 or 25~27で飛
がちゃんと表示されるなんぞこれwww
公式で報告してくるか…
0703名前は開発中のものです。2010/04/17(土) 11:04:05ID:1EX4Uz99
KKDE2すっかり更新無くなったなあ
飽きちゃったかな
0704名前は開発中のものです。2010/04/18(日) 00:16:29ID:1CW3lEYF
Layerクラスで領域画像を使ったときに、
指定の領域番号の部分だけに色を塗ることって
出来ないんでしょうか?
0705名前は開発中のものです。2010/04/18(日) 14:50:05ID:EU14TQdH
keydownhookを使った、数値の代入がうまくいきません…。

「↓」キーを入力すると、tf.down =1 となるように組むにはどうすればよいでしょう?
おそらく、根本的なところを理解していないと思うのですが…。。。

[eval exp="tf.down =0"]

[iscript]
function onKeyDown(key, shift)
{
if(key == VK_DOWN)
tf.down=1;
return true;
}
// キーダウンフックを登録
kag.keyDownHook.add(onKeyDown);
[endscript]

これじゃだめ、、、ですよね・・?
0706名前は開発中のものです。2010/04/18(日) 15:35:36ID:1CW3lEYF
>>705
MainWindow.tjsを見てみたところ
フォーカスをもってるレイヤが存在する場合には
keyDownHookは呼び出されないようです。
フォーカスを外してやるかフォーカスをもったレイヤの
keyDownイベントを使うといいかと。

どなたか>>704御存知の方いませんでしょうか?
0707名前は開発中のものです。2010/04/18(日) 15:52:55ID:M7H9kFRv
>>704
見渡した感じ、無理っぽいかも?
画像を用意して上にのっけてやるしか……
0708名前は開発中のものです。2010/04/18(日) 16:12:02ID:1CW3lEYF
>>707
やっぱりそうですかあ・・・
お手間を取って頂いてありがとうございました。

かくなる上は1pixelずつ塗ろうと思います・・・orz
0709名前は開発中のものです。2010/04/18(日) 16:33:18ID:EU14TQdH
>>706
なんとか解決したっぽいです!
ありがとうございました。

if(key == VK_DOWN)
tf.down=1;

こーゆー記述が不安だったのですが、普通に問題なかったのですね。
0710名前は開発中のものです。2010/04/18(日) 17:37:24ID:Jq6vU6/W
LayerにWindowの機能を持たせるようなことってできる?

たとえば Layer で画像表示してる状態で、画像をドラッグするような処理

他にWindowの枠をとるとかできる?
0711名前は開発中のものです。2010/04/18(日) 23:07:10ID:j2F34tRA
全部できるが非矩形ウィンドウ出したいのか?
0712名前は開発中のものです。2010/04/19(月) 09:15:46ID:CpSYJ2cy
吉里吉里で作られたエロゲはどれもパッドが有効になっていて使いづらいのですが
無効にすることはできるんでしょうか?
同梱exeでコンフィグ設定できるものはいいのですが
そうでない場合どうしようもないのですか?
0713名前は開発中のものです。2010/04/19(月) 11:53:21ID:9w3s40P0
>>708
>かくなる上は1pixelずつ塗ろうと思います・・・orz
>>707の発言を受けたレスで、ペイントツールなどで1ピクセルずつ手作業で
塗るという意味なら、その作業を軽減することはできるんじゃないかな。
getProvincePixel で画面上のすべてのピクセルをスキャンして、指定の領域番号
が来たらその位置のピクセルを fillRect なんかで塗りつぶす。
そして完成した画像を saveLayerImage かスクリーンショットで画像ファイルに
落とし込んで、ペイントツールで適切なデータ形式に加工すれば、半自動で
画像を用意することはできる。

そもそも、効率を度外視すれば、
>getProvincePixel で画面上のすべてのピクセルをスキャンして、指定の領域番号
が来たらその位置のピクセルを fillRect なんかで塗りつぶす。
こそが「指定の領域番号の部分だけに色を塗ること」なんだけども。
0714名前は開発中のものです。2010/04/19(月) 12:51:28ID:29Oz2KV9
>>712
外せばいいんじゃないの?
0715名前は開発中のものです。2010/04/19(月) 13:03:41ID:rGREnao1
>>712

まめ知識
「エンジン設定.exe」は、実行ファイルにオプション -userconf をつけて起動するだけのツール

あとはわかるな?
0716名前は開発中のものです。2010/04/19(月) 13:39:29ID:CpSYJ2cy
>>715
なるほどーありがとうございます
パッドがデフォルトで有効になっているのは吉里吉里のせいなんですよね?
設計上おかしいと思うんだけどな


>>714
ばーか
0717名前は開発中のものです。2010/04/19(月) 14:05:36ID:rGREnao1
>>708
その心意気や良し

ってことで足しておいた

使い方 (fillByProvinceのとこ参照)
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/layerExBTOA/manual.tjs

プラグインバイナリ
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/bin/win32/plugin/layerExBTOA.dll
0718名前は開発中のものです。2010/04/19(月) 14:14:59ID:xFhXThvS
layerExBTOA.dllと画像コンバート用のconvert.batとかの一式セットって
公には公開してないみたいだけど
自分で書いた動画再生用の関数とかを付けて勝手に公開したらやっぱりまずい?
0719名前は開発中のものです。2010/04/19(月) 14:16:09ID:rGREnao1
吉里吉里ライセンスで配布してるんでよしなにどーぞ
0720名前は開発中のものです。2010/04/19(月) 14:22:57ID:xFhXThvS
ありがと
公開って言ってもいつの話になるか分からないけど
0721名前は開発中のものです。2010/04/19(月) 16:42:05ID:lyIOikyL
>>711
そうですね 非短形ウィンドウにしたいです
0722名前は開発中のものです。2010/04/19(月) 17:22:35ID:KnhQAuVV
>>721
リファレンスを死ぬほど読め
0723名前は開発中のものです。2010/04/20(火) 07:43:48ID:tD8+Dsc1
>>717
おおお!欲しかった機能が現実に!
ありがとうございます!
有り難く使わせて頂きます!

それにしてもncbind使うとこんなに短いソースで
出来ちゃうもんなんですね。すごいなあ。
0724名前は開発中のものです。2010/04/20(火) 13:59:50ID:doyHBlFj
>>716
皆が設計上おかしいと思ってるならデフォで外す。
要するにおまえがズレているっていうこと。

使わないなら外せばいいだけの話でもある。
0725名前は開発中のものです。2010/04/20(火) 14:03:08ID:2+rrCL5d
せっかくなのでオレも>>716にばーかしておきますね
0726名前は開発中のものです。2010/04/20(火) 15:23:30ID:afcMt/UF
>>723
吉里吉里のレイヤデータは ARGB32 で素直なので、ある程度以上複雑な
ものはさくっと C で書いて機能メソッド化してしまうほうが良いことが多いです

layerExBTOA は一番単純なレイヤへの機能組み込み例なので、自分用の処理書く場合は
適宜それをベースにコピペして構造つくって足していくのが簡単でオススメです。
layerExImage とかはプロパティのキャッシュ処理とかしてるのでやや複雑です
0727名前は開発中のものです。2010/04/20(火) 17:48:14ID:aPiKsUYa
紙媒体の参考本で、全くの素人でも読みやすいのはどれか教えてください
近所の本屋で置いてないので通販したいのですが、実物を見比べることができなくて…
0728名前は開発中のものです。2010/04/20(火) 19:42:23ID:q/eQ0lf6
今入手可能のなら、「吉里吉里/KAG ノベルゲーム制作入門」一択だろう。
著者の信用度的にも。

Googleブック検索でかなりのページが読める
http://books.google.co.jp/books?id=I7R29UxkRD8C
0729名前は開発中のものです。2010/04/20(火) 20:14:51ID:QHuoDVzZ
>>728
ありがとうございます
さっそく注文しよう
0730名前は開発中のものです。2010/04/20(火) 21:51:48ID:aTYUme+P
全くの素人ってのがどの程度かわからんのだが
吉里吉里よりLiveMaker薦めた方がよくないか
0731名前は開発中のものです。2010/04/20(火) 22:24:06ID:Yfqg0clc
そろそろTJSに特化した本とか出るといいのに
TJSに挑戦のサイトの人とかで出ないかな
0732名前は開発中のものです。2010/04/20(火) 22:42:57ID:IH4/h5eA
TJSだけの本じゃ商売にならんだろ。

Luaにすりゃよかったのに。
0733名前は開発中のものです。2010/04/20(火) 22:45:04ID:2+rrCL5d
そこで今流行りの電子書籍
0734名前は開発中のものです。2010/04/20(火) 22:48:17ID:17mRSr4+
>>732
本当にこれ一冊でTJSと吉里吉里は完全網羅!
C言語?JAVA?そんなの関係ねえ!
その程度知らないと使いこなせないと2ちゃんねるで言われた?
この本を見ろ! それで解決だ!
というぐらい気合いの入ったものであれば、上下巻併せて6000円程度の値段で
そこそこ売れると思うよ。
0735名前は開発中のものです。2010/04/21(水) 03:26:55ID:dxkyNRdl
そんなもんよりちゃんとした言語仕様を公開してくれればそれでいい。
0736名前は開発中のものです。2010/04/21(水) 03:36:36ID:skcfLRmW
まぁ、本当に最初の頃はやたら動物の表紙の本とか買ってたなぁ。
近頃はWeb検索すれば何でも情報が日本語で手に入るからお世話にならなくなったけど。
0737名前は開発中のものです。2010/04/21(水) 08:18:24ID:b+cmMTvR
せっかくだから相撲の表紙の本も買おうぜ!
0738名前は開発中のものです。2010/04/21(水) 09:10:13ID:dZiag3oA
セキュリティーウォリアーズw
0739名前は開発中のものです。2010/04/21(水) 09:29:33ID:skcfLRmW
セキュリティウォリア……アマゾン見たてのけぞったw
どうしてこうなったオライリー
0740名前は開発中のものです。2010/04/21(水) 16:10:11ID:rpFTtTW3
吉里吉里で
07417402010/04/21(水) 16:12:32ID:rpFTtTW3
ミスった。
吉里吉里で落ち物ゲー作るのって可能?
0742名前は開発中のものです。2010/04/21(水) 16:35:15ID:wX27Oyhe
どんなの作るかによるけど割と簡単な方
0743名前は開発中のものです。2010/04/21(水) 18:52:06ID:Wu3hAsfu
マンツーマンで教えてくれるやつはいないか?10000森出すぞ。
0744名前は開発中のものです。2010/04/21(水) 19:10:28ID:/lBgHuBf
>>743
日本円でおk
0745名前は開発中のものです。2010/04/21(水) 19:16:29ID:icgzumbf
吉里吉里で1時間でテトリスを作ってみた 動画でも作るのかね
0746名前は開発中のものです。2010/04/21(水) 21:26:04ID:rpFTtTW3
いや、「ノベル+CPUと対戦な落ち物」ゲー作ろうかと。
とりあえずテトリス部分作ってみるか……
0747名前は開発中のものです。2010/04/21(水) 21:46:56ID:cepG+eFs
アルゴリズムさえ考えて有るなら、TJSを理解してれば大抵のゲームは作れると思うよ。
Javascriptでテトリス作ってる奴だっているんだし、使うオブジェクトやクラスが違うだけで基本的な箇所は一緒だしな。

正直、一番面倒なのは処理の実装よりもUIの用意だと思う
0748名前は開発中のものです。2010/04/21(水) 21:49:36ID:icgzumbf
タイマー回してキーボードチェックする昔ながらの方法でいいんじゃね?
0749名前は開発中のものです。2010/04/21(水) 22:00:01ID:q7lOQUk4
というかLayerクラスのほかに、イメージを単独で扱うImageクラスが組み込みでほしい。
ブレンド用の非表示画像も全部親子関係を強制されるせいで、
管理とかシリアライザ書くのとか面倒でしょうがない。
0750名前は開発中のものです。2010/04/21(水) 22:20:33ID:s2Zilcax
えっ
0751名前は開発中のものです。2010/04/21(水) 23:15:04ID:KHivq5F5
ええっ

いや、まあ言いたいことは分かるし気持ちも分かるが、現状でも別に管理は
面倒じゃない……よね?
0752名前は開発中のものです。2010/04/21(水) 23:18:28ID:nYTwffZF
画像をたくさん画面上に表示させたいなと思っております。。。
ループで毎回レイヤをかえているはずなのに、次の画像が出てくると前の画像が消えてしまいます。。
何がいけないのでしょうか? 必要なところを抜粋してみました。


; なんとなくレイヤいっぱい用意
[laycount layers=51]

[iscript]
// ループ開始後、n*50[ms]後に画像を流し始めたいと思ったら tf.arrow[n]=1
tf.arrow = [] ;
tf.arrow[0] = 1;
tf.arrow[20] = 1;
tf.arrow[40] = 1; // 以下60, 80, ... と どんどん増やしていく予定

tf.loop_i = 0;
tf.layer_no = 1;
[endscript]

; 長くなったので2回に分けます。すみません
0753名前は開発中のものです。2010/04/21(水) 23:19:44ID:nYTwffZF
*loop1
; 50[ms]ごとに繰り返すサブルーチン

; 画像を流したくないときはloop2へ飛ばす
[if exp="tf.arrow[tf.loop_i]<1"]
[jump target="*loop2"]
[endif]

; 画像表示の処理。表示させて移動させる
[if exp="tf.arrow[tf.loop_i]==1"]
[image storage="set" layer="tf.layer_no" page="fore" left="150" top="275" visible="true"]
[move layer="tf.layer_no" path=(350,275,255) time="800"]

; 次の画像のためにレイヤナンバーをインクリメント(してるつもり…)
[eval exp="tf.layer_no++"]
[endif]


*loop2
[wait time=50]
[jump target="*loop1" cond="tf.loop_i <200"]


これでできた!と自分では思ったのですが… うまくいかないのはなぜなんでしょう(´・ω・`)
0754名前は開発中のものです。2010/04/21(水) 23:20:58ID:tF+0jnn8
layer="tf.layer_no" だと、「tf.layer_no」という文字列を言っていることになってしまう
layer="&tf.layer_no" じゃないとだめ
0755名前は開発中のものです。2010/04/21(水) 23:21:55ID:tF+0jnn8
文字列は数字0と解釈されるので、結局毎回 layer="0" と書いてたのと同じことになる

ということかと
0756名前は開発中のものです。2010/04/21(水) 23:25:14ID:b2O5sZxl
これtf.loop_iをインクリメントする処理が無いから
どのみちjumpタグが呼ばれた時点で無限ループ発生しないか?
0757名前は開発中のものです。2010/04/21(水) 23:30:37ID:nYTwffZF
>>754-755
あうあうあー 前も&があったりなかったりでハマってました。。学習しないなぁ…
ありがとうです!

>>756
すみません。質問に関係ない部分をそぎ落としたときに一緒に落ちてたみたいです(´・ω・`)
手元のソースにはあります。ご指摘ありがとうございます。
07587492010/04/21(水) 23:35:53ID:q7lOQUk4
var layer = new Layer(kag, kag.fore.layers[0]);
このlayer変数を単にスクリプトで扱うだけなら、面倒も何もない。

さて、layerオブジェクトを保存/復元してみようとする。(描画内容とかは考えない)
位置やサイズ等の情報は問題ない。DictionaryでもXMLでも書き出してやるだけだ。
では親子関係はどうする?

1.完全な(デ)シリアライズのためには親や子のレイヤの情報も再帰的に書き出す必要がある。
しかしそれには問題がある。
・プライマリでない限り、レイヤは普通KAGの管理するレイヤの子になる。
・また、どこかで別のプラグインの生成したレイヤが兄弟になる場合もある。
 →これら、別に独自管理されているレイヤの情報を、シリアライザが加工するのは望ましくない。

2.では、親子のレイヤにはシリアライザは干渉しないものとする。
しかし、これでは復元の際に問題が出る。
Layerは常に「Windowオブジェクトに属し」「Layerオブジェクトの子(またはプライマリ)」でなければならない。
最初の例でいえば、kag、kag.fore.layers[0] といったオブジェクト。
これらのインスタンスを、復元時にシリアライザはどこから持ってくるのか。
そもそも、復元時にこれらのインスタンスそのものが存在するという保証すらない。

なんてことを考えると頭が痛すぎる。
なっ面倒だろう。
0759名前は開発中のものです。2010/04/21(水) 23:37:15ID:b2O5sZxl
というわけで、単純に「50個(くらい?)のレイヤにループ処理でそれぞれ画像を表示させる」のが目的なら
俺ならこんなふうに書いてみるかな。

[iscript]
tf.arrow = [];
tf.arrow[0] = 20;
tf.arrow[1] = 40;
tf.arrow[2] = 60;
// tf.arrow[20]とか[40]だと配列が20個,40個....といったように無駄に確保されてメモリを食われるので
// 「配列の個数は少なくして、その代わりに値でnを表現した方がお得なんじゃね?」という理屈です
// ちなみにここで定義したtf.arrowの数(つまり今回は3個)がそのまま「画像を表示するレイヤの数」になるので
// 51個の画像を表示したけりゃtf.arrow[50]まで書いてくれ
tf.currentLayer = 0; // tf.layer_noと思ってくれ
[endscript]
[laycount layers="&tf.arrow.count"] ; 上記の例でいくと、ここで3個のレイヤが確保されるハズ

; ループ開始
*loop_start
[jump target="*loop_end" cond="tf.arrow[tf.currentLayer] === void"] ; tf.arrow分のレイヤを使い切ったら終了
[image storage="レイヤに表示する画像" layer="&tf.currentLayer" page="fore" left="X座標" top="Y座標" visible]
[move layer="&tf.currentLayer" path="move先の座標" time="moveに費やす時間"]
[wait time="&(tf.arrow[tf.currentLayer] * 50)"] ; ここでtf.arrow[0]等で指定した秒数(20*50 = 1000ms)分のウェイトをかける
[eval exp="tf.currentLayer++"]
[jump target="*loop_start"]

*loop_end
; ループが終わった後の処理をここに書くこと

-------------------------
まあ直感で書いただけでデバッグしてないからこのまま動く保証は無いけどな!
0760名前は開発中のものです。2010/04/21(水) 23:40:51ID:Mp5xpdH9
コード汚くなってよければどうにでもなるだろう。
kag.primaryLayer 直下に適当にプールつくってならべとけ。

全然頭痛くするような話ではないと思う。

まあ、Image クラスほしければ適当にネイティブで書いて追加すれば
いいじゃないか。例えば LayerExDraw プラグインには実際存在してるし。
0761名前は開発中のものです。2010/04/21(水) 23:51:45ID:s2Zilcax
primaryLayerに描画してみたら?
0762名前は開発中のものです。2010/04/21(水) 23:53:08ID:b2O5sZxl
>>758
そもそも親子関係の状況を持っているオブジェクトが、逐次ユーザーからのリクエスト(例えばセーブやロードか?)を受けて
保存/復元される、そういった影響を受けるって事があんま考えられないんだよね。そういった複雑な機構はそれこそkagオブジェクトの直下、あるいは
globalで直接生成しておいてシステムレベルで管理する(セーブ・ロードでは影響を受けず、吉里吉里を終了した時にのみ変化する)ってのが妥当なんじゃないかと思うんだけど。
具体的にどういう状況を想定してるの?
07637492010/04/22(木) 00:08:51ID:SmAcktqM
うん自分でプラグイン書く場合は全部、レイヤ管理プラグインを介して扱うようにしてる。
問題は何らかのレイヤをメンバに持つオブジェクトが、例えばKAGレイヤを参照しうる場合。

someObj.lay = myLayer; /*管理プラグインによるレイヤ*/
someObj.lay = kag.fore.base; /*KAGレイヤ*/
シリアライズのコードが
Serialization.save(archive, "lay", obj.lay);
のようになっていた場合シリアライザは、そのレイヤがどう管理されるべきか判断できない。

こういう場合は、
someObj.lay = new KAGLayerHolder(kag.fore.base);
のように明示的にラッパーをかませてやるようにしている。
が、面倒このうえない。

ま、汎用シリアライザなんてものを考えなければ楽になれるんだけどね。

>>762
動機としては、小魔女のFFDシステムみたいに
動的な演出の状態を保存/復元したいというのが始まりだった。
(KAGでは、動的な変化(トランジションやアニメータ)の最中は保存無効)
最初はKAGEXみたいにレイヤ自身の機能として持たせようと思ったけど、
抽象化を進めてすべてのオブジェクトの状態を保存/復元できないか? と思ったのが運の尽き。
0764名前は開発中のものです。2010/04/22(木) 00:09:42ID:qqAmhbdf
ずばりADV系システムの設計としては間違いだから考え直したほうがいい
07657492010/04/22(木) 00:22:16ID:SmAcktqM
間違っていたとしても、C++とTJSあわせて数万行のコードと
それを利用した数百KBのシナリオがある以上、後戻りはできない……

チラ裏化してるからこれで失礼します。
0766名前は開発中のものです。2010/04/22(木) 00:41:10ID:LGzyHlcI
>>763
>動機としては、小魔女のFFDシステムみたいに
よう5、6年前の俺。
動いてる最中にセーブさせなきゃ良いんだよ。
デシリアライザなんて後方互換ないのが普通だからその問題もついて回るぜ。

>>764
そもそもGUI部品のLayerに画像を紐付ける設計が変なんだよ。
Layerは層をなすものだから親子関係があってもいいけど画像にまでそれを強制するのはおかしいだろ?
紐付いてる以上強制される。それよりLayer.draw(image)みたいなのがあった方がいい。
Imageを分ければバッファとして使えるしこれに読み書き機構を付ければLayerを画像として書き出すより汎用性高い。
親子関係のないfloatした部品でもあればマシだけどね。
07676932010/04/22(木) 18:36:52ID:uEy1/euH
遅くなりましたが、報告とお礼を。

>>694
ボタンでも同様の動作をしました。

>>695
[s]タグをリンクの直後においてるんですが、何故か先に進みます。
初心者丸出しのコピペで試させていただきましたが、
エラーが出てしまいました。

ちなみに、
kag.closeByScript(%[ask:true])
ではなく、
kag.close()
を使うと、先には進みませんでした(でも、「はい」を押したときにエラーが発生…)


お手上げ状態だったのですが、規制されて書き込めなかったので
色々試している内に、
conductor.wait(%[
not_closed : askOnClose_save
の前に
if(elm) return;
を追加したら、正常に動作するようになりました。
まだまだ勉強中でスクリプトとして合っているのかは分からないのですが、
取りあえず解決しました。
遅くなりましたが、有り難うございました!
0768名前は開発中のものです。2010/04/24(土) 05:11:52ID:a1MKS3yf
日本語OS以外では起動しなくなるような方法ないかな?
0769名前は開発中のものです。2010/04/24(土) 07:21:55ID:Tv77rJ5T
環境取得のプラグインを作る
0770名前は開発中のものです。2010/04/24(土) 23:19:50ID:i5lgROoI
その機能は標準で付けてほしいな。

海外から表現でとやかく言われるのは困る。
0771名前は開発中のものです。2010/04/24(土) 23:27:44ID:UlF/r5QY
OSのバージョンを取るのがSystemであるんだから
作るの自体は簡単そうね
0772名前は開発中のものです。2010/04/25(日) 11:12:32ID:nhySxcQq
その前に外人って金はらってんの?
0773名前は開発中のものです。2010/04/25(日) 11:23:28ID:+D4j1Z9G
>>772
吉里吉里つかった同人ゲーとかは、99%違法DLだろうね
0774名前は開発中のものです。2010/04/25(日) 11:25:15ID:yIOGXBZ8
外国語OS使っている日本人だっているし、日本のゲームをいちいち
翻訳して遊ぶようなマニアな外国人もいる。
全員がお金を払っていないとはいえない。
まあもちろん、比率からいって怪しいのが多いのは否定しない。
0775名前は開発中のものです。2010/04/25(日) 11:44:54ID:kRNI6tEA
つまり>>773ってことですね。
なんで簡単なことをわざわざ難しく言い直してるんだw
普通は難しいことを分かりやすく言い直すもんだぞw
0776名前は開発中のものです。2010/04/25(日) 11:55:05ID:YAh0Ugik
[stopmove]って全ての移動中のレイヤがその場でとまってしまうと思うのですが
一部のレイヤだけを止めるには、どうすればよいでしょうか。。

stopMoveメソッド?とかを使うのでしょうか。
ググったりリファレンスを見たりしたのですが… 理解が足りないようなのです。

[stopmovelayer layer="0"] みたいな感じで実装できたらいいなと思うのですが。
ヒントだけでも、教えていただければご幸甚です。
よろしくお願いいたします。
0777名前は開発中のものです。2010/04/25(日) 12:45:56ID:yIOGXBZ8
>>775
正確に言おうとしてるから。

ま、「日本語OS以外使えません」という注意書きありで、他を蹴る仕組みを
入れておくなら、正規な人たちは回避するだろうから問題ないだろうな。
0778名前は開発中のものです。2010/04/25(日) 13:07:45ID:NIHx8JFE
外圧の道具に使われるのはごめんだから
建前上日本語圏じゃないと動作しませんとしたいんだろう
もちろん勝手に翻訳されて売られたらどうしようもないが
0779名前は開発中のものです。2010/04/25(日) 13:49:33ID:H/BVq55W
ん?海外のアングラか?
0780名前は開発中のものです。2010/04/25(日) 14:47:41ID:p5czhLUP
>>776
[macro name="stopmovelayer"]
[eval exp="kag.getLayerFromElm(mp).stopMove()"]
[endmacro]
でも、moveってその場で止まるんじゃなくて終端まですっ飛んでいくと思う
■ このスレッドは過去ログ倉庫に格納されています