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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2011/02/03(木) 13:12:07ID: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
http://hibari.2ch.net/test/read.cgi/gamedev/1285897465/
01211152011/02/11(金) 12:25:27ID:iQutSKcF
>>118>>119>>120
参考になります。
配列の大きさはたいしたことないです。
ただ、タイマー処理の一部分なので、少しでも早くしたほうが良いのかなぁと思い
前者のように組んでいました。
で、後からassign思い出したっていう。
0122名前は開発中のものです。2011/02/11(金) 15:51:26ID:gz2Pwne0
>>92とちょっと質問似てますが、画像に新しい効果を加えるtjsを作りたいと思います。
効果の関数部分は出来てるのですが、具体的にそれをどう反映させれば良いのかその方法がわかりません。
画像を直接弄って変化させるdllは見つかるのですが、1から画像に手を加える参考に出来るtjsファイルが見当尽きませんでした。
これを参考にすれば良いと言うのはあるでしょうか?
0123名前は開発中のものです。2011/02/11(金) 16:06:38ID:WSwbNMpH
>>122
Layeにある getなんたらPixel/setなんたらPixel

で一応なんでもできる。使い方は吉里吉里リファレンス参照。
ただし機能的には問題ないけど速度的にはオーバーヘッドが大きすぎて
効果用の処理には厳しいよ。素直にCで書いて組み込むほうが良い。
0124名前は開発中のものです。2011/02/11(金) 17:04:54ID:gz2Pwne0
>>123
やっぱりCで組むしか無いのですね。
さすがにCまではやってないです。
また勉強しないといけないんですね・・・・
0125名前は開発中のものです。2011/02/11(金) 18:08:09ID:2qR1M5vy
一応、RGBα全部の数値を弄れるから、画像を好きな形に変える事は出来るんだけど、
全ピクセルに処理を施してsetして、それを複数枚…とかやったら、レスポンスが返って来なくなったw
リアルタイムとか先ず無理で、バッチ的に処理するにしても、とても実用に耐えるレベルじゃない。

>>123が言う様に、素直に下位レイヤー叩いた方が良いねぇ。

後、tjsで関数作ってるレベルなら、ポインタの概念とライブラリの中身さえ分かってしまえば、
そんなに難しいモンでもないから、そんなに気負う事もないかと。
0126名前は開発中のものです。2011/02/11(金) 20:41:46ID:cv99fiNS
>>124
https://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/
ここのLayerExなんちゃらのソース見たら参考になるかな?
処理自体は出来てるなら、Cに書き換えて該当部分を差し替えれば動いたりして。
01271222011/02/11(金) 21:04:37ID:gz2Pwne0
>>125
試しにテストしてみましたが、やはり恐ろしく重たいですね・・・・・
確かにちょっと実用的とは言えませんでした。
他の手段を考えないと。

>>126
実は今丁度そのlayerExRasterが同じような処理をしてるようだったので見てたのですが、AsObjectNoAddRefなど重要そうな単語の意味がわからず、
さらにmainImageBufferPitchやmainImageBufferForWrite等の見慣れないプロパティをリファレンスで参照してさらに頭を抱えてました。

あとlayerExRasterを試しにコンパイルしてみようとしたのですが、何か足りないのかエラーでコンパイル出来なくてやはり初歩的な知識くらい無いとダメなのかと思いました。
(xp3filterなどいくつかはコンパイル出来たのでなにか足りないんじゃないかと思いますが )
0128名前は開発中のものです。2011/02/12(土) 18:41:10ID:S40hiv+3
吉里吉里やtjs組むにはやっぱり秀丸がいいのかなぁ
ずっとmifesなんだが。。。。
0129名前は開発中のものです。2011/02/12(土) 21:37:52ID:M58LL2rf
自分はEmEditorの無料版だなあ
自分に合ったヤツが一番だと思うよ
0130名前は開発中のものです。2011/02/12(土) 23:10:02ID:FyIidfIA
秀丸とかの吉里吉里用セッティング?使ってる人使い勝手とかどうなんだろ
0131名前は開発中のものです。2011/02/12(土) 23:11:57ID:Z20utz7t
質問です
KAGのボタンを後からTJSで非表示にしてみたら
クリックは出来ないのにキーボードからは選択できちゃうんだよね
確認してみたらfocusableはちゃんとfalseになってるし
どうしたらいいでしょうか?
MessageLayer.tjsを弄る必要があればどこら辺とか教えて貰えると助かります
0132 冒険の書【Lv=1,xxxP】 2011/02/13(日) 00:40:19ID:Nddze20W
慣れてしまったエディタが一番だと思う。
秀丸派だけれど、フリーソフト最強ならsakura editor。
広いカスタマイズができる。

