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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2005/05/23(月) 00:12:51ID:hcSkmt5m
ノベル製作ツール吉里吉里/KAGを使用している人達が雑談や質問をするスレッドです。
本家BBSで聞きづらい質問や初歩的な質問などでもよいのでわからないことがあればどうぞ。
自分のゲームの進行状況や製作ツール等についての話、TJS等の質問もお待ちしています。
マルチポストはやめましょう。個人叩きも禁止です。

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/

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

吉里吉里ダウンロードページ
http://kikyou.info/tvp/
0686名前は開発中のものです。2005/11/23(水) 02:00:50ID:HlMI+YB/
>>685
リファレンスくらい読めよ('A`)

@eval exp="f.aaa = ['01.jpg', '02.jpg']"
@image storage=&f.aaa[1] layer="0" page="fore" visible="true"

でおk。

あと、配列の中身は、ダブルじゃなくてシングルクォーテーションを使うこと。
出直してきなさい。
0687名前は開発中のものです。2005/11/23(水) 02:15:44ID:oKQSiQx1
そういや、吉里吉里の紹介であまり聞かないけど、同梱している3つのリファレンスの完成度も高いよね。
あとグッチー氏のTJS入門と。俺、この4つのリファは必携になっているさ。
0688名前は開発中のものです。2005/11/23(水) 02:18:12ID:oKQSiQx1
あ、それとループネタになりそうなんで断っておくと、俺は「KAGと心中」がなかったら投げてた。
0689名前は開発中のものです。2005/11/23(水) 02:34:02ID:fvzH5M6O
>>686
ありがとうございました
ダブルクォーテーションは、らんか氏のサンプルがダブルだったのでそのまま真似てみたのですが、
シングルの方が正しいんですね、今後はシングルで記述したいと思います
0690名前は開発中のものです。2005/11/23(水) 02:49:39ID:HlMI+YB/
>>689
ちょっと誤解があったようなので、らんか氏の名誉を傷つけないためにも追記。
シングルで、と言ったのは、>>686で書いた記述では、
ダブルクォーテーションの中に配列を記入していたから。

TJSスクリプト内で、そのまま
aaa = ["01.jpg", "02.jpg"]
と書くのなら、ダブルでも構わないよ。
0691名前は開発中のものです。2005/11/23(水) 02:56:28ID:sUekGThk
初心者で、KAGと心中の文章に拒否反応でたら、
グッチー氏の「吉里吉里2/KAG3によるノベルゲーム開発」お勧め
心中と同じく対話形式で書かれてるけど、ぶっ飛んでないからな
応用編はもっと充実した方がいいと思うけど
0692名前は開発中のものです。2005/11/23(水) 03:03:14ID:fvzH5M6O
>>690
わざわざありがとうございます
今後もっと勉強していきたいと思います
0693名前は開発中のものです。2005/11/24(木) 23:08:39ID:BjPOrVCl
kagはtjsで書かれているらしいですが、
それならkagのタグを自分で新たに追加とかできるんでしょうか?
どうもkagのタグを定義している部分が見つからないのですが。
0694名前は開発中のものです。2005/11/24(木) 23:51:22ID:g3D6QBki
MainWindow.tjs だったと思う
辞書配列 KAGWindow.tagHandlers のメンバが
そのタグの効果を書いた Function になってる
とかそんな感じじゃなかったか

でもマクロですむならマクロでやった方がいいと思うけど
0695名前は開発中のものです。2005/11/25(金) 00:08:26ID:bv6OJ3jZ
>>694
お〜、getHandlers()で定義されてるんですね。
ありがとうございます。
いやあタグでどんなtjsが実際に動いているのか分からないと気持ち悪くて。
0696名前は開発中のものです。2005/11/25(金) 03:33:31ID:/Cox343j
ハンドラ見てもわからんけどな。
殆どは関数呼び出しで終わってる。
が、タグの傾向毎に呼び出される関数(とその親オブジェクト)が変わるから
どういう処理をしたい時にどのクラスみれば良いかが多少予測付くようになって○。
0697名前は開発中のものです。2005/11/25(金) 07:20:54ID:LgkHW3pY
初心者な質問で申し訳ない
水滴が水面に落ちて広がっていくような画面効果を使いたいのですが、
あれは吉里付属のトランジションで再現できるんでしょうか?
それともどこかで配布されてるプラグインなんでしょか
どなたか教えてください
0698名前は開発中のものです。2005/11/25(金) 08:09:35ID:MIg96Mmh
マニュアル嫁
0699名前は開発中のものです。2005/11/25(金) 10:00:35ID:JRI5A0ZO
ripple という奴
0700名前は開発中のものです。2005/11/26(土) 00:59:29ID:NQxUHuHt
var rans = [['aaa',aaa,'0'],['bbb',bbb','1'],['ccc',ccc','2'],['ddd','ddd','3'],['eee','eee','4']];

こんな風に初期化処理で入れた値を、下のようにシャッフルして入れ替えているのですが

@eval exp="f.tmp = intrandom(0,4), rans[0] <-> rans[f.tmp]"
@eval exp="f.tmp = intrandom(0,4), rans[1] <-> rans[f.tmp]"
@eval exp="f.tmp = intrandom(0,4), rans[2] <-> rans[f.tmp]"
@eval exp="f.tmp = intrandom(0,4), rans[3] <-> rans[f.tmp]"
@eval exp="f.tmp = intrandom(0,4), rans[4] <-> rans[f.tmp]"
*test|test
テスト[s]

この状態でセーブして、吉里吉里終了後このデータをロードすると、シャッフルした結果が保存されていません。
(rans = [['aaa',aaa,'0'],['bbb',bbb','1'],['ccc',ccc','2'],['ddd','ddd','3'],['eee','eee','4']]; ←初期化時のこの値に戻る)
セーブには、そのプレイでのセーブした時点の各変数も記録されると思うのですが……これはどうすれば解決するのでしょうか?
0701名前は開発中のものです。2005/11/26(土) 01:03:47ID:M34DDwDx
>>700
各セーブ時点でセーブされるのは各ユーザ変数、つまり「f.なんちゃら」だけです。
0702名前は開発中のものです。2005/11/26(土) 01:12:19ID:l+SXEDu7
>>700
var rans

ってのをセーブデータに保存するなら、
それをゲーム変数に保存する処理を別に書かなきゃ駄目だよ。
でも単純に、
f.ransって書けばそれでいいと思うけど。
0703名前は開発中のものです。2005/11/26(土) 01:18:48ID:NQxUHuHt
ということは、わざわざvarで宣言せずに、f.で宣言すればいいということでしょうか?
(この場合「var rans」にせずに「f.rans」にする)
動的に値が変化する場合、varは使わない方がいいのでしょうか
0704名前は開発中のものです。2005/11/26(土) 01:35:36ID:l+SXEDu7
>>703
f.で宣言でおk。

>動的に値が変化する場合、varは使わない方がいいのでしょうか

別にそんなことはないけど、ゲーム変数はvarの変数に、
セーブデータへの保存処理を書き加えたものって思っておけばいい。
あとアクセスも楽だし。
わざわざKAGで作ってくれてるんだから、
同じ処理を書くくらいならそれを使った方がいいんじゃない?ってことです。
0705名前は開発中のものです。2005/11/26(土) 02:45:11ID:NQxUHuHt
ひとまず、全ての変数をvar→f.〜に変更した所、自分の想定した通りの動きになりました。
varでの宣言の意味が分からなくなってしまいましたが、varを使うのは別に消えても構わないような、
一時的なものに限定しておけば特に問題も起こらない……という解釈でいいのでしょうか。
御教示ありがとうございました。
0706名前は開発中のものです。2005/11/26(土) 02:54:40ID:pNBnRtBM
> 別に消えても構わないような、一時的なもの

そういうものには tf.何とか を使うよ
0707名前は開発中のものです。2005/11/26(土) 02:56:25ID:M34DDwDx
一時的なのはtfがあるし、
var するのは逆に栞読もうが何しようが変わらない、ゲーム中ずっと保つ必要がある変数とかオブジェクトだな。
0708名前は開発中のものです。2005/11/26(土) 03:04:54ID:pNBnRtBM
>>707
いや、それは sf.何とか だと思う
0709名前は開発中のものです。2005/11/26(土) 03:11:48ID:M34DDwDx
>>708
何度ゲームを起動してもずっと残っていて欲しい情報がsfだね。
オブジェクトはsfでは書き戻せないので、最初のラベルが来る前に毎回作るしかない。
0710名前は開発中のものです。2005/11/26(土) 03:13:14ID:pNBnRtBM
あーオブジェクトはまあたしかに。
要するに saveStruct でセーブできない物はね。
0711名前は開発中のものです。2005/11/26(土) 17:34:46ID:ivw89/q1
オブジェクトを保存するなんてのたまう時点でお前ら凄いわ、別の意味で。
0712名前は開発中のものです。2005/11/26(土) 20:01:01ID:Bl65Hl1N
お前がヘタレなだけだw
0713名前は開発中のものです。2005/11/26(土) 21:58:38ID:ivw89/q1
いや、別の意味でっつってんじゃん。

オブジェクトを保存なんて発想が良く出てくるよな、流石素人
0714名前は開発中のものです。2005/11/26(土) 22:22:07ID:Bl65Hl1N
そんな発想も出来ない超ヘタレが他人を素人扱いかよw

過去最大級にワロスw
0715名前は開発中のものです。2005/11/26(土) 22:24:25ID:pNBnRtBM
何を言い争ってんだおまいらw
0716名前は開発中のものです。2005/11/26(土) 22:36:44ID:VbSGjj85
>>711 だったらお前がアドバイスしてりゃいいじゃん、高みから随分とエラソウだな、ぉぃ。
0717名前は開発中のものです。2005/11/26(土) 22:48:00ID:ivw89/q1
オブジェクトに必要なパラメータは外部に保存する、オブジェクトはアプリケーションのプロセスが終われば消えるし
プロセスが実行されたら先のパラメータを用いて再構築、当たり前というか前提だというか。

オブジェクトを保存とか言い出したらどんだけメモリあってもたんねぇよ
0718名前は開発中のものです。2005/11/26(土) 22:55:01ID:ivw89/q1
sf.hogeとf.fogeは単にtjsの辞書配列、
起動/終了時にsaveStruct/Script.execStorageされてるだけだろ

プロセス中でsf./f.にオブジェクトを入れられるのは単に参照してるだけだし

>>700のは単にsf.にするかセーブデータごとに持たせたいならf.にする、
既に>>702>>704で答えられてるんだからアドバイスも何もなかろう>>716

varとsf./f./tf.が同列で出てくる時点でおかしいだろう
0719名前は開発中のものです。2005/11/26(土) 22:56:47ID:pNBnRtBM
しかし、たとえば saveStruct の機能を拡張して、
エンドユーザが何も考えずに「オブジェクトを保存」
しても、ちゃんとそのようになる、っていうのは
意義があることじゃないかな

もちろん内部では、>>717のようなことをするんだけど
何も知らないKAGユーザは「オブジェクトが保存された」
と思って使うことができる、と。
0720名前は開発中のものです。2005/11/26(土) 23:10:04ID:ivw89/q1
>>719

それsaveStructの仕様変更だけじゃすまないと思う。
吉里吉里とtjsの組み込みクラスからのインスタンスのみに制限するならまだいけるだろうけど。

継承したサブクラスまで対応しようと思ったら継承全部逆引きして、オーバーライドもしくは追加したメソッド/プロパティは文字列で持たせるか、
どのファイルのどの行で定義したかまで保存しておくしかないし、そうなるとスクリプトファイルの指定したところだけ抜き出してexecStorageに渡す必要がでてくる。

0721名前は開発中のものです。2005/11/26(土) 23:10:48ID:ivw89/q1
>>719
しかも
0722名前は開発中のものです。2005/11/26(土) 23:12:03ID:ivw89/q1
>>719
しかも
>スクリプトファイルの指定したところだけ抜き出してexecStorageに渡す必要がでてくる。
もそのコンテキストなんかも保存が必要。

1から吉里吉里作り直すぐらいの大規模な改修になる訳だが
0723名前は開発中のものです。2005/11/26(土) 23:22:20ID:pNBnRtBM
あーうん。そんな大それたことじゃなくて
俺が想像してたのはたとえばLayerとかWindow
あるいはそれのさらに子クラスの何か
セーブされることを想定したものたちくらいで

しかもたとえばそういうオブジェクトとしてのメンバが
保持されるとかじゃなくて、レイヤの親子関係とか
各プロパティの値とかが復元される程度でも
十分意義があると思うんだ

saveStructを機能変更するというよりは、
KAGを改造して、saveStructでセーブできないものも
セーブできるようにするとかそんな感じかなあ
0724名前は開発中のものです。2005/11/26(土) 23:34:50ID:ivw89/q1
>>723

だったらsaveStrautよりは各クラスのコンストラクタ/デストラクタでやった方がいいと思うが
0725名前は開発中のものです。2005/11/26(土) 23:39:48ID:M34DDwDx
KAGPluginを継承してonStoreオーバーライドした方がいいな。
0726名前は開発中のものです。2005/11/26(土) 23:51:38ID:ivw89/q1
KAGのセーブ/ロードに同期する必要性はあるのか?
0727名前は開発中のものです。2005/11/26(土) 23:54:52ID:pNBnRtBM
>>725
あー、それだ
KAGを改造っていうよりはそれだね

物によっては>>724だろうね
たとえば迷宮もので、ランダムダンジョンを復元するとか

うは夢がひろがりんぐ
0728名前は開発中のものです。2005/11/27(日) 00:00:20ID:EphowXEg
>>726
あーワリ。セーブ/ロードと同期する前提で考えてた。
0729名前は開発中のものです。2005/11/27(日) 00:10:11ID:fkI+p9Lq
オブイェークト
0730名前は開発中のものです。2005/11/28(月) 05:26:46ID:6Q57Bu2+
TJSで、「f.test」にloadImagesで画像を読み込んでforeに表示させても
その状態でセーブ→ロードすると、セーブの時点で表示させた画像がロード後表示されないんですが
これはどうすればいいんでしょうか?
0731名前は開発中のものです。2005/11/28(月) 06:38:49ID:6Q57Bu2+
とりあえずimageタグで同じ処理をすると何ともないので、imageタグを使えばいいのですが
TJSで同じ事が出来ればそれに越した事はないんですけど・・・

f.test = [];
for (var i=0; i<5; i++) {
f.test[i] = new Layer(kag, kag.back.base);
f.test[i].visible = true;
f.test[i].setSizeToImageSize();
}

f.test[0].loadImages('test01'), f.test[0].setPos(10,10), f.test[0].adjustGamma(,,,,,,,224,);
f.test[1].loadImages('test02'), f.test[1].setPos(20,20), f.test[1].adjustGamma(,,,,,,,224,);
f.test[2].loadImages('test03'), f.test[2].setPos(30,30), f.test[2].adjustGamma(,,,,,,,224,);
f.test[3].loadImages('test04'), f.test[3].setPos(40,40), f.test[3].adjustGamma(,,,,,,,224,);
f.test[4].loadImages('test05'), f.test[4].setPos(50,50), f.test[4].adjustGamma(,,,,,,,224,);

こんな感じにしていたのですが・・
0732名前は開発中のものです。2005/11/28(月) 07:18:08ID:mEjhRZR/
あなたがnew Layer()したレイヤにまでKAGは関与できません。
自分でセーブ/ロードに同期して状態を保存/再開する必要があります。
0733名前は開発中のものです。2005/11/28(月) 18:24:13ID:xe9UzjpF
オブジェクトのシリアライズ(保存)に関しては確か
Deeお兄ちゃん実装したいとか何とか言ってなかったか?

>>730
で、これが丁度その問題絡みだな。
Layerクラスのオブジェクト(f.test)の内容はセーブ・ロード不可能だ。
f/tf/sf(辞書配列型)に詰め込んでsaveStructでセーブ・ロード可能なのは、
数値型・文字列型・配列型・辞書配列型の四種類のみ。
[image]を使う形式の場合は読み込んでいる画像ファイル名(文字列型)を保存してるとかだろ?
0734名前は開発中のものです。2005/11/28(月) 18:34:09ID:rrJJkyr2
>>730
ttp://devdoc.kikyou.info/tvp/docs/kag3doc/contents/TJSTips.html#id228

つ"\kag3\template\system\Plugin.tjs"
0735名前は開発中のものです。2005/11/28(月) 18:43:10ID:a4a3ZVl2
>>731
imageタグのものはKAGがシリアライズしてる。
どうしてもf.testを使いたいなら自分で再構築する必要がある。

ここまでの流れ読めれば苦労はないんだが。
0736名前は開発中のものです。2005/11/28(月) 22:39:37ID:xe9UzjpF
>>735
あぁ、道理でKAGLayer以下の派生クラスに、
現在読み込んでる画像ファイル名を格納する変数が無いわけだ。
レイヤクラスを何らかの方法でシリアライズしてたのな。
0737名前は開発中のものです。2005/11/28(月) 22:42:40ID:xe9UzjpF
レイヤクラスじゃねぇ。レイヤオブジェクト。
KAGで指定できる範囲程度の状態なら全部tjsで
store/restoreもやって出来ない事ないと思うのだが、
何でレイヤだけそんな扱いになってるんだろうな?
0738名前は開発中のものです。2005/11/29(火) 01:02:44ID:ynQW9VGT
レイヤには1枚の画像を読み込むことも50000000枚の画像を読み込むことも出来ますが何か?
0739名前は開発中のものです。2005/11/29(火) 01:08:17ID:8E9gDQvC
何か?じゃねーよ。すっこんでろ。
0740名前は開発中のものです。2005/11/29(火) 01:35:49ID:Eb5T7QI0
KAG Scriptのタグ見りゃ50000000枚継ぎ接ぎして読み込む方の使い方は
KAGじゃサポートしない方向性なのはわかるだろ。
そういう使い方したけりゃ自前で保存・再現のルーチン組めって事だ。

実際セーブデータのサイズから想像するに、レイヤに読み込まれてる
ストレージへのポインタ(多分ファイル名)だけ保存されてるっぽいし。
そういう実装の仕方なら tjs でも十分賄えそうなんだが、
そうで無いのは何故なんだろうな。

(ホントにシリアライズしたら最低でもセーブデータのサイズは
レイヤサイズ分の画像ファイルのサイズxレイヤ枚数以上になるはず)
確かLayer.fillRectとかcopyRectによる変更は普通の方法じゃ記録されんよな?
0741名前は開発中のものです。2005/11/29(火) 01:36:37ID:Eb5T7QI0
sage忘れた。スマソ。orz
0742名前は開発中のものです。2005/12/01(木) 11:10:08ID:Ma3eGADh
初歩的な質問ですいません。
Fキー(次の未読へ進む)を押すと、
テキストがまったく表示されないで
(画像などは変わります)いきなり次の選択肢まで
飛ばされてしまいます。
テキストも表示されるようにするにはどうしたらよいでしょうか?
0743名前は開発中のものです。2005/12/01(木) 15:20:25ID:76s2e1wk
>742
この間同じミスをやった。
原因はpタグが入ってなかったんで、742もpタグが入ってるか確認してみては?
0744名前は開発中のものです。2005/12/02(金) 20:03:49ID:HfWhZK9E
>>743
pじゃなくてlタグ使ってたのが原因でした。
ありがとうございました。
0745名前は開発中のものです。2005/12/04(日) 00:14:34ID:d5tIi9+e
質問
フォトショップで.aepの動画を作成した。
.aepをDivX 5.0.5でCodec→TMPGEncでMPEG1で再圧縮。
これでも対応していないとエラーが出るんだが、
.aepをDivXでCodecしてるからなの?
0746名前は開発中のものです。2005/12/04(日) 05:23:03ID:aW2qBPsu
f.num = [4, 20, 15, 15, 4, 8];

例えばこんな風にランダムで数字が入っているとして、重複を削除するにはどうすればいいのでしょうか?
(f.num = [4, 20, 15, 8]; というように)
一括で重複のみを削除してくれるメソッドは無いようですし、一つ一つ比較していくしかないのでしょうか?
0747名前は開発中のものです。2005/12/04(日) 05:32:34ID:zzMN6iAE
適当だけどこんな感じでどうかね

function test(a){
 var flags = [];
 for(i=0; i<a.count; ){
  if(!flags[a[i]]){
   flags[a[i]] = true;
   a.erase(i);
   }
  else i++;
  }
 }
0748名前は開発中のものです。2005/12/04(日) 11:03:36ID:INyEknbQ
function eraseDuplication(array)
{
var i = 0; //一応初期化
var j = 0;

while(i < array.count)
{
j = i + 1;

while(j < array.count)
{
if(array[i] == array[j]) array.erase(j);
else j++;
}
i++;
}
}

これで期待通りの動作をしてくれると思うよ
で、書いてる途中でリファレンス読んで気づいたんだけど、
removeで全てを削除するっていうのがあったので、
それで作ってみたのを次のレスに貼っておくね
0749名前は開発中のものです。2005/12/04(日) 11:07:08ID:INyEknbQ
function removeDuplication(array)
{
var tempArray = [];

while(array.count > 0)
{
tempArray.add(array[0]);
array.remove(array[0], true);
}
return tempArray;
}

先に貼ったのと違って、使うときは配列に代入しないとダメだよ
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 5, 7, 9];
arr = removeDuplication(arr);
var i = 0;
while(i < arr.count)
{
System.inform(arr[i]);
i++;
}
動かなかったらごめんよ。まだ勉強し始めたばかりなんだ
0750名前は開発中のものです。2005/12/04(日) 14:44:44ID:/ZeSLtYA
>>747
適当だったんだろうけど微妙に間違ってるな

