■吉里吉里/KAG/TJS雑談質問スレ■その17at GAMEDEV
■吉里吉里/KAG/TJS雑談質問スレ■その17 - 暇つぶし2ch936:名前は開発中のものです。
09/05/25 23:20:43 ObrkX5k1
>>935
仕組みわかってないのに発言するのはやめとけ。
KAGParser の仕様ながめて、「継承」で call 機能の上書きが
可能かどうかじっくり考えてみるといい

もちろん getNextTag を含む全部のメソッドを再実装すれば可能だが、
それはもはや継承する意味がない。

937:名前は開発中のものです。
09/05/25 23:56:20 S+anN2v1
そりゃC++なら継承しかできないんだから継承して全部再実装するしかないわな。
お前と継承の問題点を話す気はないよ。

938:名前は開発中のものです。
09/05/26 00:00:59 HIUE+sG7
何を言っているのかさっぱりわからないんだけど。

939:名前は開発中のものです。
09/05/26 00:44:47 5n+5k0iQ
>>937
C++とか関係ないから。KAGParser の仕様を把握した上での発言なら
おまえの目はフシアナ。さもなくば、仕様もみずに適当ぶっこいてるだけ。
どっちにしてもロクなもんじゃない。

940:名前は開発中のものです。
09/05/26 00:51:21 wPoNtikU
無駄に煽ってるのには何か理由があるのか?

941:名前は開発中のものです。
09/05/26 01:05:47 ywP+Ag7s
931は俺なんだけど、もう>>932で解決してしまったから、
正直なところ、なんでこの話題伸びてるんだろう、みたいな

942:名前は開発中のものです。
09/05/26 15:45:46 uPGTHKpr
もう発端はどうでもいいんだろ

943:名前は開発中のものです。
09/05/26 16:17:39 JvkuC56a
ほったんほあーほあー

944:名前は開発中のものです。
09/05/26 22:14:25 nI59lGR6
質問させてください
所持アイテムでイベント分岐するゲームを考えています。
数が多いのでtjsで作ろうかと思ったのですが
頭が回らず苦しんでいます。

起動時に配列をつくり
f.果物[]
アイテムが出たら、配列に順次入れていく
ルートによって入手する物が違う
(マクロで代入?)
f.果物[0]=りんご
f.果物[1]=みかん

分岐判定は
f.果物の配列に何かしらあったらその名前で分岐
f.果物を何も入手していない場合は、していない分岐
(if exp="f.果物.count==0")?

マクロ代入まではおぼろげに形がつかめそうなのですが
分岐判定をどうしていいのかが解りません
ご助言いただけましたらお願いします。

945:名前は開発中のものです。
09/05/26 22:36:27 nWyrUshI
どんなんにしたいのかしらんけどArray.find()でも使えばいいんじゃね

946:名前は開発中のものです。
09/05/26 23:47:50 AnCyA5Lz
>>944

1.アイテムが出たら、配列に順次入れていく

f.果物 = [];
f.果物.add = 'りんご';
f.果物.add = 'みかん';

f.果物[0]=りんご
f.果物[1]=みかん

2.
f.果物の配列に何かしらあったらその名前で分岐
f.果物を何も入手していない場合は、していない分岐


if( f.果物.count < 1 ){
 // なにも入手していない場合
 kag.process('なにも入手していない場合のシナリオ.ks', '*適当なラベル' );
} else {



}

947:名前は開発中のものです。
09/05/26 23:51:29 AnCyA5Lz
>>946追記

if( f.果物.count < 1 ){
 // なにも入手していない場合
 kag.process('なにも入手していない場合のシナリオ.ks', '*適当なラベル' );
} else {
 
 //あとはここにswitchで分岐するなりifで書くなりして分岐
 //分岐の仕方が明記されていなくてどう分岐したいかわからない。ここは自分で考えてくれ

}

948:名前は開発中のものです。
09/05/27 01:00:06 pY2nF+Fw
まあ、まずは KAGの範疇で考えるこった

; 変数初期化用マクロ
[macro name=initfruit]
[eval exp="f.果物 = []"]
[endmacro]

; 果物追加用マクロ
[macro name=addfruit]
[eval exp='&"f.果物.add(\""+mp.name+"\")"']
[endmacro]

[initfruit]
[addfruit name=りんご]

