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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
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の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
0852名前は開発中のものです。2010/05/01(土) 01:14:50ID:HsPiZ1Bu
おい…blackの画像…
モニタのコントラストの関係で案外気付かなかったりするのかも
0853名前は開発中のものです。2010/05/01(土) 01:17:56ID:bul+FtjX
blackじゃなくて緑と茶色じゃん
08547492010/05/01(土) 01:19:23ID:h7DUj4X8
>black
ワラタwww
0855名前は開発中のものです。2010/05/01(土) 01:20:40ID:5kw+2AD3
チャンチャン
0856名前は開発中のものです。2010/05/01(土) 01:47:44ID:Te03YpuM?2BP(1)

>>841
ソースを見たがるのは悪いことなんですか?
0857名前は開発中のものです。2010/05/01(土) 02:43:14ID:CzNI+E4i
ソースを見る事が「このタグは『こういうことをしてるんだな』という事を理解したい」というような学習意欲によるもんならいいと思うよ。
ただ、「よくわかんねえけどこのサンプルを使って適当に修正すれば動くだろ」っていう、原理に興味を持たず楽したいって考えによるもんならそれはクソだって事さ
0858名前は開発中のものです。2010/05/01(土) 03:44:24ID:PfXSjUP0
http://yokohama.cool.ne.jp/pia/kag0504.html

時間制限 選択肢 KAGで検索したら一番上に出てくるぞ?
勉強する気が無いならやめちまえ
0859名前は開発中のものです。2010/05/01(土) 08:19:22ID:/Te57Kpo
初心者と言えばなんでも教えてくれると思ったら大間違いだよ
自分から調べて理解しようという気がなきゃ無理
0860名前は開発中のものです。2010/05/01(土) 09:41:52ID:yQHbMj73
吉里吉里くらいでそんな大層な志いらんよw
08618362010/05/01(土) 09:54:30ID:xHpxi0lI
Blackの画像差し替えたら治りました・・・orz
自分のモニタだと違いがまったくわからないなぁ。
検証していただいたみなさまありがとうございましたm(_ _)m
0862名前は開発中のものです。2010/05/01(土) 11:08:35ID:1xhr5RBY
>>860
日常生活のありとあらゆる場面で言えることだと思うが。
志というほどのことでもない。
0863名前は開発中のものです。2010/05/01(土) 16:09:00ID:1P46rHrU
>>861
キャリブレーションしろ。
色の感覚おかしくなるぞ。
0864名前は開発中のものです。2010/05/01(土) 18:47:50ID:pYMMaZf8
抜きゲとかでよくあるホイールでシーン巻き戻しが実装出来るプラグイン有りますか?
0865名前は開発中のものです。2010/05/01(土) 21:26:47ID:jVEbN6dB
>>864
そんなガチガチの実装依存なプラグインがあるか。

ちょっと考えてみた。
アルゴリズム的にはゲーム中の全ステートとテキストのスナップショットを定期
的に取ってユーザーの任意のタイミングでスナップショット書き出せばいい感じか。
パッチ耐性を保つためにどこでスナップショットとるかだな。

ゲームの進行記録を踏破順に持っておい
て巻き戻すときに逆方向にたどって反対
の変数操作をすればスナップショット取る必要ないか。

まあどっちにしてもシナリオをナレーティブにスクリプトに落とし込んでたら実装できないな。
シーン管理やらないとメンドクサイ。
仕様決めないとどうしようもないぞ。
0866名前は開発中のものです。2010/05/01(土) 21:40:44ID:CzNI+E4i
「セーブはラベル単位でしか出来ない」=「ラベルがキチンと定義されてればそこまで辿る事は出来る仕様」ってのを逆手にとって
『現在のラベル箇所よりも一つ手前のラベル部分のシナリオを実行する』という形で再現するのは出来そうだわな。
正直そこまでやるのはしんどいけど
0867名前は開発中のものです。2010/05/01(土) 22:24:23ID:jVEbN6dB
一番簡単でバグの出にくい方法を思いついた。
分岐条件を固定して全ルートを網羅したグラフのノードにピンポイントで飛ばせばいい。
それなら複雑な操作もあったもんじゃない。
ひぐらし祭カケラ遊びがこういう感じの実装だった気がする。
0868名前は開発中のものです。2010/05/01(土) 23:21:02ID:Te03YpuM?2BP(1)