function test(a)
{
var flags = [];
for(var i=0; i<a.count;)
{
if(!flags[a[i]])
{
flags[a[i]] = true;
i++;
}
else a.erase(i);
}
}
0751名前は開発中のものです。2005/12/04(日) 15:01:08ID:zzMN6iAE
>>750
ああそうか。スマス
それと flags は [] じゃなくて %[] の方がよかったかもね
0752名前は開発中のものです。2005/12/04(日) 18:55:41ID:aW2qBPsu
>>747-751
ありがとうございました、思ってた通りの動作が出来ました。
この処理でなぜこういう風になるか、もっと勉強したいと思います。
0753名前は開発中のものです。2005/12/04(日) 19:12:53ID:zzMN6iAE
さらに余裕があれば計算量とか計算コストの話にも手を触れてみるといいかと
0754名前は開発中のものです。2005/12/05(月) 08:43:43ID:60EoyMNC
たま〜にこういう流れを見ると、
プログラマ的な思考のできる人がうらやましくなる。

そんな俺は、紙芝居しか作れない絵描き。
0755748-7492005/12/05(月) 10:33:30ID:EIkvvrwn
さっき気づいたんだけど、>>749は何もtempArrayを返さないでも
array.assign(tempArray);
ってすれば代入の必要もなかったみたい
その後にinvalidateでもしてあげればメモリ節約になるのかな