mifesはiniファイルを直接弄れるので好きだったけれど、
最近のはムリっぽいね。

秀丸なら吉里吉里用のマクロも幾つかアップされているのがいい。
”秀丸でgrep”というツール(というかinfインストール)を入れることもお勧め。
0133名前は開発中のものです。2011/02/13(日) 00:50:48ID:chaa4PxZ
ずっとサクラ使ってるなぁ。
設定でそこそこの使い勝手は得られるので、替える動機付けに乏しくなる。
0134名前は開発中のものです。2011/02/13(日) 02:22:42ID:L4kq+ciB
KKDE2のバージョンアップまだー
01351312011/02/13(日) 02:26:33ID:SiQe8osp
MessageLayer.tjs弄ってたらできたわ
失礼した
0136名前は開発中のものです。2011/02/13(日) 12:42:14ID:MiTt5ymI
彼氏が秀丸使ってた、別れたい
0137名前は開発中のものです。2011/02/13(日) 16:32:54ID: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の画像しか出てきません。
対処法はありますか?
0138名前は開発中のものです。2011/02/13(日) 16:52:13ID:9RIfJ8I3
等しいかどうかの判定をするときは=ではなくて==を使わないといけないよ
=だと代入になってしまうので
「3と等しいか判定する」つもりなのだろうけれど「3を代入する」という意味になってる

あと、いろいろ閉じてないような気がするけど。"とか[endif]とか
0139名前は開発中のものです。2011/02/13(日) 17:10:12ID:k84HpGk7
あ、修正前の方貼っちゃった…
ありがとうございます。=の使い方を勘違いしてました。
0140名前は開発中のものです。2011/02/13(日) 17:29:04ID: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

ドヤ顔で出すほどのもんじゃないけどこれで最低限どんな値が返ってきてもとりあえずどれかは表示される。
0141名前は開発中のものです。2011/02/13(日) 17:45:20ID:9RIfJ8I3
いや、その値はintrandomで自分で生成してるんだから
気にするんだったらそこじゃないだろ…

気にするなら、なんかの事情でtitle1.jpg等が存在しない場合とかだろ
その場合は存在するもののうちからどれかをかわりに表示するみたいな
0142名前は開発中のものです。2011/02/13(日) 17:56:19ID:hs/nBGW+
それが案外そうでも無い。
ランダムで表示する画像が増減する事は結構あるし、そのときにintrandomの数値を間違って設定する事とか結構あるよ。
あと > < などでやってると、案外=が抜けてたり。
まぁ今回はintrandomの数値だけど、似たような状況はいくらでもあるから、飛びにくく作っておくのは大事。
存在しないものはTJS使わないと吉里吉里タグだけじゃ無理だからさすがに初心者にそれは難解過ぎ。
0143名前は開発中のものです。2011/02/13(日) 18:17:56ID:9RIfJ8I3
うーん、
バグ防止のために「一致してなきゃならないもの」が存在するのを嫌うのは
非常にもっともなことなのだけれど、
セーフティネットというのはバグの温床(見逃してしまう)でもあるので
その最後のcase defaultに相当するところはcond="!debugmode" とかをつけたいような
まあ思想の問題かと思いますが

というか、バグ防止のためにということであれば、今回については
ファイル名の一覧を ["title1", "title2", "title3"] のような配列で与えることにして
intrandomの範囲も「1,3」などと手動で直接書くのではなく
その配列の要素の数から自動的に取るようにするとかかね
0144名前は開発中のものです。2011/02/13(日) 18:18:57ID:nsK8f981
else タグと elsif タグの存在も思い出してあげてください
0145名前は開発中のものです。2011/02/13(日) 18:21:57ID:9RIfJ8I3
ちょww
「そうかelseやelsifってなかったのか、最近離れてたから記憶があいまいになったな」
って思ってた
0146名前は開発中のものです。2011/02/13(日) 19:08:53ID:hs/nBGW+
>>143
たしかにバグの温床にはなりやすいよね。
この条件なら飛ぶはずなのになんで飛ばずに動き続けてるんだろう?とか小一時間ミス探す事が時々ある。