; なにも拾ってない
[jump target=何もない cond='f.果物.count==0']
;りんごみかんの順に拾った
[jump target=りんごみかん cond='f.果物.count > 1 && f.果物[0]=="りんご" && f.果物[1]=="みかん"']
;みかんりんごの順に拾った
[jump target=みかんりんご cond='f.果物.count > 1 && f.果物[0]=="みかん" && f.果物[1]=="りんご"']
;どこかでメロンをひろった
[jump target=りんご cond='f.find("メロン")>=0']
; 最初にりんごを拾った
[jump target=りんご cond='f.果物[0]=="りんご"']
; 最初にみかんを拾った
[jump target=みかん cond='f.果物[0]=="みかん"']
; 以下必要なだけ順番を考えて条件列挙
[jump target=どれでもない]


949:名前は開発中のものです。
09/05/27 01:04:23 W46O6gll
tjsを書けるようになると、kagで書くほうが制限あってめんどくさく感じてしまう俺……

950:名前は開発中のものです。
09/05/27 03:44:46 pf7jHxG5
つーかkagっていつの間にかelseタグが実装されてるんだな。
昔else if がkagで出来なかったから200列ぐらいのifタグを書いた記憶が…

951:名前は開発中のものです。
09/05/27 07:01:07 z/2WzjLs
タグリファレンスに載ってないような

952:名前は開発中のものです。
09/05/27 08:18:47 qcE159Yw
KAGのelse実装は結構嬉しかったな

953:名前は開発中のものです。
09/05/27 10:31:33 PvUPUukp
新しいリファレンスには,
タグリファレンスの変数・TJS 操作のところに、elseとelsifが追加されているね
気がつかなかった

954:名前は開発中のものです。
09/05/27 11:09:04 YROPw1jJ
>>945->>948
ありがとうございます!

やりたい分岐は
果物を1個もっていれば、その果物専用のラベルへ
2個以上あれば選択画面をだして選択させて
分岐していく物を考えていました
f.果物の種類が多いので、持ってる物だけ要素に入れて
f.果物の要素内を種類名で検索、分岐という形です

変数を種類ごとに作り、それをifで分岐を書けばいいのですが、
種類が多いためkagだと長くなりすぎるような気がしまして

頂いたレスを参考にかんばってみます

955:名前は開発中のものです。
09/05/27 11:30:16 pY2nF+Fw
>>954

; 1個もってればその果物専用のラベルへ
[jump target='&"*label_"+f.果物[0]' cond='f.果物.count==1']

; 複数の場合は選択
[eval exp='tf.count=0']
*fruit_sel_loop
[link target='&"*label_"+f.果物[tf.count]'][emb exp='f.果物[tf.count]']を食べる[endlink][r]
[eval exp='tf.count++']
[jump target=*fruit_sel_loop cond='tf.count<f.果物.count']
[s]

これであとは *label_果物名 のラベルつくっとけばおk
& の使い方と、あと cond をうまく使うと、KAGでも凝った処理をすっきり書ける

もっと複雑になるようなら、tjs 判定かけつつ KAGのタグを差し込み生成するのがわかりやすい。
詳細は過去スレ。

956:名前は開発中のものです。
09/05/27 14:39:38 YROPw1jJ
>>955
おおお、ありがとうございます!
kagでもこんなにすっきり書けるんですね
参考にさせていただきます
tf.countの使い方が目からうろこが落ちました
tjsでforのループ文はリファレンス等で解ったのですが
それをkagでどう書くかというのが浮かばなかったので
とても勉強になりました

tjs判定の差込生成も気になるので
過去ログあさってこようと思います
ありがとうございました!

957:930
09/05/27 18:23:20 1BYtdhr9
>>934
ご指定頂いたソースで試みたところ、かろうじて動きました!
まだ動作が少々不安定な箇所があるので、試行錯誤しながら確実な物にして行こうと思います。

長い間この問題で詰まっていただけに、本当に助かりました。
的確なアドバイス、ありがとうございました!

958:名前は開発中のものです。
09/05/29 12:51:38 kIF/7q9A
ちょっとスレ違いになってしまうかもしれませんが、質問させてください。
URLリンク(ymtkyk.sakura.ne.jp)
こちらのサイトで公開されている、extNagano.dllのMorphingトランジションを使いたいのですが、
使用する頂点座標の計算方法が分かりません。
どなたかお教えいただけないでしょうか?
よろしくお願いいたします。

959:名前は開発中のものです。
09/05/29 12:59:20 JerzIL+x
どのスレいっても筋違いだろ、そのサイトに質問しろよwww

