[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/03 07:38 / Filesize : 307 KB / Number-of Response : 991
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 mailto:sage [2011/02/03(木) 13:12:07 ID:6MBIOEHD]
ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。

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

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

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

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

必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)

前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その22
hibari.2ch.net/test/read.cgi/gamedev/1285897465/

155 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 14:01:35 ID:E8mP+/zs]
少し検証してわかったのですが、"'"'テスト'"'"みたいな入れ子だと""の中の''の中の""は使えるのでしょうか?
とすると+ sound +と言うのは、soundと言う引数では無く、単に+ sound +と言う文字列を返してるだけなのでしょうか?
すると受け取ったsoundと言う引数はどこに?と言う事になるので、たぶん違うとおもうのですけど。

156 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 14:05:32 ID:Y5ght41y]
まずは TJS のリファレンスを一通り眺めるくらいはしましょう。

"" は文字列をしめすくくりです。TJSでは便宜のため '' と "" いずれも文字列の記述につかえて、
また、' は "" の中でエスケープせずにつかえて、" は '' の中でエスケープせずに使えます。
詳細は「文字列即値」でリファレンスを検索してください。

そして、その関数は、

"kag.se[buf].stop(), kag.se[buf].play(%[ storage : '"

sound (変数。中身は文字列)

"'])"

の3つの文字列をつなぎあわせようとしています。結果返されるのは

kag.se[buf].stop(), kag.se[buf].play(%[ storage : '渡されたファイル名'])

という文字列です。

なお単にならすだけなら kag.se[buf].play(%[ storage :sound]); で良いです

余談ですがこれバグってますよね。buf が展開されてません。そのままだとたぶんエラーでしょう。もしかしたら
たまたま buf という変数があって鳴ってるかもしれませんが……。その関数くれた人とやらに確認したほうがよいです

もう一つ余談ですが、文字列への変数展開はTJSでは次のように書くことができます。詳細は @ でTJSリファレンスを検索のこと。

return @"kag.se[${buf}].stop(), kag.se[${buf}].play(%[ storage : '${sound}'])";

157 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 14:42:23 ID:E8mP+/zs]
>>156
細かい説明と指摘本当にありがとうございます。
おっしゃる通りに、貰った物がこちらでは鳴らなくて、どこが悪いんだろうかと探してる時にこの関数を見つけて読み方が分からずこのスレに泣きついてしまいました。
相手側の方ではこれで鳴ってるそうなので、違う物を渡されたのか、それとも何か勘違いしてる可能性が高そうです。
本当に助かりました。
これからもう一度相手側に確認取ってみます。
ありがとうございました。

158 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 15:39:50 ID:E8mP+/zs]
"kag.se[" + buf + "].stop(), kag.se[" + buf + "].play(%[ storage : '" + sound + "'])"

これから試すつもりですけど、たぶんこうじゃないとダメぽいですね。
returnの後の”に対応する”が;の前の奴だと勘違いしたまま+の前の奴が対応してた"だと思いもしなかった自分のバカバカ。

159 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 21:11:18 ID:RqYc83Xu]
evalするより関数渡したほうがオーバーヘッドも少ないしセキュアだと思うんだが。
簡単に乗っ取れるよね、それ。

160 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 23:20:56 ID:0qKfv/Yz]
質問させてください。
縁取り文字使用時、連続ダッシュ(――)で字間に縁の色が入ってしまうのですが
これを綺麗に繋ぐようにする方法ってないでしょうか?
字間を調整してみても、後ろ側の縁に塗りつぶされてしまうようなのです。

161 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 02:04:40 ID:4LFE3fe/]
>>160
「■複数の横棒(───)を書く時は」
ttp://www.geocities.jp/keep_creating/DojinDOC/kirikiriSmallTips.html#multibar
…ってそのものずばりだと思うが如何。


162 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 03:04:43 ID:Rse+nHdS]
罫線とか三点リーダが連続するときはパーサ側で1文字づつchに分解するのをヤメて一度スタックに積んでもいいと前に思ったことがあるなぁ。
それに、いちいちばらすと文字列のサイズとか前進幅とか狂うしさ。

163 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 06:59:25 ID:Ag0aN+GZ]
文字関連の弱さに定評のある吉里吉里



164 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 08:12:32 ID:Dav6HMUs]
>>160
有り難うございます。
お陰様で理想通りの表次になりました。

165 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 08:13:19 ID:Dav6HMUs]
>>161宛です。
すみません。

166 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 14:36:48 ID:OjWV4otJ]
質問よろしくお願いします。
複数の選択肢の中から2つ選ぶと次に進むという構成で
1つ目の選択肢を選んで選択肢群に戻ってきた時に
その選んだ選択肢を再度選べないようにするにはどうしたらよいでしょうか?
タグリファレンスを見ながらなんとかやって来たのですが
本当に分からなくなってしまいました
ご教授よろしくお願いします。