>>754
ゆっくり勉強していけばは紙芝居以外も作れるようになるよ
がんばれ
0756名前は開発中のものです。2005/12/05(月) 13:08:09ID:CuV+0p9Q
>>755
invalidateはゴミ拾いの人が勝手にしてくれるから
普段は気にしないでおk
0757名前は開発中のものです。2005/12/05(月) 13:48:10ID:pz0NC4PZ
>754
色々なゲーム用のテンプレ作ってるけど途中で絵を描くのに飽きて放置してる
絵もシナリオも音以外は全部一人でやってるけど完成させられないのよりはいいよ
勉強すればそれなりに他のゲームも作れるしゆっくりでいいんじゃないかい
0758名前は開発中のものです。2005/12/05(月) 18:58:49ID:+2fFRFw8
>>756
GC娘たん
0759名前は開発中のものです。2005/12/06(火) 00:31:14ID:84sLhupC
吉里吉里2.24 KAG3.24 を使用していて
 
アニメーション画像の定義ファイル xxx.asd 内に、
任意の場所で、SEを鳴らす指定って、できるのでしょうか
 
たとえば、8枚のアニメーションで、
3枚目と4枚目の間に、「se01.ogg」を鳴らす
6枚目と7枚目の間に、「se02.ogg」を鳴らす

123 456 78
■■■ ■■■ ■■
   ↑   ↑ここから「se02.ogg」開始
   ここから「se01.ogg」開始

0760名前は開発中のものです。2005/12/06(火) 00:32:31ID:84sLhupC
スペースが、ずれた orz
0761名前は開発中のものです。2005/12/06(火) 09:12:22ID:RYAXdH4a
できるよ
0762名前は開発中のものです。2005/12/06(火) 11:55:37ID:5PYKHK1j
できるのでしょうか

じゃなくて

わからないからおしえてください

でしょ


eval つかってならせ
0763名前は開発中のものです。2005/12/06(火) 17:50:14ID:DklCndF/
var tmp1 = new Array();
tmp1 = [0,1,2,3,4];

と入ってたとして、tmp1の中身を丸々コピーしたい時に

var tmp2 = new Array();
tmp2,assign(tmp1);

だと通るけど、構造の一部分をコピーしたい時に

tmp2[0],assign(tmp1[3]);

だと通らず、かといってtmp2[0] = tmp1[3]だと参照をコピるだけだからtmp1の中身を変えるとtmp2も変わってしまう
こういう時はどうすればいいんでしょう?
0764名前は開発中のものです。2005/12/06(火) 19:11:55ID:RYAXdH4a
>>763
var temp2 = temp1;
とした場合は同じデータを参照することになるけど、