>>857
そんなつもりはないんですけど、普通そう思いますよね。すみません。
>>858
ありがとうございます。
自分では1時間くらい探したんです。
タグリファレンス(しか知りませんでした)を探したり、検索エンジンで
いろんなキーワードを並べて検索して見たんです。
結果的に簡単に見つかるもの(おそらく)だったのでそう言われても
言い返す言葉も卑屈に聞こえるでしょうが、
勉強する気がないわけでもやる気がないわけでもありません。
本当にありがとうございました。
0869名前は開発中のものです。2010/05/02(日) 14:53:08ID:Lp4Acnec
ゲームとかをやっていると CTRLでスキップしている最中でも一時的にそのスキップをとめてCGや演出が入る。
その間もCTRLを長押ししてると その演出が終わったあとにまたスキップが開始する

といった感じのシステム?があるんですが、これはタグレベルで実装できますか?
Cancelskipだと再開しないし・・・
08707492010/05/02(日) 15:27:53ID:ikvsHM+P
これでどう?

[eval exp="tf.skipMode = kag.skipMode"]
[cancelskip]
; <- スキップされない演出
[eval exp="kag.skipKeyRepressed = true" cond="tf.skipMode == 4"]
0871名前は開発中のものです。2010/05/02(日) 15:37:55ID:ikvsHM+P
ちなみに↑は「キー入力によるスキップ」の自動再開しか考慮してないから、
メニュー等で設定した「次の未読までスキップ」とかも再開させたい場合には、
tf.skipMode の値に応じて skipToStop() などを呼び出してやる必要がある。
0872名前は開発中のものです。2010/05/03(月) 17:57:01ID:pfKcvUbr
(・∀・)
0873名前は開発中のものです。2010/05/04(火) 16:37:02ID:YeYMamV4
[iscript]〜[endscript]間での関数の引数渡しがよく解らん……

ともあれテ○リスは無事作ることが出来た。
0874名前は開発中のものです。2010/05/04(火) 18:30:20ID:994z8v9B
テトリスならかなり前にソース付きでスレに上がってたよ
0875名前は開発中のものです。2010/05/04(火) 18:32:08ID:T88ahr6q
>>874
人生の効率を考えるとテトリスを再開発するのは効率が悪い
なので、ソース、exe形式をオープンで公開するのが一番効率がいい
そして、無料だとなお経済効果もあっていい
0876名前は開発中のものです。2010/05/04(火) 18:42:58ID:994z8v9B
いや誰もそんな話してないから
0877名前は開発中のものです。2010/05/04(火) 20:37:15ID:APqQPi9Y
なんだ経済効果って
0878名前は開発中のものです。2010/05/04(火) 20:42:22ID:U1g3Flnj
>>873

iscript は、シナリオパース時に吉里吉里がそこの tjs スクリプトをあわせて実行してくれるというもので、
関数登録やクラス定義の類だとグローバルに登録されるだけなので、そこで引数をわたせたりするってことはできない。

普通は、iscript はADV用のスクリプトとは別に、起動時とかに一括して登録する部分でつかって、
KAG中からは eval タグまたはエンティティ記述で呼び出す、といった使い方をする
0879名前は開発中のものです。2010/05/04(火) 23:52:00ID:YeYMamV4
なるほど。

[iscript]
function aaa(){
tf.zzz=bbb(tf.xxx,tf.yyy);
return;
}
function bbb(x, y){
if(x+y>0) return 1;
else return 0;
}
[endscript]

こういうの不可ってことでOK?
0880名前は開発中のものです。2010/05/05(水) 00:12:28ID:pMZKVX5V
引数はちゃんと渡せるよ。iscriptは単純に「endscriptタグが出てくるまでの間をTJSの式として評価する」的な動作なので
ちゃんとした関数やクラスを書けばhogehoge.tjsというファイルを読み込むのと同じよーに動作はした筈(うろ覚えだけど)。
もっとも、そういう「ちゃんとした関数やクラス」を作ってるんであれば、わざわざiscript〜endscript間で書くよりも
hogehoge.tjsという別ファイルを用意してそこでキチンと定義した方がメンテナンス性上がるんじゃね?っていう別の話もある。

[iscript]
function fooFunc(aValue, bValue){
// aとbを足した値が1以上なら1, そうでなければ0を返す
return ((aValue+bValue)>0) ? 1 : 0;
}
[endscript]

@eval exp="System.inform( fooFunc(1, 0) )"
@eval exp="System.inform( fooFunc(0, 0) )"