960:名前は開発中のものです。
09/05/29 14:35:09 MT1BeTVZ
>>958
同じくモーフィング使いたかったんだが、ダメだったんだよな。
トライしたのが1年以上前なので、どんなエラーだったか忘れてしまった。
三角形の座標6点は、まず自力で三角形をいくつか作って座標を出して、
それを元にexcelで、800×600画面を埋めるようにコピーして増殖させた記憶がある。
もっとスマートに出来そうなもんだけど、それしか思いつかず。
試しに動かして見たかっただけだったので、作者さんには質問せずに投げてしまったので、参考にならずにスマン。

961:名前は開発中のものです。
09/05/29 14:45:55 9k6g/CgJ
これ以外にも吉里吉里でSTGやらアクションやらやってるところってないんかな?

962:958
09/05/29 18:07:47 kIF/7q9A
>>959
分かりにくい書き方ですいません。
四角形(レイヤ)の中に三角形をタイルのように敷き詰め、その三角形の座標を使うのですが。
サンプルには座標が羅列されたファイルが入っていて、それを使用しているんです。
……われながらとても分かりにくい説明だと思います。
ただ、数学的な問題なので、作者様に聞くのもどうかと思いまして。
更新も長らくされていないようですし。

>>960
レイヤからはみ出さないように乱数を作成してやってみたんですが、途中で止まってしまいました。
開始は出来るのでトランジション中の問題だと思うのですが、エラーになる条件がいまいちわかりません。

>>961
横スクロールとかはあったような……。
開発環境さえあれば、もっと作りやすいと思うのですけれど。

963:名前は開発中のものです。
09/05/29 18:52:22 EMt4AjIi
モーフィングの頂点座標の指定って
てっきりフィーリングでやるもんだとばかり…定石な計算方法とかあるのか?
(ex.例えば顔同士なら、両方の画像に同じ数、同等に頭の天辺、目尻、顎の先、って感じで点を決める。
点を結び重ならない三角をつくり、2つの画像で対応する三角の座標を順次指定…)

モーフィング以外でも958のとこのトランジション、カッコイクテイイー
でも、重そ……と思った以前、来年あたり挑戦してみたいのー

964:名前は開発中のものです。
09/05/29 19:15:09 HcgO41nD
>>958のはdllのソースがないとわからん
cppどこかにあるの?

ないなら作った本人以外は詳細な仕様はわからんよ。試行錯誤するしかない
これは制作者に聞くべき