.addで配列に組み込むのが理想だね。
.countで数は取得出来るし、便利なのよね。
ただ、駆け出しの頃は配列は俺にはとても難解だった。
一番使わなくても支障のない物だけど、使えるのと使えないじゃ格段の差が出るのよね。
0147名前は開発中のものです。2011/02/13(日) 19:12:37ID:hs/nBGW+
あと吉里吉里はとてもシステムとして安定してるから関係無いんだけど、ずっといろんなプログラマーのオリジナル言語でやってたから、ついコマンドが返す数値を100%信用しない変なクセがついてしまってるのよ。
特にランダム系は経験上かなり不安定な事が多かったせいでついね。
0148名前は開発中のものです。2011/02/13(日) 23:28:42ID:p1EMTXxB
質問です。
inputタグで表示される画面を吉里吉里画面の中央に表示させることはできるでしょうか?
今現在、ディスプレイ中央に表示されてます。
0149名前は開発中のものです。2011/02/14(月) 00:20:07ID:vDQ+aOmt
え?
>今現在、ディスプレイ中央に表示されてます。
どうしてこうなった!?
0150名前は開発中のものです。2011/02/14(月) 01:27:12ID:Do9qEUJ1
想像してワロタww
0151名前は開発中のものです。2011/02/14(月) 02:36:11ID:xwSZlZFK
>>148 kagやtjsだけでは無理。
自分も質問です。
hiddenMethodに渡す引数と戻り値を教えてください。
0152名前は開発中のものです。2011/02/14(月) 12:01:36ID: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 + "']);
}

これではダメなのでしょうか?
0153名前は開発中のものです。2011/02/14(月) 13:36:49ID:Y5ght41y
その関数は「音を鳴らす関数」ではなくて「音を鳴らすためのコマンド文字列を作る関数」です
0154名前は開発中のものです。2011/02/14(月) 13:51:51ID:E8mP+/zs
>>153
hactに組み込まれていた部分なのでまさにその通りだと思うのですけど、1つは上で書いた疑問は他のところを読んでも出て来ると思いましたので質問だったのですが、

コマンド文字列を作る関数と言うことは、これを呼ばれると一体何をどのように返すのでしょうか? ""等の読み方が分からずどう言う事をしてるのかぼんやりとしか分からないのです。
初歩的で申し訳ありません。
0155名前は開発中のものです。2011/02/14(月) 14:01:35ID:E8mP+/zs
少し検証してわかったのですが、"'"'テスト'"'"みたいな入れ子だと""の中の''の中の""は使えるのでしょうか?
とすると+ sound +と言うのは、soundと言う引数では無く、単に+ sound +と言う文字列を返してるだけなのでしょうか?
すると受け取ったsoundと言う引数はどこに?と言う事になるので、たぶん違うとおもうのですけど。
0156名前は開発中のものです。2011/02/14(月) 14:05:32ID: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}'])";
0157名前は開発中のものです。2011/02/14(月) 14:42:23ID:E8mP+/zs
>>156
細かい説明と指摘本当にありがとうございます。
おっしゃる通りに、貰った物がこちらでは鳴らなくて、どこが悪いんだろうかと探してる時にこの関数を見つけて読み方が分からずこのスレに泣きついてしまいました。
相手側の方ではこれで鳴ってるそうなので、違う物を渡されたのか、それとも何か勘違いしてる可能性が高そうです。
本当に助かりました。
これからもう一度相手側に確認取ってみます。
ありがとうございました。
0158名前は開発中のものです。2011/02/14(月) 15:39:50ID:E8mP+/zs
"kag.se[" + buf + "].stop(), kag.se[" + buf + "].play(%[ storage : '" + sound + "'])"

