ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。
※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!
前スレ:■吉里吉里/KAG/TJS雑談質問スレ■その17
http://pc11.2ch.net/test/read.cgi/gamedev/1234356309/ 吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/ 吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/ ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
必要に応じて
>>3-5 の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
!,-/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ, i''./:::::::::::::::::::::://::::::l:l'i::::::ヽ:::::::ヽ:::::::::::::::l丶 お尻の穴に 〉!:::::::::::::::l:::::://l:::::/ll .lヽ:::l !ヽ::::l:ヽ::::::::i::l::l 指をいれて ヽ::::::::::::::l:l::::/:l .l:::/ l l,ヽ:l-l-l:::lヽ:ヽ::::::l:l.ll 匂いをKAGと l::l.l:::::::ll.l:::l''l~~∨' ' ' _,-'i-∨ l::::l::::l:l,,l_ _l::l .l::::l .l,l:l''~(~~i'' l ヽノiヽ.l:::::l:l:l::::::~''-,_ 新スレですよ _,-'':::l:l l:l.l '~l .ll||ll l l l|||l.ノ l:::::l-''''''''---,,'-,_ ,-':::::_,,,-ヽl::::::l ヽ,,,,,,ノ '--'' l::::::l ~ /-''''~ l:::::::l.l ____'___ ./l:::::::l l:::::::l'ヽ. l l / l:::::::l l:::::::ll ',,- ,_ ヽ-' _,-''--,,ll::::::l ~
"右クリックした位置にレイヤーを表示"ってことをやりたいんだけど、 [current layer="message2"] [position color="0xFF00FF" visible="true" width="300" height="200" opacity="128"] [eval exp="kag.fore.layers[2].left=kag.fore.base.cursorX"] とやっても駄目だった。 どうすればええのん?
[current layer="message2"] [position color="0xFF00FF" visible="true" width="300" height="200" opacity="128"] [eval exp="kag.fore.messages[2].left=kag.fore.base.cursorX"] これでどうよ
うわー、そういうことか。恥ずかしい。。。。 ありがとう。
マクロに属性っていうのあるでしょ? 関数でいう引数のようなやつ。 あれを使って、マクロ自体を渡すことって出来ないのかなぁ。 「会話用のマクロに、ルビ込みの会話本文を渡す」 ってのをやりたいんだけど、 [macro name="kaiwa"] 【[emb exp="mp.chara_name"]】「[emb exp="mp.text"]」 [endmacro] (mp.chara_nameはキャラの名前、mp.textは会話本文) というマクロを作って、 [kaiwa chara_name="ミク" text="お尻の穴にネギを入れて匂いを[ruby text=かぐ][ch text=KAG]"] とすると、そのまんま[ruby]タグまで表示されちゃって、 【ミク】「お尻の穴にネギを入れて匂いを[ruby text=かぐ][ch text=KAG]」 と表示されちゃうのよ。 これが何とかならないかなーという相談。 [emb exp="mp.text"]が、文字列そのまま返すのじゃなくて、スクリプトの文字列として置換するような動きをしてくれると有り難いんだけどなー。
>>11 おさかな定食のルビのやつにそんなのあった希ガス
吉里吉里でゲームを作るためにはどんな言語学べばいいの?
KAGとTJS
吉里吉里関連の汎用ソースや、 関数サンプルとかを保存できるwikiってどこかに無かったっけ?
>>1 乙
>>11 おさかな定食にあったタロ氏のルビのやつは、
文章でなくて、語句とルビを1セットでマクロ(ruby2)に指定する。
@ruby2 textかぐ= ch=KAG
独自の記述ルールを作って改造とかすれば、
embタグとruby2マクロの部分に処理を分解するみたいなことは出来るだろうが……
タグやマクロを直接、渡すっていうのじゃない。
会話本文はマクロの属性に指定してたらマクロの外が手間だし、可読性も下がるだろうし……
なんで、そんなことしたいのかね〜? 普通なら、マクロにするのは名前の表示までか。
配列要素とかから、一文ずつ変数にして送りたいとかか?
なら、過去ログを「pengings」でクグルと
tjsから「動的」にタグを掃きだすって話題がみつかると思うよ。
(やっぱタグへ分解する仕組みは、別途必要だろうけど)
>>18 おお、それだ!ありがとう。
それにしても完全に放置されてるな・・・orz
今同人ゲーでCV入れようと思うんだが、何かいい手はないだろうか。 セリフのときにCVが再生されるのはもちろん、履歴表示のときに、アイコンをクリックするとCVが再生されるような機能もあるとありがたいんだが。 なるったけマクロか何か組んで楽にしたんだが……。
CVなんて[playse]と[hact]〜[endhact]でよくね
かぐや姫sutdioを公開していたサイトが消えていて、DLできません 誰かください
既存のプラグインを使って TJSで円グラフを作成する上手い方法って無いでしょうか? 色々やってみたけど、挫折しそうです・・・
そもそも円グラフじゃないと駄目な理由は? あと、色々って具体的に何をやってみて駄目だったの?(代替案も出せやしない)
>>25 他にも折れ線グラフや棒グラフなど
作っているのですが、
パーセンテージのデータ表示するには
円グラフが一番見やすいと思うので、
可能な限り実装したいんです。
色々やったのは、公式プラグインの
agg.dllを使ってのSVG描画を試してみたんですが、
AGGの仕様とかでグラフはおろか
楕円弧曲線のpathにも対応してないっぽかったので、
結局、扇を描くことすら出来なくて途方に暮れてます。
公式プラグインは一通り見てみたのですが、
見落としがあって円や扇の描画が出来るものがないか、
もしくは何かすごい方法で出来たりしないものか聞きたかったのです。
プラグインとか使わなくても、 pimageと、素材の用意の仕方で円グラフは出来るよ 1パーセントの扇型のマスク付き画像を100種類用意し それを連結して1組の画像にする pimageで、1パーセントずつ切り抜いて張り合わせる まともに描写していたら大変だから tjsとか使って for で繰り返し処理をするなり マクロや、サブルーチン化して割合や、座標を指定するだけで 表示できるようにしておくのがスマートだな 色違いのセットを複数用意すれば1つの円グラフで 複数のデータを表示できる
>>26 ごった煮プラグインで扇は無理だけど円が描けるよ
直線も描けるよ
上手い方法とはとても言えないし処理重くなりそうだけど
この2つゴリ押しすれば円グラフ描けるよ
画面サイズを800×600にしたのですが、メッセージレイヤの大きさがデフォルトのままになっています config.tjsにも目を通したのですが、いまいちよくわかりません・・・どうすれば良いのでしょうか
>>26 layerExDraw プラグインなら Layer.drawPie で一発
>>29 Config.tjs をもう一度上から下までじっくり読みなされ
>>30 これはすげえ。
良いものを拾わせてもらった。
横レスだけどthx!!
>>30 素人には理解できないすごさだ…
やっぱ文系ではだめなのかー
layerExDrawプラグインのいいとこは、さりげなく emf はく機能とか装備してることだよね var layer = new Layer(win, win.primaryLayer); with (layer) { .setSize(120,120); .visible = true; .record = true; var app = new GdiPlus.Appearance(); app.addBrush(0, 0, 0); .drawRectangle(app, 0, 0, .width, .height); var n = [120,30,70,40,100]; var c = [0xff0000ff,0xff00ff00,0xffff0000,0xffffff00,0xffff00ff]; var s = -90; for (var i=0;i<n.count;i++) { var app = new GdiPlus.Appearance(); app.addBrush(c[i],0,0); app.addPen(0xff000000,%[width:1, lineJoin:GdiPlus.LineJoinRound],0,0); .drawPie(app, 10, 10, 100, 100, s, n[i]); s += n[i]; } .saveRecord("pie.emf"); }
あばばばはば
>>30 >>34 おかげさまで、
ねんがんの円グラフレイヤクラスを手に入れました!
どうもありがとうございます!
他の御二方もありがとうございました!
Live Makerのセーブみたいに、 確認ダイアログと、栞名編集のinputStringを兼ねたやつを作りたいのですが、 栞データそのものに変数を新たに加える場合、どうしたら良いでしょうか? 右クリックサンプルを使用していて、kag.scflags.bookMarkComments[num]を 弄って利用できないかと思ったのですが、違うようでした。 サムネオンマウスで詳細がポップアップ表示する仕組みにしたいため、 EditLayerそのまんまではなく、変数の文字を日付や番号と同じように表示したいのです 何か良い方法はないでしょうか?
>>38 「rclick_tjs.ks」を参考にしてるっぽいけど、tjs不慣ぽい?
まず、
>>1 の「Tips/その他」に「右クリックサブルーチンとは」を参考にして、
KAGシナリオからのアプローチを試みるのが良いと思う。
「OUTFOCUS Wiki」の
「割と裏技っぽいもの」-「KAG」-「グラフィカルボタンでセーブデータのサムネイル表示」
が使えると思う。
栞名はたぶん、kag.scflags.bookMarkComments[num]かkag.bookMarkComments[num]?
ポップアップは、buttonタグのonenter属性にkag.process()を使って「詳細」表示のシナリオへジャンプ。
BGMにMP3を使いたいのですがどうすればいいのでしょう
おとなしくOggにするのが吉 MP3しかソースがないんだったら、変換ソフトを使ってOggにする ただし素材とかだったらライセンスに一応気を配ること
わかりました。ありがとうございます
43 :
38 :2009/06/13(土) 00:02:20 ID:vDOJojii
>>39 レスありがとうございます。
お察しの通りtjsはまだまだ不慣れです・・・
それでもなんとかカスタマイズしてきたのですが(主にBBSログのコピペ)
やはり、手の届く範囲でまずやった方がいいんですね・・・
参考先など、すごく丁寧に案内してくれて感謝します。
吉里吉里で作ったゲームの画面結果を、.txt形式で保存することは可能でしょうか? ステータスを入力なんかは変数などを使ってできるのですが、 入力したステータスをテキスト形式で保存したいのです
>>44 変数の内容を、テキストに出力するって事なら
TJS2リファレンスの、
Array クラスのloadメソッド saveメソッドの説明に、
それらしいヒントが書いてあった気がした
>44 次の段階で何に困るか何となく想像ついたんで言っとくけど、 saveStruct.dllが役に立つと思うよ
マウスホイール回した後になぜかキーボードが反応しなくなるなー 何なんだろうこの現象
フェードアウト用の待ち命令[wb]って、ちゃんとフェードアウト命令の後に置かなくてはならないの? 置かなくても大丈夫?
>>47 どういう状況でのことかによるけど、、
単純にフォーカスが別レイヤに移ってるだけでは?
buttonタグって常駐させられない? メッセージウィンドの上にセーブとかロードを置きたいんだけど tjsいじらないとキツイ?
何がしたいのかよくわからないけど、何度もボタンを押したいなら[unlocklink]タグでよくね?
systembutton.ksを使えばいいじゃない
うんうん それ用のシステムボタンプラグインは吉里吉里に梱包されてるよ 前スレの最後で話題に出たばかりじゃない
どなたか前景レイヤを縮小するスクリプトの記述知ってる人いらっしゃいませんか? 立ち絵をそれ用に作ってしまったもんで、今は股間同士で会話するトンデモ状態になってます KAG EX2、バージョンは2.30で制作しています zoom=タグに-とか0.〜とかreductionとか、色々試してみたけどやっぱ駄目でしたorz
どういう状態か見てみないと答えられないよ。 まずはその股間同士の会話の画像見せて。
>>54 TJSでもいいけど、拡大縮小プラグインあたりが簡単でいいんじゃね
素材自体を縮小しておくのはだめなのか?
[layopt layer=○ page=fore visible=true][image storage="△" layer=○ page=fore pos=center]
[animstart layer=○ seg=1 target="□"]
↑こちらが現在のスクリプトです。参考までに
>>55 正確に言いますと、ブラウザの中に股間から足が写って、それがひしめきあってる状態です
画像は…恥ずかしすぎるっすorz
ですが最悪の場合、キャプった物をお見せ致します
>>56 実は立ち絵に目パチ口パクのアニメーションを使用してまして、
試してみるとどうやらそちらのプラグインでは対応していないようなのです
EXに移行したのもそれが原因だったり…
>>57 それも考えてはみたんですが、別サイズごとに一からアニメーションを設定し直すのは労力的な面で大きいかなと;
かと言って、小さい画像で拡大を使うと汚くなりますし…、ぬーん
>>54 tjsに挑戦!てところで拡大縮小プラグイン公開されてる
あとアウトフォーカスの逆引きマニュアルとかにもなかったっけか?
自分は前者使わせてもらってるけど
使いやすいよ
kagex2 なら、image タグで zoom=50 とかやったら 50%サイズにならね? pos の指定は、画像に対する左右のセンタリングだけだから、Y位置の補正をしたければ あわせて例えば yoff=200 とかやれば 200pixel 下にさがると思うよ
61 :
54 :2009/06/16(火) 02:04:29 ID:vyGKTSm/
めでたく解決しました!
どうやら諸悪の根源は、元画像のサイズが大き過ぎた為のようです
多少の縮小では気付かなかったという、なんともおマヌケな原因でした…
>>59 アドバイスありがとうございます
そちらのサイト、参考にさせて頂きます
>>60 そんなタグがありましたか!
丁度そちらでも悩んでいた所でしたので、ありがたく使用させて頂きます
お騒がせしてしまい申し訳ありません
皆さん、ご指南本当にありがとうございましたm(__)m
62 :
50 :2009/06/16(火) 07:44:46 ID:3Kvc5Uf6
前スレ見れないんです。 systembutton.ksを使ったやり方も調べたけどよく分からなかったので 自分でわかるようなやり方をしてみようと… first.ksで [macro name=botan] [locate x=300 y=5] [button graphic=SAVE] [locate x=350 y=5] [button graphic=LOAD] [endmacro] として 使いたいところで *スタート|スタート [cm] [botan] みたいな感じ。 まだ試せてないのですが。 systembutton.ksの方が良ければ使い方のサイト等 教えてください。
systembuttonプラグインは吉里吉里本体と一緒に動くのが入ってるでしょうがよ・・・
64 :
50 :2009/06/16(火) 08:02:16 ID:3Kvc5Uf6
すごく馬鹿らしいかもしれませんがそれが分からないんです。 systembuttonを実行フォルダに入れても 実行してもエラーです。 なにかが根本的に違うのはわかるのですが…
[call storage="systembutton.ks"] とかはやってるかい? 動いてるソースがあるんだから、それを弄ってどこがどうなってるかを把握した方がいい。 いちいち聞かずに解決できるようにならんと。
66 :
50 :2009/06/16(火) 10:01:45 ID:3Kvc5Uf6
>>65 やっていませんでした。
基礎ができていないのはわかっているのですが
正直どこを見てそういう知識をつければいいのかが
まったくわかりません。
KAG System リファレンスはかなり調べたのですが…
自分で解決できるようになりたいです。
KAGの範囲なら、実際のところ、KAG リファレンスがすべてだよ 解説サイトとかそういうのもリファレンスにのっていることを繰り返してるだけにすぎないし 本当に特殊なこと以外は 吉里吉里本体についてくる、KAGリファレンス・TJSリファレンス・吉里吉里リファレンスの3つでたりるから ようは慣れだな あとはsystemフォルダに入ってるファイルの中身を読むこと
68 :
50 :2009/06/16(火) 11:03:29 ID:3Kvc5Uf6
systemフォルダはあまり読んでませんでした。 アドバイスありがとうございます。
ド素人がいきなり、Systemフォルダの中を漁っても、返り討ち。
「systembuttontest.ks」が「systembutton.ks」をKAGのシナリオで使うサンプルに。
なっているが、そのサンプル、自力で動かせないとなると、
(「YesButton」,「NoButton」っていうボタン用グラフィックを別途用意する必要があるのは、
ちょびっと吉里吉里、解ってないとあれかもだけど)
もしかしたら、もう、解決してるかもしれないけど、一旦、落ち着くのが吉。
62の方法に立ち戻ってから試行錯誤してみた方がいいかもしれない。
(
>>51 のアドバイスとか、実はなかなか含蓄が…)
70 :
50 :2009/06/16(火) 15:16:34 ID:3Kvc5Uf6
>>69 Systemフォルダ見て撃沈しました。
YesButtonとNoButtonはグラフィックボタンの
SaveとLoadを引用してみようと思ったのですが、
表示されず悪戦苦闘してました。
62の方法も練習を兼ねて試行錯誤してみます。
>>51 のアドバイスも調べてみたいと思います。
71 :
44 :2009/06/16(火) 19:19:46 ID:YAQ/YYVf
>>45 ,46
おれいが遅くなりました。
>>46 の予言にはまだたどり着いていないけど、がんばってみます
「systembutton.ks」とか「rclick_tjs.ks」がらみとか…… 早く、お魚定食が復帰してくれると、いいんだけどね。 今は、初心者には時期が悪いね。
おさかな定食も結局はある程度かじった向けだと思うぞ? まるっきり初心者が手を出すもんじゃないと思うが。 ログに出てるだろー的な初心者質問も、あそこも多かったしなあ
要領をえない質問かもしれませんが、相談させてください。 □キャラA □キャラB □キャラC □キャラD □キャラE □キャラF □キャラG □キャラH □キャラI 1班: 2班: 3班: 候補キャラを選択してチームわけをしたいと考えています。 checkboxタグで選択ボックスを作り、commitタグで確定したきゃら名を班名の後ろに表示……まではできました。 班名の後ろに、1度確定させた班(変数)を消す『取り消しボタン』を表示させたいのですが、clearvarでは全部リセットされてしまいます。 1班の後ろにある取り消しボタンを押したら、1班に選んだメンバーだけをリセットしたいんです。 どういう条件をつければいいでしょう…? どなたか、アドバイスお願いします。
>>73 ああ、ごめん。
言われてみればそうか。
以前、BBSでのサポートが超親切だったって噂がちょくちょく出てたんで
初心者向けのイメージがなんとなくあったんだが。
らんか氏、サポート疲れしちゃったのかな? ノシ
>>74 取り消しボタンってグラフィカルボタンでいいのか?
[button graphic="torikesi" exp="f.flag1=void"]
こんなの?
>>76 そんな感じです。ボタンそのものの作り方はわかります。
今は確定後に、
1班:[if exp="f.キャラA=1"][eval exp="tf.キャラA=f.キャラA"][emb exp="tf.キャラA"][endif]
[if exp="f.キャラB=1"][eval exp="tf.キャラB=f.キャラB"][emb exp="tf.キャラB"][endif]
[if exp="f.キャラC=1"][eval exp="tf.キャラC=f.キャラC"][emb exp="tf.キャラC"][endif] ……
;---
2班:[if exp="f.キャラA=1"][eval exp="tf.キャラA=f.キャラA"][emb exp="tf.キャラA"][endif]
[if exp="f.キャラB=1"][eval exp="tf.キャラB=f.キャラB"][emb exp="tf.キャラB"][endif]
[if exp="f.キャラC=1"][eval exp="tf.キャラC=f.キャラC"][emb exp="tf.キャラC"][endif] ……
って感じでくりかえしています。
変数をf.からtf.にしているのは、1つの班を選んだ後にclearvarでリセットをかけているためです。
チェックボタンにチェックが残ったままになるので。
>>77 clearvarはまるまる消去されるのであまり向かないとは思うけどまあいいや
結局何で困ってるの? チェックがついたままなのがいやなの?
もっかいチェックボックス選択画面を出力させれば消えたりしない?
79 :
76 :2009/06/17(水) 21:59:09 ID:xc5LjSzr
>>76 で示したボタンで変数の中身を消した後、選択画面を再表示させれば
選択した名前が消えるのでは、と思ったんだが違うのか?
clearvarは真剣にやめた方がいいと思うんだが。その画面以外にも変数を
使用する場面は多数あるでしょうに
>>78 チェックが付いたままなのが問題じゃなくて、一度確定させた班(変数)をリセットしたいんです。
1度班員を確定させても、もう1度組みなおすことができないか……ってことです。
1班:確定、2班:確定、3班を組むときに2班に入れたメンバーを3班に入れたくなったとき、2班だけをリセットできるボタンが作りたいです。
説明下手ですいません。
>>79 あ、なるほど
でもそれだと、取り消しボタンが9個必要ってことになるのでしょうか?
ちなみに、作ろうとしているものが少し特殊なので、ゲーム関数は他所でまったく使いません。
なので、一気に消せるclearvarを使っています。
>>77 の意味がわからんのだが、
2班のほうはこういうことか?
2班:[if exp="f.キャラA=2"][eval exp="tf.キャラA=f.キャラA"][emb exp="tf.キャラA"][endif]
[if exp="f.キャラB=2"][eval exp="tf.キャラB=f.キャラB"][emb exp="tf.キャラB"][endif]
[if exp="f.キャラC=2"][eval exp="tf.キャラC=f.キャラC"][emb exp="tf.キャラC"][endif] ……
function fErase( i ){
連打してしまった tjsなら楽勝だがkagの範囲で解決するべきだよな。やめとく
clearvarの代わりに、 [eval exp="f.キャラA=(f.キャラA==1 ? '' : f.キャラA)"] … [eval exp="f.キャラI=(f.キャラI==1 ? '' : f.キャラI)"] みたいのを実行すれば解決するようなことかな?
>>80 別に、
[button graphic="torikesi" exp="f.flag1=0,f.flag2=0,f.flag3=0"]
でも何でも、好きにアレンジすればいいと思うよ
>>80 部分的にしかソースさらさねえからどうやってるかしらんけど、commitしたときに
f.group1 = [];
f.group1.add("キャラA") if f.キャラA;
とかで1班に属してるキャラとかを管理してるんなら、それを空配列とかにしてやる
87 :
74 :2009/06/18(木) 01:02:06 ID:SzUCLWVg
皆様、アドバイスありがとうございます。 勉強不足お恥ずかしい限り……。 いただいたアドバイスを元に、試行錯誤してみたいと思います
辞書配列を入れ子にすればいいんじゃね? 根元からごっそり、枝をばっさり、葉だけをチョッキン自由にどうぞ。
BGMを途中の場所から再生するのって、 やっぱりTJSをいじらないとだめですかね?
>>90 ありがとう
前はstartなかったと思うんだが、いつの間にかできてたのか
ホントだ、いつの間に改訂したんだろ……。 知らなかったから、BGM再生マクロの中でこんなんやってた。 [eval exp="kag.bgm.currentBuffer.position=mp.position" cond="mp.position !== void"] 手っ取り早いからいいんだ、これで。
>>94 リファレンスに書いていたんですね。
ありがとうございましたー
メッセージ履歴の文字を袋文字にする事は可能ですか?
>>96 掲示板ログ9718, 9719, 10139, 10143
kirikiri.infoからも本家からも切れてるのでbacklog.txtで確認
無事出来ました! 記事Noまでありがとうございます
吉里吉里製のゲームってVistaでも動作するんですか?
する
おまえら全分岐を通過させるテストってどうやってる?
スレ建てる
神に祈る
手動
自動でチェック
ユーザーに任せてバグ報告が来たらパッチで処理
他の作業の合間に一人で何度も何度もコツコツとチェック
友人知人にたのむ
自動化してあとからログ見る
自動化してモニタをずっと眺めてる
児童化してその子をずっと眺めてる
児童化したモニカをずっと眺めてる
地蔵化したモニタをずっと眺めてる……
もうそろそろやめなよー(棒読み
地蔵化してモニタをずっと眺めてる
どう頑張ってもバグがとれなかったんですね。わかります^^
ムービーを再生する解説・サンプルどこかにありませんか?
>>3-4 あたりを全部チェックしたけどありませんでした。ぐぐっても出て来ないし。
>>117 リファレンス読めばおのずと必要なタグとかわかるはずだけど
>>117 あまりに基本的すぎることだから、逆に何か特殊なことでもしようとしているのか?
特殊なことはしません。ただムービーを再生したいだけなんだけど、何故かサンプルが全くない。 BGM・効果音のはどこにでもあるのに。 ムービーについては触れてはいけないみたいな暗黙のルールでもあるのかと冗談半分で思ってしまう。
サンプルなんか無くても公式説明書のタグ説明で十分やがな
>>120 BGMとかにくらべムービー再生は頻度が著しく落ちるからな
有志によって書かれてるとこでもそのへんをわざわざ書くところは皆無かもな
どうしてもサンプルに頼らなきゃきついんだったら、市販の本でも買えばよい
gutchieさんの本でもサンプルいれて4ページってとこだけど
とりあえずやってみたらできたわ。 …と思ったが上下反転して再生される。なんだこれ。 DivXエンコードのaviファイル。
AVIはサポート外 MPEG1にでも変換したほうが無難
>>120 じゃないけどMPEG1とかWMVとかは画質が悪いからあきらめた
今DLとかでよく売ってるムービー系のエロゲがみんなFlash(swf)なのは
吉里吉里で使えて画質を落とさずに済むからなんだよな
オーバーレイ再生だと基本クリック反応しなかったりデメリットあるんだけど
画質落ちない(コントロールできる)のは捨てがたいメリット
普通にKAGParser乗っ取って自動化。 選択肢も勝手に選んでくれるし、設定ファイルに優先させるボタンとか記述できる。 遷移ログとエラーログをはき出してるから、エラーがあっても追うのが楽。
>>125 MPEG1もWMVも画質コントロールできるだろ。
それらに比べてSWFが画質を落とさずに済むって、なんだか意味がよくわからないんだが。
>>126 >>109 だが
>>127 の方法を使うか外部プログラムでキーボードやGUIのイベントを発生させる。
でログの方はロギングAPIを実装してKAGに組み込んであるのでそこら辺にあるロギングAPI並みのログは取れる。
プログラムできると色々できていいよね。 C++はできるけど、Windowsに対応したプログラミングの適性が全くないから、 その手の効率化が全然できない。うらやましいぜ。
C++できると言えるのなら適正はじゅうぶん。 俺だって行番号つきのBASICからウィンドウズに飛んだけど、がんばって合わせた。 投資の要らないスキルだし、意外と短期間で習得できるもんさ。
C++ができるなら後は発想と調査能力の問題だな
C++でライブラリ書いて吉里吉里に組み込みまじオススメ
変数の計算でつまづいた…… [eval exp=f.数字1=100,f.数字2=100] [eval exp=f.合計=f.数字1+f.数字2] f.合計=200にしたいのに、100100になる……どこがおかしいですか?
[eval exp=f.数字1=100,f.数字2=100] [eval exp=f.合計=f.数字1+f.数字2] [emb exp=f.合計] ってしたら200って出たけど どっか違うように書いてないか
本来、吉里吉里本体は、変数の型を意識する事無く計算に使用したり 文字列の連結をしたりができるようになっているが、 時々、意図としない誤爆変換をする場合がある f.数字1+f.数字2 の部分を、吉里吉里本体が、数値として捉えた場合 (int)100 と結果を出すが 文字列として捉えた場合、 (string)'100100' と結果を出してくる 明示的に、 [eval exp="f.合計=(int)f.数字1+(int)f.数字2"] と、この変数は数値で取り扱ってくれと記述すれば誤爆しないと思われる おそらく、該当個所の計算の直前あたりで、 変数を、文字列として取り扱っている記述が列挙してあり その直後に、件の計算を行っていて 文字列扱いで誤爆計算されたのでは、ないだろうか?
あっ (int)200 だった
原因わかった! f.数字1をエディットボックスで数字入れるとコンソール : f.数字1 = (string)"100"ってなってるっぽいです! でも対処の方法がわからない……
>>138 136のようにint演算子をつかう
もしくは単項+で、[eval exp="f.合計 = +f.数字1 + +f.数字2"]の方が一般的かも
(int)(式)でひとまとめに括ってしまえばおk
>>139 おお![eval exp="f.合計 = +f.数字1 + +f.数字2"]でできました!
ありがとうございます!
>>140 ごめんなさい、(int)(式)の意味がわからなかったので
>>139 さんのやり方でやっちゃいました
マクロの名前ってどういう感じにつけてます?
フツーに自分が分りやすい名前にしてる。
吉里吉里で作ったゲームを解体して素材を取り出すにはどうすればいいんでしょうか
やめてください
勘弁してください
すみません
スクリプタと分業してるから、日本語のマクロ名使ってる。 @暗転 みたいな感じだな。
吉里吉里に限ったことじゃないけど、 クラスや関数の命名にはいつも迷う。 無理して英語で名づけようとして辞書引いて無駄に時間消耗したりする。 他人のソース見て、自分のソースにも流用出来そうな いい感じの変数名が見つかるとちょっと嬉しいw
出来るだけ短くしたいなぁ
C言語とかもやってるからそれの関数名を付けるような感じで付けてるな 基本的に英単語の上3文字くらい 〜から…にみたいなのは〜2…とかにしてる。2=toってことでExcelみたいに
黒塗り背景に中心に文章書いて、フェードインフェードアウトってどうやるの? 下記のようにやっても、フェードインフェードアウトができなかった [layopt layer="message1" page="fore" visible="true"] [layopt layer="message1" page="back" visible="true"] [current layer="message1" page="back"] [style align="center"] 表示したい文章 [trans layer="message1" method="crossfade" time="1000"] [wt] [wait time="1000"] [trans layer="message1" method="crossfade" time="1000"] [wt]
携帯からで申し訳ないが [layopt layer="message1" page="fore" visible="true"] [layopt layer="message1" page="back" visible="true"] [current layer="message1" page="back"] [style align="center"] 表示したい文章 [trans layer="message1" method="crossfade" time="1000"] [wt] [wait time="1000"] [layopt layer="message1" page="back" visible="false"] [trans layer="message1" method="crossfade" time="1000"] [wt] こうかな
>>153 ありがとうございます、正常動作しました。
あれやこれや3時間くらい考えていたのでとても助かりました。
メニューに「音量」を加えたいのですが、どうすればいいのでしょうか
Googleを活用する
メッセージレイヤに使用している画像を一時的にフェードアウトで透明にする(文字は消えない)方法ってどうすればよいのでしょうか? また、それを戻すのはどうすればよいのでしょうか?
画像用と文字用とメッセージレイヤを二つ使うのが手っ取り早い 後はmoveタグとかで画像レイヤの透明度を変えればおk
ありがとうございます、助かりました!
吉里吉里でwmvを再生させようと思ったんですけど、再生したら上下が反転になってしまいました。 いろいろ調べてみましたが、見つからなかったので、よろしくお願いします。
>>160 使用している吉里吉里のバージョンと、使用しているOS
それと、どの様に記述したら、上下反転で再生されたかスクリプトソースを見せないと話が始まらないな
お願いしますだけのお客さんには、住人は冷たいぞ
すみませんでした。 吉里吉里・・・2.30.2.416 OS・・・Windows Vista SP2 スクリプトは、 [openvideo storage="video.wmv"] [video height="540" width="960" visible="true"] [playvideo] [wv] と書きました。縦横のサイズが微妙ですけど・・・。 申し訳ないのですが、さっきもう一度再生してみたら、普通に再生されたんです。 今までは、何度やっても上下反転だったんですが、どうしてなのか分りません。 コンソールには、特に変わったところはないように思えます。 ここまで言っておいて本当にすみません。 何かありましたらその時はよろしくお願いします。また、原因も調べてみたいと思います。
WMVはユーザー環境のDirectXとかWindowsMediaPlayerとかのバージョンに左右される 上下逆ならハードウェアアクセラレータの設定変えれば安定するかもしれないが、 VISTAだとそれ自体がOSでできないことも多い MPEG1にしとくのがたぶん一番安全
ありがとうございます、MPEG1にしておいたほうがよさそうですね。 本当にありがとうございました。
吉里吉里ってH.264に対応してないのでしょうか?
>>164 WMVというか、Vistaのオーバレイが怪しい。
もうあまりまともにメンテナンスされてないのか、ドライバのバージョンあげるとおかしくなったら
戻ったりする。Vista 以降なら mixer 使うように直すのが吉
動画の再生って結局OS依存なわけだが、誰か吉里吉里にデコーダくっつけてくんないかなー。
>>165 じゃないけど、x264ならGPLだし。
遊んでくれる人のPC知識は無いも同然って想定して準備した方が幸せになれる訳で……。
C読み書きできない。乞食発言でごめん。
変数名の中に変数を使うことって出来ますか、例えば [eval exp="f.power.(f.playernumber) = 1"] f.playernumberという変数の値が1ならf.power.1に1を代入 f.playernumberという変数の値が2ならf.power.2に1を代入 みたいな事がしたいのですが。(上記はエラーが出ました) ご教授よろしくお願いいたします。
[eval exp="f.playernumber = 1"] [eval exp="f['power' + f.playernumber ] = 10"] [emb exp="f.power1"] [emb exp="f['power' + 1 ]"]
f.flagA*1.5=f.ansという式を作っています f.flagAが奇数だった場合、答え(f.ans)が小数点になってしまうのですが、小数点以下を切り上げることって出来ますか? f.flagA=5の場合、5*1.5=7.5 →8にしたいんです TJSにそれらしきメゾット?があるようなのですが、TJSは怖くて手が出せません…どなたかアドバイスお願いします
[eval exp="f.flagA = 3"] [eval exp="f.ans = int(f.flagA*1.5)"] [emb exp="f.ans"] >TJSは怖くて手が出せません… evalの中で実行してるのはTJSだっちゅうねん [eval exp="f.flagA = 3"] だけだって立派なTJSの入ったコードだ
>>172 それは切り捨てになるぞっと
切り上げなら f.ans = Math.ceil(f.A * 1.5)
Math.ceil 切り上げ
Math.floor 切り下げ
Math.round 四捨五入
>>172 すばやい回答ありがとうございます
ですが、出していただいた式だと、小数点切捨てになっているようです……5*1.5=7.5→7になりました。
小数点以下を切り上げて、5*1.5=7.5→8にしたいんです。可能でしょうか?
KAGがTJSで動いているっていう理屈はわかるんですが、私には複雑怪奇なものにしか見えないんです…。
KAGリファレンスは何がどうなるって例をたどって読み進められるのですが、TJSリファレンスは専門単語が多すぎて挫折してしまいます。
{}のなかに{}があるし…
いちど、IF文からはじめてみたのですが、文法エラーです(syntax error, unexpected "var", expecting ";")がでて詰まりました。
文の終わりには、;がちゃんとついているのに…
>>173 が突っ込んでくれたのでそっち参照
切り上げね
>>173 出来ました!ありがとうございます!!
途中、愚痴っぽくなってすいませんでした
if文は f.test = 1; if (f.test == 1) { System.inform("f.test は 1 です。"); } こっから始めればいい
startup.tjsにf.test=1とかいてはまりそうだな
全角スペース使ってエラー吐かれているに一票
>>170 []で囲んで文字列足し算をすればいいんですね。
Fと[の間に.が要らないというのも、示されなければ絶対に気づかなかったと
思います。
テストしたらうまく行きました。ありがとうございました。
KAGでいう変数にvar使って怒られるとか
var f.flagA = 1; とか?
識別子にキーワードつかって怒られるって意味だろJK
ノベルゲー用にKAGの必要の所だけざっくり覚えてブラックボックスな言語として使うなら吉里吉里は優秀な開発ツールだと思うけど 真剣にTJS覚えて本格的にやる価値は無くね? 色々と複雑な処理も出来るけどそこまでやるとなると習得の難易度的にjavaやCとたいして変わらない気がする。書式も似てるし。 それなら汎用性とかを考えてメジャー言語覚えたほうがよくね? TJSの基本だけ触っての感想なんだがこれから本気で勉強するかどうかもあってTJS極めた人の見解を聞きたい
>>184 はよくわからんバグが出て自分だけで直す恐ろしさを知らない
ACTとかSTGとかでなければ 必要十分な処理能力でゲーム作れるからTJSで問題ない ただ、SLGの移動範囲計算とかキャラの移動力上げると処理重くなって困る
TJSが1000m級の山だとしたらCとかJavaは3000m級だろう。 メジャー言語を学ぶうえでTJSの経験はある程度まで通用する。 一線を越えると何の役にも立たない。 ただ、TJSが回り道に感じるようなら最短距離を行こうとどのみち苦労する。と思う。
最終的にはどの言語もある程度似たようなことになる CとJavaとTJSを勉強した俺の感想
tjsは吉里吉里専用の言語ってわけでもないが、 それはさておき、 オブジェクト指向言語の書き方なんてどれも同じだから、 1つなんでもいいから勉強しときゃ、どの言語だろうがリファレンス片手に組めるようになるし 勉強するのがtjsだと楽しいならそれでもいいんじゃないの、とかなんとか
>>184 吉里吉里のマニュアル熟読した上で同機能のモジュールを実装するコストかんがえてみ。
ゲーム用の基礎システムとして多機能な上に非常に安定してるのが大きい。
一応指摘しとくと、別に TJS にこだわる必要はない。C++ でどんな処理でも書いて組み込める
俺はまだtjs初級レベルだけど、kagの延長で覚えたし ホビーでスクリプターやってるからそういう発想はなかったな… あたりまえだが、価値どうこうは何を目指すかによるんだろうね 俺はtjsかなり楽しい
>>184 フリーゲームレベルの演出なら無理せんでいいと思う。それでも変数とか必要な知識はいくらかあるけど
むしろ吉里吉里/KAGじゃなくてもNなんちゃらとかLiveなんちゃらでもいいんじゃね。とか思うわ
俺もCとかJavaをかじったあとに低コストでTJS覚えたから参考にならんだろうけど
プログラムを覚えてそれを職業にしたいのにまずtjsを極めようとするならそりゃアホかと思うけど 中高生とか情報系の経験薄い大学1年生とかが入門用として覚えて途中からC++やJavaに 移行するって形ならありだろう
>>190 >C++ でどんな処理でも書いて組み込める
そんなわけない。コストというものがある。
本当にそうならとっくに3は出てる。
>>194 は文の一部だけ切り取ってなにがしたいんだろう(苦笑)
>>184 もうちょっと補足。TJS をがっつり覚えて損になることはないよ。
Java や C だけなプログラマってのは今時使い物にならんです。スクリプト言語は何かしら経験しておくほうがいい。
TJS は Javascript 系言語の一種というのもあって、書き方が応用できる範囲は案外広い。
現在のゲーム開発の現場では、ADVに限らず、低級スクリプト/高級スクリプト/C++ といった多重構造で
言語を使い分けるのはもはや常識なので、そういったスタイルに慣れるという意味もある
TJS のマイナーさが気に入らないのなら、コンシューマでも利用例が増えてる squirrel という選択もある。
あとは stackless python あたりのバインドもあると便利かもねぇ
(苦笑)
>>196 は文の一部だけ切り取ってなにがしたいんだろう(核爆)
>>197 ワロタ。うまいなー。
Perlの経験だけは他に生きた気がしない。最近の書き方してればまた違ったのかもしれないけど。
せいぜい言語を覚える根気やコツを養った程度。
>>193 Windowsで手軽に動かせる処理系だし結構言語の中では敷居低いかもね
もし残念なことに職業にしたいとか考えてるならコンソール叩いてコンパイルしてとかに抵抗感じないほうがいいけど
どっちにせよ、TJS問題なく使える人はいても極めている人なんてそうそういないだろうし、極めることに費やす労力は余計だと思う
極めるってどういう状態?
201 :
184 :2009/07/03(金) 09:09:15 ID:ReMRd5Re
一日平均レス数一桁の過疎スレかと思いきや、お前らどこに潜んでたんだ 専用スレだから盲目的に吉里吉里マンセーの流れもありえるかと思ったけど 客観的な意見で参考になったzeありがd やっぱりtjsはあくまで登竜門としての利用に留めるのが良さそうだなぁ C++やってみようかな
>>201 そういう視点は?だけど。
おまいさんは、プログラムというのを舐めているね。
さっき見たら おさかな定食の様子がちょっとだけ変わってた いつから変わってたんだろう? とりあえず生きてるみたいで安心した マジでフェードアウトかと思った
>>201 話題がないから過疎に見えるけど、住民は非常に多いんだよ、昔から
話題があれば、夜中でもたいていは即レスがある
>>168 それは記事が古いかな
実際のところは、少なくとも吉里吉里がつかってる範囲でのオーバレイ処理(動画再生用)
では、AERO がオフになることなくそのまま動作します。
ただし上下反転したり、ジャギジャギになったりとかの、ドライバ由来の環境依存問題が噴出しがちなので、
mixer にしておいたほうがなにかと無難です。ところが、古い環境だと mixer がまともに動かなかったりするので、
デフォルトは XP/Vista を境に overlay と mixer を切り替え指定して、さらに、なんらかの手段で
外部から切り替える方法を準備しておくのがサポート的には無難です
なお、レイヤ再生するとこの種のドライバ問題とは無縁なのですが、これはこれで格段にCPUパワーを喰らいます。
>>167 theora のドライバとかあると、選択肢は広がるかもねぇ
質問させてください すでに存在しているボタンの画像は、 kag.fore.messages[0].links[0].object.loadImages("画像") などで変更することができるようなのですが、 ボタンをクリックしたときの動作(storageやexp)は、どうすれは変更できるのでしょうか? onExecuteやonClickを試してみたところ、キーボード操作には効果がなく、 トランジションすると反応しなくなってしまいました
>>198 >Perlの経験だけは他に生きた気がしない。
カオスなのがすきならrubyやればいいんじゃね?
まあ
>>184 はCに手出して気づいたらLua組み込んでんのは間違いないなw
透過pngを作って前景に表示したんだけど、透過しない 同じファイルをブラウザで表示してみると透過してる どうしてでしょうか?FAQですか?
209 :
名前は開発中のものです。 :2009/07/04(土) 03:13:55 ID:RRxZ5x6P
同梱ツールのkrkrtpcをつかって透過指定しなおしてみたらどう?
違うソフトでpng作り直したら透過しました。 自己解決。
>>206 KAGの設計思想的には全画面を毎回作り直すのが正しい。
どうしてもいじりたければ、MessageLayer.addButton の中身をよめばどう構築されてるかは
わかるから、そこをみて考えなされ
storage や link[0].storage とかの形で格納されてるのでそれ書きかえれば変わる。
exp はサウンドとあわせて展開されて object.onenter とかに定義されてるので、
組み替えるには再構築が必要。
212 :
名前は開発中のものです。 :2009/07/04(土) 11:01:20 ID:GMnlofNI
>>211 当方、初心者です。
今始めてのゲームをKAGで作っているところですが、メッセージレーヤーを5分割
して、常時出しておく「メニュー領域」「サブメニュー領域」「ステータス
表示領域」と毎回書き換える「短いメッセージバー」「メイン画面」みたいな
構成にしようと考えていたんですが、そういう仕様にはKAGは合わないって
ことなんでしょうか?
>>212 そういうのは、プラグインを書いてそちらで描画内容を管理するのが一番綺麗ではある
とりあえず、メッセージレイヤを複数使って他に影響が及ばないようにするのが妥当かな。
個別のメッセージレイヤに対して描画内容を全部更新するようなサブルーチンを作って
必要なタイミングでそれぞれ呼び出すようにすればいい
214 :
206 :2009/07/04(土) 11:21:16 ID:DLIT25S1
>>211 アドバイスありがとうございます
難しそうですが、ひとつ腰を据えて調べてみます
最新の安定版Lzhってディレクトリ階層おかしくね? 全部同じディレクトリに解凍されて同名のファイルが上書きされるんだけど
おまいさんの解凍ソフトの設定を確認した上で言ってるんだよな?な?
Lzhってそんな圧縮ファイル形式だけ言われても そんなの知らんがな
そんなのならんなぁ。
>>213 すいません、間違えました。メッセージレーヤーを5分割ではなくて、画面を
5分割するように、メッセージレーヤーを5つ作ったと書くべきでした。
それで毎回[cm]じゃなくて、[er]で消去してから書き直す予定です。
[cm]はたぶん1回も使わない予定。
そういう仕様なら大丈夫ですよね。
211の方の
>>KAGの設計思想的には全画面を毎回作り直すのが正しい。
というのを読んで[cm]使った方がいいのかあ? と思いまして...
>>219 ほい、それなら問題ないかと
「全画面」は「メッセージ窓に表示してるものは全部」とよみかえてください
スレチだったも申し訳ない iphoneで吉里吉里スクリプトのゲームを動作させるアプリってありますでしょうか?
C++のソースをobj-cに移植する変態さんまちだね。 まあエンジン作った方が早いがな。
224 :
名前は開発中のものです。 :2009/07/05(日) 14:29:45 ID:JYa2Rb/c
System.informでメッセージダイアログを出すときに、任意の効果音を鳴らすことって出来ますか?
// AfterInit.tjs にでもこれを↓ if( typeof( System.super_inform ) == 'undefined' ) { System.super_inform = System.inform; System.inform = function(text, caption = '', buf = 0, storage) { kag.se[+buf].play( %[ storage : storage ] ) if storage != void; super_inform(...); }incontextof System; } // System.inform('ok',,,'file.ogg');
でもティロンが鳴っちゃうから使えないな。 頑張って自作ウィンドウ作るしか思いつかん。
KAGのフェード機能は変化する速度が一定しかできないみたいだけど 三角関数を使って緩急を付けるサンプルどこかにありませんでしょうか?
KAGだと口がでてないねぇ 1. KAGLayer.tjs で super.beginTransition 呼び出す前の部分に以下を追加 ※トランジションの callback パラメータについてはマニュアル参照。 値を保持する必要があるのでオブジェクトのメンバメソッドを渡すようにする elm.callback = (new Scripts.eval(elm.callback)(+elm.time)).callback if elm.callback !== void; 2. コールバック用のクラスを準備 class SinCallback { var time, first; function SinCallback(time) { this.time=time; }; // 規定の時間を保存 function callback() { // トランジション用コールバック var tick = System.getTickCount(); // tick値取得 first = tick if first === void; // 開始時間取得用 tick -= first; // 開始時間からの差分にする tick = time if tick > time; // 過ぎてる場合の補正 return time * Math.sin(Math.PI/2*tick/time); } }; 3. KAGから指定 @trans method=crossfade time=2000 callback=SinCallback
質問です。 タイトル画面で背景を縦スクロールループさせたいのですが、思うように動きません。 (スクロール時に一瞬減速・停止する。スクロール中にボタンアイコンが表示されない 等) 何か良い解決策は無いものでしょうか? ご教授のほどよろしくお願い致します。m(__)m
自作右クリックサブルーチン(tjsではない)の ボタンでタイトル画面に戻った後、 タイトル画面のボタンからロード画面(おさかな製)開いて、また閉じて戻ると タイトル画面にクリック待ち記号が何故か表示されてしまうのですが、何でかわかりますか? メニューボタンの”最初に戻る”では起きませんでした。 右クリックサブルーチンの記述 [button graphic="btn_title" target="*title"] *title [unlocksnapshot]\ [gotostart ask="true"]\ ;キャンセルした場合 [jump target="*rclick"]\ [s]\
>>230 サブルーチン中に無駄な改行やスペースやエスケープ忘れがあるんじゃね?
>>225 ,226
うーん、やっぱり難しいですか……。
ありがとうございました
吉里吉里はプログラムの知識とか無いと作れませんか?
無くても作れる。
しかしセーブはメニューバーから出る
いくつかある受け答え式の講座サイト見てみたら全部後半の生徒役のキャラの読解力が半端無い 最初は変数とかの意味ですら質問し返してたのに後半になると初見のタグやメソッドも逆に予想で解説し始めやがる 一緒に学んできたはずなのにものすごく置いていかれた気分だ
まあ命名規則と名前見れば何するか分かるからね。 最初は言語仕様が分からないだけだし。 解説役が生徒になるのは文の書き方がなってないだけで上記とは関係ない。
>>236 へのレスとして完全に間違ってるわけではないんだが
なんか方向性がズレてるよな
242 :
230 :2009/07/08(水) 21:18:39 ID:Tj+OcJPV
>>231 ありがとうございます。
改行は一応チェックしたんですが、どこか見落としがあるのか結局わからず
ロード画面に飛ばなければこの症状がでないんだけど不思議だ
マクロあたりも見直してみます
リンク先を変数によって指定することは出来ますか? [eval exp = "f.chapter = f['*chapter' + f.number]"] [link target = f.chapter][emb exp="f.number"][endlink] f.number が1なら *chapter1 に、2なら *chapter2 に進むリンクを大量に貼る ためです。 上の場合『ラベル f.chapter が見つかりません』というエラーが出ました。
>>243 KAGリファレンスを「エンティティ」で検索しる
>>245 結局なにがしたいのかがよくわからない。画像差し替えるだけでいいの?
それなら、
system/YesNoDialog.tjsの61行目からでプライマリレイヤいじってるところを
loadImagesにして、画像にさしかえて調節すればいいと思うんだけど
>>246 わかりにくくて申し訳ないです
YesNoダイアログはすでに画像でやる方法はあるけど、
それと同じような事を、システムインフォーム(インプット入力のウィンドウ)で
やりたいということです
あれてwin32APIとか使ってんじゃないの? ウィンドウリージョン設定したWindowクラス作ればいい。
>>247 あ、2行目読み飛ばしてたわ。すまんね、そういうことか
>>248 でももう言われてるけど
Windowクラス作ったほうがいろいろ応用もできるし、
それがいいと思う
>>244 解決しました。ありがとうございました。
245です
>>248-249 ありがとうございます
ただ、当方情けないほどのコピペスクリプターなので
もう少しヒントをお願いします
>>245 の目的は
不定形の文字入力ウインドウを、場に出して、ユーザーに文字入力させたい
って事だろうから
System.inputStringを、あれこれいじらなくても
以下の組合せで、 やりたい事は実現できるのでは?
[font]
[locate]
[edit]
[commit]
メッセージレイヤーの切替
任意のメッセージレイヤーの詳細設定
文字の表示される大きさを一定にする(、などで小さくならない)方法って、Config.tjsからいじればできますか?
できません
>>253 「プロポーショナルフォント」でググってみること
一文字づつ描画したプロポーショナルフォントを横に並べるとガタガタになると思うんだが・・・。
258 :
名前は開発中のものです。 :2009/07/10(金) 22:35:20 ID:/2iAcZgA
グリフ一つ一つの情報を元に正しく計算すればガタガタにはならない 吉里吉里でどうかはともかく、そういうやり方はゲームではごく一般的
んな当たり前なことでいちいち上げるな
>>44 で質問させていただいたものです。
アドバイスどおりsaveメゾットでテキスト出力は出来たのですが、リリース形式にするとアーカイブにデータを書き込むことはできませんと表示されます。
data.xp3にする前はちゃんと出力するのですが……。
どうすればいいのでしょうか?
セーブデータの保存先を利用したら上手くいかんか? kag.saveDataLocation + 'ファイル名'
>>261 やっぱりエラーが出ます……該当部分と思うところだけ抜き出してみましたが、これではダメでしょうか?
吉里吉里2 version 2.28 stable rev. 3です
[iscript]
var flagNo=f.title+1;
var savedata=[];
savedata[0]=test;
savedata[1]='test2 '+f.test;
kag.saveDataLocation = "savedata"; //入れてみました
savedata.save(flagNo+'&'+'savedata.txt','');
[endscript]
03:33:28 アーカイブにデータを書き込むことはできません at test.ks(9314)[(top level script) global]
03:33:28 script exception : アーカイブにデータを書き込むことはできません at mainwindow.tjs(2558)[(function) onConductorScript]
03:33:28 アーカイブにデータを書き込むことはできません
03:33:28 script exception : アーカイブにデータを書き込むことはできません at conductor.tjs(180)[(function) timerCallback]
引数に入れる保存名はパスで指定じゃなかったっけ?
savedata.save(kag.saveDataLocation + '/' + flagNo+'&'+'savedata.txt','');
>>261 が言いたいのは多分こんな感じ、違ってたらすまん。
>>263 無事出力できました! 本当にありがとうございます
最初から最後まで、みなさんに助けられてばかりでした。
@iscript function drawButtonCaption(num, caption, size) { with (kag.current.links[num].object) { .font.height = size; // ボタンのフォントの文字高さを設定 var w = .font.getTextWidth(caption); // 文字列を描画したときの文字列幅を求める var x = (.width - w) \ 2; // ボタン中央に表示されるよう、文字を var y = (.height - size) \ 2; // 描画する座標(文字列の左上隅)を逆算する .drawText(x, y, caption, 0x000000); .drawText(x+.width, y, caption, 0x000000); .drawText(x+.width+.width, y, caption, 0x000000); } } @endscript @macro name="buttoncaption" @eval exp="drawButtonCaption(+mp.num, mp.caption, +mp.size)" @endmacro @locate x=0 y=-250 @button graphic="(選択肢の画像)" target=*(選択肢の指定先) @buttoncaption num=1 caption="描画される文字列" size=20 @s ……というスクリプトでグラフィカルボタン内に文字を描画したんですが、 上記単独のksでは画像の中央部にちゃんと文字が描画されたのに、別のksファイルに移して使ったら、文字列が上に8ピクセル程度ズレて表示されてしまいました。 Config.tjsの余白を調べてみたり、移植先のfirst.ksの先頭に持っていって他のシナリオ記述の影響をうけないようにして調べたんですが、どこを調整したらよいのかさっぱりです。 どこをいじればよいのか、ご指南頂ければ幸いです。どうかお願いします。
画面サイズを640×480で作成しているのですが、 ワイド画面のモニタでフルスクリーンにしたとき 4:3の比率が崩れないようにする(左右に黒い帯を表示)には どうしたらいいのでしょうか。 「吉里吉里 フルスクリーン エンジン設定」でぐぐってみましたが 探し方が悪いのかみつかりませんでした。 よろしくお願いいたします。
吉里吉里2.3系にすればおk
というかこういうのは環境依存だからディスプレイの設定いじればいいと思うんだが。 ソフト側でやることかね? アスペクト比固定拡大が出来ない屑ディスプレイは切り捨てろ。
出来るに越した事はないと思う。より多くの人に、余計な知識を使わずに遊んでもらえたら幸せかと。 屑ディスプレイってのには同意だけどw
ゲーム自体そろそろワイド化しないといけないんだろうけど。 画面デザインが難しくなりそうだし、そもそも16:10か16:9とか…
>>270 いまから開発するのなら、16:91択じゃないの?
横は、1024か1280か分かれると思うが。1024だと、576だからな……
うちはワイドで作ってないけど、ワイドにするなら基本画面はなんちゃって地デジ方式がいいと思うなぁ。 左右にマージン用の画像or黒を差し込むの。で、書き文字等の演出とかイベント絵では全体を使う。 4:3に対してはトリミングで対応。
>>272 ワイド化の恩恵を一番うけるのは立ち絵表示なので、それだとあまりうれしくないと思う
やっぱ縦書きは読みにくいな
>>171 ハイデフゲームの場合、縦は1200なんだが・・・。
1600*1200・1980*1200とか。
コンシューマ機に合わせるなら1280*720になるが。
ちょい質問。 シナリオフォルダ下のディレクトリ下のksを読ませたいんだけど、どうすればいいだろう。 scenario\Macro\macro1.ks てな具合に。
>>277 Initialize.tjs にて、設定が必要
xp3にした時どのように影響が出るか 調べてから、いじったほうが良い
>>276 800×600の次のデファクトスタンダードが分からぬ……。
ワイドは種類が多すぎるな。
自分が使ってるのは君が挙げたのと違う1680×1050だし。
とりあえずおまえらが持ってる液晶の解像度を教えろ
1280*800
「画面解像度 シェア 2009」で検索すると、いろんなサイトのビジター解像度統計が出てくるよ。 そこら辺を見る限り、800x600はほとんどの統計で確認されず。 1024x768がいまだ30〜40%でシェアの中心。 720p未満のワイド(おそらくモバイルかネトブ)が1〜2%。 上記以外はほぼ720pには対応できる解像度。一番多いのは1280x800。 で、1080iをフル表示できる人の割合は一割以下。 ということで、しばらくの間は1024x768が切捨てラインの瀬戸際。 そこを切捨てられるようになったら、しばらく720pが最大公約数になりそう。
ワイドの例が村正かよ
>>280 1280*1024-SXGA(5:4) 19型
windows7ではガシェットの位置が自由に出来るとか。
ワイドに買い替えなくてすみそう。
漏れは、フリーだし、今回のは変則サイズで好きなように作るよ。
フルスクリーンにしない限りワイド比だと 他の事やりながらゲームするのに邪魔だと思う自分は時代に取り残されるのだろうか
大変申し訳ないです。 一通り調べてみたんですが見つからなかったので質問させてください。 メッセージウィンドウを常に表示させるようにしたいんですが、 背景をフェードアウトさせると、メッセージウィンドウも消えてしまいます。 次ページの文字表示のときに再表示させてるんですが、 やはり一瞬消えてしまうのが不自然に感じます。 (背景画像にメッセージウィンドウの枠をくり抜いているので) メッセージレイヤーのみを残す方法がありましたら教えてください。
>>286 リファレンス読めよボケと言いたい
フェードアウトのトランジション前に、backでメッセージレイヤを読み込んでやればいいだけの話だろ
[backlay]してないだけと見た
XGA 14incとWUXGA24.1incをもってる。
このスレの過去ログ保管倉庫が見れなくなってる><
ジオシティーズみれないだけだから
[l]タグが有効にならなくて困っています。 タグリファレンスをみたら、current タグでページを表にしろ的なことが書かれていたんですが、 表にしても有効になりませんでした。なにが原因でしょうか?
メニューの「文字表示」→「表示速度」→「ページ末まで一気に」じゃね?
294 :
名前は開発中のものです。 :2009/07/16(木) 17:22:20 ID:V3TQLAWi
自宅のPCも会社のPCもXPなので VISTA使ってる方に質問です。 吉里吉里でのSWF再生で、特に不具合などはないでしょうか?
>>293 表示速度は高速でも標準でも無視されていました。
メニュー画面のようなものを作った後の部分からなるようなので、
何らかのタグか属性の影響を受けているというところまでは察知できたんですが、その辺をどういじったらよいかがわからんです。
メニュー画面のようなものをコピペすれば誰か分かるかもね
あ、「ページ末まで一気に」のチェックも外れています。メニュー画面(改)は以下のとおりです *title_menu| [startanchor] [layopt layer="message0" page=fore visible=false] [eval exp="tf.title_message = 'message1'"] [history output=false enabled=false] [disablestore store=true restore=false] [rclick enabled=false] [image storage="タイトルメニュー" layer=base page=fore] [position layer="&tf.title_message" page=fore left=0 top=0 width="&kag.scWidth" height="&kag.scHeight" frame="" color=0x000000 opacity=0 marginl=0 margint=0 marginr=0 marginb=0 draggable=false visible=true] [layopt layer="&tf.title_message" page=fore visible=true] [current layer="&tf.title_message" page=fore] テスト、[l]行末[l]クリック[l]」待ち[p][cm] 追伸、savedataフォルダを丸ごと切り取ってみたら[l]が有効になりましたが、 戻すとやっぱり[l]が無効になってしまいました。
セーブデータに古いマクロが残ってたりするんじゃないの
>>298 どうやらそんな感じみたいです。
みなさんありがとうございました!
初心者で、DDKEでscenario作成しています 今まで快調で楽しく作成してました が、百行目くらいから、 link targetやjump targetの後の[s]が働かなくなり、 ゲーム中で分岐一覧表示の続きに改ページが入っていて無表示ページに改ページしたり うまくjumpできずに[だけ表示して止まってたりします ここ1週間くらい試行錯誤しても直りません 原因はなんなのでしょうか?
百行目くらいが原因じゃね
状況だけ言われても分かるわけないだろ。探偵か俺らは。 やったことを順に書くとかしろ。 というかデータ退避させて別の場所にKKDE置いてとか試した?
そろそろコミケも近いし、賑わい始めるかな?
今からにぎわうタイミングだと、ディスクのプレス間に合うのかw
同人業界は手焼きがだな・・・
プレスよりか、音声収録のほうが間に合うかあやしい
そこでパッチ配布ですよ 会場で買ってくれた人だけに限定パッチ!とか
Config.tjsの // ◆ メニューバーを表示するか // 非表示にすると当然どのメニュー項目にもアクセスできなくなります。 ;menu.visible = false; を、ゲーム内でtrueにするタグってもしかして無いですか? 無い場合は、inscriptでやるしかない、もしくはそれすら不可能なんでしょうか?
適当な所で [iscript]\ kag.menu.visible = true; [endscript]\
相談です。 環境設定画面で、既読・未読スキップの切り替えをとりつけたのですが 切り替えはちゃんとできているものの、 既読スキップ→次のラベルで停止 未読スキップ→全スキップ となって、既読のみのスキップにしたい場合、未読文章でスキップが停止してくれません。 この切り替え設定を取り除いても問答無用でスキップでした。 本題はスキップを未読文章で停止させたいのですが、 スキップ関連をいじりまわしたせいか、未読文章になっても停止しません。 デフォルトだと未読で停止した気がしますが、どこが原因だかわかる方はいますでしょうか。 ちなみに、systemフォルダのファイルは粗方マージして確認してみましたが 見落としがあるかもしれません。 どうかわかりましたらよろしくお願いします
>>311 まずどんな機能をつけたいのか、よく分からなかった。
・既読文章をスキップ(未読部分まで来たら停止)
・未読文章でもスキップ
これらの切り替え?前者はデフォで元々ある機能だし
後者は、止まるところが指示されない限り延々スキップするのでは。
> スキップ関連をいじりまわした
あとここを詳しく書かないと俺らお手上げ。
自分でも分からなくなってる場合は、
いっそ初期テンプレートから組み直したほうがいいかも。
>>311 です。
tp://xxnone.blog121.fc2.com/blog-entry-93.html
のKAGを改造して未読スキップを可能にというものです。
直接的には関係ないと思いますが、一応。
セーブデータフォルダを全部消して、未読であるはずの文章も
問答無用でスキップされてしまうので
>>311 の前者のデフォに戻したいのです。
おそらく後者に設定したとか初歩的な問題だと思うのですが
初期テンプレートとマージソフトで照合してみたのですがよくわかりませんでした。
いじったのがかなり前なのでよくわからなくなっています。
すみません。
まあ組み直しがんばれ
自分のソースなんて一カ月すればイミフになる。 だからコメントとか付けるわけで、ドキュメンテーションをちゃんとしてればソース読み直して修正できたものを。
>>313 スキップモードの切り替えを何で行ってるのかわからんけど
そこのサンプルで言えば、sf.chSkipAllを制御できてないっぽいなぁ。
trueだと問答無用でスキップ。
sf.chSkipAllの値を「監視式」で監視してみ。
そしてこれだけコメント付ければ余裕だろと思いつつ書いたソースを久しぶりに開くと コメントを読んでも何が書いてあるか分からない罠
大学のときの教授も2週間経つと他人のソースになるっていってたなw
319 :
311 :2009/07/19(日) 20:34:17 ID:iVSFme8T
>>314-316 まずはレスありがとうございます。
仰る通りで返す言葉もなく恥ずかしいです…
ですが、自分の説明で誤解を招いているようなので、
>>313 の記述を追加したのは今日のことで、監視式を見ても変数の切り替えは問題なく
お借りしたスクリプトでは一切問題は出ていないです。
URLを貼った事でややこしくしてしまいました、すみません。
あと
>>311 の
>問答無用でスキップされてしまうので
>>311 の前者のデフォに戻したいのです。
は安価ミスで、
>>312 です。失礼しました。
久々の事で、どこをいじって未読文章でもスキップする設定にしたのかわからず仕舞いという現状です
320 :
311 :2009/07/19(日) 20:36:43 ID:iVSFme8T
連レスすみません
また安価ミスです…どんだけ自分にレスするのが好きなんだ…
×:あと
>>311 の
○:あと
>>313 の
>問答無用でスキップされてしまうので
>>311 の前者のデフォに戻したいのです。
は安価ミスで、
>>312 です。失礼しました。
それ以外でskip関連いじくってるとか systemフォルダいじってるなら合掌……
初歩的な質問ですが、 シナリオ書くのに どうしてMS Wordはだめなのでしょうか?
>>322 ファイル名.docをファイル名.zipにして解凍してメモ帳かなんかのテキストエディタで見てみればその理由が分かる
分からないなら…
>>323 なぜ圧縮解凍?普通にそのままテキストエディタで開けばいいじゃん。
そのまま開いたら文字化けするじゃん?
zipにしても化けるっつーの てか回答なんてできるわけねえだろ
ワードなんか使わなくても 一行辺りの文字数指定できるテキストエディタとか使った方が効率がいい
ゲーム作成して配布する時に問題なのでしょうか、 それとも自分で楽しむだけでも問題なのでしょうか
もしかしてと思ったらdocx限定なんだな これだから昔のは困る
330 :
311 :2009/07/19(日) 21:40:57 ID:iVSFme8T
解決しました。
デバッグのためどこでもセーブプラグインのマクロを切っていたのが原因でした…
すごく初歩的で恥ずかしいのですが、未読既読判定ってもしかして
行やページではなくラベル毎にやっているのでしょうか。
ともかく、相談に乗ってくださった方々ありがとうございました。
>>328 ストーリーや通常の文章は使い慣れたwordで
KAGやTJSは他のエディタを使うというのでは違うのでしょうか?
吉里吉里のスクリプトに特化したエディタの方が何かと便利ですよ
ありがとうございます 勉強になりました
質問です。 既読文字の色を変えたいのですが、どのようなやりかたができますか? 選択済選択肢の色換えのマクロ (『ハイパーリンクで飛んだラベルの名前を変数として記憶、真なら色換えというマクロ』と 『エンドリンクとリセットフォントを一緒にしたマクロ』のセット) を公式BBSのログで見つけて利用していて、 それを応用できないかと思ったんですが、思いつけませんでした。
>>332 kag.getCurrentRead()
既読だと真。
>>333 ありがとうございます!
初心者なので、そういうのがパッと出てこないというか、どうやって調べたらいいのか分からずお手数をおかけしました。
後学のためお聞きしたいんですが kag.getCurrentRead()
とかはどうやって調べたら出てくるのでしょう。
(一応ここでお聞きする前に、リファレンス(KAG/TJS)のキーワード一覧で「既読」と調べてみたんですが、
kag.getCurrentRead()というのは見つけられなかったんです)
以下教えていただいたおかげの成果
[macro name=fc]
[cm]
[if exp="kag.getCurrentRead() == true"]
[font color=0x808080]
[endif]
[endmacro]
というマクロを組んでラベル後につけるようにしたら
デフォが白文字、既読灰文字になり思うような処理ができました。
・回想リプレイを組み込む予定なので、回想モードから来た場合はリセットフォントするようにしてみました。
・どこでもセーブプラグインを利用中で、[p][label](セーブできるラベルを挟むタグ)[cm]をセットにしたマクロを
[p]代わりに使用していたのでそれに上の処理を組み込み、また回想モードから来た場合はリセットフォントするようにしてみました。
今のところ思い通りに出来ていますが、もし何か「こうした方がいい」とアドバイスありましたら宜しくお願いします。
初歩的なことかもしれませんが、アドバイスをください。 f.hensuu1、f.hensuu2、f.hensuu3……f.hensuu35という規則的な名前の変数が35個あります。 このf.hensuu1〜f.hensuu35までのうち、1つでも1が入っていたらメッセージを表示させたいのですが、いい表記方法が思い王かびません。 [if exp="f.hensuu1==1||f.hensuu2==1||(中略)f.hensuu34==1||f.hensuu35==1"] メッセージを表示します[p] [endif] こう書くしか思いつかず、でもすんごく長いしわかりづらい……と悩んでいます。 もっとすっきり書く方法はないでしょうか?
素直に配列じゃまずい理由でもあるの?
夏休みはじまったし、コミケまで時間ねえしって時期なんかね
>>336 ・0か1しか入らないことが確実なら、全部足して1以上かどうか
・f.hensuuを配列にして、f.hensuu.find(1)が0以上か
・iscript内でfor文を書いて、f['hensuu'+(i+1)]にひとつでも1があるか調べた結果を別の変数にいれる
>>337 ,338
配列……
すいません、いままでKAGだけでノベルゲーしか作ったことがないのでこういう方法しか思いつきませんでした。
TJSの勉強もかねて、配列のやり方を調べてみます。
ヒントありがとうございます!
>>339 もう見てるかわからないが、
管理方法を今更変えたりソースいじるのが面倒だという場合は
[if exp="function(f) { for (var i = 1, last = 35; i <= last; ++i) if (f['hensuu'+i] == 1) return true; return false; }(f)"]
メッセージを表示します[p]
[endif]
これでもできる。
>>335 332=334です
なるほど! 見たかったものがたくさんありました。
いろいろありがとうございました!
>>341 とはいえ、読み返したとき何を意味してるかわかんないと思うなら、
最初のやつの方が冗長と感じるかもしれないけど、まだましかと
ネイティブプラグインで定義されたネイティブクラスのメンバ関数から TJS_BEGIN_NATIVE_METHOD_DECL(foo) { *result = objthis; } TJS_END_NATIVE_METHOD_DECL(foo) として自分自身のインスタンス
すみません、途中で描き込んでしまいました。 ネイティブプラグインで定義されたネイティブクラスのメンバ関数から TJS_BEGIN_NATIVE_METHOD_DECL(foo) { *result = objthis; } TJS_END_NATIVE_METHOD_DECL(foo) として自分自身のインスタンスを返すと、 返値のオブジェクトのコンテキストが0x00000000になってしまいます。 ほか、ネイティブ関数内で生成したネイティブインスタンスを返したときも同じでした。 にも関わらず、返値のオブジェクトからメンバを参照したりすると コンテキストがthisコンテキストの場合と変わらない動作をします。 これって吉里吉里バグでしょうか? それとも自分のコードのバグでしょうか。
メンバー取得だと objthis は参照されることは無いからエラーにならない。 メンバ呼び出しも、インスタンス生成時にすでにインスタンスの objthis がコンテキストに渡されてるからたぶんOK。 ためしにプロパティを定義してから参照してみなされ。エラーになるはず。 ちなみに *result = tTJSVariant(objthis,objthis); が正しい iTJS2Dispatch2 の返し方
ちょっと訂正 s/正しい iTJS2Dispatch2/正しいインスタンス/
ちょっとKAGEX使って見たいと思いダウンロードしてみたんですが、同梱の「update_auto_copy_vars.bat」って何でしょうか?
nscから吉里吉里に乗り換えようと思ってるんだけど、どの本買えばいい?
公式ドキュメントを印刷して簡易製本したやつ
そういえば吉里吉里の入門書で、全ページ公開されている本があったな。
limited previewでも見れるやつあったと思うんだが。
>>349 「原理原則」や「机上の空論」を正論と思って賞賛してよいのは中学二年生まで
左に何もオブジェクトを指定しない間接メンバ選択([]演算子)ってどういう動作するの? System.inform(["a"]);みたいにするとなんかオブジェクトが返ってくるけど
それ演算子じゃなくて式中配列じゃね
ああなるほどそいういうことか
KAGのIF文の条件式に = じゃなくて == を使わなきゃいけないって、何かすごく 違和感ない? いつも忘れて、そのミスを見つけるのに苦労するんだけど... しかもエラーを吐いてくれればまだいいけど、出ない。ただ無視されるのみ...
>>359 どういう違和感?
=と==は明確に意味が違うよ
エラーを吐く言語もあるけど、そのためには厳密な型宣言が必要なんだよな。 今あるコードが全部使いものにならなくなるぐらいの仕様変更しないと無理かも。
コーディングやったことがない人にとっての違和感ってことでしょ 他の部分は直感的なのになんで == なんて日常生活で使わない 記号つかってんの? っていうどんな言語でも初心者がぶつかるやつ
BASIC などの古い言語しか知らない人も同じ違和感を受けると思う。 自分が BASIC→C の時そうだった。 IF文ってのは条件分岐を行うためのもので、その中で計算を行うなんて 発想がないんだよね。
なるほどー 納得した
>>359 BASICあがりの人かい?
原理的には = を場所によって意味を変えるのはできなくはないんだが、
それをやってると、コンパイラの構造が複雑になって性能がおちてしまうので、
別にわりあててる言語のが多い。
そうだねぇ、KAG が純粋に独立したスクリプト言語なら = でも OKだったのかもだけど、
処理として TJS を読んで判定かけてるのでそうはいかなかったんだろうね。まあ慣れろってことで。
ちなみに C 系だと = が代入で、== が比較だけど、
Pascal系だと = は比較で := は代入だったりするからややこしいw
:=で代入きぼちわるいね そうだ。不等号が入るとき、どっちに書くかいつも迷うんだけど良い覚え方はないものか。
>= フ トウゴウ <= フ トウゴウ って覚えれば
>>359 あーそれw
以前、ksを1行ずつ読んで、簡易的なチェックで警告一覧を出力する.vbsを作ったことあるわ。
↓自分の場合は、こんな感じのチェックでも十分だったわ。
1.ifの含まれている行があったらスペースタブの整理後if(で配列へ分割。
2.各要素で右から最初の')'より後ろは削除。
3.'===','==', '!=', '+='等を除き、''='が残っていたらワーニィング。
※1.ifだけで?はみていない。
※2.条件がif()の括弧内に入っていないと使えない。
※3.条件が複数行に跨るものも拾えない。
※4.関係ないものも拾う。ex.if(a=1){(b=1)}
※5..ksだと@ifとか@elsifとかいったやからもある。上のままだと全部拾う。ex.@if exp="a"
コーディング未経験のスクリプターと共同作業やるならいいかもな
370 :
359 :2009/07/24(金) 18:40:47 ID:qfGoZbC/
>>363 >>365 図星かも。10年以上前にプログラミングをかじる程度したことはあったんですが、
社会人になって止めちゃいました。そして何を思ったか、今になってゲームを
作りたいと思っちゃったんです。
Excelは今も良く使うので、 = 表記に完全に馴染んじゃってるんですよね。
>>368 おー、同じ悩みを抱えていた人がいたんですね。俺一人じゃないんだ...
何かホッとした。
皆さん、下らんボヤキに付き合ってくれて、ありがとう。
>>368 cond属性とかもあるけど、おおまかなチェックはできそうすね
>>366 「大なりイコール」とかの順で書けばいい
以前、比較のつもりで=>書いて例外(HardwareException)出して、 それが誤りであることに気が付くまでにとても悩んだなあ…orz => は、式中辞書配列内(外部でも使えそうだけど)で許容されている 演算子であることを思い出してからは、迷うこともなくなりましたとさ
初歩的な質問で申し訳ありませんが 皆さんのサイトはゲームの動作環境をどう表記してますか? 吉里吉里公式の動作環境をまるっとコピペしようとしたら コピペしないで確認しろとありました 一応自分のPCのスペックを表記しておいたほうがいいでしょうかいらんでしょうか?
・公式のをコピペして吉里吉里の動作環境にする ・自分のPC(4台あるし)のスペックを確認済みとして書く の2つでやってる
>>372 そういやそうだ。そうじゃん、普段使いまくってるじゃん。
ありがとう。
=>はアロー演算子と見間違えてイミフな時がある。 =表記はHSPさわったとき発狂しかけた。
377 :
373 :2009/07/25(土) 01:30:02 ID:3DpvMHeU
>>374 回答ありがとうございます。
自分のPCスペックも表示しようと思います。
ヘボすぎて恥ずかしいが参考までにあったほうがいいかもしれませんね
ふつうはプロファイルとって実行時のメモリ量調べたり、いろんな構成のPCでひたすらテストして決定するんだけどね。 プロファイラがないからなTJSは。 というか吉里吉里にデバッガとかツール用のAPIないよね。
ビデオカード依存しないシステムだから、画面切り替えのトランジションとかをえんえんはしらせてみて どのくらいの感触で動くか調べるくらいで必要十分だよ。
=> は別にどこででも使える演算子で、カンマと同じ意味がある %["a", 1 => "b" => 2 => "c", 3] とかいう書き方もできたはず 軽くRuby使ってるんだが、さほど頻繁に使わないってこともあって <=> と <-> でいつも迷う エラー吐いてくれるタイプなんでまだましなんかもしれないけど
<->とか要らんよな わざわざ演算子にするほどのものじゃない
D言語みたいに、return a=b; はよくても if (a=b){ } はエラーになる言語もあるな
>"a", 1 => "b" => 2 => "c", 3 どこかのクロージャにしか見えない
メッセージレイヤ横にセーブorロード画面へ切り替えるボタンをつけたのですが、
戻ってきたあとにメッセージレイヤ(message0)に書いたシナリオが進まなくなってしまいます。
具体的には、
・行末orページ末のクリック待ち記号が消え、
スキップボタンを押しても発動できず、先に進めない
・ボタンは押せる、メッセージ履歴も見れる。
という状態です。
ボタンからは「kag.process("save.ks")」のように各ページへ飛んでいます。
セーブ画面に入る時のソースはこんな感じです。
本編に戻る時はこれとそれぞれ対応したタグを使っています。
@tempsave place=0
;栞に保存
@exsysbtopt forevisible=false backvisible=false
;ボタンを非表示
@rclick call=true storage="save.ks" target="*close" enabled=true
;右クリックで戻る。(他に戻るボタンをクリッカブルマップで実装してあるが、同様の症状になる。)
@locksnapshot
;スナップショットをロック
@history output=false enabled=false
;メッセージ履歴の出力・表示を無効
基本的に↓のサイトを参照しましました。
ttp://www.geocities.co.jp/tjschallenger/TJS0607.html 解決方法がわかればぜひ教えてください。
まだまだ未熟ですので、記述不足で他に必要なソースがあればもちろん載せます。
よろしくお願いします。
>>385 conductorを止めっぱなしにしてるだけでは?
kag.process("save.ks"); と、 @rclick call=true storage="save.ks" target="*close" enabled=true の、使い方がまずいな 本編のシナリオから、ジャンプで、save処理に飛んできて コールで、saveのclose処理に進んでいる のが誤り 本来なら、コールで、save処理に進んで save処理内で、ジャンプでセーブ処理内のcloseに飛んで close処理でreturnしないといけない そうしないと 最初に本編の所でsaveをコールした個所に、処理の流れが戻らない
388 :
名前は開発中のものです。 :2009/07/28(火) 11:52:49 ID:ijBRqVPC
すんません、ググってもわからなかったので KagマニュアルにSWF再生の時に、ファイル名の後に?name=value〜で 変数を渡すことが出来ると書いてあるのですが FLASH側では、どのように受け取ればいいのでしょうか? もしくはどこかに解説してるサイトがあれば教えてください。
吉里吉里でFlashは扱ったことないけど、 HTMLからそういう風に渡せば、Flash側で何もしなくてもその名前の変数に値が入るよ
吉里吉里2docか掲示板かdeeたん日記に書いてあったきがす
385です。 言う通りkag.proccesをコールに変え、@rclick callをjumpに変えたところ、正常に動作しました。 初歩的なミスでほんとにすいませんorz お二方ほんとにありがとうございます。
TJSゴリゴリとかではなく、ほぼKAGの範囲内で作られたゲームで、 ゲーム製作初心者の参考になるようなゲームを紹介して頂けませんか? プログラム・ソースが公開されていたりしたら最高です。 ゲームを楽しむことで学べたら効率的なのではないかと思いまして。
アドベンチャーゲームならいくらでもあるだろ それ以外のジャンルは,あったとしても「間違った使い方」なので参考にするべきじゃない
なんか9月にDee氏も交えた吉里吉里の講習会兼オフ会みたいなのやるらしいね
test
おさかな定職、ちょっと変化してる… これは期待していいのかな… サポートとか贅沢言わないからせめて倉庫としてでも復活して欲しい
TJSのスクリプトエンジン自体のテストスクリプトって公開されてないの?
公式掲示板他ぐぐったのですが、どうしてもわからずこちらに参りました。 サウンドギャラリーを製作中なのですが サウンドギャラリーの画面のみ右クリックで音楽停止させたいと考えています。 rclickのタグにexp="kag.bgm.stop()"を入れてみたのですが BGMがストップされません。 BGM停止のターゲットをつくり、rclickのジャンプ先にして stopbgmで止めるしかないのでしょうか。
右クリックサブルーチンのksを作りメインのksから呼び出して使ってるんですが ちゃんと動作はするもののreturnしてくるとBGMが最初から再生されてしまいます *rclick_exit @tempload place=0 @rclick call=true target="*rclick_menu" storage="r_click.ks" enabled=true @delay speed=user cond="kag.chUserMode" [return] メモリ上の栞にBGMの再生状態も記録していなければならないのかと思って マニュアルなどを読んでみたのですが分かりませんでした 初歩的すぎる問題かもしれませんがどうかご教授ください
400 :
名前は開発中のものです。 :2009/07/31(金) 03:26:53 ID:bpa+dbpH
すいません @tempload place=0 bgm=falseで自己解決しました・・・
>>398 rclickタグってexp属性あったかな。拡張したならともかく
言うとおり、サブルーチンを作ってそこにstopbgmを置けばよいのでは
>>398 rightClickHook使うとか
ただしそのままだとサウンドギャラリーを抜けても有効なので、removeするか
フラグが立っている(ギャラリー中)なら有効なようにする
完全な初心者です 自己解決したんですがトランシジョンは難しいですね 背景画像を使わずにメッセージレイヤに文字だけ表示している状態から その文字を溶暗で消す方法がわからなくて悩みました 結局真っ黒な背景画像を用意してクロスフェードさせました メッセージレイヤをどうやって操作すればいいのだろうと悩んでいました チュートリアルを作られている方にこのとほほなつまずきをお知らせしたいです
>背景画像を使わずにメッセージレイヤに文字だけ表示している状態から >その文字を溶暗で消す方法がわからなくて悩みました @backlay @layopt layer="0" page=back visible=false @trans method="crossfade" time="1000" @wt これでok
405 :
403 :2009/08/01(土) 00:04:18 ID:uNi03v+g
404さん、ありがとうございます チュートリアルは背景画像を使う普通の場合を想定しているのでつまずいていました
>>405 チュートリアルは、コピペして使うものじゃなくて、基本の仕組みを理解するためにあるものだから
チュートリアルだけじゃなくて、タグリファリンスにもちゃんと目を通した方がいいよ
あとはテンプレ見て講座サイトと併用するなり何なり
いきなり一から十まではできないだろうが、みんなつまづいて思考錯誤しながら覚えていくんだよ
[image storage="&kag.fore.layers[0].Anim_loadParams.storage" layer=1 pos=center] これ、型がちがうみたいなことを言われるのはなぜ?
>>407 voidになってるのかな
kag.fore.layers[0].Anim_loadParams.storage
これ監視式に入れてみたらいいんじゃね
>>401 402
レスありがとうございます。
サブルーチンの方が簡単に組めそうなので
サブルーチンでやってみる事にします。
ありがとうございました!
>>407 [image storage="&kag.fore.layers[0].Anim_loadParams.storage" layer=1 pos=center
cond="kag.fore.layers[0].Anim_loadParams !== void && kag.fore.layers[0].Anim_loadParams.storage !== void"]
または
[eval exp="kag.fore.layers[1].assignImages(kag.fore.layers[0]"]
tjsの質問です。 var i="j"; var j= 0; この場合に変数iを利用して変数jの値を変えられないでしょうか。 (i!)= 値、でできるかと思ったのですがこれは不正な代入か不正な式の操作だそうなので。
>>411 その式だと 0 = 値 ってことになるから当然エラー
目的を満たすには
global[j] = 値
でおk
407です。 408、410、レスサンクスです!! condでvoidかどうかチェックするのか……。 assignImagesの使い方もわかりました。すてきー。
414 :
411 :2009/08/01(土) 12:58:26 ID:p7Ny6mdi
>>412 []演算子を使えば良いのですね、回答いただきありがとうございます。
私の考えたものは言われると確かにエラーで当然ですね、何故これでできると思ったんだろう。
そういうのはちゃんと理解して使わないと嵌まるよ
first.ksから次のシナリオのksに飛ばして 再びfirst.ksに戻って次のksに飛ばす方法したいんだけど 戻る時jumpで*〜指定するのとcallでreturnして戻るのと指定するのどっちが効率的? 他にそういう方法があるなら教えてほしいです。
>>416 そんな些細なことで効率性を求めてたらなかなか進まない
好きな方法をつかう
個人的にはマクロ読み込みみたいに必ず呼び出し元に返ってくる、ちょっと別のファイルを
読み込むような意図ならサブルーチン。同じファイルに戻るかもしれないけど条件次第では
戻らないかもしれない、シナリオ分岐など(ニュアンス的に)処理が別ファイルに移るようなときなら
jump使ってるかな
何の効率?
たぶん、脳みそ使わないで済む効率。 ケースバイケースなんだけど、通常のシナリオ部分なら @jumpの方が扱いが楽だよ。必要なら、戻り先は、フラグに収納しとく。 >他にそういう方法があるなら教えてほしいです。 tjs含め、普通に「KAG System リファレンス」で言及されているのであらかただと思う。 ということで、リファ嫁。 個人的見解だけど。そこら辺は自分で試行錯誤して決めれば良いレベルと思ふ
個人的な好みでは、jump使うのは3〜4回くらいかな あとは全部callしてる first.ks->macro.ks->title.ks->main.ks とか 構造化プログラミングとかに慣れてるとこっちの方が違和感が少ない
プログラマー上がりなら、違和感は少ないかもしれないけど、 栞やコンダクター周りとの相性の問題あるし、リンクが普通に使うと@jump同等だし、 @jump主体にしたほうが、素直でお得と思う。
callで相性問題出るのか!? 今のところ、問題起きてないけど・・・。 jump主体はGotoのスパゲッティコードを連想してどうにも。
結論:個人の好きで使え
KAG SYSTEMの構造を理解してればcall主体で組むなんてことは普通しない まあ何を作ってるのかにもよるけど、関数プログラミングがしたいなら、 TJSで自前のサブシステム作ってKAGに組み込んで・・・ってのが筋だと思うし、 後々トラブルが少なくてすむんじゃないだろうか
>>424 tjsは機能拡張の為に多少弄る程度で、本体の方の構造はぜんぜん把握してないんだ
使ってるのはADVで
*start_main
[call storage="macro.ks"]
; シナリオ部
[call storage="prologue.ks"]
[call storage="scenario01.ks"]
[call storage="scenario02.ks"]
; タイトルへ
[jump storage="title.ks"]
みたいな使い方。
シーンごとの分岐とかが楽にできるから、こういう形にしたんだけど・・・
問題でそうだろうか?
callは使いすぎるとreturnの誤爆が出てきてしっちゃかめっちゃかになる恐れがある というか実際なって困ったので必要がない限りjump
マクロ内でcall使うのって駄目? とりあえず動くからいいのかと思ってたんだけど
428 :
421 :2009/08/02(日) 18:36:48 ID:HaievO31
えっと、自分が420に対して「相性の問題」と言ったのがあらぬ疑念を 呼んでなくもないようなので、補足します。 「相性の問題」と言ったのは、土を掘るならシャベル、 耕すなら鍬のほうが相性が良いといった用なことです。(例えがあれですが) 取り合えず、「構造化プログラミング」ってなにそれ、食べれるのって方は 「KAG System リファレンス」-「サブルーチンを使おう」等をしっかり読んで、 あとは、使って覚えればいいと思いますm(_ _)m
メインフローを作ってcallでシナリオを呼んだ方が管理しやすくない?
call は呼び出しもとで行がずれたときにエラーで復帰できなくなる罠があったり
呼び出し元で行がずれるってどういう場合に起こる?
バッチ当てるときとか?
>>431 つまり最初からちゃんとしたモノを作れば問題は起きないってことです(´ー`)
吉里吉里のレイヤーって横幅が1280pxとかになってもさほど問題ないのかな 昔のDirectXだと、幅が大きすぎるサーフェスを作ろうとすると問題が起きたり してた気がするんだけど もちろんどんな大きさのレイヤーでも作りすぎればおかしくなるのは大前提として
そういや今の3Dエロゲはテクスチャが一枚1024*1024とかふざけたサイズらしいな。
吉里吉里は内部的には別にDirectX なわけじゃないので特に問題にはならないよ。 表示が DirectX の時は適当に切り分けて処理してくれるようになってたと思う。
業務連絡〜 deeたんとこのサーバがクラッシュして現在 kikyou.info アクセス不能とのこと。 復旧時期は不明
それがW.Dee氏からの最後の連絡だった・・・。 ところでおさかな定食はどうなったんだ?
SVNとか全滅ってことか?
復旧してる
441 :
名前は開発中のものです。 :2009/08/05(水) 22:30:13 ID:vUt/Hk1T
誰からんか氏のどこでもセーブ持ってませんか? 工事中でDLできなくなっているので……
二次配布おkだったっけ
流れ豚切ってすみません。 質問なのですが、 動的なカットインを取り入れたいのですが、 レイヤーそのものを動かすのではなく例えば四角いレイヤー画像内で 簡単な動きやスクロールなどをさせたいのですが そういったことはKAGEXでやった方がいいのでしょうか・・・ pimageのみを動かせないかとリファレンスを見たところ、 そういった機能はなさそうです 何かいいアイディアはないでしょうか
>>443 アニメーションファイルを使うとか。
座標ガリガリ書きまくるのがめんどくさいけど。
俺はレイヤにスプライトの機能実装したけど重かった。
俺はスプライト処理はDirectXに任せたけど結局memcpyで転送になるのでやはり重かった。
よくプラグインのファイルとか、.ksで作ってるけど、 @iscriptで始まって、@endscriptで終わるだけなら、 .tjsで作ってもいいような気がするんですけど、 .ksの方がよくて.tjsで作ると不都合なことがあるんですか?
別にない。単に KAG の処理系では読めないので、手動で execStorage する必要があるだけ
ksだとTJSの後KAGで何か書いておきたい時に書ける
関連のマクロとかまとめとけるな
俺はスクリプタにそこら辺一切触らせたくなかったのでプラグインの実装、そのプラグインを使うタグの実装を全部tjsで書けるようにしてある。 シナリオ側からは @mount name=pluginnameでプラグイン同士の依存関係から全て勝手に解決して使えるようになる。 まあ、実装の隠ぺいってやつだね。 プラグインの実体はpluginname.xp3とそれが依存するxp3にあるからスクリプタが実装の詳細を知ることはできない。 新タグの仕様はドキュメントに書いてある。 つまりプラグイン書くのはマの仕事。スクリプタの仕事ではないという事にしてある。
452 :
443 :2009/08/06(木) 23:48:52 ID:lHlM1VqA
>>443-446 ありがとうございます
スプライトで調べてみたものの????でしたので
アニメーションファイルかどうしても実装しかったらKAGEXを検討します
できそうで簡単にできない機能でもどかしいですね
俺もスクリプタには演出のみお願いしてる。 KAGのタグだとstorageで素材を指定するとか面倒くさいので、ファイル名ベースのタグである程度システムが全自動で処理してくれるようにしてある。 スクリプタがbufの番号とかlayerの番号とか気にせず演出に専念できるように。 最近はライターさんでも扱えるぐらい簡単にしたから、スクリプタ不要になった。 このままだと俺も用済みになるかもなw
>453 いや、俺の場合ライタがスクリプタ兼任なんで「お前はプラグイン書く暇があったらシナリオ上げろ!」というためにだなw
>>454 > ライタがスクリプタ兼任
ですよねー
俺なんか正直シナリオ書くよりスクリプトいじってるほうが楽しいという
本末転倒状態になってるw
一年以上前にスレで マップチップからRPG用のマップ作ったり キャラやモブが移動する2Dマップ処理のスクリプトをうpした人がいたけど、 だれか持っている人うpしてくれませんか 「おお、ベアトリーチェ」 みたいな台詞を町人がしゃべってたから うみねこ1~2話が出た頃だったかな…?
>>457 季節すら思い出せなかったので
流石に無理かと思ってましたがエスパーが居てくれて幸運でした。
本当にありがとうございます!
ベアトリーチェ=うみねこて・・・うん、いや、いい
しかたないさ
質問させてください 選択肢のランダム表示をマクロにしようと思っています 以下のようにマクロを作ってみたのですが、ふたつ問題が出ました まず、選択肢の本文が長い場合、タグがひたすら横にのびることです もうひとつは、選択のタイミングによって選択肢の総数が変わることです (選択肢が4つの質問と3つの質問があったり、選択肢が増えたりします) 解決方法が思いつかないので、何かヒントをいただけたらと思います 宜しくお願いします。 *select [macro name="select"] @eval exp="f.data = [[ mp.text1 ,'first.ks', mp.select1], [ mp.text2, 'first.ks', mp.select2], [ mp.text3,'first.ks', mp.select3], [ mp.text4,'first.ks', mp.select4]]" @eval exp="f.tmp = intrandom(0,3), f.data[0] <-> f.data[f.tmp]" @eval exp="f.tmp = intrandom(0,3), f.data[1] <-> f.data[f.tmp]" @eval exp="f.tmp = intrandom(0,3), f.data[2] <-> f.data[f.tmp]" @eval exp="f.tmp = intrandom(0,3), f.data[3] <-> f.data[f.tmp]" 1.[link target="&f.data[0][2]" storage="&f.data[0][1]"][emb exp="f.data[0][0]"][endlink][r] 2.[link target="&f.data[1][2]" storage="&f.data[1][1]"][emb exp="f.data[1][0]"][endlink][r] 3.[link target="&f.data[2][2]" storage="&f.data[2][1]"][emb exp="f.data[2][0]"][endlink][r] 4.[link target="&f.data[3][2]" storage="&f.data[3][1]"][emb exp="f.data[3][0]"][endlink][r] [endmacro] [select text1="本文1" text2="本文2" text3="本文13" text4="本文14" select1=select1 select2=select2 select3=select3 select4=select4][s]
こんな感じで、どうよ? ;選択肢の直前で変数に必要なパラメータを代入 [eval exp="f.選択肢の数 = 4"] [eval exp="f.s1 = '*select1'"][eval exp="f.t1 = '本文1'"] [eval exp="f.s2 = '*select2'"][eval exp="f.t2 = '本文2'"] [eval exp="f.s3 = '*select3'"][eval exp="f.t3 = '本文3'"] [eval exp="f.s4 = '*select4'"][eval exp="f.t4 = '本文4'"] ;2択の時の専用マクロ [if exp="f.選択肢の数 <= 2"][select2 text1="&f.t1" text2="&f.t2" select1="&f.s1" select2="&f.s2" ][endif] ;3択の時の専用マクロ [if exp="f.選択肢の数 == 3"][select3 text1="&f.t1" text2="&f.t2" text3="&f.t2" select1="&f.s1" select2="&f.s2" select3="&f.s3" ][endif] ;4択の時の専用マクロ [if exp="f.選択肢の数 >= 4"][select4 text1="&f.t1" text2="&f.t2" text3="&f.t2" text4="&f.t4" select1="&f.s1" select2="&f.s2" select3="&f.s3" select4="&f.s4"][endif] [s] [select2]と[select3]と[select4]をまとめて [select]内で、f.選択肢の数 を調べて、処理を分岐のほうがスマート
2〜4択に対応版作ってみた ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;↓今回の選択肢の数 [if exp="f.好感度フラグ < 5"][eval exp="f.選択肢の数 = 3"][endif] [if exp="f.好感度フラグ >= 5"][eval exp="f.選択肢の数 = 4"][endif] ;↓選択肢の直前で変数に必要なパラメータを代入 [eval exp="f.s1 = '*select1'"][eval exp="f.t1 = '本文1の文章をここに記述する'"] [eval exp="f.s2 = '*select2'"][eval exp="f.t2 = '本文2の文章をここに記述する'"] [eval exp="f.s3 = '*select3'"][eval exp="f.t3 = '本文3の文章をここに記述する'"] [eval exp="f.s4 = '*select4'"][eval exp="f.t4 = '本文4の文章をここに記述する'"] ;↓のマクロで選択肢配置 [select] [s]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;選択肢マクロ [macro name="select"] ;今回使用するデータを集計 @eval exp="f.data = [[ f.t1 ,'first.ks', f.s1], [ f.t2, 'first.ks', f.s2], [ f.t3,'first.ks', f.s3], [ f.t4,'first.ks', f.s4]]" ;ランダム入れ替え @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" ;↑今回の選択範囲の内容を入れ替え ;↓以下適当な回数シャッフルを繰り返し @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" @eval exp="f.tmp1 = intrandom(0,f.選択肢の数-1),f.tmp2 = intrandom(0,f.選択肢の数-1),f.data[f.tmp1] <-> f.data[f.tmp2]" ;選択肢を表示する 1.[link target="&f.data[0][2]" storage="&f.data[0][1]"][emb exp="f.data[0][0]"][endlink][r] [endif] [if exp="f.選択肢の数 >= 2"]2.[link target="&f.data[1][2]" storage="&f.data[1][1]"][emb exp="f.data[1][0]"][endlink][r] [endif] [if exp="f.選択肢の数 >= 3"]3.[link target="&f.data[2][2]" storage="&f.data[2][1]"][emb exp="f.data[2][0]"][endlink][r] [endif] [if exp="f.選択肢の数 >= 4"]4.[link target="&f.data[3][2]" storage="&f.data[3][1]"][emb exp="f.data[3][0]"][endlink][r] [endif] [endmacro]
式中関数のコンテキストって何になるの? いろいろ試してみたけど,それを含むクラスのインスタンスになるっぽい?
>>462-464 めちゃくちゃ早い回答ありがとう!
何かできそうな気がしてきた
じっくり考えてみるよ、本当にありがとう
ちょっと相談に乗ってほしい セーブデータをマイドキュメント以下に保存させるようにしたんだけど、起動すると、なんかexe直下にもsavedataフォルダが作られて、krenvprf.kepってのが作られて困ってる。 デバッグ情報を記録してるってことはリファレンスに載ってたからわかったんだけど、デバッグはOFFにしている(・・・ハズ)なんだ。 Releaserでxp3とかにするときに取り除かれる、って聞いたんだけど、相変わらず生成されちゃう。 どうすればいいか、誰か知らないだろうか?
>>468 吉里吉里付属の「krkrconf.exe」で設定できるよ
>>468 セーブデータをマイドキュメント以下、ってのをどうやって実現した?
吉里吉里設定を使って datapath を適切に設定して、
プログラムからは System.dataPath を参照させるのが正しい手順
除外ってのは、アーカイブ時に除外されるってだけだ。
>>469 確認したけど、デバッグモードはOFFになってるんだ
>>470 Config.tjsの所で、
;saveDataLocation = System.personalPath +"savedata";
ってしただけなんだけども。
他のtjsファイル見たけどsaveとかが無くて――って、dataPathで検索すればいいのかな?
>>471 使ってる吉里吉里のバージョンは?
このあたりの仕様は Vista 用に、2.3 で変更になってる ( dataPath機能の追加)
古い版では、krenvprf.kep や 例外時のログが実行ファイルのあるところの
savedata 以下にできてしまうのは仕様で回避できない。
>>472 バージョン調べたら、2.30.2.416だった。
大丈夫なのかな・・。公式見てこよう。
じゃあそれは吉里吉里本体は問題ない。 KAGも新しい 3.3 とかなら var saveDataLocation = System.dataPath; // セーブデータ保存場所 となってるはずだ。これはいじる必要はない。 krkrconf.exe で実行ファイルを指定して、システム全般/データ保存場所 を適切に指定した cf ファイルをつくれば、それに従って動作することになる
[iscript]内で、シナリオファイル上での普通の文章みたいな操作はできないのでしょうか。 例えば、普通のシナリオで、 新しい朝がきた――希望の朝だ―― と記述すると、この文章がずらずらっと表示されますよね。 これと同じ動作を、[iscript]〜[endscript]の中で出来ないかということです。 ( drawTextで実現できるのかなと試行してみたのですが、ずらずらっと表示されるのでなく、一気に表示されてしまいました。 また、ここで描画した文字分、テキストの描画位置が進んで欲しいのですが、それもありませんでした。 // テキストとテキスト描画色を引数とするマクロを作り、そのマクロからこのsubroutineに飛ばす *sub [iscript] { var a = mp.text; // テキスト取得 kag.fore.messages[kag.currentNum].font.height = 28; // フォントサイズを合わせる for ( var i=0; i<mp.text.length; ++i ) { kag.fore.messages[kag.currentNum].drawText( kag.fore.messages[kag.currentNum].x, kag.fore.messages[kag.currentNum].y, a.substring(i,1), mp.color); kag.fore.messages[kag.currentNum].x += 28; } } [endscript] [return] ) よろしくお願いします。
>>466 いっついぐざくとりー
>var saveDataLocation = System.dataPath; // セーブデータ保存場所
が
>var saveDataLocation = "savedata"; // セーブデータ保存場所
ってなっていた・・・。
これか!!!
本ッッッッ当にありがとうございます!
うわあああああアンカまちえたああ・・・・・
2chブラウザがっががが
改めて
>>474 本当にありがとう!
直ったと思ったら直っていなかった・・・・
でもやっぱり
>>474 の
>システム全般/データ保存場所 を適切に指定したcf ファイルをつくれば
で解決した・・・
リアルでドジっこ属性なんて持っててもウザいだけだろjk・・・
>>465 レキシカルクロージャではないからglobalになるはずだが変更があったのなら分からん。
>>475 どうするのが最善なのか俺にもわからんが、スキップとか履歴とかメッセージ速度とか
できるだけ既存の仕組みを使いたいならembタグが一番楽だと思う
>>475 var dic = %[];
var str = "表示したい文字列";
for(var i = 0; i < str.length; i++)
{
dic.text = str[i];
kag.tagHandlers["ch"](dic);
}
試してないけど、こんな感じで出来るかも。
クリック待ちとかConductorの制御が必要なものは
素直にKagでやったほうがいい。
482 :
名前は開発中のものです。 :2009/08/09(日) 17:52:51 ID:wSPP8w81
トランジションを使うときに、layerの番号を指定して、 chilrdenをfalseにすると1つのlayerでトランジションが起きますけど、 これに複数のlayerの番号を指定して、同時にトランジションを起こすことはできませんかね。 例えば、複数のキャラの立ち絵を同時に登場させたいときなどに使いたいんですけど。
KAGに於いては、childrenをfalseにせずにトランジションするのが正道にして近道。 日付表示みたいな小窓を出しててそれを変えたくないってんなら、 それもオモテウラ用意するのが多分正解。
484 :
名前は開発中のものです。 :2009/08/09(日) 18:42:31 ID:wSPP8w81
>>483 そうか、裏ページにコピーして変わらないところは変化しないのか。
トン
ついでに、エンティティ使ってイメージタグのストレージ属性を変数で指定した場合、変数の値を途中でevalかなにかでで変えた場合は勝手に画像の中身も入れ替わるの?
それとも、新しくイメージタグを指定するまで残るものなの?
>>484 エンティティはタグの解析時に参照される(値をTJSとして実行して、その結果に置き換わる)
あとで変数の中身を変更したところで影響ないし、それによって再読み込みなどはされない
>>482 単にコマンド列挙するだけで同時に走るよ。
もっとも、子レイヤでのトランジションは、トランジションのまちがややこしくなるのと、
レイヤサイズ違いの吸収がめんどくさいのでおすすめはしない。
×変わらないところは変化しない
○同一内容になってるから切り替わっても区別がつかない
余談だが、単純にフェードイン・フェードアウトだけなら、moveタグでやる方法もある。 この間にトランジションを行うと巻き込まれるが、好きなレイヤをそれぞれの時間で表示・非表示できるのは結構便利。
488 :
名前は開発中のものです。 :2009/08/10(月) 02:18:21 ID:mZ36Q/5Y
キャラごとにボイスのオンオフを作りたいのですが、 何かサンプルはないでしょうか?
>>488 サンプルも何も、キャラごとにボイスONの変数を用意して、
それでボイス鳴らすマクロを[if]なりcondなりしてやればいいだけだと思うが
>>489 確かにそうですね、なんとかできました。
ありがとうございます。
491 :
名前は開発中のものです。 :2009/08/11(火) 01:56:09 ID:U/SKRjwd
>>485 >>486 ありがとう、なんとかなりますた
ついでにもう一つ。
携帯からですまん。
[eval exp="f.layer_c1 = 2"]
[eval exp="f.pos_l = -200"]
[eval exp="f.layer = 'f.layer_c' + mp.lay"]
[eval exp="f.left = 'f.pos_' + mp.pos"]
[image storage="xxxx.png" layer="&f.layer" left="&f.left" ]
で、lay=2、pos=lで指定すると、
f.layerもf.leftも文字列の変数として認識されて、
無理矢理整数型にしようとすると0になってしまいます。
"f.layer_c1"といった文字列を,f.layer_c1という関数(中身は数値)
に変える手だてはないでしょうか?
多分これかな? [eval exp="f.layer = 'f.layer_c' + mp.lay"] [eval exp="f.left = 'f.pos_' + mp.pos"] ↓変更 [eval exp="f.layer = f['layer_c' + mp.lay]"] [eval exp="f.left = f['pos_' + mp.pos]"] ただぱっと見の状況ではf.layer_c2が無いから lay=2だとvoidになると思うけど
質問させていただきます。 ―(接続符号ダッシュ)を二つ繋げて使うと、文字と文字の間に微妙な隙間が出来てしまいます。 (例)―― ↑ここあたりに微妙な隙間が出来る。 字間調整なので色々と試してみたのですが、ぴったりと密着せずにうまくいきません。 こういう場合はどうすればいいのでしょうか? ご教授お願いします。
アンチエイリアスがかかってるからじゃないかな。 drawTextで書くか、アンチエイリアス外したレンダリング済みフォントを指定するとか?
>>493 デフォで文字間を空けてるなら
[style pitch=0]――[style pitch=default]
ダメならpitch=0を-1とか-2にしてみる
フォントに影つけてるなら[ch text="――"]とかも試してみるといいかも
VideoOverlayクラスを継承して独自のクラスを作ったのですが、 ムービーを左右反転させて再生する方法は何かありませんか?
>>498 ああごめんTJS
好きな位置でムービー再生できる関数作ってたんだけど
反転再生出来ないかなと思ってリファレンス見たけど無かった
500 :
名前は開発中のものです。 :2009/08/11(火) 20:21:02 ID:j4UQjU4o
>>499 TJSのみで実現するならmode=vomLayerでレイヤ描画にして
onFrameUpdateのタイミングでlayer1なりlayer2なりに対して
flipLR/flipUDするしかないんじゃないかな
すんなりお手軽には行かなさそうですね ありがとうございます
ちょっと前にここでうpされてた layerExBTOA.dllを使ってるんだけど onFrameUpdate内で左半分と右半分を合成表示してるから flipUDはいけたけど、flipLRはそのままだと無理だった
質問です。マクロに引数を持たせるのはどうしたらいいでしょうか? 下のソースで失敗したのですが、やりたい事はわかりやすいと思います [macro name="pos_set"] [eval exp="tf.func = %function"] [image storage="name_masato" page="fore" left="10*tf.func" top="5*tf.func" layer="3" visible="true"] [endmacro] どうやれば実装できるでしょうか?
情報の後出しは感心しないが copyRightBlueToLeftAlphaの後にimageWidthを 半分にしてfilpLRするのではダメなん? まあ既に解決してるならいいんだが
>>503 [macro name="pos_set"]
[eval exp="tf.func = mp.function"]
[image storage="name_masato" page="fore" left="10*tf.func" top="5*tf.func" layer="3" visible="true"]
[endmacro]
後出し申し訳無いです > layer1.width = layer1.imageWidth / 2 をやめて、layer1.leftをマイナスの方に持っていくと反転表示できました
>>505 ありがとうございます!
そして、やっていて出来ないのが不思議なのでも別の質問なのですが、
[emb exp="tf.pos_x"]
[emb exp="tf.pos_y"]
[backlay]
[image storage="image.tlg" page="back" left="tf.pos_x" top="tf.pos_y" layer="12" visible="true"]
[trans method=crossfade time=10]
[wt]
これで、embで中身を表示した時は330,400 という風に表示されるのに、
実際には(0,0)の場所に画像が表示されてしまうのですが、原因は分からないでしょうか・・・?
×[image storage="image.tlg" page="back" left="tf.pos_x" top="tf.pos_y" layer="12" visible="true"] ○[image storage="image.tlg" page="back" left="&tf.pos_x" top="&tf.pos_y" layer="12" visible="true"]
>>508 oh
o.......rz
ありがとうございます
>>499 それ継承(is-a)じゃなくてhas-aにするもんだと思うぞ。
クラス・関数どっちでもいいからヘルパーを用意する。
でなきゃ機能追加するたびに継承してカオスる。
右クリックでデフォだとメッセージレイヤが消えますよね。 それに、さらに一部の前景レイヤも消したいんですよ。 んで、色々調べてみたら、MainWindow.tjsの3000行目付近の 下記の辺りをいじくればどうにかなるってことまではわかったのですが、 その先が手詰まりです。 右クリックでメッセージレイヤと一部の前景レイヤが消えて、 クリックor右クリックで元の状態に復帰という動きにしたいんです。 function setMessageLayerHiddenState(b) { var layers; layers = fore.messages; for(var i = layers.count-1; i >= 0; i--) layers[i].setHiddenStateByUser(b); layers = fore.layers; for(var i = layers.count-1; i >= 0; i--) layers[i].setHiddenStateByUser(b); // プラグインを呼ぶ forEachEventHook('onMessageHiddenStateChanged', function(handler, f) { handler(f.hidden); } incontextof this, %[hidden:b]); }
デフォでその機能あると思うけど [layopt autohide=true layer=2] みたいな。
>>512 おお、本当ですた。
意外な機能があるんですねorz
ありがとうございます。
今更感のあるネタだが ゆの in TJS // ゆの in TJS function yuno_in_tjs() { var X = -1; var _ = -1; var 来週も見てくださいね = "Debug.message('ひだまりスケッチ×365 来週も見てくださいね!')"; return X / _ / X < 来週も見てくださいね!; } 誰かもっと変態的なコードにできない?
>>514 今更感どころか初めて知った
なんだこれ可愛いなw
// 改造版
// 後置! でのmix-inと、プロパティの評価を使ってみた
// 参考
ttp://d.hatena.ne.jp/keyword/%A4%E6%A4%CE%20in%20language var ゆの;
property X {
getter() {
return ゆの === void ? (ゆの = "ひだまり") : (ゆの += "スケッチ"), -1;
}
}
property _ {
getter() {
return (ゆの += "×365"), -1;
}
}
var 来週も見てくださいね = "+Debug.message(ゆの += ' 来週も見てくださいね!')";
X / _ / X < 来週も見てくださいね!;
loadpluuginでwuvorbis.dllを読み込んでいるのに、 xxx.oggは対応できない Wave 形式ですって出る…… 別のところではきちんとSEもBGMも出るのに、なんでだYO!
ビットレートか何かがおかしいんじゃないかしら
そういうエラーが出たかどうかはおぼえてないけど、 oggのモノラルは再生できなかったような気がする。
単にファイルが壊れてるだけじゃないの? あとはOggFlacとかになってるとか
いや、同じSEを他の場所で使っても大丈夫なんだ。 おさかな定食のsaveloadでマウスがオンしたときのSEを再生しようとすると、エラー吐く。 んで、そこを空欄にしてみたけど、今度はファイル名の部分が空白になって、 同じエラーが出てきたorz 明後日までに終わらない気がして来た……ごくり……
SEならwavでいいじゃない
得体の知れないものを使ってることが問題のような気が……。
>>521 空白にしたら同じエラー?
ファイルがみつからないっていうエラーじゃなくて?
あと他の場所ってのは、別のソフトって意味じゃないよな
念のため、kirikiri2フォルダの中にあるaudioplayerでもテストしてみ
>>522 今確認したら、.wavだたorz
.wavで指定したら直りましたわ。
トンクス。
>>523 今更ながらそう思う
素直にクリッカブルマップを使えばよかったorz
てか、今からやっても間に合うかなw
>>524 いや、同じソフトの別のシナリオファイル
ファイルが見つからないんじゃなくて、
「 は対応できない Wave形式です」って。
こんなときにおさかな定食が工事中なんて\(^o^)/
背伸びしてあやえもさんのところのプロフェッショナル版を
使ったらもう涙目www
もういい、少し黙れ
コミケいつだっけ?
明日
マスターアップまだなんだが・・・・。 もう泣きそう。
わざわざ2chに来て泣き言を言うってことは、同人なんだよな? そうだと言ってくれ。
日付でわかれよ
まるでこの時期にマスターアップを迎えるプロなど存在しないかのような 発言……? さてはお前、モグリやな!!
嫌なこと言うなよ…… こっちまで憂鬱になるだろ
そろそろRに焼き始めないとな
がんばれ超がんばれ
似たような修羅場の奴多くてワロタ さて、焼くか・・・
変数にはf、sf、tf、varで宣言など複数種類がありますが 例えば「var scale = 100」などで一度設定した値を、二度と変更できなくする、 つまりこの場合で言うと、一度scaleという変数を宣言・使用しているのに その事を忘れて、別の箇所で再度同名の変数を宣言・値の入力をしてしまっても、それを無効化する というような方法は何かありませんか?
読み出し専用プロパティにすればそういうことができる property scale{ getter{ return 100; } } fなどにするのであれば、これを f.scale = *scale とすればfに入るよ
そういえば以前TJSの解説で、getterとかsetterとか見たような・・・ ありがとうございます
ちょwドライブ壊れたお(・ω・) TJSにconstやfinalはない。getterを使う。
541 :
名前は開発中のものです。 :2009/08/15(土) 12:00:53 ID:JEMY5t4s
CDに焼いたの起動したら ストレージ ./e/myhoney!/savedata/datasc.ksd を開くことができません って出た
ある素材を改変してシステムボタンを作っているのですが、KAGはともかくtjsがさっぱりなのでご教授願いたいです。 前略 function onSaveButtonClick() { // セーブ ボタンが押された kag.saveBookMarkToFileWithAsk(); 以下略 ……というtjsスクリプトの kag.saveBookMarkToFileWithAsk(); の部分を改変して、 自作セーブ画面のksファイルを、タグで言うcallで呼び出すような感じにするには、どう記述すればよいのでしょうか? できればご回答のほどよろしくお願いいたします。
kag.callExtraConductor('jasakusave.ks');
久しぶりに来たが
>>6 のバグはまだ直ってないのかよw
あれテンプレ
deeたんネギ振ってる暇があったら吉里吉里に関する記事書いてくだせぇ。おねげえしますだ。
ここんとこずっとハード屋さんだよな
吉里吉里に飽き飽きしてんじゃね?
吉里吉里のオフ会やら勉強会やら参加しようって人が 飽きたとは考えにくい
勉強会とかは、半ば義務とか強制意識だったりして……(´;ω;`)
Nスクだと、犬と猫みたいにSLGとかもあちこち見かけるんだけど、 吉里吉里だと、SLGってどんなのある? 作り始める前に、いっぺん手本を見ておきたいと思って
レイヤの輝度を時間で変化させることって出来ませんか? アニメーションのように、クリック操作などに影響することない動作で、です 例えば、段々と暗くなっていく風景だとかをやりたいと思っています ちょっとずつ暗くした風景.jpgを複数用意すればアニメーションでもやれるかなと思いますが、値をいじくるだけでどうにかならないかなということです
>>553 手っ取り早く考えるなら暗い背景画像の上に
明るい背景画像を前景レイヤに置いてmoveタグで徐々に透明にする
もしくはtransタグでレイヤ指定してクロスフェード。
555 :
名前は開発中のものです。 :2009/08/19(水) 18:56:28 ID:xyySeW0n
TJSで、 var aa=20; のように定義した変数を、ゲーム再起動後も保持するにはどうしたらいいですか? システム変数にしたいのですが方法がわかりません。
556 :
名前は開発中のものです。 :2009/08/19(水) 18:58:09 ID:xyySeW0n
>>552 あまりないかも。自分も知りたい。
とりあえず「福音ノエマ」で検索すると同じ作者ので数本あるよ。
>>555 はじめっからsf.aa=20にしてたら駄目なの
SLGと一言で言っても、プリンセスメーカーみたいな育成系とか
ファイヤーエムブレムみたいなタクティクス系とか色々あるが
ちょっとググれば色んなジャンルの吉里吉里製SLGがいくらでもヒットするだろうに 商業だとナインテイルあたりが頑張ってるぞ この程度調べることも出来ないヤツがSLGなんて作れるのかよ('A`)
559 :
553 :2009/08/19(水) 23:03:36 ID:j6gCmr0h
>>554 ありがとうございます。
moveって、名前からして移動だけのものとしか捉えてませんでした・・・。
試してみましたが、これでちょっと実現出来るかもです。
transはwtで待たなくてはいけないのでしたよね、確か。
>552 冠を持つ神の手、マジオススメ
562 :
552 :2009/08/20(木) 03:02:19 ID:KXHm6VV3
>>556 >>558 >>560 皆さんどうもありがと。
実は普段同人エロゲばっかやってて、一般フリーのとかチェックしてなかった
いまあれこれ触ってるけど、吉里吉里のSLGもよく出来てるね〜
勉強になる
吉里吉里で麻雀作ってるスレもあるよー。コンソール見たらKAGの上で走ってたから思考だけTJSなんだろね。 完成したらコードを見てみたいものですよ。 まぁ俺は麻雀は卓から追い出されるくらい弱いからバイナリ眺めてるのと大差無いだろうけどもー
564 :
名前は開発中のものです。 :2009/08/20(木) 06:13:41 ID:so467EM9
evalはさんで仕方がないからtjsを使おうと思ったら、 kagからtjsへ、値保持のためにtjsからkagへ、で常に変数ごとに数行かかるのね……
>>561 オープニングの演出を見て、フレームレート低いけど頑張ってるなー
と思ったら、flashだった……
evalのexpの中ってTJS式の評価って事だけど、例えば exp="var aaa = 0, var bbb = 1" なんて複数の式入れても正しく処理されないんだけど 一つのevalで複数処理するにはどうすればいいんでしょ
>>566 式が文法的に間違ってる
2つ目のvarを取り除くか、コンマをセミコロンに置き換えれば実行できるはず
>>567 ちゃんと出来ました、ありがとうございます
質問です タグ作業の時に使う、かぐや姫っていうプログラムがサイト閉鎖でインストールできない… 代用できるプログラムは、あります?
適当なテキストエディタで色分けの定義ファイル使えばいいんじゃね? 秀丸エディタとかEmEditorとかTeraPadとかMKEditorとか(フリーのもシェアのもあるから注意) まぁぶっちゃけメモ帳でも出来ないことはないし
俺はKKDE使っちゃってるな 楽でいい
>>570-571 レスはや!急いでたのでありがとう。
今回初めてゲーム作るんで参考になったよ。
KKDEとかぐやってどっちがいい? 両方使ったことのある人の意見聞いてみたい
KKDEメインでファイル直接開く時はかぐやで一部検索したり置き換えたりしてる かぐやの検索が好きなんだけど、とくに両方使ってる意味は無い KKDEはマクロが自動登録されるから楽
jpeg画像を高画質で作成したのに 吉里吉里で表示すると汚いんだがなんでだ?
>>576 高画質じゃなくて高解像度で作っちゃったんじゃないのか
pngにしたら?
>>576 吉里吉里設定で 「グラフィック/JPEG画像デコード精度」を high にしなされ
そうすると、グラフィックソフトなみの精度でのデコードになって代わりに重くなる
580 :
576 :2009/08/23(日) 15:07:13 ID:Jp5gJK+C
>>577-578 レスd
色々試したら自己解決はした・・・
透過するからその部分のマットカラーを黒にしてたんだが
それを白にしたらマシになった
解決はしたけど疑問のまま納得がいかないぜ・・・
ちょうど黒のマットとの境目が低画質のjpegみたいに
四角い色分割が目立つんだ
解像度は72でやってるがなんだこれ
581 :
576 :2009/08/23(日) 15:09:34 ID:Jp5gJK+C
リロし忘れた&連レス失礼
>>576 おおトンクス!!
早速やってみる
混乱してるなw でも素直にpng使うのがベターだと思うぜ
jpgで……透過……だと? 考え直せ、というか調べ直せ。「jpg 透過」とかで検索して。
透過・・・・? マスク使って出来ないことはないけど、素直にpng使ったら・・・?
>>580 JPEGってのはもともと4×4だか8×8忘れたけど、ブロック単位で情報処理する関係で、
境界部分が劣化するのは画像フォーマットそのもの仕様
えーと、マスクデータをどうやって作ってる?
krkrtpc で変換してるなら、「完全透明部分の色情報」を「合成」にしてやってみ。
境界部のモスキートノイズが軽減される。
そのかわり情報量が増える関係でサイズはやや大きくなる。
586 :
576 :2009/08/23(日) 15:32:23 ID:Jp5gJK+C
>>582-584 うはwそんなにダメなのかw
マスク画像でpngより軽くなっていいかと思ったんだが・・・
>>585 丁寧にありがとう
マスクデータはフォトショでグレスケのjpg形式で作ってる
>>586 jpeg はダメってことはないよ。吉里吉里がせっかく対策ツールを準備してくれてるのに皆使い方を知らないだけw
フォトショップで作ってるなら、それが犯人だ。
上でかいた通り、PNGで一旦出力して、それを krkrtpc でJPEGに変換すればOK
>>586 マジレスすると、仮に画像の容量が数十MB増えたところで、
最近のネット環境やHDDのサイズから考えると、たいした差じゃないし、
展開時の負荷も800x600程度じゃ誤差のレベル
マスク画像を作る手間を省いてpngにしてしまったほうが効率いいよ
589 :
576 :2009/08/23(日) 17:38:20 ID:Jp5gJK+C
>>587-588 ありがとう色々と勉強になった
効率とほどほどに容量を考えて画像形式を選びます
TLG6も忘れないでね……
moveタグで綺麗に曲線移動させる方法ってありませんか? 1つ1つ、1ピクセルごとに指定するのはちょっと面倒で・・・ 配列に座標を入れて参照させるとか、そういう方法しか無いでしょうか
タグリファレンス嫁、属性にsplineってのがある。
まったく普及していない以外は完ぺきなJPEG 2000が実装されてればry
>>592 おお、これは失礼しました
こんなのがあったとは
前景画像を完全に「なくす」には @freeimage layer=0 という認識でいるのですが メッセージレイヤを完全になくすにも @freeimage layer=message0 みたいな感じでよいですか?
>>595 laycountで減らすと完全になくすことができる
freeimageはアニメーション画像などを含め読み込まれているデータを削除して初期化するイメージ
でもってfreeimageはメッセージレイヤに対しては使えない。タグリファレンス読みなされ
表示させたくないのであればlayoptでvisible=false
597 :
名前は開発中のものです。 :2009/08/24(月) 22:37:59 ID:TdIgriwl
;下記を動かしたところ期待した動きと違ったので、何故そうなったのか教えていただけるとあり難いです。 ;期待していた動き:message0には赤い文字で0123456789と書かれ、message1〜9まで自分の番号が緑色の文字で書かれる ;実際の動き:message0に緑の文字で9とだけ書かれ、他のmessageには何も書かれない [eval exp="tf.count = 0"] *test_loop ;メッセージ0に赤い文字で0から9まで書く [position layer="message0" page="back" visible="true"] [current layer="message0" page="back"] [delay speed="nowait"] [font color="0xff0000"] [locate x=0 y="&(tf.count * 100)"] [emb exp="tf.count"] ;メッセージ1からメッセージ10まで緑の文字でメッセージ番号と同じ数字を書く [position layer="message&(tf.count + 1)" page="back" visible="true"] [current layer="message&(tf.count + 1)" page="back"] [delay speed="nowait"] [font size=15 bold=false color="0x00ff00"] [emb exp="tf.count"] ; 10回繰り返す [jump target=*test_loop cond="++tf.count < 10"] [trans method=crossfade time=500] [wt][s]
598 :
596 :2009/08/24(月) 22:45:27 ID:MUoD3jpl
>>595 すまん。読み違えをしてた
画像を読み込んだ結果を削除するには、別の画像を読み込んだりLayer.fillRectで上書きすれば可能
メッセージレイヤには使えないけど、freeimageも塗りつぶし作業は含まれている
メッセージレイヤに対して、文章の内容を削除したい(フレームで塗りつぶす)場合はcm/ct/er各タグ
フレームを消去したい場合はpositionでframe="" opacity=0すれば透明色で塗りつぶしてくれる
599 :
596 :2009/08/24(月) 22:59:05 ID:MUoD3jpl
>>597 まず [current layer="message&(tf.count + 1)" page="back"] でのエンティティの使い方が間違っている
&記号は変数の前につけるものではなく、属性値の一番頭につけるものなので注意
正しくは、layer="&'message'+(tf.count+1)"
もうひとつはpositionタグはメッセージレイヤの属性を変更させた後に内容をクリアしてしまうので
最初にすべてのメッセージレイヤの属性を設定しておいて、ループ時にはカレントレイヤの設定や
文字の描画などのみを行えば問題ない
どっちにしろ、まずはnowaitせずに表ページに描画させてみてたら気付けることでは?
吉里吉里の掲示板のRSSって今機能してないよね?
>>596 ,598
欲しかったCriticalな回答は
>>596 で頂戴できました
ありがとうございます。お礼が遅くなりすみませんでした
Syntheの正式サービス始まったのにレポが書き込まれないな。 俺はプラグイン使えんと話にならんので論外なんだが皆そんな感じでスルーしてんのかね?
単純に人が少なすぎて萎えてる
メッセージ履歴拡張プラグイン 公開してくれてたサイトが見れなくなってるけど 俺だけ?
シナリオを書いているときには「我ながら傑作だ!」と思うのですが、 あとから見直してみると糞つまらないです。 どうすればいいでしょうか(><)
>>606 スク打ちする時に納得するまで直す
他人のシナリオでも問答無用で直す
あとここ吉里吉里スレ
後から見ても面白いシナリオを書けばいいじゃない
いっそ見直さなければいいんじゃね?
最初からつまらなければいいんじゃないか?
まあここは吉里吉里使いの“雑談”スレだし、凄く真面目にレスすると
>>606 沢山書く。書いて「駄目だ」、書いて「意外と良いな」、それを繰り返す。
と、書き上がる前、書いてる最中から「これは無いな」という判断が出来るようになる。
あとは手持ちのアイデア、知識でどう面白くするかの勝負。
やりたい演出とかみ合わない時にばっさりけずったり書き換えたり……はケンカの元ですよね、はい
613 :
名前は開発中のものです。 :2009/08/28(金) 16:09:59 ID:NvNmqP8E
pngを使う
PNG読み込み中にエラーが発生しました って出ました;;
うほっ
作り直したらでけた
>>614 に心からの敬意を払います
Sai使ったこと無いからわからないけど Png保存のオプションとか無いの?
SAIでPSDで保存して、PhotoshopでPNGに保存するとかじゃなかったっけ? そんな面倒くさいことやらないか。
Saiってそんなにいいのか? はなからphotoshop使えと思う
線ひく場合は間違いなく SAI のがいい
GimpPainterのGpenよりもいい?
それは使ったことないからシラネ とりあえず Photoshop で線ひくのはもはや苦行
まあphotoshopはペイントソフトじゃなくてフォトレタッチソフトだしね。 比べる対象としては不適切。
Ok覚えとく photoshopで線は引きずらい
>>624 一応ここのスレタイも覚えておいてくれ
あと、お前のIDなんかかっこいいな
>>664 のIDはSAIボーグみたいでかっこいいよな!
アンカーミスった! 許せ諸君
>>612 まあ演出切るのはいいがBGM没にすると音屋に呪い殺される。
質問です tf.para1 に 'あああ' を代入しようとしたとき [eval exp="tf.sort_no = 1"] [eval exp="'tf.para' + tf.sort_no = 'あああ'"] こう記述してもうまくいきません…。 何がいけないのでしょうか。 というかどうすればいいのでしょうか(´・ω・`)
[eval exp="tf['para' + tf.sort_no] = 'あああ'"] sfとかfとかtfとかは辞書配列で、.以降は要素名だからこう書かないとだめ。
他の人が作ったゲームのソースコードが見たいけど 開示してるサイトってありますか? ゲームやってから、ここの処理はどう書いてるんだろうと見直して勉強したい・・・
>>630 はぁぁぁん(*´д`*)ビクンビクン
ありがとうございました!
>>631 「吉里吉里/KAGではじめるゲーム制作」に幾つかソースままのデータが入ってる
はずだよ。
今は亡き林檎坂通信さんのやつとか。
質問失礼します。 立ち絵をジャンプさせるマクロを作っていて 任意(mp.up)の数をmoveタグのy座標に代入したいのですが [macro name=fg_jump] ;ジャンプの高さ指定 [eval exp="tf.up = 20 - mp.up" cond="mp.up !== void"] ;指定がないときの高さ(デフォルト) [eval exp="tf.up = 20" cond="mp.up == void"] [move layer=1 path="(500, &tf.up, 255) (500, 30, 255)" time=%time] [endmacro] のマクロで、以下シナリオ本文で [fg_jump up=30]または[fg_jump]と入力しても この値に関係ない指定した覚えの無い高さまで移動します 監視式を見てもtf.upはちゃんと変化しているようですが moveタグの path="(500, &tf.up, 255)"には反映されていないようです 何か記述のミスなどの指摘があればよろしくお願いします
&は、KAGにおいて、引数の先頭にある場合にその後ろを式とみなして評価した結果を値とする機能。 中途で使えるようなものではない (TJS的な & は「参照」で意味が違う) つまり正しい書き方は、 path='&"(500," + tf.up + ",255)"' このように式を展開するか、あるいは、@つき文字列即値を使って path='&@"(500,${tf.up},255)"' こうする
>>635 即レスありがとうございます!
無事解決できました
勉強不足でお恥ずかしいです
とても助かりました
>>633 レスありがとうございます。
その本は以前購入しようとして結局見つからずに断念したものですが、また探してみようと思います。
ついでにもう1つ質問なのですが、
一行分の大きさのメッセージレイヤ2つを交互に使っているのですが、
メッセージの履歴が改行されてない状態になってしまいます。
かといって改行タグを使うと、自動改ページ機能が働いてレイヤ上のメッセージが消えてしまいます。
なにかいい解決策はありますか?
最悪メッセージの履歴表示機能をオフにしようと思うのですが読み返せないのはやっぱり不便ですよね・・・
>>639 スルー検定に落第しました。
潔く出て行ってください
キャラが複数居て、それぞれにパラメータを設定する場合 「Aの攻撃力」「Aの防御力」「Aの素早さ」… 「Bの攻撃力」「Bの防御力」「Bの素早さ」… 「Cの攻撃力」… があるとしまして。これらを管理する場合、どう管理したほうが良いか 皆さんの私見で結構なので 参考にしたいと思います。 (*-A)1次元の配列を複数もって、パラメータごとに管理 f.attack[0] = Aの攻撃力; f.attack[1] = Bの攻撃力; ... f.guard[0] = Aの防御力; f.guard[1] = Bの防御力; ... (*-B)1次元の配列で、各キャラごとに管理 f.charaA[0] = Aの攻撃力; f.charaA[1] = Aの防御力; ... f.charaB[0] = Bの攻撃力; f.charaB[1] = Bの防御力; ... (改行が多すぎるといわれたので続きます)
(**)2次元配列を使って管理 f.para[0][0] = Aの攻撃力; f.para[0][1] = Aの防御力; ... f.para[1][0] = Bの攻撃力; f.para[1][1] = Bの防御力; ... (***)その他(´・ω・`) 何か良い案があれば。。 プログラミングにあまり慣れていなく、どういう書き方が標準なのか恥ずかしながらよくわかりません。 いつもこのスレではお世話になっています。 よろしくお願いいたします。
2次元配列を使って管理
なんで連想配列使わないの? C++なのにレコードを多次元配列で持つタイプ? おれならクラス作る。
TJSでやるならそれはキャラをそれぞれオブジェクトにして 攻撃力や素早さなどはそのプロパティあるいはメンバ変数にするだろうな class Character{ var attack, guard, agility; } f.charaA = new Character(); f.charaA.attack = Aの攻撃力; f.charaA.guard = Aの防御力; f.charaB = new Character(); f.charaB.attack = Bの攻撃力;
オブジェクトにする場合シリアライズとかはどうしてるの?
コンストラクタでやればいいじゃん。ダメなの?
function store() { var dic = %[]; return dic; } function restore(dic) { } 詳しくはKAGLayerとか見ればわかるよ。
649 :
641 :2009/08/30(日) 21:41:55 ID:yXgat51Z
>>641 です
皆さん色々なご意見ありがとうございます!
>>645 のがカッコイイのでさっそく勉強したいと思います。
お礼が遅くなり申し訳ありませんでした。
カッコイイのでキリッ
>>641 =
>>649 です
@iscript
class Character{
var attack, guard, agility;
}
f.chara1 = new Character();
f.chara1.attack = 5;
f.chara1.guard = 10;
f.chara1.agility = 15;
}
@endscript
@eval exp="tf.chara_no = 1"
1キャラ目の攻撃力は
@emb exp="f['chara' + tf.chara_no + '.attack']"
こー書いてもうまくいきません。
(´・ω・`)根本的に何か間違ってるような気がするのですが、、、誰か助けて
>>651 の
@endscript の前の } は忘れてください(´・ω・`)
>>651 @emb exp="f['chara' + tf.chara_no + '].attack'"
じゃねーの?
tjs自体にはうといから他の部分はわからんけど、emb部分は @emb exp="f['chara' + tf.chara_no].attack" こうじゃない?
TJS式が f["chara1"].attack になってほしいのだから @emb exp="Scripts.eval('f["chara' + tf.chara_no + '"].attack')" とかじゃないかな? または、そもそも別の方法として、f.chara1ではなく f.chara = []; f.chara[1] = new Character(); f.chara[1].attack = 5; などのようにとしておいて @eval exp="tf.chara_no = 1" @emb exp="f.chara[tf.chara_no].attack" とするのがスマートかもしれない
>>655 でいけました(`・ω・´)! 感謝です
>>656 を見習って配列にします。 ' で囲ったりとか面倒。
>>656 のカッコイイ!
class変数の配列の書き方の発想って こんな感じでいいんですよね?
なんかもっとこう バシィーッ! とスマートなものがあったりしたら泣いちゃう
>>648 これ、保存する時はともかく、栞から復帰する場合はどうすればいいの?
栞を読み込むと、f.charaA = new Character(); で言うと
f.charaAが「null オブジェクトにアクセスしようとしました」
ってなる
>>658 うん。
chara1などのようにすると、数字の部分を可変にするためには
よけいな手間がかかるから、その場合は
chara[1]のように配列にするのがスマートかと
>>659 それはあくまでイメージ図で、
実際はstoreでは必要なパラメータを全部Dictionaryに書き出しと
逆にrestoreでは全部Dictinaryから書き戻しをやっている
っていうことを言いたかったのだと思うよ
f に自前オブジェクト格納するのはやってはいけない間違い。 KAGプラグインの形で書いてグローバルに保持するようにして、 保存/復帰処理を書いて処理するようにしないとダメ
あーー。 うん。確かにそうだ その通り
>>660 イメージ図なのは分かってるから、中身は自分で書いたけど
栞からの復帰時に、そもそものオブジェクトがnullがどうとかで
正しく復帰できないから、どうするのかなと思って
>>661 えっ つまり自分は やってはいけないことを しているということです?
>>664 もしCharacterがデータを保持するだけのメソッドを持たないクラスなら辞書配列を使ったら?
こんな感じに。
function createCharacterData() {
return %["attack" => void, "guard" => void, "agility" => void];
}
f.chara1 = createCharacterData();
f.chara1.attack = 5;
f.chara1.guard = 10;
f.chara1.agility = 15;
>>665 初めてみるカタチです ちょっとググってきます
ここのところお世話になりっぱなしなのですが、質問させてください セーブ/ロード画面で [eval exp="tf.save_date = kag.getBookMarkDate(tf.save_i)"] [emb exp="tf.save_date"] [emb exp="kag.getBookMarkPageName(tf.save_i)"] このように 「i番目の栞をセーブした日付 i番目の栞の見出し(ブックマーク名)」 を リンク文字列として表示させておくのは よく見ますし、手元のマニュアルにも書いてあります。 これを、例えば「ゲーム上で今、何日目か」をf.date で格納していたとして (例: [emb exp="f.date"]日目 ) セーブリストのところに 「2009/08/31 09:15 4日目」 「2009/08/31 09:20 5日目」 などというリンク文字列を表示させるのは可能なのでしょうか?
>>667 f.date : 何日目か記録 →ゲーム中に使用する
として、sf.savedata_dateとかの配列のシステム変数作って、
セーブする時、sf.savedata_date[何番目のデータか]=f.dateで
記録しといてセーブ画面の時はそれ表示するだけでいいんでないの?
>>668 すげぇー!ソノハッソウハナカッタワ
そういうコトがなぜ思いつかないんだ自分。ありがとうございます。
どんどん質問してすみません。。 [link]タグをループでいくつかまとめて表示させて、 そこにexpパラメータを入れたいのですがうまくいきません。 [eval exp="tf.loop_i = 1"] *loop [link target="*next" exp="tf.temp = tf.loop_i"] [emb exp="tf.loop_i"]番目選択肢[endlink][r] [jump target="*loop" cond="++tf.loop_i < 5"] [s] *next [er][emb exp="tf.temp"]番目が選択されました。 このように記述すると、「1番目の選択肢」〜「4番目の選択肢」が表示されて 例えば「3番目の選択肢」を選択したら「3番目が選択されました」と書かれてほしいのに、 [s]までいった時点のtf.loop_i = 5 がtf.tempに代入されて、「5番目が選択されました」と出てきてしまいます。。 どうすればよいでしょうか(´・ω・`) 今は仕方なくループさせずにソース全部書いて対応してるます。。
>>665 それだと要素名ごと書き換えられるのでクラスにしてアクセサ付けた方がいい
>>664 そうです。
やってみてわかったかと思いますが、
オブジェクトは Dictionary.saveStruct がスルーするので
保存/復帰しても null になるだけです。
辞書を使うかプラグイン書くのが正解
>>670 link の exp の内容は、選択時に動的に評価されるから当然。
エンティティを使って、タグ展開時に式を展開した状態で構築すると良い。
emb の exp はもともとタグ展開時に評価されるからそのままで問題なし。
[link target="*next" exp="&'tf.temp = ${tf.loop_i}'"] [emb exp="tf.loop_i"]番目選択肢[endlink][r]
ごめん間違い exp="&@'tf.temp = ${tf.loop_i}'"
Releaser (krkrrel.exe)を走らせて、アーカイブ化するフォルダー(プロジェクトフォルダーや画像フォルダー)を指定すると krkrrelが落ちるんですが、何がおかしいのでしょう・・・? バージョンは吉里吉里2 2.30 安定版 Revision 2です。
基本的な質問で申し訳ないんだが、 メッセージレイヤーでフレームに画像を指定する場合、 スクリプト側でフレーム画像の不透明度を変更するのってどうやるの?
>>674 自己解決しますた。PC再起動何度かしたら普通に動いた・・・何だったんだ・・・
>>664 =670です
>>672 あなたがネ申か という感じです…。
実際にプレイしてみて最初は問題なかったのですが、
セーブ→ロード→エラー。 何これ? と思ってここに覗きに来たらもう対処方法が書いてありました。感激です
f.chara = [];
(for var i=1; i<20; i++)f.chara[i] = %[];
f.chara[1].attack = 10;
…
のように書くことができました(゚∀゚)!こっちのほうが記述も簡単でした(笑
exp="&@'tf.temp = ${tf.loop_i}'" の件も、@の意味が分かりませんが
そのままコピペしたら出来ました。 こんな理解度でよいのでしょうか。。。
どうもありがとうございます! いつもここに来るたびにスッキリして帰れるのでとてもありがたいです
>>677 どうでもいいというか細かい事だけど
(for var i=1; i<20; i++)
はi=1じゃなくてi=0にしろ
>>678 慣例的に、そう書くのが一般的 ということでしょうか?
なんとなく chara[0]より chara[1]から始めたほうが… と思ったものですが。
i=0 から始めておいて、実際はchara[1]から使用していく、というのはアリでしょうか?
>>679 @ つき文字列即値 ですね。参考になりますm(_ _)m
>>680 一般的にと言うか、配列は0から始まるから
まあ別に1から使っても全然問題無いんだけど
[1]があるということは内部的に[0]が作られていると言うことで、 配列のlengthとか取った時に食い違うかも。 まあ吉里吉里/TJSではその辺は大抵なあなあに扱えてるけど 他の言語では0から数える癖をつけておかないとエラーの元になるとは思う。 TJS以外の言語を使う気がないのなら1からで問題無いかも。
言語によっては逆に1からが標準になってることも Delphi(というかPascal)とか一部のBASICとか
>>683 そーなのかー
ぜんぶゼロオリジンなのかと思い込んでた
このスレの人たちはマジで物知りだな
零起算じゃないとめまいがry final ZERO = 1; final MAX_LEN = a.length + 1; for(int i=ZERO; i<MAX_LEN; i++) a[i]= i - 1; とかいうひどいコード見たことあるんだが。
まぁやってるうちに0からで落ち着いてくるんじゃね? 一応、そうした方が便利っていう根拠があるお作法(?)だし。
皆さんありがとうございます。i=0から始めるクセをつけていこうと思います
ID変わってた。。
>>680 でした。駄レスすみません
その言語ごとのお約束に従っていればそれですむこと。
アニメ用でアルファーチャンネル付のBMPで横に画像連結する ソフトってどこにあったか教えてごださい・・ 吉里吉里の画面に整理番号付けてフォルダごとドロップすると BMPで連結されて出てくるやつだったと思います・・ なんだか・・どーしても見つからない・・ HDDは吹っ飛ぶし見つからないし泣きたいよ・・・ 他のはバックアップで見つかったけど上記のだけみつからんんんんんんん・・・
>>690 ソフト関係とかグラフィック関係のスレで聞いたほうがいいと思うよ
詳しい人がたくさんいると思うし
layerExBTOA20090321 でぐぐれ
おさかな定食さんで配ってた奴じゃないかな。
695 :
690 :2009/09/01(火) 22:58:49 ID:iJIRqYRq
バックアップファイルをかなり捜索してみつけることができました! 探してくれた人ありがとうございました trash01.lzh という中にstartup.tjsとreadmeが入っててstartupを入れ替えて吉里吉里windowにぶち込む と連結されるというやつでした ソフトというかスクリプトと言った方がよかったかも
>>695 まあなんというか、連結してる状態をテキストファイルとして生成させるならともかく、
ただ連番で連結させるくらいなら画像処理ソフトでも出来るような気がするけどな。
意外に選択肢は少なかったが、それでも2〜3個はあったよ。
あの時は結局GIMPでやったけど。
コード書けば早い話だったんじゃ
すみません、質問なのですが。 SLGを作ってまして、ウィンドウやボタンなどが画面上に一杯表示されております。 イベントシーンなどを挟む為、そのボタンやウィンドウの上に、画面全体を覆うレイヤを 作り、hitThresholdを0にして、下のボタンを押さない様にしたのですが、背景レイヤが クリック処理を受け取れない為、今度はメッセージレイヤが反応しなくなってしまいました。 色々考えましたが、この際、全体を覆うレイヤをクリックした場合、メッセージレイヤの クリックされた時に呼び出される関数を直接呼び出してやろうと思ったのですが、 MessageLayer.tjsの中身を眺めても、中々わかりません。 以下の様な呼び方であってますでしょうか?それとも呼び出す関数が間違ってますでしょうか? kag.fore.messages[0].processClick()
いつもお世話になります。また質問させてください。 クリッカブルマップを使うとき、例えば 地図(map.png)の中に自宅の絵が描かれており、そこに相当する領域画像ファイル(map_p.png)の パレットインデックスが1だとします。 このとき、layer = base に地図が表示された状態で layer = message0 が見えており、 ここにonenterの状態でmessage0レイヤに 自宅。 ちょー汚い。 と表示させたい場合はどうすればいいのでしょうか? 領域アクション定義ファイルに 1: hint="自宅"; target="*home"; onenter="?????"; onleave="?????"; exp="?????"; このそれぞれに何が入るか、また別途関数を宣言する必要があるのか 教えていただければ幸いですm(_ _)m
700 :
698 :2009/09/02(水) 23:35:49 ID:Q9zrqi7n
すみません、自己解決しました。
>>699 1: hint="自宅";target="*home";
onenter="kag.fore.messages[0].processCh('自宅。');
kag.fore.messages[0].reline();
kag.fore.messages[0].processCh('ちょー汚い。')";
onleave="kag.fore.messages[0].clear()";
たぶんこんな感じかと。改行は無視してください
便乗なんですけど、クリッカブルマップで領域にカーソルが入ったときに所定のラベルに飛ぶという場合、 1: onenter="KAGParser.goToLabel('*test"); だと実行コンテキストが違いますってエラーが出ちゃうんですけど、どうしたらいいんでしょうか
kag.process(, '*test'); kag.conducter.gotoLabel('*test');
×:conducter ○:conductor orz
決めた、俺死ぬよ ×:gotoLabel ○:goToLabel
706 :
702 :2009/09/03(木) 01:32:49 ID:MbXbqCyp
>>701 改行付きで分かりやすくありがとうございます。
バッチリ解決できました!
スレチかも知れませんが OUTFOCUS wikiの同人ゲームを完成させるヒントに書いてあること みなさんもあんなふうにやってるんでしょうか
トランプのようにカードがクルっとめくれるトランジションってありますか? _ /| | |\ _ | | → | | → | → | | → .| | みたいな感じで…。 | | |/ | \| | |  ̄  ̄
>>708 遊びでやるのか真剣にやるのかで違ってくると思うが
金が発生するならやり方は違うけど似たようなことはどこもしてるかと
ありがとうございます
質問です タロさんのどこでもセーブプラグインを使用して かつらんかさんのサムネつきセーブ画面をカスタマイズしたものなのですが たまにセーブ時のサムネが一番最初のシーンのスクショになってしまいます 何番目の栞にセーブしても全部そのサムネで でもロード場所は間違っていないのでセーブデータまではおかしくないです 特定のシーンで起こるわけでなく起きたり起きなかったり 次のページに切り替えたらちゃんと正しいさっむねでセーブできたり 自分が何か余計なタグをはさんでしまったのではと思うのですが これといって原因がわかりません 漠然とした質問で申し訳ないですが どなたかわかるかたはいますでしょうか?
>>709 トランジションじゃそんなことはできない。
アファイン変換で
X' = X * cosθy + Z * sinθy;
Y' = Y;
Z' = -X * sinθy + Z * cosθy;
間違えた
X' = X * cosθ - Y * sinθ
Y' = X * sinθ + Y * cosθ
>>709 は中心で回転してるけど吉里吉里で画像の原点変えれるんだろうか?
めくれプラグインはどっかで見たな…本とか?
>>709 ズームプラグインあたりでやるのが簡単じゃないか
(吉里吉里に梱包されてるやつ)
こんな感じでやれば希望に近いかな?ってことで、適当に例文も書いておく
背景サイズ(640*480)の画像をimage1からimage2に変える場合
@image storage="image1" layer=0 visible=true left=0 top=0
@fgzoom storage="image1" layer=0 time=1000 accel=0 sl=0 st=0 sw=640 sh=480 dl=320 dt=0 dw=0 dh=480
@wfgzoom
@fgzoom storage="image2" layer=0 time=1000 accel=0 sl=320 st=0 sw=0 sh=480 dl=0 dt=0 dw=640 dh=480
@wfgzoom
小さいサイズ(この例だと200*300)の画像をimage1からimage2に変える場合
@image storage="image1" layer=0 visible=true left=220 top=90
@fgzoom storage="image1" layer=0 time=500 accel=0 sl=220 st=90 sw=200 sh=300 dl=320 dt=90 dw=0 dh=300
@wfgzoom
@fgzoom storage="image2" layer=0 time=500 accel=0 sl=320 st=90 sw=0 sh=300 dl=220 dt=90 dw=200 dh=300
@wfgzoom
>>717 うううううおおおおおおおあああああああああああ!!!!!11111!!!1
いきなり出来てました! 感動しました。
ありがとうございます!!!!!
おはようございます!
お聞きしたいんですが、adsファイル中で定義したマクロの属性値を そのadsファイル中のtjs式で利用するのってできるんでしょうか。 普通のマクロみたいにmpではダメみたいなんで
かまいたちの夜みたいな犯人入力をやりたいんですが、 ここまでくるとKAGじゃなくてTJSのレベルでしょうか?
インラインでSystem.inputString使えば簡単。格好悪いけど。
バグではなく、「MessageLayer.tjs」の解析の段階で蹴躓いています。 すみません、質問をさせて下さい。 リンクボタンにフォカースを合わせて、キーを押して離したとき、 リンクボタン(LinkButtonLayer)の「onKeyUp」を素通りして、 MessageLayerの「onKeyUp」にイベントが流れているのですが、 どういうことなのでしょうか? (なんで、こんなことを気にしているかというと、 諸事で、「ButtonLayer」の「onKeyUp」で、「onClick」を呼んでいる部分を 「onExecute」の呼び出しに替えたいと思っているからです)
>>723 ソースを読んで話をしているわけではないので話半分に聞いてもらいたいが、
キー入力等をウィンドウ中のコントロールに適切にメッセージ送信を行うためには
コントロール(ウィンドウ)間のメッセージ転送がきちんと実装されている必要がある。
オレ自身は自作の処理系と吉里吉里を併用してるんだが、
自作のではキーボードもマウスもグローバルな入力で、振り分けは特にやっていない。
(各コントロールにはvisibleフラグやenableフラグを持たせて反応させるかどうかを切り分ける)
面倒だが、まずは主要な部分にdm()を挿入して動作ログを眺めることだと思う。
それで分からなければ吉里吉里自体をデバッガで止めるとか。
作者に聞いてみたほうが早いかもしれんね。
725 :
723 :2009/09/06(日) 02:29:00 ID:6O0RJYs1
>>724 すみません。自己納得。
(リンクボタンのfocusableは、ずっとfalseのままでしたorz)
ううん、transのルール画像にtlgを使おうとするとエラーが出る。 ルール画像はtlg未対応ってことなのかな…
tlgってグレースケール画像扱えたっけ?
いつもお世話になります。クリッカブルマップについて質問させていただきたいのですが コンフィグ画面を作成しているのですが config_bg.png を読み込むと エラーが発生して ファイル :config.ks 行:51 タグ : image (←ry 文法エラーです(syntax error) と出てきまして、config.ks の51行目は [image storage="config_bg" layer="base" page="fore"] これなんです。(config_bgがクリッカブル) エラーが発生した後、画面には一応config_bg.png が表示されるのですが これはconfig_bg.ma の記述に誤りがあるということでしょうか?
config_bg.ma の中身は 0: hint="はやい"; target="*config_ch_speed"; onenter="marker_on(8,tf.conf_spd_x[1], tf.conf_spd_y[1])"; onleave="marker_off(8)"; exp="tf.conf_ch_speed=1; 1: hint="ふつう"; target="*config_ch_speed"; onenter="marker_on(8,tf.conf_spd_x[2], tf.conf_spd_y[2])"; onleave="marker_off(8)"; exp="tf.conf_ch_speed=2; 2: hint="おそい"; target="*config_ch_speed"; onenter="marker_on(8,tf.conf_spd_x[3], tf.conf_spd_y[3])"; onleave="marker_off(8)"; exp="tf.conf_ch_speed=3; 16: hint="0"; target="*config_bgm_gvolume"; onenter="marker_on(8,tf.conf_bgm_x[0], tf,conf_bgm_y[0])"; onleave="marker_off(8)"; exp="tf.conf_bgm_gvolume=0"; 17: hint="10"; target="*config_bgm_gvolume"; onenter="marker_on(8,tf.conf_bgm_x[1], tf,conf_bgm_y[1])"; onleave="marker_off(8)"; exp="tf.conf_bgm_gvolume=10"; 略 26: hint="100"; target="*config_bgm_gvolume"; onenter="marker_on(8,tf.conf_bgm_x[10], tf,conf_bgm_y[10])"; onleave="marker_off(8)"; exp="tf.conf_bgm_gvolume=100"; 32: hint="0"; target="*config_se_gvolume"; onenter="marker_on(8,tf.conf_se_x[0], tf,conf_se_y[0])"; onleave="marker_off(8)"; exp="tf.conf_se_gvolume=0"; 33: hint="10"; target="*config_se_gvolume"; onenter="marker_on(8,tf.conf_se_x[1], tf,conf_se_y[1])"; onleave="marker_off(8)"; exp="tf.conf_se_gvolume=10"; 略 42: hint="100"; target="*config_se_gvolume"; onenter="marker_on(8,tf.conf_se_x[10], tf,conf_se_y[10])"; onleave="marker_off(8)"; exp="tf.conf_se_gvolume=100"; 48: hint="戻る"; target="*config_return"; こんな感じで記述してます。ほぼ本の丸写しなのですが。。誰か助けてくださいまし
文法エラーってんだから、どこかが足りないか余計なものが入ってるかの 文法エラーだろ。 まずimageタグをエスケープして動かし、エラーが出なかったら領域定義が 間違ってるんだから、今度は領域定義をまっさらにしてから一行ずつ足していって エラーの出る箇所を絞り込む。 これぐらいのデバッグを自分で出来ないと今後も苦労するぞ。
上の投稿した直後にどこが間違ってるか気づいたが、ケアレスミスだから教えない。 上記のやり方で自分で見つけてみなよ。
>>731 この程度のことで何をもったいぶってんだ
先生気取りで説教か
16行目のtf,conf_bgm_y[0]で . が , になってるところだろ
(それ以降の行も同様)
ツンデレやろうとしたら デレる前にぶん殴られたでござるの巻
>>719 mpは通常のコンダクタ(タグ処理系)のマクロパラメータへのショートカットなので無理っぽいのか
ためしてないけど、前景レイヤ1の表ページでセグメント0(画像読み込み時に画像名.asdがあれば0に、
animstartタグ使用時は1以上を指定)のアニメーションをするとき
kag.fore.layers[1].Anim_segments[0].macroParamsがmp的に使えるはずかと
お勧めのテキストエディタを教えて下さい
なんに使うんだよ?
吉里吉里でゲームを作るために使いたいんです。
シナリオ書くのに使うの?
半年ROMるか吉里吉里 エディタとかでぐぐれ
もうけっこうです。
少なくとも吉里吉里開発用なら上の方法でほぼ出揃うんだが・・・ ま、結局自分の使い易いエディタが一番だろうな、あとは頑張れ
まぁ普通はテンプレ見てから質問しなきゃダメだよな
シナリオを書き進めていく、タグを挿入する、TJS式を書いていくなどゲーム作成でも やりたいことに向いているエディタはそれぞれ違うから確認してんのにな 使い慣れてる汎用エディタでも使っとけば間違いはないんじゃね 普段使ってるのがないならフリーの有名どころを落として馴染むやつを探す
かぐや姫Studioを使いたかったんですけどね、どうやら閉鎖されているようで、落とせませんでした。
今はKKDEが一番メジャーでしょうか
>>744 このスレの最初から読み進めていけばかぐや姫は見つかるよ。
747 :
719 :2009/09/08(火) 00:19:54 ID:rrrKz63y
>>734 思い通りの動作ができました。どうもありがとうございます。
>>729 です。ずっと苦しんでましたが、
>>732 のご指摘分と
exp="tf.conf_ch_speed=1;
↓
exp="tf.conf_ch_speed=1" ;
で解決しました(´・ω・`) お騒がせしました。
教えてください 会話風のメッセージを表示しようと思って、以下のマクロを作ってみたのですが どうにもうまくいきません。 [macro name=serihu] [emb exp=mp.hito] 「[indent][emb exp=mp.text ] 」[endindent] [endmacro] このマクロのtext属性の中でkagタグを使いたいのですが、どうすれば良いのでしょうか? [serihu hito="教授" text="[ruby text="なぜ"]何故、[font size=48]best[resetfont]を尽くさないのか?"] と指定したいんです。orz
nChKV5jXの質問の意図が理解されてなくて泣いた。 エディタの前にライタ・マ・スクリプタならキーボード揃えるのが先だな。 今買えるものならマジェかリアフォの二択。 ライタならどうせ物書き以外の仕事もやらされるので上がってきた絵と音の確認用にL997とMDR-CD900STもいっとけ。
10年以上キーボード使ってるけど手元から目が離せない俺には関係ないな
>>749 結論から言うと、今のような呼び出し方で使うのは無理。
そもそもembタグはそういうことのために用意されてるわけじゃないので。
表示させたい文章は直書きで、その初めと終わりにマクロ突っ込むのが普通だと思う。
[macro1 hito="教授"]「[ruby text="なぜ"]何故、[font size=48]best[resetfont]を尽くさないのか?」[macro2]
みたいな感じで。
>>751 がタッチタイピングできるかと高級KBは一切関係ないw
関係あんのは指の疲れにくさだろ。
>>753 だから、疲れるほど短時間で沢山動かないんだってw
質問です。 栞をロード・セーブする画面で、ゲーム画面で表示しているテキストの1行目を使いまわして表示したいのですが、 どのようにすればいいでしょうか? ラベル名や栞の保存時間と一緒にテキストの1行目を表示させる形です。
>>755 過去ログ9の307-305あたりが参考になると思う
>>752 確かに(書く方の手間暇も変わりませんし)、御指摘のように分けて書けば良いという事が
解りましたので一安心しました。ありがとうございます。
ですが、もう少しだけ教えてください… orz
>結論から言うと、今のような呼び出し方で使うのは無理
素人考えでは、[eval exp="hoge(mp.text);"]で処理してくれるhoge関数みたいなものがあれば
何とかなりそうな気がするのですが、そんなものは存在しないのでしょうか?
kag.fore.messages[0].processCh(mp.text);がそれに相当するのかと思って試してみたのですが、
どうにも期待通りの動作ではないですし、出来ないなら出来ないで何で出来ないのかの理屈を
知りたいんです。orz
>>757 タグを解析してる KAGParser に対してテキストを割り込ませる口がそもそも存在してない。どうしてもというなら吉里吉里自体の改造が必要。
processCh は、タグ展開がおわってばらばらになったテキストを表示処理してるところであって解析部じゃない。
最初にKAGParserがネイティブで実装されていると知った時は唖然とした 自分で作った言語と吉里吉里のコンセプトを自ら否定してどうする
実用性重視なら当然じゃね?パーサって重いし。 最初 tjs で書いたら重すぎたからネイティブにしたみたいなことがどっかにかかれてたような気がする。 吉里吉里のコンセプトにはプラグインによるネイティブ拡張が容易なことも含まれてるから、 よく使うであろうKAG用のプラグインが内蔵されてる、と思えばそう変でもないと思う
KAGParserなんてKAG以外では使わんからxml or JSON or YAMLあたりのAPI用意してくれた方が良かった。 むしろKAGParserいじるときはC++で直接乗っ取ることが多いのでTJSからプログラマが触れる必要もなかった。 いじってみて思ったがパーサ部分をプラッガブルにすると面白いと思う。
吉里吉里1はクソ重いって評価だったからな。吉里吉里2になって、そういった速度面の ボトルネックをネイティブ化する事で高速化した。 これが、同人におけるSLGなどのノベル以外のゲーム製造の伸びしろとなったんだと 俺は思ってる。
一時的にmp.txtをtemp.ksみたいなものにはき出して 実行するというのはどうだろう。
XMLはまだしも、当時JSONもYAMLもなかっただろ でもって口はプラグインですでに用意されてるよ
>>756 ありがとうございます!
ただ過去ログにあった方法では不完全でしたのでいくらか改変を行っています。
・ラベル名とメッセージテキストを別扱いにできるようにする
・メッセージテキストのscflagsへのロード・セーブ
・これらの改変に伴うメンバの追加
・そのままではゲーム画面以外のテキスト表示でも切り替わってしまうため、
フラグを追加してゲーム画面以外ではメッセージテキストの保存を行わないよう修正
766 :
名前は開発中のものです。 :2009/09/09(水) 18:04:58 ID:pqQ5Yar8
画像を予め用意しない限り、マスク画像や領域画像は矩形でしか作れませんか?
>>765 俺が書いたわけじゃないが、最低限それくらいは改変して使うのが普通だと思うから、断らなくても大丈夫だと思うよ
>>766 「フォトレタッチソフトを使わずに、吉里吉里のみでマスク画像や領域画像を出力したい」ということ?
「マスク画像や領域画像を用意せずに、画像の一部を透過させたり、領域を扱いたい」ということ?
多分後者ではないかと思うんだけど、領域はTJSでボタンレイヤーを作るとか、
クリックした時のカーソル座標でイベント分岐させるとか、それくらいしか思いつかないな…
どの道、インデックス情報扱えるソフト使って領域画像用意する方がよっぽど楽だと思う
マスクのほうは、カラーキー方式
(透明になるべき部分を特定の一色で塗りつぶし、その色の部分が透明になるというもの)
というのもあるけど、やっぱりαチャンネル(透明度情報)を扱えるソフトで抜くのが簡単で早いと思う
EDGE(インデックス情報扱えるフリーソフト)とGIMP(αチャンネルを扱えるフリーソフト)
をお勧めしてみる
吉里吉里で一番欲しいのは、クリッカブルマップを作る為のツール まず画像を用意するのに、減色だのパレットだのちょっと面倒臭い それともそこを楽できるツールとかもうあるんかな
>>768 α画像で抜きの入ったボタンは簡単に作れるからクリッカブルマップいらねー
オンラインコミュニティサービス synthe(シンセ) Syntheのクライアントにはゲームツールがパッケージされています。 このゲームツールを利用することで、KAGやTJS2といったスクリプトで制作された様々なゲームをアップロードし、Syntheワールド内で楽しむことができるようになります。 さらに、ネットワークゲームならではの通信機能を利用可能なため、比較的簡単にオンライン対応ゲームを制作することが可能です。 だってよ
アルファの時点でその話題はもう出たよ
たぶんこのスレの住人的には「独自プラグインが使えない時点でつかえねー」だな
ぶっちゃけSyntheってコンセプトから間違っているとしか思えないんだが・・・ 利用者何人くらいいるんだろ
Syntheはなにがしたいのか分からん。 ネトゲに吉里吉里しこんでゲームてぐるぐる温泉でもやりたかったのか?
775 :
766 :2009/09/10(木) 01:28:48 ID:8SnzUfgg
>>767 後者の意でした。
何らかのスクリプトで楽ができるのではないかと思ったのですが、そう上手い方法はないのですね。
お薦めのソフトまで紹介していただきありがとうございます。
PIA少尉ってどうなったの?
クリックせずに画像を次々と切り替える方法を教えて下さい。
wait
KAGはオブジェクトの親子関係を扱えないのが弱点だな
>>780 そこまでしたくなるくらいわかってる人ならKAGプラグイン作ってどうにか出来るからよいのでは?
最初の最初に理解すべきことは少ない方がいいと思う。
>>772-774 そうなのか・・・
俺は他人が趣味で作ったゲームとか遊ぶのが好きでsynthe始めたんだが
この状態じゃ無理そうだな
本当に吉里吉里でsyntheみたいな発想が有意義ならはじめからDeeたんがネットワークAPI用意してるって。 マルチメディアを扱う吉里吉里と情報を発信するwwwとは相性がいいんだから 発想自体はだれでも思いつく、問題は利用者が居るかってところ。 あと技術的な話をすればhttpにテキスト以外を扱わせるのは流石にもう限界がきてる。 テキストを扱うhttpとストリーミングが扱えるUDPとが欲しいね。
UDPとHTTPって並び称されるものなのか
httpは設計段階からバイナリ想定のプロトコルでストリーミングにも対応してるわけだが
TCPとUDPの違いがわかってないとか?
最近はエロゲの作品HP上でキャラ同士の掛け合いがADV形式でFlashで上げられてる。 インターネットのインフラとしてノベルやAdvをサーバー越しに実行することは十分に可能なわけだ。 あとはKAG3をFlashなりSilverlight上で動くようにすればノープロブレム。
わかってなさそうだね。 UDPとTCPはいずれもトランスポート層のプロトコルで、UDPはオーバヘッドが小さいかわりに信頼性が低く、 TCPは信頼性が高いかわりにオーバヘッドが大きい いずれも通信の内容には関知しないため、アプリケーションはそれぞれ独自にプロトコルを定義して使う。 HTTPはもっぱらTCPを対象としたプロトコルで、出来がよかったので、今はほとんどのアプリが、 TCPでデータをやりとりする場合には、HTTP ないし準じたプロトコルを使うようになってる。 音声や動画のストリーミング配信技術では、回線品質が良い時は UDPを、悪くなるとTCPを使うのが定番で、 Real、Adobe、MS など有名どころの技術は、UDP用のプロトコルはそれぞれ独自ながら、TCP時には いずれも HTTP を採用してる。ぶっちゃけ他を採用する理由がない。 ちなみに吉里吉里のレポジトリあさると httprequest という非同期・バックグランド通信に 対応したプラグインがある。そんなに即時性を要求されないようなものならこれがあれば十分かと。
httpはTCPに依存してるわけじゃないだろ。ほかの実装がないだけで
>>789 ○もっぱら
×依存
ちなみにUDP ベースの HTTP は実際に使われてますですよ
UPnP とかがそうです。
皆、スゲー知識だな。俺にはさっぱりだ。 ただ、サーバ上のADVやらノベルをやる意味が全く感じられんのだが。 SLGとか作ってる人は、ネット対戦にできそうだけど、その編のゲームは 死ぬほどあるしな。
トランプとかオセロの対戦ゲームだよ>synthe 基本チャットなんだし
おさかな定食早く復旧してくれるといいなー
ここの住人でKAGEX使いってどのくらいいる?
二年くらい前に使ってみたら 謎のバグが出てめんどくさくなってやめた
自分は中身を教材として勉強させてもらってるよ>KAGEX
ときメモオンラインというものが出た時は衝撃だったな…
>>795 おれも他人のわけ分からんバグ追うくらいなら自分のバグ直した方がましだと思った。
>>767 糞運営と郵便であんなもん送ってくんなという衝撃は確かに凄かった。
ラブプラス作る暇があったらときメモ4をだせとry。
KAGEXは動的処理とシーン管理を強化した感じらしいので興味あったけど、 自前でKAGに直交するシステム書いたから結局触ってないなあ。 汎用性だけは無駄に追求したからそのうち自サイトで公開しようと 思ったけどここの様子じゃ需要まるでなさそうだから止めよ。
フラッシュがレイヤーに描画可能になったから アニメーション関係はフラッシュで素材作ると便利すぎだな
フラッシュでも小さな素材なら pen3 800Mhzの場合 CPU使用率5〜10%程度で低スペックでも問題なし さらに吉里吉里が使いやすくなったな、プラグイン作者GJ
何そのプラグイン
何そのやずやのCM並に不自然な紹介文
音声認識をソフトを扱えるプラグインは出ていますか?
ハドソン!ハドソン!ハドソン!
プラグインの利用やTJSも自在に使えるようになりたいけど、まだまださっぱりなおれ 変数と配列とKAGが友達さ。TJS記法なんか見たら癲癇おこしちゃう! でもいつかは使えるようになりたいです
むしろ、吉里吉里は変なところでTJSから見えない部分があるのがなんともな。 例えば今1文字ずつ表示している文字を横取りするトラップを追加しないと自前の文字履歴が作れないとか、 ロードした直後の挙動とか。
前者は普通にtjsから見える部分じゃ。後者はなんのことやら
>>809 前者だが、トラップコード書かないでテキストの出力履歴を拾える?
せめてリダイレクト先を変更できるといいんだが……。
後者については、[gostart]マクロを実行するとどういう挙動でKAGスクリプトの元の位置に戻ってくるのかが掴めていない。
「KAGから見えない」の間違いじゃ?
KAGが「今のテキスト窓の表示内容を保持してない」ってことなら、そりゃ KAG の設計思想の問題だな。 KAGにはそもそも「現在のテキスト」とか「履歴」って概念がない。そもそも現行の履歴機構自体がトラップ構造だし。 のっとりたければ、kag.historyLayer を独自のに差し替えればいいんじゃないかね。メソッドさえそろってりゃ動くよ gotostart はマクロじゃなくてコマンド。 中でやってることは、startanchor で保存された999番のセーブデータをロードしてるだけ。
お前ら難しい話してるな。理解できないや
俺もだ
トラップコード!
TJSから見えないって言うからそういえば実装はされてるが TJS用のインターフェースがないAPIがあったなぁ。とか思った俺の素朴さは一体・・・。
オブジェクトから変数を(引数によって加工してから)呼び出すのに メンバ関数を使ってvar i= obj.method(x,y);などとするのと、 グローバル関数を使って引数に目的のオブジェクトを加えvar i= func(obj,x,y);などとするのでは 大差無いでしょうか。
呼び出せるプロパティと言われるjsやってるが「変数を呼び出す」は流石に意味が分からん。
>>818 「変数を呼び出す」はメンバ変数の値を参照するって意味じゃね?
前者はオブジェクト指向っぽい
後者はobjがvoidや無効化してるときに対処しやすい
>>818 そこは特に迷ったりするところじゃない。
意味的には820のいうとおり。どちらでも書きやすいほうを使えばいい。
両方必要に応じて使い分けるのが正解だな。後者だけどそもそもオブジェクトを使う意味が薄い。
良く分からないけど、普通なら var i, o = obj; i = o.method(x,y); のシーンぽいが、、、
考え方としてはどっちも同じようなもんだよ
たとえばC言語でオブジェクト指向っぽく書こうと思ったら
>>818 の後者みたいにする
同じようなリンクの処理を多数行うのでループを使ってみたのですが、 *loop [link target="*select1" exp="tf.sel +=1"] [emb exp="f.stats[tf.char]"]←キャラクタ名 [endlink] [eval exp="tf.char++"] ※何回かループさせる 表示結果(例) A B C 〜略〜 と、なり、どの選択を選んでもselect1にジャンプする。 だが、どの選択を選らんだのかによって、select1での処理を変えたい。 それを判断するためにリンクに「sel」の変数を与えてみたのですが、 どれを選んでも「sel」の値が一緒になってしまうため、失敗。 現在行き詰まってます。 何かいい方法はありませんか?
このスレの少し前に同内容の質問と回答がある
>>827 >>670 ですね……確認不足で申し訳ないです。
[link target="*select1" exp="&@'tf.sel =$[tf.forloop]'"]
にする事で解決しました。
ありがとうございます。
@iscript var LayF= new Layer(kag, kag.primaryLayer); LayF.setPos(100, 100, 200, 200); LayF.setSizeToImageSize; LayF.colorRect(0, 0, 200, 400, 0xffffff); var LayB= new Layer(kag, kag.primaryLayer); LayB.setPos(300, 100, 200, 200); LayB.setSizeToImageSize; LayB.colorRect(0, 0, 200, 200, 0x808080); var LayFC= new Layer(kag, LayF); LayFC.setPos(0, 20, 200, 180); LayFC.setSizeToImageSize; LayFC.colorRect(0, 0, 200, 180, 0xff0000); var LayBC= new Layer(kag, LayB); LayBC.setPos(0, 20, 200, 180); LayBC.setSizeToImageSize; LayBC.colorRect(0, 0, 200, 180, 0x0000ff); LayF.visible = LayB.visible = LayFC.visible = LayBC.visible = true; @endscript [p] @iscript LayF.beginTransition('crossfade', true , LayB, %[time:'4000']); @endscript [p] @iscript invalidate LayF; invalidate LayB; invalidate LayFC; invalidate LayBC; @endscript 子ごとのトランジションのテストをしているのですが、 トランジションの最中、LayFのleftとtopの分だけ、表示が巧くいっていないのですが、 回避する方法は何かないでしょうか?(left=top=0以外で)「version 2.30.2.416 」
>>830 上から別のレイヤーがかぶさってるからじゃね?
それから、オレなら4つも変数作らずに配列で初期化しちゃうかな。
832 :
830 :2009/09/14(月) 12:44:51 ID:P0E07ICO
>>831 レスありがとうございます。
830は、テスト用に単純化したもので、運用とは異なります。
(830のsetSizeToImageSizeは、全部不要でした)
実際には、以前、ここで見掛けた、kag.fore.base以外にプライマリーレイヤを追加するのを
試していて遭遇した問題です。
(その場合は、プライマリーとkag.fore.baseの間にコンテナ用のレイヤをさらに追加して、
そちらで、topとleftを指定すれば、取り合えずはしのげるのですが……
830だと、最初にLayCを作成して、LayFはLayCの子、LayBはLayFの子にして、LayCのtopとleftを
指定、LayFのtopとlefは0といった感じ)
コンテナを使うのが、お作法ならお作法で構わないのですが、
830の段階では、コンテナを使うのにも気付いていなかったので質問しました。
他にもっと無駄の無い方法がありそうな気もします……
>>830 トランジションするレイヤの left, top, opacity を一度でも変えてしまうと
そのレイヤでのトランジションは失敗する。多分そういう仕様です。
回避するには left, top, opacity を動かしたレイヤの親でトランジションする方法があります。
>>830 の例では LayF, LayB の親が kag.primaryLayer になっているが、これを fore.base と back.base のペアに変えてこれをトランジションするか、新たに
var LayFP= new Layer(kag, kag.primaryLayer);
var LayBP= new Layer(kag, kag.primaryLayer);
などと作りこれを親にして、トランジションは LayFP, LayBP のペアで行う。
(試していないので違ってたらゴメン)
834 :
830 :2009/09/14(月) 19:16:56 ID:KZfHS5sJ
>>833 どちらも、巧くいきました。ありがとうございます。
考え方としては、KAGで背景(top=left=0, opacity=255)ごとのトランジションが推奨なのと、
同じようなものですね。そうしてみると、公式過去ログの方にも、あってもよさそうな話題ですが、
適当な検索ワードで絞り込めず断念しました。
(付記:
>一度でも変えてしまうと
一度変更しても、トランジションの開始前に
初期値(top=left=0, opacity=255)に戻しておけばよいみたいです)
トランジションのマクロ作った時に left とか pos とかの位置が どうにもおかしくなるのはそういうことでしたかね。 属性で left=%left1|0 とか [freeimage] 入れてみるとかしてますが 時々思い通りには行かなかったり。 あぁ、理解が足りてないんだなぁ。
@rclick コマンドで右クリックしたときの動作を定義できるけど、ボタン上にマウスカーソルがある場合は右クリックしても何も起こらない。 画面全体でrclickコマンドの定義を有効にするにはどうすればいいの?
>>836 MessageLayer.tjs内を「function onExecute」とかで検索すると幸せになれる
音泉っていうwebラジオ配信サイトでラジオ聞きながらKKDE使っていると 高確率でブルースクリーンになる…
>>837 解決しました!
手元で使ってるKAGが年代ものなんですが、まず最新版のKAGから該当部分を抜き出して、onExecuteハンドラが動くようにしました。
具体的な解決法ですが、ByttonLayer.onExecute()ハンドラでkag.onPrimaryRightClick()を実行する形です。
この場合、事実上ボタンは右クリックに対して透過扱いになります。
>>839 >手元で使ってるKAGが年代もの
論外だ、質問するにしても最新に差し替えてからだ。
じゃあちょとチェックアウトしてくるか・・・
842 :
702 :2009/09/17(木) 17:13:25 ID:Gc1+z1T4
ホイールでテキストを送る機能をオフにするにはどうしたらいいんですか
リファレンスをよめばいいとおもいます。
全然別物だろ。 マクロで工夫すれば同じコードを流用できると当たり前のことを書いてるだけ。 ECMAScriptを参考にしてると書かないで、吉里吉里と書いたのは単なる宣伝目的だな。
メールしてまで評価しようとはおもわんなぁ
どうせならTJSを直接移植すればいいのに
変数や関数名の入力補完をしやすいお薦めエディタってある? 複数ファイルに分けて作成しているときは似たり寄ったりかな。
>>848 入力補完なら、EmEditor Proが過剰なくらいやってくれるが。
どちらかというと、メソッドやクラスの定義場所に一発でジャンプしたいかな。
ctagsを改造すればいいんだけど。
以前Squirrel向けのは作ったことあるからTJS向けのも作ってみるかなぁ。
KKDE2のアップデートまだー
>>844 全然別物だった。
けど、iPhoneで動作するゲームを作れるのに惹かれる
過去ログで調べもものしてたらおさかな定食にいいプラグインがありそうなんだけど おさかな定食っていつごろから今の状態が続いてるんでしょうか・・・?
そういえば、まだおさかな定食復旧してないんだよな 引越し作業にこんなに掛かるもんなのか?
引越しに合わせてファイルを修正してるのなら 時間はかかっても仕方ないが… ノーサポートでいいから早く復旧して欲しいな
暫定倉庫でもいい
来年の今頃もおさかな定食があの状態でも驚かない
>>852 確か6月はまだDLできてたような・・・
他力本願でゲームを作るのもどうかと思うが
参考くらいあっていいだろう
終了確認をダイアログではなくレイヤーでやりたいのですが function onCloseQuery()の saveSystemVariables(); if(!askOnClose) { super.onCloseQuery(true); return; } super.onCloseQuery(askYesNo("終了しますか?")); を消して kag.callExtraConductor('終了.ks','*終了シナリオ内'); ではその後シナリオ内の[link exp=" kag.shutdown()"]が効かなくなってしまいます。 どのようにすればいいですか?
終了.ks の *終了シナリオ内 ラベルの終わりで Window.onCloseQuery(終了するかどうか) incontextof kag;
誰か昨日の吉里吉里勉強会いってきた奴いないかな? 吉里吉里3はどんな状況とかの話とかあったら教えておくれー
最近、みくしが無いと何も見れない状況だよな。 勿論、公式情報とかじゃないから、それに文句を言うつもりは無いが、 あの窮屈な空間が嫌で辞めちまった身にはつらいw
吉里吉里3は止まってるとしか
>>865 まじめにやってれば半年もあれば開発できるものだしな。
吉里吉里はある意味完成の領域に達してるからな。 KagEXを完成の領域に持ってきた方が、受けが良いんじゃなかろうか。
KAGEXはワールド拡張とかの概念や記述が理解できなくて諦めた
バグとやらが気になって手がさせない ところでmixiのレポートであった FLASHで右クリックすると出るFLASH関連のメニューを 出さない方法ってどこかにないだろうか
>>866 インタプリタのみを動かすだけなら半年で出来るだろうが
関連するAPIを用意したり付随するツール群を揃えてさらに実用レベルの品質まで持っていくのは数年かかるだろう。
それこそコミッターが居れば今ごろ完成してたかも知れんし。
>>867 あれを使うくらいならMainWindow.tjsを整理するついでに自分で作るってやつが居るんじゃないだろうか。
吉里吉里3の開発室初めてみたけど、描画関係の高速化も期待出来るのか。 吉里吉里でノベル以外を作ってる俺としては頑張ってもらいたいものだ。
>>861 ありがとうございます。なぜかタイトル画面でしか閉じられなかったりするので色々頑張ってみます。
吉里吉里でノベル以外を作る利点てなに? ノベル以外ならC/C++にluaとかDSL組み込んじゃえばいい気がするんだけど。 そういうDSL上に構築されたゲーム用F/Wもあるしさ。
>>875 ノベルメインでミニゲームをそれなりに本格的にやりたいとしたらどうすりゃいいのかよくわからん。
どこか解説してたりするところない?
C/C++ が書けない人でも作業できる、とか? パフォーマンスがさほど要求されない場面なら有効だと思うよ。画像やサウンドの扱いもシンプルだし。
>>875-876 汎用ゲームエンジンだと逆にノベル部分がネックになったりするわなぁ。
吉里吉里はその辺、嫌と言うほど作りこまれてるから。
メッセージフレームだしてクリックごとにテキストを切り替える程度と妥協できるなら、
汎用エンジンで作ってゲームをメインにしたらいいかもしれないけどね。
TJSも普通にグフィックコンテキストを取得してそれに対して書き込んで 反映させるっていうスタイルだったらなぁ。 あとtjsでゲームループ書くとコードが一般的じゃないのも分かりづらいよな。 //こういうコードの方がいいな function game_loop(){ update(); render(); sleep(acutaly_elapse); } //ここのコードが吉里吉里だとLayerにほげほげするのがやりづらい function render(){ g = screen.grahics(); img = new Image("image.png"); g.draw(img,x, y); g.dispose(); }
>>871-872 おお、ありがとう!
そうかプラグインでもできたのか
どちらも試してみるわ
>>879 吉里吉里のレイヤって標準機能が少ないだけで概念的にはグラフィックコンテキストそのものだろ
画像だけの独立した概念があるとすっきりするよなぁとは思うけどね
まあ、秒間60フレームでヌルヌルぶん回すようにはできてないからな。
>>881 グラフィックコンテキストが画像とそれに関するステートを持っているのが問題なのかと。
ふつうはだいたいこんな定義だろ。
abstract class Layer{
/**
レイヤが表示されていれば描画する
@prams g グラフィックコンテキスト
*/
update(Grahics g){
if(this.visible){
g.drawImage(this.image, x, y);
}
}
/**
@params 表示され得るかどうか設定
@return 表示され得るならば真
*/
property visible;
/**
@params 画像を設定
@return 持っている画像を取得
*/
property image;
}
んでこういうかんじのを継承してSpriteクラスとかMapTipLayerクラスとか作るわけで、レイヤの役割的にグラフィックスコンテキストをhas-aなのは設計へんじゃね?
>画像だけの独立した概念があるとすっきりするよなぁとは思うけどね
この話もたまに上がってるしさ。
というかyieldか継続とシリアライズを実装してくだせぇDeeたん。
継続とまともなクロージャ導入してクラスを無くしてほしい ちゃんとした言語にしたかったらRubyやPythonでも組み込んでくれた方がよっぽど助かる
C++のBoost.Serializationを参考にTJSでシリアライズのフレームワークを書いてみたけど、 Layerみたいにガチガチな依存関係を持っていてコンストラクタ引数に他オブジェクトを要求するクラスの 外部シリアライザの実装のしかたがどうしても思いつかなくて頓挫。 仕方ないから既存の構築済みオブジェクトをdeserializeに渡してメンバだけ復元するようにした。 オブジェクトの共有が絡んでくると一気にややこしくなる。
>>883 メモリグラフィックコンテキストが内包してるフレームバッファが見えてるだけ、
と考えれば概念的におかしいところはない。
visible を含むレイヤのツリー配置機能はさらに外枠の構造で、これは
他ではみられない構造だから珍しいけどおかしいところは無いと思う。
Window - Layer までで一つの概念を形成してる。
結局、Image 単体が存在しないから Layer で代用してるのがおかしいだけという話になるんじゃないかと。
実際のところは独自の Image と、それに対応した Layer.drwaImage() を
ネイティブプラグインとして作ってしまえばいいだけではある。
というか、LayerExDraw プラグインとして既に1例は存在してる。
・・・・話してることがさっぱり分からん。 くそう、一応C++とかも勉強してるんだけどなぁ・・・。 WindowsAPIとか弄らないと駄目なのか。 ミニゲームを組み込みたいと思ってはいても、どう実現すれば良いのかさっぱりだ。 マリオくらいならC++で組めるんだけど、どう勉強したらいいんだろう。
アイテム周りをまとめたitem.ksをcallで呼んでいます。 老人A.ks [call storage=item.ks] *アイテム1 老人A「それはなんですか?」 *アイテム2 老人A「それは私の豆腐です」 少女B.ks [call storage=item.ks] *アイテム1 少女B「それはマドです」 *アイテム2 少女B「それは誰かの豆腐ですか?」 item.ksではアイテム一覧の表示、使用の選択をしています。 アイテム1を使いますか?→[return target=*アイテム1] アイテム2を使いますか?→[return target=*アイテム2] returnで呼び出し元に戻ると思ったのですが、 リファを読むとどうやらitem内でのラベルを読んでいるよう思った動作になりませんでした。 呼び出したシナリオのラベルに行きたいのですが、どうすればいいでしょうか?
呼び出し元に依存するならサブルーチンにする意味無いだろ 素直にjump使えばいい
>>887 吉里吉里を改造せず、独自描画処理を行う C++プログラムを組み込むには、
(1) drawDevice プラグインの形で描画系を作成して独自処理を埋め込む
(2) 吉里吉里のウインドウの上に子ウインドウを作成してそこで独自処理を行うプラグインを作成する
の二つの方法がある。
前者は吉里吉里の描画内容と自分の描画内容を混ぜ込むことができるが、逆に言うと
吉里吉里の描画処理も自前で書かないといけない。後者は完全に上にかぶさる形での
処理しかできないが、吉里吉里の描画自体は気にする必要がない。
いずれの場合も、必要に応じて吉里吉里がベースのウインドウを破棄する場合があるので、
いつでもその再生成に対応できる組み方をする必要がある。前者は専用のインターフェースからの
呼び返しが来るが、後者は、Window.registerMessageReceived でハンドラを登録して自前で通知をうける必要がある。
マウスやキーボードのイベント処理は、前者の場合はこれもインターフェースから呼び返しが
くるのでそれを使う。後者では、自前の Window Procedure に Win32 でイベントが直接来るのでこれを処理する。
メインループ処理は、いずれも吉里吉里の continous Handler からの呼び返しの形で構築する形になる。
これもプラグイン用の専用の口がある。
吉里吉里レポジトリの drawDeviceIrrlicht プラグインが、両者とも実装したサンプルになってるので参考にするといいだろう。
>>890 レイヤへのコピーも、最近はマシンパワーでおしきれば案外動くよw
drawDeviceIrrlicht はそのバージョンもある。
>>885 おれもやったことあるけど
KagPaerserとLayer考えるとC++から叩いた方がいい。
>>886 >レイヤのツリー配置機能はさらに外枠の構造で、これは他ではみられない構造だから珍しい
これはこれで曲者な気が。
>Image 単体が存在しないから Layer で代用してるのがおかしい
やっぱImageクラスほしいよな・・・。
>>887 設計とプログラミングの概念的な話というか。
勉強ならマリオ作れるならADVエンジンくらい作れると思う。
速度出すにはVMとコンパイラもつくるけど。
ミニゲームはtjsで実装したら?
ミニゲームコード実行中はKAGの方からイベントもらわないといけないかもしれないけど。
んでミニゲーム終了時に後始末関数呼んでその戻り値をトリガーにKAG側への復帰処理呼ぶとか。
ミニゲームのループはcontinousHandlerを差し替える。
あとは、終了操作とかした時のための処理を追加か、これはKAG側からミニゲームへ割り込むかミニゲーム側で処理させるか。
tjsでもRPGくらいならマシンパワーでごり押しできるよw
吉里吉里独自?の画像形式に、TLG5・TLG6ってありますよね png使うよりはこのどっちかの方がやっぱり色々いいと思うんですが、皆さんは使ってます? 自分はpngじゃないとエクスプローラーでサムネイル表示できないのが痛くて、今はpngでやってるんですが
圧縮率も良いし、展開も速いから立ち絵に使ってるよ。 スージープラグイン入れればすぐにビュワー表示できるしね。
>>893 スキップ時とかにあからさまに体感差が出るよ。PNGは展開が重い。
イベント絵はあまり気にならないけど立ち絵は TLG にしたほうがいい
もういっそ直線的にpixels[0] から pixels[pixels.length - 1]をヘッダなしにバイナリにぶち込めばいいんじゃね? 読み込むときはint[]に全部readすればいいだけだしw
ヘッダが無いと画像サイズを確定できないのだが
つ旧RAW
立ち絵はTLGで軽くなるけど 表情差分とか小さな画像をTLGに変換すると PNGよりも容量でかくなるのはなんでだ? 不透明度の多さとか関係ある?
>>897 ゲーム側でフォーマット決め打ちじゃないか?
所謂育成ゲームを作りたいんですけど これって吉里吉里でも可能ですか?
>>903 ゲーム中でどのようなグラフィック表現をしたいのかによる。
画面中にキャラ絵や数値表やいくつかのボタンを配置し、
ボタンその他のウィジェットからの入力で
ゲームが進行するように実装するなら
吉里吉里/KAGで十分できるよ。
要領はゲームのオプション画面の実装の仕方と同じ。
[eval exp="f.chara='キャラ名'"] [eval exp="f.odoroki=f.chara+'_odoroki'"] [image storage="&f.odoroki" layer="1" pos="c" visible="true"] とすると、「キャラ名_odoroki.png」画像が表示されたので [eval exp="'f.star_'+f.chara=1"] と書くと「f.star_キャラ名」に1を代入できると思ったのですがエラーになってできません・・・。 どう書けばいいのでしょうか? 初歩的な質問だとは思いますがよろしくお願いします。
[eval exp="f['star_'+f.chara]=1"]
>>905 文字列を動的にTJSのコードに置き換える処理は、
必要上仕方なくやる場合もあるけど、基本的にはお勧めできない。
# [eval exp="'f.star_'+f.chara=1"] のこと
そういうことなら、
f.stars
は辞書型 %[] にしておいて、
[eval exp="'f.star[f.chara]=1"]
という形で設定してあげるといいよ。
>>904 ありがとうございます
作りたいのはそのタイプなので早速挑戦してみます
すみません、クリッカブルマップについての質問なんですが。 クリッカブルマップのある画像を常に表示しておき、プレイヤーがテキストを読み進んでいる 合間の好きな時に画像をクリックすると、別のメッセージレイヤが開いて何らかのメッセージを表示。 左クリックをするとそのメッセージレイヤが閉じてまた元の普通の画面に戻るというのをやりたいんです。 しかし私のクリッカブルマップの知識では、クリックすると特定のksファイルのtargetに跳んでいき メッセージの表示をした後、戻る時はjumpになるので戻る場所のtargetを指定しなければなりません。 上記の様にする為にreturnを使いたいのですが、この場合callタグを何処に置けばいいのか解りません。 maファイルでの書式はKAGと違うようですし、まだKAG上のスクリプトしか使えないんですが こうした事をするにはTJSを弄らないとムリでしょうか。
クリッカブルマップに見えるけど実はボタン並べてるだけってのでいいじゃない?
確かに。不定形のボタンは簡単に作れるからなぁ。
913 :
910 :2009/09/29(火) 07:43:25 ID:7jdLEmGf
アドバイスありがとうございます。 実を言うと、グラフィカルボタンは構造が理解出来ていないらしく、 どうしてもボタン画像そのものを表示させることができないんです。 そこで何度も作ったことがあるクリッカブルマップで代用出来ないかと 思ったんですが。 グラフィカルボタンはメッセージレイヤ上に現れるんですよね? [layopt layer="message0" page=fore visible=true]\ [locate x=100 y=400]\ [button graphic="ボタン.png" target="*osita"]\ [s] これだと何も無いメッセージレイヤが表示されるだけで、そのまま[s]に従って 止まってしまいます。 コンソールで見るとボタン.pngは正常に読み込まれているらしいんですが。
>>913 ボタンを表示するサンプルを動かして考えたかい?
グラフィカルボタンの件が解決しました!
>>914 ,915
これまで動作を確かめる時は製作中のスクリプトの合間の部分でやっていたので、
今回はボタン表示だけのサンプルとして書いてみました。
念の為にcurrentも指定し、positionでメッセージレイヤも画面いっぱいに広げてみたのですが
やはりただ真っ暗な画面が映るだけ。
しかしようやく原因が解りました。
私はメッセージレイヤのサイズをゲーム内で頻繁に変える為、デフォルトの設定は
当てにしていないので適当な数字を入れていたのですが、それのmarginがかなり大きく
なっていたのでした。
だからテストをする時にはメッセージレイヤがそのデフォルト設定になり、メッセージレイヤの
中に入っているつもりでも画像がmargin部分に引っかかって表示されなかった…というお粗末。
こんな事で2年以上もグラフィカルボタンをあきらめていたとは。
つまらない事でお騒がせしてすみません。しかしおかげで重要なコマンドが使えるようになりました。
>>910 の件はグラフィカルボタンでやってみます。ありがとうございました!
917 :
913 :2009/09/29(火) 18:40:17 ID:NgnztUMM
何度もすみません。
グラフィックボタンは使えるようになりましたが、やっぱり
>>910 のような動作をする為には
何かが不足のようです。
[button graphic="ボタン.png" exp="kag.callExtraConductor('button_oshi.ks', '*説明')"]\
[s]
…としてcallタグの代わりになり、button_oshi.ksの最後にretrunを入れる事に成功しましたが、
これで戻ってくる場所は上記タグの[s]の直前になる為、やはりそこで終わってしまいます。
ボタンを押す前の状態に戻ってくる方法はないでしょうか…。
>>917 ボタンを押す前の状態ってのがなんなのか、
何がどう上手くいかないのかがさっぱりわからん。
勘で答えるとテキストかボタンのメッセージレイヤの内容を消去してるせいだと思う。
*説明から[return]の間に[ct]や[cm]があるとか、描画先を変更せずに[er]してるとか。
>>917 俺の場合は、ボタンを配置する基本の処理の流れは、こんな感じで組んでいるけど、どう?
*ボタンを押す前の状況
画面を更新してボタンを配置する
1つ目の[butt]を、打鍵で フラグに1を入れて *打鍵した ラベルに行く
2つ目の[butt]を、打鍵で フラグに2を入れて *打鍵した ラベルに行く
[s]
↑ここで打鍵まちにする
*打鍵した
フラグが1ならば[call]1のファイルにいってreturnでここに戻ってくる
フラグが2ならば[call]2のファイルにいってreturnでここに戻ってくる
[jump] *ボタンを押す前の状況 の、ラベルに戻る
まともにリファレンスも呼んでいなさげな913がそろそろウザくなってきた もっと具体的にやりたいことの仕様説明をしろよチンカス どうやらオンラインヘルプっぺえ機能がやりたいようなので勝手に断定して話を進めると、 ヘルプ用レイヤをつくってそこにテキストを書き、ボタンによってレイヤのvisibleを トグルさせるのが簡単かつメンテしやすいのではないかと思う 挙動をモーダルにしておけば、テキスト自体はマクロで呼び出せるしな
すみません。すっかり煮詰まった状態でテストしながら書き込んでいた為、
何だか訳の解らないことを言っていたようです。
やりたい事が不明という点。
>>910 の4行目までに書いたことが全てでして、
考えてみればボタンの機能は、正にそういうことをする為のものなので出来ないはずが
なかったんですね。
「押す前の状態」とかややこしい事を言ってしまいましたが、ボタンを押した時に
跳んだ場所から抜け出せない(うまく戻って来れない)というだけの事でした。
>>919 さんのように書いて、
>>918 さんの指摘も気をつけるようにしているつもりなのですが、
どうもうまく行きません。
>>916 で急にボタン画像を表示できるようになったことに浮かれてしまいましたが、
まだ構造の方を理解しきれていないようです。
ただ書式の基本のこととは言え、持っているマニュアル本にはボタンについての項目がなく、
KAGリファレンスや幾つかの講座も覗いてみたのですが、グラフィカルボタンについては説明が少なくて
難航しています。
これ以上書式の基本のような事で時間をかけるのは、ここではスレ汚しになってしまいそうなので
質問はここまでにしたいと思います。
時間をかけて独力で調べ直し、うまく行ったらスレタイの"雑談"として報告しに来ます。
ちなみに、
>>920 さんのやり方が確かに一番私のイメージしてるものに近く簡単なようです。
是非この方法を使わせていただこうと思っています。
>>921 いや、だからサンプルを確認したのかと。
えーと、サンプルというのはどういう事でしょう。 リファレンスや色々な講座にある書式、こちらで書いていただいた スクリプト等をそのままコピペして試してみてダメだったのですが…。
>>923 kag3pluginの中にsampleフォルダがあるでしょ。
そろそろ「何考えてるの? 死ぬの?」を発動してもいい?
んでまぁ、何がなにやら困ったらあれだ returnタグは戻り先を指定出来るんだから、ボタン(マップもどきか?)を描画する先頭のラベルに飛ばせばいいんじゃない? そうなると何でcallで飛んだんだ?って気はするけど。 ;MAP描画 *map [button 押したら*subをcallする感じの] [s] ;押した先の画面描画 *sub ;[s]で止めてbuttonで飛ばすか[p]だか何かそういう感じ *ret [return 戻り先を*mapに指定] ちょこっとこみいった事をしたいのであれば、リファレンスとOUTFOCUSを端から端まで目を通して軽く記憶に留めとく位の事はしたほうがいいと思う。 KAGがどんな機能を持っててどんな事が出来そうか想像しながらリファレンスを読むのは楽しいと思うんだけどな。 ゲームの完成とは直接つながらない時間の使い方なのは否定しないけども。
ここと公式で聞いてみて理解できなかったら仕様変更したほうがいいと思う。 そんなところに時間かけるだけ無駄。
>ボタンを押した時に跳んだ場所から抜け出せない(うまく戻って来れない)
928 :
927 :2009/09/30(水) 07:07:39 ID:dVOo3BQr
ごめん。ミスった。
>>921 >ボタンを押した時に跳んだ場所から抜け出せない(うまく戻って来れない)
[s]の位置でcallされて[s]に戻ってきてるんだから飛んだ場所から抜け出せてる、
うまく戻ってきてるんじゃないか?
結局どううまくいかないかも書いてない。
call先をコメントアウトするなりして何故うまくいかないかを調べるくらいしたらどうよ。
ギャラリーページを作っているんですが、トランジションをかけてページ移動をすると トランジションが終わった後にサムネイルがワンテンポ遅れて表示されてしまいます。 これをトランジションが掛かっているときにはすでに表示されていて、 一緒に表示させるにはどうしたらいいでしょうか? よろしくお願いします。
総合IDとして変数に(数字で)aAbBcCdD……のように格納して、二桁ずつ個別のIDにして使用しようとしてるんですが、 aA=05とか、aAbB=0028とかのように、総合IDの先頭に0があるとエラーが出てしまいます 変数の仕様によるものだと思いますが、エラーを回避する方法はないでしょうか? 分かる方いられましたら、教えていただけないでしょうか
0が頭につくと8進数扱いになるから数字の8や9が登場できない 数としてではなく文字列として扱うようにすればOK 0028ではなく"0028"みたいな
>>929 pimage命令でトランジション先の背景にサムネイルを先に合成してからトランジションをかける。
>>930 それ仕様の方がおかしくね?
基本的に変数を大量に使う実装法はお勧めできない。
たくさんのデータを同じような扱い方をする場合には配列や辞書型などの集合型を使ったほうがいい。
また、文字列だけで違うものを管理しようとすると、それが大量になると(大体30個越えたあたりから)
人間には管理しきれなくなるので結局その文字列に番号を振りなおすようなはめになるので、
最初から番号で管理することをお勧めする。
したがって、今回の話は単純な整数配列1個に置き換えられる。
文字列1個でもいいかもね
>>930 いわゆる uuid 作りたいだけじゃなくて?
文字列化する、さらに確実に文字列として評価されるように固定文字プリフィクス
付けておくことを勧めるよ。"__" とかね。
935 :
930 :2009/09/30(水) 14:10:39 ID:/JKUNhe2
>>931-933 教えていただいてありがとうございます
パーツをいくつも重ねてできた合成イメージを表示しようとしていて
個別IDがパーツごとにどれを選ぶか表し、総合IDが完成したイメージのIDを表すようにしようとしていました
検討しなおしてより良い仕様に変えようと思います
936 :
930 :2009/09/30(水) 14:11:50 ID:/JKUNhe2
>>934 すいません、レス見落としてました。ありがとうございます。
>>924 あっ、そういえば有りましたね。製作に入って自作品外のファイルを別所に移したのを忘れていました。
今仕事先からなので帰ってから確認します。
>>925 ,926,928
最初クリッカブルマップでやろうと思っていた事がボタンで出来ると判り、こっちの方が簡単で色々できそうだと
つい興奮してしまいましたが、ボタンの構造そのものを理解しないうちにデタラメに弄って熱くなっていたようです。
まずその基本を勉強し直し、その上で皆さんのアドバイスを参考にさせていただきたいと思います。
うかつな質問でお騒がせし申し訳ありませんでした。
画面サイズと同じサイズの画像を背景として表示させた状態 仮に状態Aとする 同じ画像をtop=0 left=0で背景レイヤー以外のレイヤー(例えば0や1)に表示させると 状態Aよりも少しだけ(数ピクセル)ズレるのは仕様ですか、それとも指定方法に問題があるのでしょうか? 同様にbuttonで画像を表示した場合とimageで画像を表示した場合も button x = image left button y = image top 同じ値を指定しても異なる位置に表示されますが、これは仕様でしょうか、それとも指定方法に問題があるのでしょうか?
>>938 buttonとimageで画像の取り扱い方は違うんだけど、それはOK?
941 :
938 :2009/09/30(水) 20:30:52 ID:rJ4hDBJr
マジで!? マージで!? マージンで!? 後者の問題は解決しました。 ありがとうございました。
イラッ(^ω^;) なんでこうリファレンスも読まない場当たり的な質問が続くのか
*start どうする? [link target=*hanasu]話す[endlink] [link target=*siraberu]調べる[endlink][s] *hanasu[jump target=*start] 話した。 *siraberu 調べた。[jump target=*start] *start どうする? [link exp="f.koudou='hanasu'"]話す[endlink] [link exp="f.koudou='siraberu'"]調べる[endlink][s] [if exp="f.koudou=='hanasu'"] 話した。[jump target=*start][endif] [if exp="f.koudou=='siraberu'"] 調べた。[jump target=*start][endif] 正確な文ではありませんがこんな感じでコマンドADVを作ろうとした場合(実際はもっと複雑) if文で分岐させるのと、jumpでラベルに飛ばすのってどっちがいいんですか? 中身が長いときはラベルの方が良さそうだけど、好みの問題? ifの方が管理しやすそうですが、ラベルだとKKDEで折りたためたりできるのでどっちがいいのか…
jumpにした方がいい。 理由は未読/既読判別の処理の関係上。 ifでは判別してくれないよ。
>>943 最初リファレンスも読まないカスが多い一連の流れを
揶揄してるのかと思ってしまったw
厳密な処理速度とか効率性とか求めてる人間じゃないんで
俺はどっちでも好きにしろとしか思わない
余計なバグを出さないために、俺はcall。 空行を少し多めにしてpatch出すときはそこに埋めるようにしてる。
>>946 ぶっちゃけその発想はなかった。
そうか、行がちがくなってエラー出るんだから、最初から余裕もって空行にしとけばいいのか。
既存の行のうしろに差分追加すればいいんじゃね
949 :
名前は開発中のものです。 :2009/10/02(金) 19:05:41 ID:xNfLWESs
初歩的な質問ですみません。 SOUNDファイルの音をマウスオーバーで鳴らすにはどのようにすればいいのでしょうか?
[link enterse="hoge"]
>>949 buttonマクロでonenter引数に音を鳴らすtjsコードを書く。
enterseでよかった……orz
出来ました!ありがとうございます。
吉里吉里も下火になってきたな
つか同人ゲームが下火だよな
単純なノベルやAdvは、コモディティ化して久しいからな。 FFD並みの演出が手軽にできます、ってのじゃなければ。 まあどちらかというと吉里吉里はあまりお手軽じゃないというところが欠点なのかもしれないが。
この頃ライブメーカー製をよく見るような気がする。 実際、素人がノベルやADVを見栄えよく作ろうとするなら ちょうどこのぐらいが必要十分って感じなのかも。
セミプロやプロが手間かけずに作れるのが吉里吉里だったってことかな
ごうさんとこの新作体験版やってみたけど、メッセージウィンドウがああも動かれると目が疲れるな。 吉里吉里でがんばれば(カスタマイズは必要だが)これぐらいはできるよ、という良い手本だな。
>>959 へぇ、吉里吉里のカスタマイズベンダーかぁ。あるだろうなとは思ってたが本当にあるんだな。
ブログでDirectX(3D)でトランジションができない、なんて書いてたけどシェーダー書けばできるよ。
まあ言わずもがなな話ですが。
[image storage="senpuki.jpg" layer=base page=fore] [image storage="yurikane.png" layer=0 page=fore visible=true pos=center] //で、とりあえずキャラを立たせました。 //しばらく文字を流して、 [layopt layer=0 page=fore visible=false ] [image storage="vs.jpg" layer=base page=fore] //と、キャラを隠し、背景を入れました。 //さらに文字を流して、 [image storage="kadomaheya.jpg" layer=base page=fore] //と背景を替え、 //また文字を流しました。 //そして、 [image storage="kadoma.png" layer=1 page=fore visible=true pos=center] //と書いたのですが、 ここでエラーになってしまいます。 吉里吉里/KAG ノベルゲーム清作入門 という本で勉強しています。 何が原因なのでしょうか?
・ファイル名の画像がない ・ファイルの拡張子が違う ・前景レイヤーが1つしかない
>>961 とりあえず一番上の行にこれを書き足してみたら。
[laycount layers=2]
前景レイヤーが2枚になるおまじないだ。
これでダメだったら
>>962 の3番ではないことになるな。
そんな感じでひとつずつ間違いの可能性を消していく。
リファレンス読まない質問が、いま静かなブーム
ブームって言うか続きすぎて正直ウゼエ 答えちゃうお前らもよくないよ
>>961 とりあえず、Shift+F4を押して動作ログを見てみよう。色々と読み取れるぞ。
ちなみに野々口は精作な。
こんなとこより公式で訊いた方がもうちょっとまともな回答があるのにな。
ここは公式で答えがえられないような高度な質問をするところだよな
そして高度な内容ほど自分で解決しろよ、 出来ないなら実装しない方が・・・という流れに持っていく作戦
ってかリファレンスが糞過ぎるんだよ 暗黙の了解が多すぎる Javadocなみの情報量は最低限欲しいな
971 :
961 :2009/10/04(日) 09:24:20 ID:Lv5+noAY
>>963 指摘された通りshift+F4やってみました。、、、よく分からんです。
こんな機能があったんですねー。
09:13:42 first.ks : 「カドマー、起きろー、朝だぞー」[r][l][cm]
09:13:42 first.ks : [image storage="kadoma.png" layer=0 page=fore visible=true pos=center]
09:13:42 ==== An exception occured at kaglayer.tjs(129)[(function) loadImages], VM ip = 15 ====
09:13:42 -- Disassembled VM code --
09:13:42 #(129) return super.loadImages(storage, key);
09:13:42 00000015 calld %3, %2.*2(%-3, %-4) // *2 = (string)"loadImages"
09:13:42 -- Register dump --
09:13:42 %-4=(int)536870911 %-3=(string)"kadoma.png"
09:13:42 %-2=(object)(object 0x0012E3B4:0x00000000) %-1=(object)(object 0x0140A1BC:0x0140A1BC)
09:13:42 %0=(void) %1=(object)(object 0x00C68424:0x00000000)
09:13:42 %2=(object)(object 0x00C6BA84:0x00000000) %3=(void)
09:13:42 --------------------------------------------------------------------------------------
09:13:42 trace : animationlayer.tjs(483)[(function) loadImages] <-- graphiclayer.tjs(66)[(function) loadImages]
<-- mainwindow.tjs(5332)[(function expression) (anonymous)] <-- conductor.tjs(440)[(function) onTag] <-- conductor.tjs(104)[(function) timerCallback]
09:13:42 エラーが発生しました
ファイル : first.ks 行 : 139
タグ : image ( ← エラーの発生した前後のタグを示している場合もあります )
ストレージ file://./c/documents and settings/owner/デスクトップ/z 美少女作成/美少女主義/data/kadoma.png を開くことができません
大変申し訳ありません。画像ファイルの名前を間違えていました。 .png が ..png となっていたため 読み込み不可でした。 初歩的ミスでした。 これは発見しにくい、、、orz レスくれた人ありがとうございます。
TJS2リファレンスがカスなのは確か ほとんど「実装が仕様」だからあんまり詳しく書きたくないんだろうな
TJSリファレンスで困ったことって無いけどなぁ 吉里吉里の諸クラスと、tp_stub.h については記載がないのでソース追うこともあるけど。
>>974 ここしばらく続いてる質問は、リファレンスの内容うんぬん以前の問題だろw
javadocなんて大事なことは全部webのガイドとチュートリアルにしか書いてないだろw
>>975 が一番困る。
吉里吉里やる人ってCとかJavaとかHTMLとか他のも触った人?
>>978 どういうつもりで、その三つの言語を同列に並べてるのか疑問
ちゃっかり打開しちゃってるよね まぁ、いいんだけどさ それより主、この棒みたいな敵、アレに見えるよね、アレにさ ちなみにアレって何?なんなの?何なの?
N88-BASICなら触った。
TJSなんか捨てて既存のスクリプト言語を組み込んでほしい 実際何一つメリットがない こればっかりは作者の趣味だから仕方ないんだろうけど
>>982 それこそ好きな言語組み込めばいいじゃない。誰も止めないぜ
>実際何一つメリットがない 無知だからこそ言えることだよな。
986 :
名前は開発中のものです。 :2009/10/04(日) 21:02:48 ID:vz+5yYFL
ボタンはひとつしか表示出来ないのでしょうか? [button graphic=yesbutton target=start left=40 top=300] [button graphic=nobutton target=option left=40 top=200] でやってみたのですが画面には一つしか表示されません。 ボタンを複数個表示させるにはどう書けばいいのですか?
>>982 そこが言語作者のオナニーポイントだからどうしようもない
>>988 とりあえず、関係ないページを教えるのはやめようぜ
>>986 ボタンは概念的には文字扱いされたリンク画像なので、
buttonコマンドを呼び出す直前でlocateコマンドも呼び出してx,y座標を与えるんだ。
直感的には奇妙だが、吉里吉里はそういう仕様になっている。
こうしてまたリファレンスをよめばそのまま書いてあることが質問されるのであった
>>986 とりあえず質問する前に
>>1 読め
>KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
>FAQ、Google等で調べてからにしましょう。
お前の質問は載ってる問題だ
あと答える方も「みりゃ解る初心者質問」はスルーしろって
構うからどんどん教えてチャンが増えるんだよ
努力の形も見せずに、答えだけ求める類増やすんじゃないよ
吉里吉里自体、初心者にはあまり優しくない開発環境だから、 初心者っぽい質問には多少親切に答えてあげてもオレはいいと思うけどな。
>>994 初心者だからこそ大抵の情報は載っているリファレンスを読んで、自分で解決することを
覚えさせたほうがいいんじゃないか。そのうえでわからんことがでたらここか公式で聞けばいい
付属のドキュメントも読まないでつまづくのはツールの敷居のせいじゃないぞ
もっともとりあえずどのドキュメントを読めばいいのかわかりにくいのは事実
>>994 初心者だからこそ、教えて君に成り下がらないうちに自分で調べることを覚えさせるべきだろう。
「リファレンスに載ってるからよく読め」で良いわけだし。
じゃー、教えるときは泣くほど罵倒してからにするか
998 :
名前は開発中のものです。 :2009/10/05(月) 06:13:24 ID:AqpQxOYN
ただでさえ下火なのに初心者追い払ってそんなにユーザー減らしてなにがしたいの? だいたい、いまこのスレの住人五人くらいしかいないじゃん 初心者の質問以外にこの過疎スレに書き込む人がいるの?
999 :
名前は開発中のものです。 :2009/10/05(月) 06:15:31 ID:vkYQtnzC
5人(笑)
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。