167 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 14:54:37 ID:ohISBHHz]
>>166
「選択肢を選んだ」という変数で分岐させなさい

168 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 14:55:28 ID:FQniGo0m]
[link target=*select1 cond=f.flag[1]==0]選択肢1[endlink][r]
[link target=*select2 cond=f.flag[2]==0]選択肢2[endlink][r]
[link target=*select3 cond=f.flag[3]==0]選択肢3[endlink][r]

*select1
[eval exp="f.flag[1]=1"]

*select2
[eval exp="f.flag[2]=1"]


169 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 14:57:22 ID:0V8l3OVm]
>>166
情報が少なすぎて何ともいえないけど、選択肢を出すタグ群をif文で制御して、
その選択肢に飛んだ場合、if文の条件が否定される様にするのが一番簡単かと思う。

イメージとしてはこんな感じ

*ここから

@if exp="tf.sentaku1==void"
<選択肢1を出すマクロなりタグ>
@endif

@if exp="tf.sentaku2==void"
<選択肢2を出すマクロなりタグ>
@endif

*sentaku1
<飛び先>
@eval exp="tf.sentaku1=1"
<“*ここから”に戻るマクロなりタグ>
[s]
この方法で出なくは出来るけど、表示上はおいしくない。
出さない選択肢の部分を灰色にするとか、消すとかによって
色々処理を追加する必要があるとは思う。

170 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 15:22:59 ID:OjWV4otJ]
>>167さん
>>168さん
>>169さん

素早い返答本当にありがとうございました。
教えて頂いたことで試行錯誤していきたいと思います。
ありがとうございました。

171 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 16:14:10 ID:eoTU6IqZ]
マクロをTJSで動かす方法は無いのかな?
conducterの配列に収納されてるみたいだけど上手い方法が見つからない。
出来たところで、全部のタグに対応するわけじゃないけど。。。。

172 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 16:21:50 ID:ubsjfjaE]
【ゲーム制作】サスペンスギャルゲー 『フクロマンス』 【スタッフ募集】
ex14.vip2ch.com/test/read.cgi/news4gep/1277294113/

173 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 16:34:33 ID:mADjNJ6B]
>>171
マクロをTJS……って具体的にどういう役割を想定してるの?
 1. 今現在TJSで何かスクリプトを書いていて、その中でKAGのマクロ/タグを機能させたい
 2. 今組んでいるマクロの中でTJSスクリプトを使いたい(evalタグ毎度毎度打ち込むのがめんどい)
 3. その他

とか、一つの文面でいくらかの解釈が有るんだが……



174 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 16:40:40 ID:0BpiwOhd]
>>171
↓の759,760,767
ttp://bbs.bokunatu.com/test/read.cgi/krkr/1195603475/

175 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 17:19:10 ID:OjWV4otJ]
御助言のおかげで大元の骨格が完成しました。
本当にありがとうございました。

176 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 17:41:23 ID:eoTU6IqZ]
>>173
特に想定は無いんだけど時々iscriptでtjsパート書いたりしてるとこっちで書くよりマクロで組んで呼び出した方が処理スピードはともかく楽に書けるよなとか思う時があったりするけどそのたびにendscriptして呼び出して戻るとか格好悪いなと。
あと全体をTJSで組んでると、movie関係とか思ったよりTJSで組むのが面倒な場合があったりするからそんな時に楽かなと。
マクロを作っておいて呼び出せば、複雑なタグ群でも一行で済んじゃうから。
概ね楽するための方法として。
マクロの方がバグ見つけるの楽だしね。

>>174
なんか使えそうな感じのレスだね。
ちょっと詳しく読んでみる。

177 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 18:09:42 ID:FkfXkijB]
>>176
本末転倒やね
TJSを使う時は必ず「タグを作成する」という形で行うようにして、iscript はスクリプト中では使わない、ってほうが結果的には奇麗になると思うよ

178 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 18:41:03 ID:eoTU6IqZ]
>>177
実際そうだと思う。
たまーに急ぎの時とか、TJSで書くよりタグで書いた方が早いんだけど、でもここは絶対TJSじゃないと無理だしまあいいや、とりあえずendscriptして外に出して・・・とかやったりしちゃうのよね。
マクロの中身が百行とかなるとさすがにそれを一々TJSで同じ事やらせようとするときつい。。。。
タグは拡張性がTJSより低い代わりに、簡略化されてて楽に扱えると言うメリットはやっぱり捨てきれない。
俺ってダメダメ。