といったような事をfirst.ks辺りに書けばちゃんと1, 0がダイアログで表示されると思う。
だから>>879の例も一応動作はするんじゃねーかな。試してないけど

まあもっとも、関数aaaの中でtf.zzzに関数bbbの戻り値を代入するよりも
function aaa(aValue, bValue){
   return bbb(aValue, bValue);
}
のようにして
@eval exp="tf.zzz = bbb(tf.xxx, tf.yyy)"
といった形で『関数を呼び出す時に改めて値を指定する』方式にした方が可読性は高まるような気もする。あくまで俺の主観だけど
0881名前は開発中のものです。2010/05/05(水) 00:13:25ID:pMZKVX5V
aaa関数しか定義してないのになんでbbb関数を呼んでるんだ……orz
0882名前は開発中のものです。2010/05/05(水) 00:15:12ID:pMZKVX5V
間違えた。定義し直したのはaaa関数なのになんでbbbを呼んでるんだ、か。
@eval exp="tf.zzz = aaa(tf.xxx, tf.yyy)" だな
0883名前は開発中のものです。2010/05/05(水) 00:29:11ID:ADV8g3OF
>>879
いや、別に不可じゃない。ただ、その記述は、単に aaa と bbb をグローバルに定義するだけ。

実際の呼び出しはシナリオ中で

[iscript]
aaa()
[endscript]

とするか、

[eval exp="aaa()"]

とすることになる。むろん その定義の末尾に aaa() を書いてもいいんだが、
毎回まるごと iscript を呼び出すのは定義処理の分無駄になるので定義と呼び出しは分けるのが普通

ただ、>>880 も指摘しているが、その記述、tf というグローバル変数を直接呼び出す処理を関数にうめているが、
それは単純に見通しが悪くなるので、bbb のような引数をとって動作するような部分だけ定義しておいて、
パラメータ渡す部分は

[eval exp="tf.zzz = bbb(tf.xxx,tf.yyy)"]

とKAG側にもってきたほうがスタイルとしては好ましい。
必要なところでグローバル変数使うのはもちろんかまわないんだが、むやみに
使うと、どこで値がさしかわったのかとかがわからなくなるのでほどほどにな
0884名前は開発中のものです。2010/05/05(水) 00:40:11ID:ADV8g3OF
tjs で関数つくっても、それに引数を渡しつつ呼び出すような kag のタグは存在し無いからちょっと使いづらいかもしれない。
eval は呼び出しまるごと書く必要があるし、エンティティはタグの冒頭でないと使えない。

で、そういうときは、tag を独自に増やすように記述すると、案外すっきり処理できたりする。

こんなかんじで処理を登録しておく。
まあ、iscript 使う必要はなくて、Afterinit.tjs に追記するのが良いといえば良い

[iscript]
kag.tagHandlers.mytag = function(elm) {
// 適当に処理を書く
var a = +elm.a + +elm.b;
// 変数は elm.パラメータ名 でタグで指定したものが参照できる。ただし、全部文字列なので数値化したい場合などは
// +elm.a とか前に + をつけて変換すること。
return 0; // これは必要。単発処理なら0。待ち処理とかの場合は -1返したりする。詳細はKAGの内部のコード参照
} incontextof kag;
[endscript]

これの呼び出しは kag からこう書くことになる

[mytag a=10 b=20]

パラメータをいろいろ加工してさらに別のタグを呼び出すといったタグの拡張をしたければ

kag.tagHandlers.newtag = function(elm) {
// elm をいろいろ処理
return kag.tagHandlers.origtag(%[param:値, param2:値]);
} incontext of kag;

とかね。KAGのタグ呼び出しルールを把握するといろいろ応用がきかせやすい
0885名前は開発中のものです。2010/05/05(水) 15:15:01ID:BlG9Rr1l
>>880>>883
おおー!
ありがとう、とても勉強になります!