これから試すつもりですけど、たぶんこうじゃないとダメぽいですね。
returnの後の”に対応する”が;の前の奴だと勘違いしたまま+の前の奴が対応してた"だと思いもしなかった自分のバカバカ。
0159名前は開発中のものです。2011/02/14(月) 21:11:18ID:RqYc83Xu
evalするより関数渡したほうがオーバーヘッドも少ないしセキュアだと思うんだが。
簡単に乗っ取れるよね、それ。
0160名前は開発中のものです。2011/02/14(月) 23:20:56ID:0qKfv/Yz
質問させてください。
縁取り文字使用時、連続ダッシュ(――)で字間に縁の色が入ってしまうのですが
これを綺麗に繋ぐようにする方法ってないでしょうか?
字間を調整してみても、後ろ側の縁に塗りつぶされてしまうようなのです。
0161名前は開発中のものです。2011/02/15(火) 02:04:40ID:4LFE3fe/
>>160
「■複数の横棒(───)を書く時は」
ttp://www.geocities.jp/keep_creating/DojinDOC/kirikiriSmallTips.html#multibar
…ってそのものずばりだと思うが如何。
0162名前は開発中のものです。2011/02/15(火) 03:04:43ID:Rse+nHdS
罫線とか三点リーダが連続するときはパーサ側で1文字づつchに分解するのをヤメて一度スタックに積んでもいいと前に思ったことがあるなぁ。
それに、いちいちばらすと文字列のサイズとか前進幅とか狂うしさ。
0163名前は開発中のものです。2011/02/15(火) 06:59:25ID:Ag0aN+GZ
文字関連の弱さに定評のある吉里吉里
0164名前は開発中のものです。2011/02/15(火) 08:12:32ID:Dav6HMUs
>>160
有り難うございます。
お陰様で理想通りの表次になりました。
0165名前は開発中のものです。2011/02/15(火) 08:13:19ID:Dav6HMUs
>>161宛です。
すみません。
0166名前は開発中のものです。2011/02/15(火) 14:36:48ID:OjWV4otJ
質問よろしくお願いします。
複数の選択肢の中から2つ選ぶと次に進むという構成で
1つ目の選択肢を選んで選択肢群に戻ってきた時に
その選んだ選択肢を再度選べないようにするにはどうしたらよいでしょうか?
タグリファレンスを見ながらなんとかやって来たのですが
本当に分からなくなってしまいました
ご教授よろしくお願いします。
0167名前は開発中のものです。2011/02/15(火) 14:54:37ID:ohISBHHz
>>166
「選択肢を選んだ」という変数で分岐させなさい
0168名前は開発中のものです。2011/02/15(火) 14:55:28ID: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"]
0169名前は開発中のものです。2011/02/15(火) 14:57:22ID: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]
この方法で出なくは出来るけど、表示上はおいしくない。
出さない選択肢の部分を灰色にするとか、消すとかによって
色々処理を追加する必要があるとは思う。
0170名前は開発中のものです。2011/02/15(火) 15:22:59ID:OjWV4otJ
>>167さん
>>168さん
>>169さん

素早い返答本当にありがとうございました。
教えて頂いたことで試行錯誤していきたいと思います。
ありがとうございました。
0171名前は開発中のものです。2011/02/15(火) 16:14:10ID:eoTU6IqZ
マクロをTJSで動かす方法は無いのかな?
conducterの配列に収納されてるみたいだけど上手い方法が見つからない。
出来たところで、全部のタグに対応するわけじゃないけど。。。。
0172名前は開発中のものです。2011/02/15(火) 16:21:50ID:ubsjfjaE
【ゲーム制作】サスペンスギャルゲー 『フクロマンス』 【スタッフ募集】
http://ex14.vip2ch.com/test/read.cgi/news4gep/1277294113/
0173名前は開発中のものです。2011/02/15(火) 16:34:33ID:mADjNJ6B
>>171
マクロをTJS……って具体的にどういう役割を想定してるの?
 1. 今現在TJSで何かスクリプトを書いていて、その中でKAGのマクロ/タグを機能させたい
 2. 今組んでいるマクロの中でTJSスクリプトを使いたい(evalタグ毎度毎度打ち込むのがめんどい)
 3. その他