179 名前:168 mailto:sage [2011/02/15(火) 18:45:01 ID:FQniGo0m]
; >>166 ごめん、リファレンスチラ見で知ったかで書いた。今は反省している。
; 例: 複数の選択肢の中から2つ選ぶと次に進むという構成で、一度選んだ選択肢は再度選べないようにする
@wait time=200
*start|スタート
[cm]
@eval exp="tf.flags = [], tf.flags[1] = 0, tf.flags[2] = 0, tf.flags[3] = 0, tf.cnt = 0"

*bunki
[cm]
[if exp="2 <= tf.cnt"]選択肢が[emb exp="tf.cnt"]回選ばれました[l][r][jump target=*start][endif]
[if exp="tf.flags[1]==0"][link target=*select1]選択肢1[endlink][r][endif]
[if exp="tf.flags[2]==0"][link target=*select2]選択肢2[endlink][r][endif]
[if exp="tf.flags[3]==0"][link target=*select3]選択肢3[endlink][r][endif]
[s]

*select1
[cm]
選択肢1が選ばれました[l][r]
[eval exp="tf.flags[1]=1, tf.cnt=tf.cnt+1"]
[jump target=*bunki]

*select2
[cm]
選択肢2が選ばれました[l][r]
[eval exp="tf.flags[2]=1, tf.cnt=tf.cnt+1"]
[jump target=*bunki]

*select3
[cm]
選択肢3が選ばれました[l][r]
[eval exp="tf.flags[3]=1, tf.cnt=tf.cnt+1"]
[jump target=*bunki]

180 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 19:13:51 ID:eoTU6IqZ]
2つ選ぶと次に進むと言うのは、選択肢に戻った先で、選択肢を表示する前にifで飛ばせば良いよ。
一つ目と二つ目のメッセージの最後にカウンターかなにかでtf.count++とかしておいて、戻った先で選択肢の前に if(tf.cout>=2)とかすればいい。

一度読んだ選択肢を表示させないのはそれもフラグで管理して>>168みたいにcondで制御すればいい。

181 名前:名前は開発中のものです。 mailto:sage [2011/02/15(火) 20:58:36 ID:AE4Z+Hd8]
昔からいろんな言語で1ファイルに多言語混在させるなと言われてきたのになんでiscriptなんてあるんだろうか。
スクリプトなのに低レベルな制御文しかなかったり文字列処理やバッチ処理に弱かったりDeeタンはドMだよね。

182 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 01:18:22 ID:i43onDkY]
>昔からいろんな言語で1ファイルに多言語混在させるなと言われてきたのに
聞いたこと無いなぁ。本当?

183 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 05:04:29 ID:PFl5tPzr]
CのマクロだとかHTMLの中にCSSやJS埋込みだとかXMLにDTDだとかいくらでもあるだろ



184 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 09:50:39 ID:wh0vq7x9]
PHPさんがアップをはじめました

185 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 10:36:39 ID:fnJHfEYP]
>>181
html

186 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 11:24:35 ID:auVMvR/S]
TJSが低レベルなのはDeeタンの好みなんでしょ
電子工作が趣味だったりするみたいだし
吉里吉里のソースコード見てもやたらと低レベルな一行一行コードがダラダラと続く感じだし

187 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 12:06:32 ID:wjFNoLFy]
何が低レベルなのかさっぱり分からん
こやつ、狂いか

188 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 12:49:26 ID:ggf6fWY5]
いやならやめてもいいんじゃぞ

189 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 13:28:04 ID:RLCp7sg6]
高級言語とか低レベルとか誤解を招くから改称し手板抱きたい

190 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 13:31:55 ID:+qpjQr/e]
低レベル、はまさに能力が低いっていう意味で広く使われる言葉だから、
せめて低級とかって言って欲しいところではある。

191 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 13:55:57 ID:i43onDkY]
受ける印象同じだよそれ

192 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 13:57:31 ID:TPbyk8Lw]
どう見ても>>186は低級言語の意味ではなくレベルが低いという意味でレスしてると思う

193 名前:186 mailto:sage [2011/02/16(水) 14:27:49 ID:auVMvR/S]
抽象度が低いという意味で言った
すまんね



194 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 14:56:29 ID:PCyBhogH]
「低レベル」でググるとゲームの攻略サイトとか日記ばっか出てくるけど、
「低級」でググると言語関係のページが出てくる、くらいには差がある。

>>193
多少でも知ってる人間ならまず間違わずに読み取れる書き方だったとは思うけど、
この流れだとスクリプターには誤解されても仕方ない。実にやっかいな用語だ。

195 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 15:05:12 ID:rcQiOZtl]
俺も低級って言われるとやっぱり低レベルとイコールなイメージが強いな。

ところでそんなプログラマーさんたちにちょっと初歩過ぎる質問なんだけど、
上の方で紹介されてる
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/
のLayerExなんちゃら系をC++でコンパイルしようとしたんだけど何か足りなくてエラーが起きる
layerExImage/の中身とlayerEx/の中身とtp_stub.cppとtp_stub.hを1つのフォルダーに突っ込んで処理しようとしたけどコンパイルされない
dllをDLすれば早いけど、今後の勉強のために覚えようと思って試したんだけどうまくいかなかった
ほかに何が足りないんだろうか?

196 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 15:26:58 ID:JI5ci1t3]
いや、なんてエラーが出たかぐらいかこうよ。

まあ、だいたい想像はつくけど。ncbind とかが無いとかどーとかいわれたんだろ。
pluginフォルダから下は全部そのままチェックアウトしような。

必要なファイルは全部プロジェクトファイル中でパス指定されてるんだから勝手にコピーして動くわけがない。

197 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 15:40:21 ID:rcQiOZtl]
あっ、たぶんそれかも
いくつかエラー吐き出したけど、tp_stub.cppとか無いとか言うエラーがあって、入ってるのになんでダメなんだ?と思ったけど
パスの指定がされてないって事なのかな

198 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 15:57:42 ID:JI5ci1t3]
いや、相対パスで上のフォルダから参照されてるから、上のフォルダごともってこないと駄目だよって話

199 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 18:34:38 ID:rcQiOZtl]
コンパイル出来た、ありがとう
でもちゃんとdllにするように設定したのにexeになってるorz
サイズも違う
もうちょっと勉強してみる

200 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 23:58:32 ID:i43onDkY]
拡張子が違うだけじゃない?

201 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 00:02:01 ID:7ekoSIjI]
そうなのかな?
サイズがあからさまに違うし、拡張子をdllに変えてもうごかなかったorz
いくつか試したけど、Exrasterなんか倍くらいサイズ違った・・・・

202 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 00:11:16 ID:h1zSGavv]
むしろどうやったんだよ
kirikiri2以下エクスポートしてslnひらいてコンパイル押すだけだろうが

203 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 00:26:47 ID:i1eT1ONz]
I
・layerExフォルダ
I
・layerExImageフォルダ
I
・tp_stub.cpp
I
・tp_stub.cpp

BCC Developer>新規作成>プロジェクトで適当にプロジェクト名を作って。
出来たプロジェクトに上の4つをそのままドラッグで放り込んで一応デフォルトプロジェクトの編集でターゲットがdllにセットされてるのを確認してメイク。
これで一応exeが出来るんだけどdllに書き換えてもなぜか動かない



204 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 00:46:22 ID:D3vStg/X]
意味わかってないなら、素直に Visual Studio 入手してこい。Express ならただだ

205 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 00:51:48 ID:i1eT1ONz]
意味が分かってないからそうしてみる。
本当に悪い、C++は触った事一切無くてチンプンカンプン。

206 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 04:47:22 ID:9WE+dCEV]
質問お願いします。
書籍などにはonMouseMove等は新しいウィンドウで動作させるサンプルはいくつかあるのですが、ゲーム上と言うかKag上ではどのように書けば良いのでしょうか?
例えば、サンプルに良くあるのですが、captionにどう反映させるのか方法がわかりません。

function action(ez){
if(ez.target == primaryLayer){
if(ez.type=="onMouseMove"){
mess1="マウスカーソルの位置:(" + ez.x + "),(" + ez.y + "),(" + ez.shift + ")";
caption =mess1;

}
else if(ez.type == "onMouseLeave"){
mess1="マウスカーソルはプライマリレイヤの外にあります";
caption = mess1;
}
}
}

これを反映させたいのです。
また同じようにこれをイベントハンドラで反映させるにはどうしたら良いのでしょうか?

207 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 19:45:02 ID:Hn8XXTzb]
>>206
結局ゲームとして何をやりたいのか?

サンプルとやらを見せられて、余計混乱しているとお見受けします
スマートじゃないけど、MainWindow.tjsの中に直接
function onMouseMove(x, y, shift)を記述、挿入してはいかが
x,yにマウスカーソルの位置が入ってくるから
リファレンスのWindowクラス参考ね

208 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 20:43:02 ID:9WE+dCEV]
>>207
だいぶ不要と思う所を削りましたが、サンプルとかだと書籍とかネットとかだとだいたいこんな感じに書かれてまして
class mywin extends Window{
var timer;
function mywin(){
super.Window();

setInnerSize(800, 600);
add(new Layer (this,null));
with(primaryLayer){
.loadImages("双子N_02A.bmp");
.setSize(innerWidth,innerHeight);}
visible=true;}

function finalize(){super.finalize();}

function action(ev){
if(ev.target == primaryLayer&&ev.type=="onMouseMove")caption = "マウスカーソルの位置:(" + ev.x + "),(" + ev.y + "),(" + ev.shift + ")";}
}

var win = new mywin();
これだとちゃんとマウス座標をしっかりとactionで受け取れてうのですけど、この手のサンプルはいつも必ずと言っていいほど新しいwindowを作成してそこで動かしてますので、
これを実際のkagに組み込もうとするといつも途中で挫折してしまうのです。
これ自体をゲームに組み込むと言う事では無く、勉強で例えばこれをkagで組み込めれば他のactionメソッドも同じように組み込めるように理解出来ればと思っての事なのですが・・・・
いつも別窓ではそれなりにうまくいくのですけど、いざこれをkagにもってこようとするとエラー連発で1つの大きな壁になってしまってるのです。

209 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 20:51:02 ID:9WE+dCEV]
座標を取るだけなら、過去ログを探して
kag.superOnMouseMove = kag.onMouseMove;

var mess1;
kag.onMouseMove = function(x,y,shift){
if(!kag.fullScreened){
superOnMouseMove(...);
mess1="マウスカーソルの位置:(" + x + "),(" + y + "),(" + shift + ")";
caption = mess1;

if(kag.menu.visible){
kag.menu.visible=false;
}else if(y<=10){
kag.menu.visible=true;
}
kag.innerHeight=600;

}
};
少し手直ししてこれで動かせてるのですが、例えばkag.onMouseMove = function(x,y,shift)で関数式としてやってるらしいと言う事はなんとなくネットで調べてわかったのですが、
これを普通の書式に出来ないのか?とかなぜこの書式じゃないとダメなのかとか、この書式は最後に;をつける以外に違いはなさそうなのに普通の書式にするとなぜエラーが出るのだろうか?とかわからない事だらけなのです。

またkag.superOnMouseMove = kag.onMouseMove2 = kag.onMouseMove;とかしてkag.onMouseMove2をもう1つ作って同時に動かしてみようとして失敗したり、なんで出来ないんだろうと色々試しては挫折し続けてます。

210 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 21:38:02 ID:Hn8XXTzb]
>>208
> これを実際のkagに組み込もうとするといつも途中で挫折してしまうのです。

Initialize.tjs内で
global.kag = new mywin() if typeof global.kag == "undefined";

Override.tjsで
class mywin extends KAGWindow
以下略

こんなのが希望の答すか(ウチはこんなんで動いてますが正道かは知りません)

で結局何がしたいのさw
イチから組み直すほどシステムにオリジナリティが無ければ、
そっちからアプローチしたほうが早くないかな
勉強っつーなら、勝手に複雑にして勝手に悩めと思ってしまうが

211 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 22:09:21 ID:9WE+dCEV]
ありがとうございます。
良く読んで試してみます。

今でもタグだけでも吉里吉里は十分良いツールなのですが、やれる幅をもっと増やしたいのです。
例えばマウス関係を覚えればインターフェースの改善が出来ますし、現状でも色々な方のプラグインとか自作分とかでそれなりには組み上がってはいるのですが、
エフェクト関係や本体スクリプトまわりに比べてUIがほとんど手つかずで、それで改善しようとアクションメソッド勉強してたら完全にはまってしまいました。
これがうまく行けば、一気に壁が越えられると思います。
本当にありがとうございます。

212 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 22:50:35 ID:jvYmMe0c]
>>206
VSで通るようになったんだ。
前はBCBないとコンパイル出来なかったのに。

213 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 23:02:21 ID:9WE+dCEV]
>>210
試してみましたが、ウィンドが二枚出てしまいました。
理想としては今のシステムの中で・・・やりたかったのですが、不勉強なせいだと思いますので、もう少し勉強します。
命令の意味がもう少し理解出来ればそこからうまくやれるかと思います。
ところで、最初の方の質問のものを、簡単にクラス化して試してみたのですが・・・・・

class test_tempLayer{
var test_tempLayer;
function test_tempLayer(){
kag.add(test_tempLayer = new Layer(kag, kag.fore.base));
with(test_tempLayer){
.loadImages("glay.png");
.setSizeToImageSize(.width, .height);
.setSize(kag.innerWidth,kag.innerHeight);
.visible=true;}
}
function action(ev){
if(ev.target == test_tempLayer&&ev.type=="onMouseMove")
{
caption="マウスカーソルの位置:(" + ev.x + "),(" + ev.y + "),(" + ev.shift + ")";}
else if(ev.target == test_tempLayer&&ev.type == "onMouseLeave"){
caption="マウスカーソルはプライマリレイヤの外にあります";}
}
function finalize(){}
}
var test_tempLayerx = new test_tempLayer();