よし、再度引数に挑戦してくる。
0886名前は開発中のものです。2010/05/05(水) 19:46:55ID:kIuogzes
吉里吉里のBBSっていつからか、RSSが完全に死んでるけど
あれ直らないん?
地味に便利というか、使ってたんだけど
0887名前は開発中のものです。2010/05/05(水) 20:20:51ID:pTSQKGf/
Deeたんに伝えてみたら?
0888名前は開発中のものです。2010/05/05(水) 20:27:24ID:kIuogzes
BBSか直接かどっちがいいか分からんけど
そのうち言ってみる
0889名前は開発中のものです。2010/05/06(木) 07:20:21ID:uYvPEn9J
常に一番イヤなブロックが落ちてくるテトリス「Hatetris」
0890名前は開発中のものです。2010/05/06(木) 17:35:58ID:obm9GtZM
それ、このあいだやってみたらずーーっと S しか落ちてこなかったんだけど
0891名前は開発中のものです。2010/05/07(金) 07:54:09ID:VZ76Wfd0
最近吉里吉里を始めた初心者ですが質問です。
「if 〜 endif の間にはラベルを挟まないでください。」の理由を知りたいのですが。
下記の通りやってみたのですが

*普通のシナリオ1
[jump target=*分岐先に行くかシステム変数Aの値で判断]
*分岐先に行くかシステム変数Aの値で判断
;1で*分岐先を通り、0で真っすぐ*普通のシナリオ2へ
[if exp="システム変数A==1"]
*分岐先
[endif]
[jump target=*普通のシナリオ2]

if 〜 endifの間のラベルでの
セーブ・ロードは認識できるので、今のところ不都合さは感じないのですが、
気になって……
0892名前は開発中のものです。2010/05/07(金) 08:39:02ID:WN8T5hqL
endif外からもそのラベルに飛べるから
0893名前は開発中のものです。2010/05/07(金) 10:46:03ID:NFbqFHxs
質問させてください
pimageで画像を追加した前景レイヤをmoveで移動させた場合について、

[layopt layer=0 page=fore left=0 top=100 opacity=0]
[image layer=0 page=fore storage="立ち絵" left=0 top=0]
[pimage layer=0 page=fore storage="汗" dx=0 dy=0]
[move layer=0 page=fore path=(0,0,255) time=1000]
[wm]