とか、一つの文面でいくらかの解釈が有るんだが……
0174名前は開発中のものです。2011/02/15(火) 16:40:40ID:0BpiwOhd
>>171
↓の759,760,767
ttp://bbs.bokunatu.com/test/read.cgi/krkr/1195603475/
0175名前は開発中のものです。2011/02/15(火) 17:19:10ID:OjWV4otJ
御助言のおかげで大元の骨格が完成しました。
本当にありがとうございました。
0176名前は開発中のものです。2011/02/15(火) 17:41:23ID:eoTU6IqZ
>>173
特に想定は無いんだけど時々iscriptでtjsパート書いたりしてるとこっちで書くよりマクロで組んで呼び出した方が処理スピードはともかく楽に書けるよなとか思う時があったりするけどそのたびにendscriptして呼び出して戻るとか格好悪いなと。
あと全体をTJSで組んでると、movie関係とか思ったよりTJSで組むのが面倒な場合があったりするからそんな時に楽かなと。
マクロを作っておいて呼び出せば、複雑なタグ群でも一行で済んじゃうから。
概ね楽するための方法として。
マクロの方がバグ見つけるの楽だしね。

>>174
なんか使えそうな感じのレスだね。
ちょっと詳しく読んでみる。
0177名前は開発中のものです。2011/02/15(火) 18:09:42ID:FkfXkijB
>>176
本末転倒やね
TJSを使う時は必ず「タグを作成する」という形で行うようにして、iscript はスクリプト中では使わない、ってほうが結果的には奇麗になると思うよ
0178名前は開発中のものです。2011/02/15(火) 18:41:03ID:eoTU6IqZ
>>177
実際そうだと思う。
たまーに急ぎの時とか、TJSで書くよりタグで書いた方が早いんだけど、でもここは絶対TJSじゃないと無理だしまあいいや、とりあえずendscriptして外に出して・・・とかやったりしちゃうのよね。
マクロの中身が百行とかなるとさすがにそれを一々TJSで同じ事やらせようとするときつい。。。。
タグは拡張性がTJSより低い代わりに、簡略化されてて楽に扱えると言うメリットはやっぱり捨てきれない。
俺ってダメダメ。
01791682011/02/15(火) 18:45:01ID: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]
0180名前は開発中のものです。2011/02/15(火) 19:13:51ID:eoTU6IqZ
2つ選ぶと次に進むと言うのは、選択肢に戻った先で、選択肢を表示する前にifで飛ばせば良いよ。
一つ目と二つ目のメッセージの最後にカウンターかなにかでtf.count++とかしておいて、戻った先で選択肢の前に if(tf.cout>=2)とかすればいい。

一度読んだ選択肢を表示させないのはそれもフラグで管理して>>168みたいにcondで制御すればいい。
0181名前は開発中のものです。2011/02/15(火) 20:58:36ID:AE4Z+Hd8
昔からいろんな言語で1ファイルに多言語混在させるなと言われてきたのになんでiscriptなんてあるんだろうか。
スクリプトなのに低レベルな制御文しかなかったり文字列処理やバッチ処理に弱かったりDeeタンはドMだよね。
0182名前は開発中のものです。2011/02/16(水) 01:18:22ID:i43onDkY
>昔からいろんな言語で1ファイルに多言語混在させるなと言われてきたのに
聞いたこと無いなぁ。本当?
0183名前は開発中のものです。2011/02/16(水) 05:04:29ID:PFl5tPzr
CのマクロだとかHTMLの中にCSSやJS埋込みだとかXMLにDTDだとかいくらでもあるだろ
0184名前は開発中のものです。2011/02/16(水) 09:50:39ID:wh0vq7x9
PHPさんがアップをはじめました
0185名前は開発中のものです。2011/02/16(水) 10:36:39ID:fnJHfEYP
>>181
html
0186名前は開発中のものです。2011/02/16(水) 11:24:35ID:auVMvR/S
TJSが低レベルなのはDeeタンの好みなんでしょ
電子工作が趣味だったりするみたいだし
吉里吉里のソースコード見てもやたらと低レベルな一行一行コードがダラダラと続く感じだし
0187名前は開発中のものです。2011/02/16(水) 12:06:32ID:wjFNoLFy
何が低レベルなのかさっぱり分からん
こやつ、狂いか
0188名前は開発中のものです。2011/02/16(水) 12:49:26ID:ggf6fWY5
いやならやめてもいいんじゃぞ
0189名前は開発中のものです。2011/02/16(水) 13:28:04ID:RLCp7sg6
高級言語とか低レベルとか誤解を招くから改称し手板抱きたい
0190名前は開発中のものです。2011/02/16(水) 13:31:55ID:+qpjQr/e
低レベル、はまさに能力が低いっていう意味で広く使われる言葉だから、
せめて低級とかって言って欲しいところではある。
0191名前は開発中のものです。2011/02/16(水) 13:55:57ID:i43onDkY
受ける印象同じだよそれ
0192名前は開発中のものです。2011/02/16(水) 13:57:31ID:TPbyk8Lw
どう見ても>>186は低級言語の意味ではなくレベルが低いという意味でレスしてると思う
01931862011/02/16(水) 14:27:49ID:auVMvR/S
抽象度が低いという意味で言った
すまんね
0194名前は開発中のものです。2011/02/16(水) 14:56:29ID:PCyBhogH
「低レベル」でググるとゲームの攻略サイトとか日記ばっか出てくるけど、
「低級」でググると言語関係のページが出てくる、くらいには差がある。