965:名前は開発中のものです。
09/05/29 19:22:40 GC5STOyT
extNagano.txtに
befor:
変形前の三角形を、整数の配列で指定します。
三角形一つにつき6つの整数で指定します。n個の三角形にたいして 6n 個の整数を使用します。
[ ax1, ay1, ax2, ay2, ax3, ay3, bx1, by1, bx2...
after:
変形後の三角形を、整数の配列で指定します
三角形一つにつき6つの整数で指定します。n個の三角形にたいして 6n 個の整数を使用します。
[ Ax1, Ay1, Ax2, Ay2, Ax3, Ay3, Bx1, By1, Bx2...


966:958
09/05/29 23:55:19 kIF/7q9A
ごった煮プラグインの中に、triangulateという三角形分割関数があるのを発見。
頂点の配列をこれに投げれば、なんだかできそうな気がしてきました。

967:名前は開発中のものです。
09/05/30 02:15:53 asQBr6X7
久々に公式日記見たら、
吉里吉里3はお蔵入りするんじゃないかと思えてきたw

2010年中に出来るかなあ・・・

968:名前は開発中のものです。
09/05/30 19:51:53 YFwMIN6U
>2010年中に出来るかなあ・・・
一瞬次期C++の話かと思った。Boostでいいよもう。

969:名前は開発中のものです。
09/05/31 23:27:17 U7IICphv
前景レイヤーの位置調整ってleftとtopしかないんですか?
現在の表示状態がバストアップ状態なんですが、アングル?引いて全身表示させたりズームさせたりしたいんですが、サイズ別の立ち絵用意してやるしかないですかね?

970:名前は開発中のものです。
09/05/31 23:31:08 q93GLC5T
>>969
リファレンス嫁

971:名前は開発中のものです。
09/05/31 23:32:45 LvZpDiyp
>>969
ズームプラグインが吉里吉里に梱包されてるだろ?

972:名前は開発中のものです。
09/06/01 00:38:19 b+ZyUcwL
>>970-971
ありがとうございます!!


973:名前は開発中のものです。
09/06/01 00:49:03 ZH828Gb5
>>961
URLリンク(www.4gamer.net)

974:名前は開発中のものです。
09/06/01 14:29:35 7P9GdEI0
iscript内で

var button = new SystemButtonLayer(
kag,
kag.fore.base,
function(){System.inform("ボタンが押されました");});

button.loadImages("fgimage/kagpp_btn_continue");
button.setPos(100,100);

//↑これはOKなんだけど


class Bt{
function show(kag)
{
var button = new SystemButtonLayer(
kag,
kag.fore.base,
function(){System.inform("ボタンが押されました");});

// ボタンに画像を設定します
button.loadImages("fgimage/kagpp_btn_continue");
button.setPos(100,100);

}
}
var b = new Bt();
b.show(kag);

//↑これだと何も表示されないのは何故?


975:名前は開発中のものです。
09/06/01 14:37:46 2ymLRllY
すぐにshow関数抜けてbuttonが見えなくなるから

976:名前は開発中のものです。
09/06/01 14:49:34 7P9GdEI0
>>975
なるほど、そういう仕組みなのか…
ありがとう

977:名前は開発中のものです。
09/06/01 15:05:37 7P9GdEI0
show内のbutton変数を、ローカルからクラスメンバにするか、
返値で返して呼び出し先のks内で受け取ってやれば生存し続けるね。

978:名前は開発中のものです。
09/06/01 21:05:28 4giFckgM
ググる言葉が悪いのかどうしてもわからんので質問させてくれ。

セーブ&ロード画面のカスタマイズについてなんだけど
デフォの半透明の黒っぽいサムネ付きのあの画面の
配置はそのままでデザイン(色とか透明度とか)だけ変えたいんだが
どこをいじれば良いんだろうか?
よもやデフォを元に1から作らねばならんのだろうか?

説明下手ですまんが誰か助けてくれ。

979:名前は開発中のものです。
09/06/01 21:12:15 7jFJzDyd
krkrにそんなセーブロード画面って、デフォでついてたっけ?

980:名前は開発中のものです。
09/06/01 21:23:54 4giFckgM
>>979 すまん、デフォではついてないな。
お前のレスで、今、確認してみたら勘違いしていた事に気付いた。
お前のおかげで解決した。
すまん、ありがとう。

981:名前は開発中のものです。
09/06/02 00:34:24 OvS4EQAK
そろそろ次スレか?

おさかな定食復活しないなあ

982:名前は開発中のものです。
09/06/02 00:45:54 TNA+DZcG
改装中に閉鎖状態にするのってなんの意味があるんだろう
オンライン上で一個一個html書いてるのならわかるけど
たいていローカルで全部用意してFTPで一気に上書きだと思うんだが

早く復活しないかなー

983:名前は開発中のものです。
09/06/02 10:42:41 aIFvI9H4
おさかな定食は>>649

984:名前は開発中のものです。
09/06/03 05:02:58 L1hW0Bf8
Releaserで実行ファイルへ変換する際、アイコンも自作のものに変えたいのですが反映されません。
32×32、拡張子はicoで参照では正しく表示されているのですが…何か別の設定が必要なのでしょうか?

985:名前は開発中のものです。
09/06/04 01:46:06 FNL8aSPj
吉里吉里公式の掲示板、RSSの更新っていうか配信っていうか、止まってない?
3月中旬で止まってる

986:名前は開発中のものです。
09/06/04 02:13:16 vvTfWMkL
すみません、質問失礼します。
吉里吉里でターン数などの変数をセーブ情報として持たせるには、
どんなうまい方法があるでしょうか?
ラベル内に変数を使うような方法を考えたのですが、
ぐぐってもぐぐっても出てきません。
どなたはお答えいただけると幸いです。

987:名前は開発中のものです。
09/06/04 02:56:38 OFrYz13F
ラベル内に変数を使うってこういうこと?

*test|&'テスト'+f.turn

988:名前は開発中のものです。
09/06/04 03:40:52 MvHjLtS4
>>986は何をやりたいのか
分かりやすく説明するところから
始めないといけないと思うんだ

989:名前は開発中のものです。
09/06/04 10:33:42 x8L8WkTH
エスパーの俺が察するに
 
>>986は、独自のセーブロードモードを作っており
サムネイル
セーブポイント名
セーブ時間のほかに
ターン数などの、SLGまたはRPGの時に使用した変数等を
情報として、セーブデータ毎に表示したいのでは?
 
解決方法としては
セーブする直前に
sf.s_data[f.セーブ番号][f.情報種類番号] = 保存する追加情報
のように、システム変数で追加セーブ情報を保存し
セーブロードの、サムネイルなどの情報表示の個所に
sf.s_data[f.セーブ番号][f.情報種類番号]
を、参照してデータを並べておけば
このセーブデータには、これが入っていると、わかるようになる


990:名前は開発中のものです。
09/06/04 11:18:51 vvTfWMkL
>>987
それを求めていました!こんなにもシンプルだったのですね!
絶対に自分一人では解決できませんでした。ありがとうございました。

>>988
読み返してみたら、自分でも分かりにくくて、
>>987>>989はエスパーだと思いました。
すみません、以降気をつけます。

>>989
その方法なら、諦めかけていたもう一つ上のセーブが出来るかもしれませんね!
読心ありがとうございます。教えていただいた情報を元に、頑張ってみます。

皆さんありがとうございました!

991:名前は開発中のものです。
09/06/04 16:03:44 hHzXbmgb
質問です
var func = [], i = 10;
while(i--)
func[i] = function {
return i;
};
dm( func[4]() + ',' + func[5]() );
上記のようなスクリプトで
func[4]()なら4を、func[5]()なら5を返すようにしたい時、
return i; の部分はどう書くのでしょうか?
\使うのだと思うのですが return '\"' + i + '\"'; では駄目でした…

992:名前は開発中のものです。
09/06/04 17:30:37 N3LAFxc/
>>991
吉里吉里には JavaScript のような変数を自前で巻き込むクロージャは無い。
自前でコンテキストを作ってやれば似たことはできる。

てっとりばやくその場処理したければ辞書を使う

var func = [], i = 10;
while(i--)
func[i] = function { return i; } incontextof %[i:i];
Debug.message( func[4]() + ',' + func[5]() );

ただし、辞書のコンテキストはグローバルを自動的に参照してくれないので明示的な指定が必要になる。

× func[i] = function { Debug.message(i); } incontextof %[i:i]
○ func[i] = function { global.Debug.message(i); } incontextof %[i:i]

それから、存在しない変数を参照しようとしても常に void が帰ってくるためエラーにならない。

func[i] = function { return a; } incontextof %[i:i] // a は存在してないけど void が帰るのでエラーにならない

この挙動が嫌な場合はクラスを専用につくって対応すればいい

class Func { var i; function Func(i) { this.i = i; } function func() { return i;} };
func[i] = (new Func(i)).func;

993:名前は開発中のものです。
09/06/04 22:52:18 hHzXbmgb
>>992
ありがとうございます、お陰で解決しました。
for文でコンテキストに辞書を使うなんて目から鱗です

994:名前は開発中のものです。
09/06/05 22:37:10 BtE7CCT7
rclickタグのように、linkタグをjumpかcallかの選択式にしようかと思ってるのですが、どこをどう弄ればいいんでしょう?
systemフォルダーのtjsファイル内を色々検索してみたものの、linkタグに関係してそうな所が点々とあってよくわからない…(@△@;

文章表示中に押せるメニューボタン用で、戻ったらボタン押した所から再開できるように…と思ったのですが

995:名前は開発中のものです。
09/06/05 23:06:33 b7DHVOui
意味がよく分からんが変数とか状態を巻き戻す必要がある気がするんだが。

996:名前は開発中のものです。
09/06/05 23:15:09 MgcD3pqH
>>994
これ?
URLリンク(devdoc.kikyou.info)

997:名前は開発中のものです。
09/06/05 23:34:01 BtE7CCT7
>>996
うまくいきました。ありがとー
callextraconductorのことだったのか…別用途のものだと思ってました(ーー;

998:名前は開発中のものです。
09/06/05 23:53:14 3W6XITRY
でも文章表示中に押せるメニューボタン用なら、ちゃんとしたシステムボタンプラグイン(systembutton.ks)
が吉里吉里に梱包されてるから、それ使うのがいいと思うよ
使い方が分からなければ、おさかな定食のもお薦め

999:名前は開発中のものです。
09/06/06 00:02:08 Vm4n4q0B
それと、>>996氏の参照してくれたページもそうだけど、
TJSだけでKAGの方のリファレンスあんまり読んでないように思えるから、ちゃんと読んどいたほうがいいよ
じゃないと簡単な事なのに>>994みたいな斜め上の発想になっちゃうから

1000:名前は開発中のものです。
09/06/06 01:18:19 EztZkDNL
■吉里吉里/KAG/TJS雑談質問スレ■その18
スレリンク(gamedev板)

誘導とスレ立て宣言どっちを優先するべきなのだろうか、重複こえーよw

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch