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/
122 名前:名前は開発中のものです。 mailto:sage [2011/02/11(金) 15:51:26 ID:gz2Pwne0] >>92 とちょっと質問似てますが、画像に新しい効果を加えるtjsを作りたいと思います。 効果の関数部分は出来てるのですが、具体的にそれをどう反映させれば良いのかその方法がわかりません。 画像を直接弄って変化させるdllは見つかるのですが、1から画像に手を加える参考に出来るtjsファイルが見当尽きませんでした。 これを参考にすれば良いと言うのはあるでしょうか?
123 名前:名前は開発中のものです。 mailto:sage [2011/02/11(金) 16:06:38 ID:WSwbNMpH] >>122 Layeにある getなんたらPixel/setなんたらPixel で一応なんでもできる。使い方は吉里吉里リファレンス参照。 ただし機能的には問題ないけど速度的にはオーバーヘッドが大きすぎて 効果用の処理には厳しいよ。素直にCで書いて組み込むほうが良い。
124 名前:名前は開発中のものです。 mailto:sage [2011/02/11(金) 17:04:54 ID:gz2Pwne0] >>123 やっぱりCで組むしか無いのですね。 さすがにCまではやってないです。 また勉強しないといけないんですね・・・・
125 名前:名前は開発中のものです。 mailto:sage [2011/02/11(金) 18:08:09 ID:2qR1M5vy] 一応、RGBα全部の数値を弄れるから、画像を好きな形に変える事は出来るんだけど、 全ピクセルに処理を施してsetして、それを複数枚…とかやったら、レスポンスが返って来なくなったw リアルタイムとか先ず無理で、バッチ的に処理するにしても、とても実用に耐えるレベルじゃない。 >>123 が言う様に、素直に下位レイヤー叩いた方が良いねぇ。 後、tjsで関数作ってるレベルなら、ポインタの概念とライブラリの中身さえ分かってしまえば、 そんなに難しいモンでもないから、そんなに気負う事もないかと。
126 名前:名前は開発中のものです。 mailto:sage [2011/02/11(金) 20:41:46 ID:cv99fiNS] >>124 https://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/ ここのLayerExなんちゃらのソース見たら参考になるかな? 処理自体は出来てるなら、Cに書き換えて該当部分を差し替えれば動いたりして。
127 名前:122 mailto:sage [2011/02/11(金) 21:04:37 ID:gz2Pwne0] >>125 試しにテストしてみましたが、やはり恐ろしく重たいですね・・・・・ 確かにちょっと実用的とは言えませんでした。 他の手段を考えないと。 >>126 実は今丁度そのlayerExRasterが同じような処理をしてるようだったので見てたのですが、AsObjectNoAddRefなど重要そうな単語の意味がわからず、 さらにmainImageBufferPitchやmainImageBufferForWrite等の見慣れないプロパティをリファレンスで参照してさらに頭を抱えてました。 あとlayerExRasterを試しにコンパイルしてみようとしたのですが、何か足りないのかエラーでコンパイル出来なくてやはり初歩的な知識くらい無いとダメなのかと思いました。 (xp3filterなどいくつかはコンパイル出来たのでなにか足りないんじゃないかと思いますが )
128 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 18:41:10 ID:S40hiv+3] 吉里吉里やtjs組むにはやっぱり秀丸がいいのかなぁ ずっとmifesなんだが。。。。
129 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 21:37:52 ID:M58LL2rf] 自分はEmEditorの無料版だなあ 自分に合ったヤツが一番だと思うよ
130 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 23:10:02 ID:FyIidfIA] 秀丸とかの吉里吉里用セッティング?使ってる人使い勝手とかどうなんだろ
131 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 23:11:57 ID:Z20utz7t] 質問です KAGのボタンを後からTJSで非表示にしてみたら クリックは出来ないのにキーボードからは選択できちゃうんだよね 確認してみたらfocusableはちゃんとfalseになってるし どうしたらいいでしょうか? MessageLayer.tjsを弄る必要があればどこら辺とか教えて貰えると助かります
132 名前: 冒険の書【Lv=1,xxxP】 [2011/02/13(日) 00:40:19 ID:Nddze20W] 慣れてしまったエディタが一番だと思う。 秀丸派だけれど、フリーソフト最強ならsakura editor。 広いカスタマイズができる。 mifesはiniファイルを直接弄れるので好きだったけれど、 最近のはムリっぽいね。 秀丸なら吉里吉里用のマクロも幾つかアップされているのがいい。 ”秀丸でgrep”というツール(というかinfインストール)を入れることもお勧め。
133 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 00:50:48 ID:chaa4PxZ] ずっとサクラ使ってるなぁ。 設定でそこそこの使い勝手は得られるので、替える動機付けに乏しくなる。
134 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 02:22:42 ID:L4kq+ciB] KKDE2のバージョンアップまだー
135 名前:131 mailto:sage [2011/02/13(日) 02:26:33 ID:SiQe8osp] MessageLayer.tjs弄ってたらできたわ 失礼した
136 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 12:42:14 ID:MiTt5ymI] 彼氏が秀丸使ってた、別れたい
137 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 16:32:54 ID:k84HpGk7] 初心者な質問ですみません。 タイトルをランダムに表示されるようにしたいのですが、 @eval exp="tf.title=intrandom(1,3) [if exp="tf.title=1"] [image storage="title1" layer=base page=fore] [if exp="tf.title=2"] [image storage="title2" layer=base page=fore] [if exp="tf.title=3"] [image storage="title3" layer=base page=fore] これですると何度やっても3の画像しか出てきません。 対処法はありますか?
138 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 16:52:13 ID:9RIfJ8I3] 等しいかどうかの判定をするときは=ではなくて==を使わないといけないよ =だと代入になってしまうので 「3と等しいか判定する」つもりなのだろうけれど「3を代入する」という意味になってる あと、いろいろ閉じてないような気がするけど。"とか[endif]とか
139 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 17:10:12 ID:k84HpGk7] あ、修正前の方貼っちゃった… ありがとうございます。=の使い方を勘違いしてました。
140 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 17:29:04 ID:hs/nBGW+] >>137 今日は暇だから俺がもう少し飛びにくいように書き直してやる *titke_change [eval exp="tf.title = intrandom(1,3)"] [if exp="tf.title == 1"] [image storage="title1" layer=base page=fore] [jump target=*titke_change_end] [endif] [if exp="tf.title == 2"] [image storage="title2" layer=base page=fore] [jump target=*titke_change_end] [endif] [if exp="tf.title == 3"] [image storage="title3" layer=base page=fore] [jump target=*titke_change_end] [endif] [image storage="title1" layer=base page=fore] [jump target=*titke_change_end] *titke_change_end ドヤ顔で出すほどのもんじゃないけどこれで最低限どんな値が返ってきてもとりあえずどれかは表示される。
141 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 17:45:20 ID:9RIfJ8I3] いや、その値はintrandomで自分で生成してるんだから 気にするんだったらそこじゃないだろ… 気にするなら、なんかの事情でtitle1.jpg等が存在しない場合とかだろ その場合は存在するもののうちからどれかをかわりに表示するみたいな
142 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 17:56:19 ID:hs/nBGW+] それが案外そうでも無い。 ランダムで表示する画像が増減する事は結構あるし、そのときにintrandomの数値を間違って設定する事とか結構あるよ。 あと > < などでやってると、案外=が抜けてたり。 まぁ今回はintrandomの数値だけど、似たような状況はいくらでもあるから、飛びにくく作っておくのは大事。 存在しないものはTJS使わないと吉里吉里タグだけじゃ無理だからさすがに初心者にそれは難解過ぎ。
143 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 18:17:56 ID:9RIfJ8I3] うーん、 バグ防止のために「一致してなきゃならないもの」が存在するのを嫌うのは 非常にもっともなことなのだけれど、 セーフティネットというのはバグの温床(見逃してしまう)でもあるので その最後のcase defaultに相当するところはcond="!debugmode" とかをつけたいような まあ思想の問題かと思いますが というか、バグ防止のためにということであれば、今回については ファイル名の一覧を ["title1", "title2", "title3"] のような配列で与えることにして intrandomの範囲も「1,3」などと手動で直接書くのではなく その配列の要素の数から自動的に取るようにするとかかね
144 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 18:18:57 ID:nsK8f981] else タグと elsif タグの存在も思い出してあげてください
145 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 18:21:57 ID:9RIfJ8I3] ちょww 「そうかelseやelsifってなかったのか、最近離れてたから記憶があいまいになったな」 って思ってた
146 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 19:08:53 ID:hs/nBGW+] >>143 たしかにバグの温床にはなりやすいよね。 この条件なら飛ぶはずなのになんで飛ばずに動き続けてるんだろう?とか小一時間ミス探す事が時々ある。 .addで配列に組み込むのが理想だね。 .countで数は取得出来るし、便利なのよね。 ただ、駆け出しの頃は配列は俺にはとても難解だった。 一番使わなくても支障のない物だけど、使えるのと使えないじゃ格段の差が出るのよね。
147 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 19:12:37 ID:hs/nBGW+] あと吉里吉里はとてもシステムとして安定してるから関係無いんだけど、ずっといろんなプログラマーのオリジナル言語でやってたから、ついコマンドが返す数値を100%信用しない変なクセがついてしまってるのよ。 特にランダム系は経験上かなり不安定な事が多かったせいでついね。
148 名前:名前は開発中のものです。 mailto:sage [2011/02/13(日) 23:28:42 ID:p1EMTXxB] 質問です。 inputタグで表示される画面を吉里吉里画面の中央に表示させることはできるでしょうか? 今現在、ディスプレイ中央に表示されてます。
149 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 00:20:07 ID:vDQ+aOmt] え? >今現在、ディスプレイ中央に表示されてます。 どうしてこうなった!?
150 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 01:27:12 ID:Do9qEUJ1] 想像してワロタww
151 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 02:36:11 ID:xwSZlZFK] >>148 kagやtjsだけでは無理。 自分も質問です。 hiddenMethodに渡す引数と戻り値を教えてください。
152 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 12:01:36 ID:E8mP+/zs] すみません、初心者でいくつか理解出来ない事があって質問です。 音を鳴らす関数のサンプルとしてこう言うのを貰いました。 function Hist_sound( sound,buf ) { return "kag.se[buf].stop(), kag.se[buf].play(%[ storage : '" + sound + "'])"; } まず'" + sound + "'と言うのはどう言う事をやってるのでしょうか? storage名をstringで持とうとしてるのかと思いますが、前後の+の意味と2回括ってる意味がわかりません。 次にreturnの後の""で全体を括ってる意味もわかりませんし、中で""を使ってるのになぜ使えるのかもわかりません。 またこれは中身を見る限り単に音を鳴らしてるだけのようなので、 function Hist_sound( sound,buf ) { kag.se[buf].stop(); kag.se[buf].play(%[ storage : '" + sound + "']); } これではダメなのでしょうか?
153 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 13:36:49 ID:Y5ght41y] その関数は「音を鳴らす関数」ではなくて「音を鳴らすためのコマンド文字列を作る関数」です
154 名前:名前は開発中のものです。 mailto:sage [2011/02/14(月) 13:51:51 ID:E8mP+/zs] >>153 hactに組み込まれていた部分なのでまさにその通りだと思うのですけど、1つは上で書いた疑問は他のところを読んでも出て来ると思いましたので質問だったのですが、 コマンド文字列を作る関数と言うことは、これを呼ばれると一体何をどのように返すのでしょうか? ""等の読み方が分からずどう言う事をしてるのかぼんやりとしか分からないのです。 初歩的で申し訳ありません。
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] あれ、そうだっけ。ごめん間違えた。 あらやだ私ったら恥ずかしい