最初これならいけるかとおもったのですが、飛ばないのですがactionが動いてません。
どうしてなのか教えて頂きたいです。



214 名前:名前は開発中のものです。 [2011/02/17(木) 23:06:11 ID:3XtPmN9m]
>>212
プラグインの話でしょ
吉里吉里2本体はBCBないと無理だと思われ

215 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 23:26:25 ID:mHK4gVts]
>>213
actionメソッドはLayerクラスじゃなくてWindowクラスに用意されてるもんだった筈(吉里吉里2リファレンス参照)だけど、
その構築分じゃtest_tempLayerクラスの中にactionメソッド定義してないか?


で、今のウィンドウの中でやりたいっていうのなら、単にAfterInit.tjsの中で

kag.action = function(ev){
switch(ev.type){
case "onMouseMove":
this.caption = "X:"+ev.x + "," + "Y:"+ev.y;
break;

case "onMouseLeave":
this.caption = "Bye.";
break;
}
};

みたいに書けばそれで済む話じゃね?

216 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 23:36:23 ID:mHK4gVts]
んで>>209で「なぜ関数式じゃないとダメなのか」って事を言ってたけど、
オレのうろ覚えじゃなければ、TJSでは別々のファイルで同一のクラスを分割定義する事は出来ない
 (例えばMainwindow2.tjsというファイルを作り、その中で
      class KAGWindow extends Window(以下略)
  とか書いても動かない)
っつう仕様が有った筈なので、後から機能を足すなら普通の書式はあんまりよろしくない。
というか、一度読み込んでしまったクラスに後から機能を追加するなんて事出来たっけ?


だから通常は、「KAGWindowクラスそのもの」じゃなくて、「KAGWindowクラスから生成されたkagというオブジェクト」みたいに
既に生成済みのオブジェクトに対して
 kag.onMouseMove = function(以下略); といった形で組むことが多い。というかそれが普通?

217 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 23:40:43 ID:jvYmMe0c]
>>214
そういうことか。悪かった。

218 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 23:48:28 ID:9WE+dCEV]
>>215
layerクラスのイベントにonMouse〜系があるのでそれでいけるものだと思ったのですが、それではダメなのですね。

関数オブジェクト?でしたか。やはりこの書式しか無いのですね。
この書式まったく使った事が無くて、漠然としか意味が分からず必死に普通の書式を試していたのですが・・・
ありがとうございます。もうちょっと勉強してまたわからなかったらお願いします。m(__)m

219 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 23:50:51 ID:9WE+dCEV]
>>216
それが普通なのですか。
とすると参考書にはそう言う感じには書かれてなくて普通の書式ばかりなので、ゲーム制作用の機能拡張には向いてないのですね。

220 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 00:01:00 ID:/8tLczkp]
いや、普通の書式を使う事を否定してる訳じゃないよ。

>>215の動作だって、コレはあくまでAfterInit.tjs等の別ファイルに書くことを前提にしてるけど、
Mainwindow.tjsの中に直接


function action(ev){
  switch(以下略)
}

って書く事も出来るし、そういう形でコード追加してる人も多く居る。
ただ後々コードを修正する時になって、「アレ、俺どのファイルに追加コード書いたっけ?」っていう事になって混乱する可能性があり得るので
AfterInit.tjsみたいな単一のファイルの中に
kag.action = function(ev){ 略 };
kag.foo = function(){};
abc.bar = function(){};
みたいな具合に追加コードをどっさり書き連ねる手法も有るよっつう話。どっちが拡張に向くか向かないかってのはちょっと違う。


221 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 00:02:38 ID:1kmgXvbN]
>>216
確認しちゃったじゃないか。多重定義はあと優先だよ

222 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 00:08:18 ID:/8tLczkp]
あれ、そうだっけ。ごめん間違えた。
あらやだ私ったら恥ずかしい

223 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 00:16:26 ID:6piJtGX6]
AfterInit.tjs自体ほとんど使ってなかったのですが、そっちに書いてしまった方が確かにいいですね。
Mainwindow.tjsはバージョンアップの度に書き換えなくちゃいけなくなるので、なるべくなら触りたくないんです。
AfterInit.tjsならその心配もありませんし、tjs式はわざわざ他のksファイルにiscriptで書いてたので、それに書き直してみます。

今回頂いたのは正直まだfunction()を完全に理解していないので、次は画面内全部じゃなく.hitThresholdに対応するように考えて見ます。