>>193
多少でも知ってる人間ならまず間違わずに読み取れる書き方だったとは思うけど、
この流れだとスクリプターには誤解されても仕方ない。実にやっかいな用語だ。
0195名前は開発中のものです。2011/02/16(水) 15:05:12ID: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すれば早いけど、今後の勉強のために覚えようと思って試したんだけどうまくいかなかった
ほかに何が足りないんだろうか?
0196名前は開発中のものです。2011/02/16(水) 15:26:58ID:JI5ci1t3
いや、なんてエラーが出たかぐらいかこうよ。

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

必要なファイルは全部プロジェクトファイル中でパス指定されてるんだから勝手にコピーして動くわけがない。
0197名前は開発中のものです。2011/02/16(水) 15:40:21ID:rcQiOZtl
あっ、たぶんそれかも
いくつかエラー吐き出したけど、tp_stub.cppとか無いとか言うエラーがあって、入ってるのになんでダメなんだ?と思ったけど
パスの指定がされてないって事なのかな
0198名前は開発中のものです。2011/02/16(水) 15:57:42ID:JI5ci1t3
いや、相対パスで上のフォルダから参照されてるから、上のフォルダごともってこないと駄目だよって話
0199名前は開発中のものです。2011/02/16(水) 18:34:38ID:rcQiOZtl
コンパイル出来た、ありがとう
でもちゃんとdllにするように設定したのにexeになってるorz
サイズも違う
もうちょっと勉強してみる
0200名前は開発中のものです。2011/02/16(水) 23:58:32ID:i43onDkY
拡張子が違うだけじゃない?
0201名前は開発中のものです。2011/02/17(木) 00:02:01ID:7ekoSIjI
そうなのかな?
サイズがあからさまに違うし、拡張子をdllに変えてもうごかなかったorz
いくつか試したけど、Exrasterなんか倍くらいサイズ違った・・・・
0202名前は開発中のものです。2011/02/17(木) 00:11:16ID:h1zSGavv
むしろどうやったんだよ
kirikiri2以下エクスポートしてslnひらいてコンパイル押すだけだろうが
0203名前は開発中のものです。2011/02/17(木) 00:26:47ID:i1eT1ONz
I
・layerExフォルダ
I
・layerExImageフォルダ
I
・tp_stub.cpp
I
・tp_stub.cpp

BCC Developer>新規作成>プロジェクトで適当にプロジェクト名を作って。
出来たプロジェクトに上の4つをそのままドラッグで放り込んで一応デフォルトプロジェクトの編集でターゲットがdllにセットされてるのを確認してメイク。
これで一応exeが出来るんだけどdllに書き換えてもなぜか動かない
0204名前は開発中のものです。2011/02/17(木) 00:46:22ID:D3vStg/X
意味わかってないなら、素直に Visual Studio 入手してこい。Express ならただだ
0205名前は開発中のものです。2011/02/17(木) 00:51:48ID:i1eT1ONz
意味が分かってないからそうしてみる。
本当に悪い、C++は触った事一切無くてチンプンカンプン。
0206名前は開発中のものです。2011/02/17(木) 04:47:22ID: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;
}
}
}