temp2[0] = temp1[3];
とした場合は物理的に代入してるだけだと思う。

いま↓を試してみたけど、temp1の中身を変えてもtemp2は変わらなかったよ

var temp1 = [0, 1, 2, 3, 4];
var temp2 = [];
temp2[0] = temp1[3];
temp1[3] = 10;
System.inform(temp1[3]);
System.inform(temp2[0]);
0765748-7492005/12/06(火) 19:51:39ID:WzuqBQT0
>>764と同じようなことをやっていたら先を越された( ´∀`)
そういうわけで、>>764のソースを読み込ませてdumpしたのがこちらです

#(3) temp2[0] = temp1[3];
00000079 gpd %1, %-2.*6// *6 = (string)"temp1"
00000083 const %2, *4// *4 = (int)3
00000086 gpi %3, %1.%2
00000090 gpd %4, %-2.*7// *7 = (string)"temp2"
00000094 const %5, *1// *1 = (int)0
00000097 spie %4.%5, %3

temp2[0] = temp1[3]の部分だけを抜き出したんだけど、重要なのは00000097です
  %obj で表されたオブジェクトの %name で表されたメンバに、%src の値を代入します。
  spie はメンバが存在しなければメンバを新規に作成します。
ってリファレンスには書いてあるので、temp2(%4)の0番目(%5)を新しく作って、
00000086で得たtemp1(%1)の3(%2)番目の値(%3)を代入していることがわかるね
つまり代入しているのは参照ではなくて、値だったということで>>764の物理的に代入で正解なんじゃないかな

間違ってるかもしれないので、誰か分かる人は教えてねー
0766名前は開発中のものです。2005/12/06(火) 19:52:21ID:WzuqBQT0
ごめ・・・名前残ってたよ・・・
0767名前は開発中のものです。2005/12/06(火) 20:26:18ID:DklCndF/
なるほど、横着せずに一つずつ入れていけばいいのかな
ありがとう
0768名前は開発中のものです。2005/12/06(火) 22:41:21ID:15tXsV9d
正しくは、
・オブジェクト型変数を代入すると参照
・それ以外の変数を代入するとコピー
(Javaもこんな仕様だったような)

var a=[0,"A",[10,"B"]];
var b=[];
b[0]=a[0]; // b[0]はa[0]のコピー
b[0]=1;
b[1]=a[1]; // b[1]はa[1]のコピー
b[1]="a";
b[2]=a[2]; // b[2]はa[2]の参照
b[2][0]=5; // 参照なのでa[2][0]が変わる
b[2][1]="b"; // これもa[2][1]が変わる
System.inform(@"a[0]=${a[0]}, a[1]=\"${a[1]}\", a[2][0]=${a[2][0]}, a[2][1]=\"${a[2][1]}\"");

これってTJS2 リファレンスには書かれてないみたい
TJS入門には少し説明がある>オブジェクト型変数の扱い

>>763

var tmp1 = new Array();
tmp1 = [0,1,2,3,4];

と書くとnew Array()で作った配列を
[0,1,2,3,4]で作った配列で上書きすることに...
まあ大丈夫だと思うが
0769名前は開発中のものです。2005/12/07(水) 02:56:25ID:9As/y6HN
crazyタンサイト復活したっぽいけどもうゲーム作ってないんだな。
0770名前は開発中のものです。2005/12/07(水) 19:02:40ID:3wBrDyMI
女性向けの吉里吉里ガイドブックが出るらしいですよ。
初心者向けっぽいが。
0771名前は開発中のものです。2005/12/07(水) 22:56:27ID:3nR4Ld9P
WxTJSとかって将来有り得るのかな、とか夢をみてみる。そんなGUIツールキットがあると嬉しいけど。
0772名前は開発中のものです。2005/12/07(水) 22:57:36ID:q9pV+ehm
>770 ソースきぼんぬ
0773名前は開発中のものです。2005/12/07(水) 23:41:15ID:ww2Xw16z
YES/NOダイアログって、どうしたら消せるんでしょうか?
終了ダイアログは、
@eval exp="kag.askOnClose=false"
で消せましたが…。
0774名前は開発中のものです。2005/12/07(水) 23:46:50ID:PdassIYJ
何の為のYES/NOダイアログのことかね
07757732005/12/08(木) 00:40:07ID:alVmzIuK
セーブやロードのときとか、「最初に戻る」のメニューで出る「確認」のダイアログです。
TJS式を書き換えなければいけないんでしょうか。
0776名前は開発中のものです。2005/12/08(木) 01:26:44ID:uOkrfTE5
>771
今でもShellExecuteがあるからコマンドラインアプリのフロントエンドとして使えなくも無いけど、
吉里吉里が大きすぎるよな…
0777名前は開発中のものです。2005/12/08(木) 12:53:34ID:8dE74YRI
>>775
いまMainWindow.tjsを検索して見つけただけだから、
もしかすると動かないかもしれないけど、そうだったらごめんよ
KAGのほうは分からないけど、tjsのほうで書き換えるのならば

MainWindow.tjsの
1573行目(goBackHistory内)から1579行目までをコメント化、1981行もコメント化
1975行目(saveBookMarkWithAsk内)から1979行目までをコメント化、
1980行目を var result = true;//askYesNo(prompt); と書き換える
1991行目(loadBookMarkWithAsk内)から1993行目までをコメント化、
1994行目を var result = true;//askYesNo(prompt); と書き換える
2165行目(goToStartWithAsk内)を
var result = true;//askYesNo("最初に戻ります。よろしいですか ?"); と書き換える

コメント化した理由は、たぶんこれで良いと思うけど、
最初に書いたように動かないかもしれないので、元に戻せるようにということで。
もしかしたらもっとスマートなやり方あるんじゃないかな
0778名前は開発中のものです。2005/12/08(木) 14:54:58ID:WMIYcmYp
>>772
ttp://homepage3.nifty.com/tomoyuri/starthp/onnanoko.html
0779名前は開発中のものです。2005/12/08(木) 15:10:28ID:sMDp/uM1
>>775
save,load,gotostartのタグを使う形なら確認ダイアログは出ない。
kag.restoreBookMarkとかkag.storeBookMarkだったら(0,false)みたいにすれば出ない。
メニューバーからだったらMainWindow.tjsで

function onGoToStartMenuItemClick(sender) { goToStart(); }
function onBookMarkStore(sender) { saveBookMark(sender.bmNum); }
function onBookMarkRestore(sender) { loadBookMark(sender.bmNum); }

に書き換えれば出なくなるけど、MainWindow.tjsいじるのが嫌ならAfterInit.tjs使って

kag.goToStartWithAsk = function() { goToStart(); };
kag.saveBookMarkWithAsk = function(num) { saveBookMark(num); };
kag.loadBookMarkWithAsk = function(num) { loadBookMark(num); };

とでも書いとけば出なくなるよ。
07807732005/12/08(木) 15:53:15ID:alVmzIuK
>>777
ありがとうございます!

……でも、行数があわないんですけど。
(Ver2.24の場合)
07817732005/12/08(木) 17:01:34ID:alVmzIuK
>>779
さっそくAfterInit.tjsを作りました!
ばっちり!ダイアログが出なくなりました。
ありがとうございますー。
>>777さまも、ありがとうございました。
0782名前は開発中のものです。2005/12/08(木) 22:09:19ID:sgypbdjp
女の子のためのゲーム製作ガイドブック(仮)
ttp://homepage3.nifty.com/tomoyuri/starthp/onnanoko.html
マクロ集らしい・・・
0783名前は開発中のものです。2005/12/08(木) 23:54:18ID:C9vC3LP+
萎える質問には、心中読むか、コレ嫁でFAだな。
07847732005/12/09(金) 07:36:39ID:6V3RWZ/a
……あのう、もう一つ質問があるんですが。
右クリックで、画面を消したい(すべてのレイヤーを隠したい)のですが、
いい方法はないのでしょうか?
右クリックでメニュー表示とか、大げさなことはしなくて、ただ、画面が真っ黒に
なればいいのですが……。
0785名前は開発中のものです。2005/12/09(金) 11:25:11ID:hYu4Vx3j
右クリックしたときにサブルーチンに飛んで、
真っ黒の画像を手前のレイヤに貼り付けるのが一番簡単

つーかこれが萎える質問ってやつか('A`) >>782
■ このスレッドは過去ログ倉庫に格納されています