224 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 14:11:14 ID:pGkxxiu5]
横からスマン
>>215でactionメソッドはLayerクラスじゃなくてWindowクラスに用意されてるもんだった筈と言うことだし実際試したら動かないわけなんだけど、じゃぁlayerクラスのonなんちゃら系って言うのは使えないの?
windowクラスを作る事前提なら、KAG上では無理って事?
俺も初心者に毛が生えた程度でスマン

225 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 15:48:43 ID:27Mbg7EK]
吉里吉里リファレンスの「イベントシステムについて」を上から下まで一通りよんで考えればおのずとわかることでしょう

226 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 19:33:36 ID:/8tLczkp]
>>224
Windowクラスのactionメソッドは「自分の中(windowの中)で何かイベントが起きた(各レイヤにマウスが載ったetc)かどうか」を検知するもんであって
各レイヤが各々に「自分の中(そのレイヤクラス自身)で何かイベントが起きたかどうか」を検知するのは別の話だよ。

kag.primaryLayer.onMouseMove = function(略) と書いても機能的には同じことが果たせる。
書き方が違うってだけのことよー

227 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 20:19:51 ID:kdo303te]
actionって名前が悪いんだよな。
observeにしとけば読んで字の如くなのに。
コード的にも
function observer(ev){
//foo
}

kag.observe = observer;
で意味が通じるのに。


228 名前:名前は開発中のものです。 [2011/02/18(金) 21:05:39 ID:AX8UzFm1]
お初にこのスレに来ました者です。

質問なのですが、ゲーム起動画面の「栞をはさむ」を「セーブする」という文字にするにはどうすればいいのでしょうか。
調べた結果、MainWindow.tjsを編集すればいいという結果だったのですが、どこをいじればいいのかわかりません。

自分なりに以下のように編集してみたのですが、変更されません・・・。


// 保存するファイル名を得る
var selectdata = %[
title:"セーブする",
filter: [saveThumbnail ?
"サムネイル画像付き栞データ(*.bmp)|*.bmp" :
"栞データ(*.kdt)|*.kdt"],

229 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 21:51:25 ID:Go9Y3Ma1]
Menus.tjs110行目近辺に求める答えがあると思うよ


230 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 22:22:32 ID:ogV0P+iB]
ちょっと雑談というか質問というか意見を聞きたいんだが
みんな吉里吉里製のゲームを世に出すときに 解析対策してる?

フリーゲーム見ると結構やってる人いるみたいなんだけど
簡単にできるもんなの?

231 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 22:27:56 ID:hDc5Qb3Q]
そう言うことは、解析したくなるほど良いゲームを作ってから考えような

232 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 22:40:37 ID:ogV0P+iB]
>>231
こう返す奴がいつもいるのは知ってるけどさ 煽るだけの意見は求めてないよ
「解析したくなるほど良いゲームを作っていない」という根拠がどこにあるんだ
というか論点はそこじゃない 分かれ

233 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 22:46:36 ID:hDc5Qb3Q]
マジレスするなら、力量さえあれば解析対策なんていくらでもできると思うぞ
後はどこまでやるかコストとか期間とかの問題だけ

個人的にはそんなことにパワー割きたくないから大したことはやらない



234 名前:名前は開発中のものです。 [2011/02/18(金) 23:02:19 ID:AX8UzFm1]
>>229
できました!!
どうもありがとうございました。本当に助かりました。

またお世話になるかもしれませんが、そのときもよろしくお願いします。

235 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 23:10:56 ID:W4WoUTwG]
俺は同業者対策にtjsと自分で作ったマクロだけ吉里吉里の暗号かけてる
一応コメント全部抜いて
すぐに解かれる物だけど、すぐに解くレベルの人なら俺が作ったのより良い物をつくれるだろうし、誰かに手伝って貰って解くレベルの人は読んでもわからんだろうしと考えてる

236 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 00:25:04 ID:WVYEDYF2]
dllをビルドできる環境があるなら簡単にできる
xp3enc.dllとxp3dec.dllを自作すればいいだけ
ただし同程度の知識を持っている人間なら簡単に破れる
その程度で良ければ

237 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 01:03:11 ID:e7TICuoi]
>>225-227
おおおなんか出来た!
なんでうまくいかんのだろうと放置してたけどあっさり解決したよorz
thank you!!

暗号かぁ
テキストか何かでキーを任意で変えられるとかなりいいかなと思う
fateのあのキーはちょっと笑えるけど読めてしまうあれは果たして正しいのか?とか思ってしまう今日この頃

238 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 01:49:33 ID:cZV2lQMX]
解析にキーなんて関係ないけどな

239 名前:名前は開発中のものです。 [2011/02/19(土) 07:24:38 ID:ptgwOnoc]
よく吉里吉里で作ったゲームでいつでもセーブできるものがありますけど、それってラベルを大量に作ってるんですか?
それともラベルをたくさん作る以外に何か方法があるんでしょうか?