これを反映させたいのです。
また同じようにこれをイベントハンドラで反映させるにはどうしたら良いのでしょうか?
0207名前は開発中のものです。2011/02/17(木) 19:45:02ID:Hn8XXTzb
>>206
結局ゲームとして何をやりたいのか?

サンプルとやらを見せられて、余計混乱しているとお見受けします
スマートじゃないけど、MainWindow.tjsの中に直接
function onMouseMove(x, y, shift)を記述、挿入してはいかが
x,yにマウスカーソルの位置が入ってくるから
リファレンスのWindowクラス参考ね
0208名前は開発中のものです。2011/02/17(木) 20:43:02ID: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つの大きな壁になってしまってるのです。
0209名前は開発中のものです。2011/02/17(木) 20:51:02ID: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つ作って同時に動かしてみようとして失敗したり、なんで出来ないんだろうと色々試しては挫折し続けてます。
0210名前は開発中のものです。2011/02/17(木) 21:38:02ID:Hn8XXTzb
>>208
> これを実際のkagに組み込もうとするといつも途中で挫折してしまうのです。

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

Override.tjsで
class mywin extends KAGWindow
以下略

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

で結局何がしたいのさw
イチから組み直すほどシステムにオリジナリティが無ければ、
そっちからアプローチしたほうが早くないかな
勉強っつーなら、勝手に複雑にして勝手に悩めと思ってしまうが
0211名前は開発中のものです。2011/02/17(木) 22:09:21ID:9WE+dCEV
ありがとうございます。
良く読んで試してみます。

今でもタグだけでも吉里吉里は十分良いツールなのですが、やれる幅をもっと増やしたいのです。
例えばマウス関係を覚えればインターフェースの改善が出来ますし、現状でも色々な方のプラグインとか自作分とかでそれなりには組み上がってはいるのですが、
エフェクト関係や本体スクリプトまわりに比べてUIがほとんど手つかずで、それで改善しようとアクションメソッド勉強してたら完全にはまってしまいました。
これがうまく行けば、一気に壁が越えられると思います。
本当にありがとうございます。
0212名前は開発中のものです。2011/02/17(木) 22:50:35ID:jvYmMe0c
>>206
VSで通るようになったんだ。
前はBCBないとコンパイル出来なかったのに。
0213名前は開発中のものです。2011/02/17(木) 23:02:21ID: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が動いてません。
どうしてなのか教えて頂きたいです。
0214名前は開発中のものです。2011/02/17(木) 23:06:11ID:3XtPmN9m
>>212
プラグインの話でしょ
吉里吉里2本体はBCBないと無理だと思われ
0215名前は開発中のものです。2011/02/17(木) 23:26:25ID: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;
}
};

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


だから通常は、「KAGWindowクラスそのもの」じゃなくて、「KAGWindowクラスから生成されたkagというオブジェクト」みたいに
既に生成済みのオブジェクトに対して
 kag.onMouseMove = function(以下略); といった形で組むことが多い。というかそれが普通?
0217名前は開発中のものです。2011/02/17(木) 23:40:43ID:jvYmMe0c
>>214
そういうことか。悪かった。
0218名前は開発中のものです。2011/02/17(木) 23:48:28ID:9WE+dCEV
>>215
layerクラスのイベントにonMouse〜系があるのでそれでいけるものだと思ったのですが、それではダメなのですね。

関数オブジェクト?でしたか。やはりこの書式しか無いのですね。
この書式まったく使った事が無くて、漠然としか意味が分からず必死に普通の書式を試していたのですが・・・
ありがとうございます。もうちょっと勉強してまたわからなかったらお願いします。m(__)m
0219名前は開発中のものです。2011/02/17(木) 23:50:51ID:9WE+dCEV
>>216
それが普通なのですか。
とすると参考書にはそう言う感じには書かれてなくて普通の書式ばかりなので、ゲーム制作用の機能拡張には向いてないのですね。
0220名前は開発中のものです。2011/02/18(金) 00:01:00ID:/8tLczkp
いや、普通の書式を使う事を否定してる訳じゃないよ。

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


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

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