このとき「立ち絵」はopacityの指定に従って擬似的にフェードインしますが、
「汗」はmoveが終わるまで表示されず、wm後に突然表示されてしまいます
両方のファイルが同時にフェードインしてくるようにしたいのですが、
これを解決するような方法はあるのでしょうか?
よろしくお願いします
0894名前は開発中のものです。2010/05/07(金) 19:13:23ID:X5nLmiyN
>>891
ifタグをしている最中ということが、栞に記録されないので、
続くendifタグは無視されるだけで、問題ないけど、
elseタグがあると、elseタグが無視されて、else以下の内容も
実行されてしまう、とかって、、、感じだったかな。
(入れ子だともっと複雑だったか)
0895名前は開発中のものです。2010/05/07(金) 21:32:17ID:5YmanUAA
システムの「最初に戻る」コマンドを一時的に禁止にする方法はありますか?
0896名前は開発中のものです。2010/05/08(土) 00:23:31ID:/Zae7emY
リファよめ
08978932010/05/08(土) 14:42:11ID:vEbyvvXp
自己解決しました
こんなことで丸一晩も悩んだのか……
('A`)-3
0898名前は開発中のものです。2010/05/08(土) 22:51:32ID:v8q/GQXq
吉里吉里でシェアウェアって可能ですか?
0899名前は開発中のものです。2010/05/08(土) 23:05:02ID:l9yMMt2k
商業ゲームも可能です
0900名前は開発中のものです。2010/05/09(日) 02:21:02ID:14xIF9+h
linkやbuttonは kag.fore.レイヤ.links[通し番号]でアクセスしないといけないようですが、
こういったボタンやリンクにjavaスクリプトのID要素みたいな固有の名前を与えて、
通し番号とは無関係にアクセスするような方法はないでしょうか?
0901名前は開発中のものです。2010/05/09(日) 09:09:53ID:bGxbIEwK
メッセージレイヤ1にだけグラフィカルボタンを設定したいんですけど、
どうやったらできますか?
0902名前は開発中のものです。2010/05/09(日) 10:40:08ID:D0AtAVFt
>>899
言葉足らずですみません。
ライセンスの問題ではなく、シェアウェアにしてもカジュアルハックされてしまうんじゃないかということです。
0903名前は開発中のものです。2010/05/09(日) 10:49:41ID:ZdV0odTN
>>902
http://www.google.co.jp/search?source=ig&hl=ja&rlz=1G1GGLQ_JAJP372&q=%E3%82%AB%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%8F%E3%83%83%E3%82%AF&meta=lr%3D&aq=f&aqi=&aql=&oq=&gs_rfai=
日本語でおk
0904名前は開発中のものです。2010/05/09(日) 10:50:15ID:CixGNvJl
>>902
そもそも吉里吉里はオープンソースです
ハックとか以前の問題です
0905名前は開発中のものです。2010/05/09(日) 14:35:15ID:mzPUJaex
単に『中身を解析される』ということをカジュアルハックと言ってるのなら、そんなもん
フリーだろうと商業だろうとされる時はされるよ。特に吉里吉里はソースが公開されてるんだから
>>904の言うようにそれ以前の問題(その気になれば誰でも中身取れる&既にツールもある)。

あるいは>>903の6件目辺りにあるような『容易にデータをコピーされる(割れで出回る)』事をカジュアルハックと言ってるなら
それは吉里吉里とかNスクといったエンジンレベルで考えるべき事ではないだろうね。
もちろん、企業によっては割れで入手してもシリアルがなければプレイ出来ないっていう認証を組み込んでたり、それを利用して
割れで流れてるシリアルを無効にしちまう所もあるらしいけど、そうした機能は吉里吉里に求めるべきもんではない。つーか無い(筈)。
主にインストーラ側で用意するか、あるいは独自にdllを用意して組み込むかして自前で調達するっきゃない。

つまり何が言いたいかっつうと、ハックされる事についての対応を吉里吉里に求めんなよって事です。
その辺りはNスクとかでも似たり寄ったりだとは思うけどね。あくまで「ゲームを作る」為のシステムであって
「ゲームの流通をセキュアに保つ」為のシステムではないんだし。
0906名前は開発中のものです。2010/05/09(日) 14:56:09ID:ZdV0odTN
誰も被害でないから
安心して作る汁
0907名前は開発中のものです。2010/05/09(日) 15:49:10ID:OhsCq8C3
読みにくくてすみませんが、以下のコードのうち、*1と*2は問題なく、
*3と*4はエラーが出るのはなぜですか?
VMの仕様でしょうか?
(継承時に子のメソッド内で親のコンストラクタ呼び出しは認められない?)

class Fuga extends Layer {
function Fuga(){ super.Layer(...); }
}
function HogeFunc(){
return (new Hoge(kag, kag.fore.base));
}

class Hoge extends Layer {
var tmp;
function Hoge(){ super.Layer(...); }
function hoge(){ new Hoge(kag, kag.fore.base); }
function fuga(){
tmp = new Fuga(kag, kag.fore.base); // *1
tmp = HogeFunc(); // *2
tmp = new Layer(kag, kag.fore.base); // *3
tmp = new Hoge(kag, kag.fore.base); // *4
}
}
var hoge = new Hoge(kag, kag.fore.base);
hoge.fuga();
0908名前は開発中のものです。2010/05/09(日) 16:12:53ID:lM/5DB45
>>907
*3 で見えるのは親のコンストラクタ (this.Layer)
*4 で見えるのは自分のコンストラクタ(this.Hoge)
new はクラスを指定する必要があるので、それぞれ global.Layer 、global.Hoge でアクセスする必要がある
0909名前は開発中のものです。2010/05/09(日) 16:18:50ID:lM/5DB45
実装上コンストラクタとメソッドの区別をつけてない TJS2 特有の癖やね
0910名前は開発中のものです。2010/05/09(日) 17:03:40ID:jRrLon9S
前に、りーや氏作の棒グラフプラグインのエラーについて答えてるレスが
あったと思うんだが、いつ頃だったか覚えてる奴いたら教えてくれないか?
今になって参考にしたい。
09119072010/05/09(日) 17:54:23ID:OhsCq8C3
>>909
なるほどそういうことですか。
thisが暗黙に呼び出されていることに気づくべきでした。
回答どうもありがとうございました。
0912名前は開発中のものです。2010/05/09(日) 18:03:02ID:lFtGVH69
>>909
この実装は困るよな。
真似てるjavascriptのほうでも関数をnew付けて呼び出したときに
挙動が違うだけで本質的な違いがないのに実装上はコンストラクタと関数を
分けなきゃいけないから少し面倒な実装をする。
jsは既存のコンパイラコンパイラじゃ仕様満たせないから
手書きがほとんどだが吉里吉里も似た理由なんだろうか・・・。

ラムダがあるのに実装上レキシカルクロージャ未実装だったり吉里吉里の実装は潜在的にバグを誘発しやすい。
0913名前は開発中のものです。2010/05/09(日) 18:11:56ID:mzPUJaex
「コンパイラが認識ミスするような書き方」をしなくなる、という点では有意義かもしれんけどね
暗黙のうちに呼び出されてるのがthisなのか他の位置に在るものなのか、本来なら気にしなくて良いような事でも
目を向ける機会になるってのは確かだし。まあ、そもそもそんなややこしい認識されちまうような書き方すんなよって意見もあるだろうけど。
0914名前は開発中のものです。2010/05/09(日) 20:26:46ID:GZuS7odZ
>>896
出来ました。アドバイスありがとうございます。
0915名前は開発中のものです。2010/05/09(日) 21:46:32ID:3dBWBxJN
すいませんが質問させてください。

画面上に表示させるステータスをON/OFFさせるボタンを配置したいので
グラフィカルボタンでメッセージレイヤ2を見えなくしたり見えるようにする方法を教えてください。
0916名前は開発中のものです。2010/05/09(日) 22:29:24ID:E8XRdbqZ
Afterinit.tjsとかfirst.ksで(後者の場合は@iscript, @endscriptタグ必須な)

function hideMessageLayer( hideLayer=0 ){
kag.fore.messages[hideLayer].visible = false;
kag.back.messages[hideLayer].visible = false;
}

ってのを定義して、グラフィカルボタンのexp属性を
exp="hideMessageLayer(非表示にしたいメッセージレイヤの番号)"
みたいなのを継ぎ足せばいいんじゃね
09179152010/05/10(月) 00:10:56ID:ID0dgP8e
>>916
ちょっと難しそうですね。
ここで聞いてよかったです。ありがとうございました。
0918名前は開発中のものです。2010/05/10(月) 19:44:39ID:12i0tLRY
>ややこしい認識されちまうような書き方すんなよ
global明示ならthisも明示にすれば良かったと思うよ。
スクリプトはややこしい部分排除してこそ。
0919名前は開発中のものです。2010/05/10(月) 19:46:47ID:z2NC2EXb
どなたか>>900についてヒントだけでもいただけないでしょうか……
0920名前は開発中のものです。2010/05/10(月) 20:20:13ID:+BwWz8Ad
>>919
登録時に辞書つくって登録するような処理を MessageLayers に足す

例: kagex の MessageLayers.tjs を names で検索
0921名前は開発中のものです。2010/05/11(火) 02:14:42ID:ZjiRx+ta
910だけど、どうでもいい質問してごめん。
調べても調べても調べても出てこないと思ったら、
思ったよりずっと昔のレスで驚いた。時が経つのは早いな。
どれだけゲーム制作から遠ざかっていたかが良く分かる。
0922名前は開発中のものです。2010/05/11(火) 19:41:23ID:FN0K/hjJ
>>920
外部にkey->value,value->keyの両方で取れるマッパー作ったほうがMassageLayerいじらない分ソースの変更に強いんじゃね?
0923名前は開発中のものです。2010/05/11(火) 22:10:35ID:PUhX0KU9
別にMessageLayerクラスをいじらなくても、MainWindow.tjsの中
のgetHandlers()内で
link : function(elm) 及び button : function(elm)を経由すれば出来そうな処理ではあるな。
例えば

// AfterInit.tjsとかテキトーな所でglobal.LinkObjects(仮称)を定義しとく
global.LinkObjects = %[];

button : function(elm){
// グラフィカルボタン
if(currentWithBack) current.comp.addButton(elm);
current.addButton(elm);
// ここから追加行(同じもんをlink : function(elm) にも付ける)
if(elm.id !== void){
global.LinkObjects[elm.id] = current.links[-1]; // 最後に作られたリンクをelm.idで関連付ける
}
// ここまで追加行
return 0;
} incontextof this,

er : function(elm){
// 現在のメッセージレイヤのクリア
if(historyWriteEnabled) historyLayer.repage();
if(currentWithBack) current.comp.clear();
current.clear();
// ここから追加行
global.LinkObjects[elm.id] = %[]; // erタグが呼ばれたらリンクオブジェクトが全部死ぬらしいのでついでにコイツも殺しとく
// ここまで追加行
return 0;
} incontextof this,
0924名前は開発中のものです。2010/05/11(火) 22:12:25ID:PUhX0KU9
みたいな処理をgetHandlers()の中に組み込む(button, linkといった部分を上記に置き換える)とすれば
[link target="*label" storage="hogehoge.ks" id="foo"]リンクテキスト[endlink]
なんてタグが呼ばれた場合、
global.LinkObjects.foo を呼び出してやれば当該リンクオブジェクトにアクセス出来るような気がする。

実際に試した訳ではないから上記ソースが動作する保証は無いが、あくまで考え方の一つとして受け止めといてくれ。
0925名前は開発中のものです。2010/05/11(火) 22:13:19ID:PUhX0KU9
erタグ部分のところの追加コードが間違ってたな……。
global.LinkObjects = %[];
だ。
0926名前は開発中のものです。2010/05/11(火) 22:59:27ID:yVMrL44V
レイヤのコピーとかトランジッションとか、タグのwithback属性とかも考慮するんだと、
全体通しで管理するより、MessageLayerで、links配列と平行する配列なり辞書に名前登録で管理したほうが、頭使わなくて済みそう?

900はなんで、そんなことしたいんだろう?

単に順番が狂うのが問題とかなら、buttonタグとかをマクロで包んで名前属性とカウンターつけて
必要なところで、辞書に名前とカウンターの値を保存とかってぐらいでも、よさげだけど。
0927名前は開発中のものです。2010/05/11(火) 23:16:26ID:5CRr1KQL
>>921
あー、懐かしいなそのプラグイン…
りーやは俺です
俺も吉里吉里からすっかり離れてしまっているけど
このスレは見てるので何かあればわかる範囲で答えるよ
0928名前は開発中のものです。2010/05/11(火) 23:37:46ID:9q2nxYVR
ふと某マジカルプリンセスを思い出した
09299102010/05/14(金) 18:07:40ID:TjY00Xnu
>>927
おおお……生ける伝説に出くわした気分です。
便利なプラグインを公開していただき、ありがとうございます。
分からないことがあったら書きこませて貰いますね。
他のプラグインも含め、未だに使ってる人多く見かけるんで、
りーやさんの功績は偉大ですね。
0930名前は開発中のものです。2010/05/16(日) 00:32:59ID:ue5nl5Ig
0931名前は開発中のものです。2010/05/17(月) 05:16:16ID:au3T9TBt
やっと規制解除された( つω`)
>>870
遅れましたが、思い通りの動作ができました!!有難うございます。
0932名前は開発中のものです。2010/05/17(月) 07:04:19ID:au3T9TBt
また規制されてる間に質問が・・・
文字を決まった範囲の中央に表示させようとおもい.lengthで調べたのですがaaaaとpppp、PPPPでは同じ文字数でも長さが変わってしまってだめでした(大文字小文字含めて5〜30文字くらい)。
新しいメッセージレイヤーとかはなるべくない方向で作りたいです。
0933名前は開発中のものです。2010/05/17(月) 08:40:27ID:AxAa+EF+
プロポーショナルフォント使用してるんじゃないの。
文字幅揃えたいなら等幅フォントにしておいた方がいいよ。
0934名前は開発中のものです。2010/05/17(月) 09:15:54ID:au3T9TBt
>>933
なるほど・・・システム面じゃなくてフォントの問題だったんですね。
勉強になります。ありがとうございます〜
0935名前は開発中のものです。2010/05/17(月) 14:08:02ID:XdD4kg6Z
ループについて質問させて

@eval exp="tf.zanzouda=1"
@eval exp="tf.zan=1"
*ru-pu
@eval exp="tf.zanzouda = ++tf.zan
@if exp="tf.zanzouda<5"
@move layer=0 path=(210,60,256) time="100"
@wm
@move layer=0 path=(190,60,256) time="100"
@wm
@endif
@if exp="tf.zanzouda<5"
@jump target="*ru-pu"
@endif

tf.zanzoudaが50になるまでループさせるつもりなのですが、無限ループに陥りますorz
0936名前は開発中のものです。2010/05/17(月) 14:22:47ID:5jFHn2ZI
@eval exp="tf.zanzouda = ++tf.zan"

ダブルクォーテーション閉じろヴォケ
0937名前は開発中のものです。2010/05/17(月) 14:24:49ID:XdD4kg6Z
うほっ。すまん、ありがと
0938名前は開発中のものです。2010/05/17(月) 14:43:21ID:XdD4kg6Z
できた。ありがと
0939名前は開発中のものです。2010/05/17(月) 17:22:49ID:Ofec2mIb
>>935
KAGって、これでエラーが出ないのか……。
いいことなのか悪いことなのかw
0940名前は開発中のものです。2010/05/17(月) 19:05:28ID:0ER5kOn7
>>939
マクロ作るときに便利らしいぜ。
0941名前は開発中のものです。2010/05/17(月) 20:01:38ID:BPmoD4CV
>>932
>>933の指摘で考え的には解決しちゃってるのかもしれないけど、単純に『特定の範囲内で、特定の文字を中央に表示させる』のが目的なら
lengthを取るよりもgetTextWidthないしgetTextHeightを使い、実態のサイズを取得した方が良いかもしれんよ。

例えばmessage0だったら
@eval exp="tf.strWidth = kag.fore.messages[0].ll.getTextWidth('あいうえお')"
みたいな感じで「その時点のフォントサイズで'あいうえお'を表示する場合、どの程度の横幅を取るのか」を取得出来る筈。(getTextHeightなら縦幅)
そんな具合で実効値を取得した方が都合が良いかもしれん。(lengthで得られた文字数 * フォントサイズ みたいな感じの概算でやると>>932みたいな結果になる)

ぶっちゃけkag.fore.messages[0].ll であってたかどうか自信無いけどな!
0942名前は開発中のものです。2010/05/17(月) 22:21:20ID:pFZcGK/K
背景(解像度:640x480)にjpgまたはpngのファイルを使おうと思ってます。
どちらの形式が動作的に好ましいですか?
0943名前は開発中のものです。2010/05/17(月) 22:23:34ID:bdb7O1Y0
画質ならPNG
JPGはよほどディスクサイズが逼迫してない限り使わん。
0944名前は開発中のものです。2010/05/17(月) 22:55:13ID:EXO1Pg77
効果音(buf=0)が再生中かどうかを判定するのって、どうやるの?
0945名前は開発中のものです。2010/05/17(月) 23:14:23ID:bdb7O1Y0
kag.se[0].status === "play"
0946名前は開発中のものです。2010/05/18(火) 08:06:14ID:TCIE4FsK
>>941
あなたが神か。
すげー綺麗に整列できました。 有難うございます!!

因みに私はこんな所から参照しちゃいました ><)つkag.current.lineLayer.font.getTextWidth
0947名前は開発中のものです。2010/05/18(火) 12:28:21ID:51MD1blL
そういう時、参照渡しっつうかエイリアスっつうか
「名前が違う得られる結果が同じ」な構造の変数っていうのは便利だよな。
0948名前は開発中のものです。2010/05/18(火) 15:22:57ID:TCIE4FsK
さてまた詰まった/(^o^)\
BGM流して終了した時に関数呼び出したり、今現在何秒目か調べたりする事って可能かな?
1個の曲が終わったら違う曲へ移動してずっと再生を維持させてループさせたい
とりあえずタイマー使って自分で指定してみたけど たまにずれたりして曲が終わってもなかなか移動しなかったり、早すぎたり。
そういうことがあったので実際のプレイ経過時間とイベントタイマーとで同期とったりしたいんですが難しいですか?
0949名前は開発中のものです。2010/05/18(火) 15:28:46ID:NkGH8Zep
>>948
ttp://devdoc.kikyou.info/tvp/docs/kr2doc/contents/LoopTuner.html
ttp://devdoc.kikyou.info/tvp/docs/kag3doc/contents/Tags.html#setbgmlabel
ttp://devdoc.kikyou.info/tvp/docs/kag3doc/contents/Tags.html#setbgmstop
0950名前は開発中のものです。2010/05/18(火) 17:38:43ID:TCIE4FsK
>>949
高等すぎて分からない\(^o^)/タイマーであきらめよう・・・
0951名前は開発中のものです。2010/05/18(火) 23:28:35ID:MbgWKx5I
>>947
equalsメソッドがあればいいな
0952名前は開発中のものです。2010/05/19(水) 00:26:57ID:3UoSbAme
こんばんは。
ちょっとお尋ねさせてもらいたいんですが、
KAGに、クリックを監視するような命令ってあるのでしょうか。
オープニングデモみたいなのを作ってて、
鬱陶しくなったらクリックしたらスキップ、をしたいのですが、
こういった命令の有無があるかどうか知りたいです。
どうかお手隙の方、教えてくださいませんか?
レス数が950を超えています。1000を超えると書き込みができなくなります。