240 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 08:35:37 ID:WVYEDYF2]
「吉里吉里 どこでもセーブ」でググれ

241 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 08:49:41 ID:ry9A4YMJ]
いい加減にマルチポストするのやめれ('A`)

242 名前:名前は開発中のものです。 [2011/02/19(土) 12:26:26 ID:ptgwOnoc]
>>240
どこでもセーブプラグインとやらを見つけました。
使い方にも載っていたようにやはりセーブポイントには[np]をつけなくてはいけないんですね。

>>241
すいません、過去ログに載っていましたか?

243 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 12:50:29 ID:AZlqjiRa]
たしか毎行に*|を入れると出来たと思いますけど、手間かかるしプラグインの誤動作で画面崩れるの怖いので自分で確実なところでセーブ出来るようにしてます。

ところで一昨日からアドバイス頂いて色々試しているのですが、式中関数の中では他のメソッドを呼び出せないのですね。
クラスのなかでtimerを呼びに行こうとして色々試したのですがダメでした。結局式中関数に直接書いてしまいましたが見た目がブサイクになってしまったのですけど、仕方無いかなと・・・・



244 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 13:08:14 ID:+ZjzSuRr]
ヒント: incontextof

245 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 14:21:40 ID:TR/rwGBg]
自前のレイヤをaddContinuousHandlerで移動させる時に、
例えば80ピクセルの幅を移動するのと同時に表示をフェードインさせたいんですが、
移動開始時はopacity=0で、移動終了時に丁度255になるようにしたいんですけど、上手くいきません
(初めから完全に表示されていたり、半透明で移動した後最後に突然opacity=255になる)
何か良い方法は無いですか?

246 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 14:51:36 ID:AZlqjiRa]
移動中の描画のタイミングで段階的にopacityを弄るとうまくいくと思います。

247 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 15:14:15 ID:TR/rwGBg]
レイヤのtop・leftを書き換えるところでopacityも変化するように、
255を移動ピクセルで割って、その数を描画のタイミングで加算してみたりしたんですが
たった数十ピクセル移動する間にopacityが10000とかまで加算されたりして、
255に収まるようにすると、上記の()内のような事になってしまいます

248 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 15:38:32 ID:cZV2lQMX]
>>247
間違ってるからでしょ
コードだしてもらわんと誰もわからんよ


249 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 16:39:54 ID:wVhY5yhF]
解析対策なんてデバッガかけるか実行中のメモリから抜かれるとどうにでもされるからやってないな。
とくに吉里吉里はxp3filterが標準で用意されてるから楽だし。

250 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 16:44:28 ID:poxQtpu7]
移動は%で場所指定してるのに透明度はHandler呼ばれるたびに加算してるとか
そんなところだろうと予想

251 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 16:51:34 ID:TR/rwGBg]
TextLayer.opacity = 0;
startTime = System.getTickCount();
System.addContinuousHandler(handler);

- 以下handler内
dist = (tickCount - startTime) * speed \ 1000;
if (TextLayer.top > moveH) {
    TextLayer.top = it - dist;
}
※moveH=最終的な到着点の座標

レイヤを下から上へ移動させる時、大体こんな感じで記述しています
で、opacityをどこで加算していけば、moveタグみたいに滑らかに移動してくれるのかと・・・

252 名前:名前は開発中のものです。 [2011/02/19(土) 17:12:35 ID:6HEBXbJG]
横からですまん、ちょっと質問

タイトル画面でロードをするために右クリックサブルーチンを表示させたいんだけど下のソースで実行してクリックしても無反応なんだ
誰か助けてくれ

[link exp="kag.restoreBookMark()"]ロードする[endlink]

253 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 17:24:52 ID:JEjsxLwS]
色々と興味深い意見が聞けてよかったです
コメント改行全部抜くとか、流用はやーめーてーねーという意思表示をするくらいが丁度いいんですかね
参考になりました。ありがとう

>>252
それじゃ右クリックサブルーチン呼び出せないよ・・・
サブルーチンの意味をお勉強すると手っ取り早いよ



254 名前:名前は開発中のものです。 [2011/02/19(土) 17:43:12 ID:6HEBXbJG]
>>253
意味調べてみたんだが・・・
エンドリンクを抜いたりカッコを抜いたりしてみたんだけど駄目だったorz
無知な俺に答えを教えてくれ!

255 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 17:47:21 ID:lNwerVwv]
KAG System リファレンスの中に
右クリックサブルーチンにてセーブロードするサンプルが載ってるんだが…見た?
良い機会だからクレクレせず探してみー






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef