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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2011/02/03(木) 13:12:07ID:6MBIOEHD
ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。

※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/

吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/

ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
■TJSをもっと使うために
ゲームのインターフェイスをカスタマイズしたい、また
KAGの命令に無いことをしたくなったらまずここを読んでみよう。

必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)

前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その22
http://hibari.2ch.net/test/read.cgi/gamedev/1285897465/
0172名前は開発中のものです。2011/02/15(火) 16:21:50ID:ubsjfjaE
【ゲーム制作】サスペンスギャルゲー 『フクロマンス』 【スタッフ募集】
http://ex14.vip2ch.com/test/read.cgi/news4gep/1277294113/
0173名前は開発中のものです。2011/02/15(火) 16:34:33ID:mADjNJ6B
>>171
マクロをTJS……って具体的にどういう役割を想定してるの?
 1. 今現在TJSで何かスクリプトを書いていて、その中でKAGのマクロ/タグを機能させたい
 2. 今組んでいるマクロの中でTJSスクリプトを使いたい(evalタグ毎度毎度打ち込むのがめんどい)
 3. その他

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

>>174
なんか使えそうな感じのレスだね。
ちょっと詳しく読んでみる。
0177名前は開発中のものです。2011/02/15(火) 18:09:42ID:FkfXkijB
>>176
本末転倒やね
TJSを使う時は必ず「タグを作成する」という形で行うようにして、iscript はスクリプト中では使わない、ってほうが結果的には奇麗になると思うよ
0178名前は開発中のものです。2011/02/15(火) 18:41:03ID:eoTU6IqZ
>>177
実際そうだと思う。
たまーに急ぎの時とか、TJSで書くよりタグで書いた方が早いんだけど、でもここは絶対TJSじゃないと無理だしまあいいや、とりあえずendscriptして外に出して・・・とかやったりしちゃうのよね。
マクロの中身が百行とかなるとさすがにそれを一々TJSで同じ事やらせようとするときつい。。。。
タグは拡張性がTJSより低い代わりに、簡略化されてて楽に扱えると言うメリットはやっぱり捨てきれない。
俺ってダメダメ。
01791682011/02/15(火) 18:45:01ID:FQniGo0m
; >>166 ごめん、リファレンスチラ見で知ったかで書いた。今は反省している。
; 例: 複数の選択肢の中から2つ選ぶと次に進むという構成で、一度選んだ選択肢は再度選べないようにする
@wait time=200
*start|スタート
[cm]
@eval exp="tf.flags = [], tf.flags[1] = 0, tf.flags[2] = 0, tf.flags[3] = 0, tf.cnt = 0"

*bunki
[cm]
[if exp="2 <= tf.cnt"]選択肢が[emb exp="tf.cnt"]回選ばれました[l][r][jump target=*start][endif]
[if exp="tf.flags[1]==0"][link target=*select1]選択肢1[endlink][r][endif]
[if exp="tf.flags[2]==0"][link target=*select2]選択肢2[endlink][r][endif]
[if exp="tf.flags[3]==0"][link target=*select3]選択肢3[endlink][r][endif]
[s]

*select1
[cm]
選択肢1が選ばれました[l][r]
[eval exp="tf.flags[1]=1, tf.cnt=tf.cnt+1"]
[jump target=*bunki]

*select2
[cm]
選択肢2が選ばれました[l][r]
[eval exp="tf.flags[2]=1, tf.cnt=tf.cnt+1"]
[jump target=*bunki]

*select3
[cm]
選択肢3が選ばれました[l][r]
[eval exp="tf.flags[3]=1, tf.cnt=tf.cnt+1"]
[jump target=*bunki]
0180名前は開発中のものです。2011/02/15(火) 19:13:51ID:eoTU6IqZ
2つ選ぶと次に進むと言うのは、選択肢に戻った先で、選択肢を表示する前にifで飛ばせば良いよ。
一つ目と二つ目のメッセージの最後にカウンターかなにかでtf.count++とかしておいて、戻った先で選択肢の前に if(tf.cout>=2)とかすればいい。

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

>>193
多少でも知ってる人間ならまず間違わずに読み取れる書き方だったとは思うけど、
この流れだとスクリプターには誤解されても仕方ない。実にやっかいな用語だ。
0195名前は開発中のものです。2011/02/16(水) 15:05:12ID:rcQiOZtl
俺も低級って言われるとやっぱり低レベルとイコールなイメージが強いな。

ところでそんなプログラマーさんたちにちょっと初歩過ぎる質問なんだけど、
上の方で紹介されてる
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/plugins/win32/
のLayerExなんちゃら系をC++でコンパイルしようとしたんだけど何か足りなくてエラーが起きる
layerExImage/の中身とlayerEx/の中身とtp_stub.cppとtp_stub.hを1つのフォルダーに突っ込んで処理しようとしたけどコンパイルされない
dllをDLすれば早いけど、今後の勉強のために覚えようと思って試したんだけどうまくいかなかった
ほかに何が足りないんだろうか?
0196名前は開発中のものです。2011/02/16(水) 15:26:58ID:JI5ci1t3
いや、なんてエラーが出たかぐらいかこうよ。

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

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

BCC Developer>新規作成>プロジェクトで適当にプロジェクト名を作って。
出来たプロジェクトに上の4つをそのままドラッグで放り込んで一応デフォルトプロジェクトの編集でターゲットがdllにセットされてるのを確認してメイク。
これで一応exeが出来るんだけどdllに書き換えてもなぜか動かない
0204名前は開発中のものです。2011/02/17(木) 00:46:22ID:D3vStg/X
意味わかってないなら、素直に Visual Studio 入手してこい。Express ならただだ
0205名前は開発中のものです。2011/02/17(木) 00:51:48ID:i1eT1ONz
意味が分かってないからそうしてみる。
本当に悪い、C++は触った事一切無くてチンプンカンプン。
0206名前は開発中のものです。2011/02/17(木) 04:47:22ID:9WE+dCEV
質問お願いします。
書籍などにはonMouseMove等は新しいウィンドウで動作させるサンプルはいくつかあるのですが、ゲーム上と言うかKag上ではどのように書けば良いのでしょうか?
例えば、サンプルに良くあるのですが、captionにどう反映させるのか方法がわかりません。

function action(ez){
if(ez.target == primaryLayer){
if(ez.type=="onMouseMove"){
mess1="マウスカーソルの位置:(" + ez.x + "),(" + ez.y + "),(" + ez.shift + ")";
caption =mess1;

}
else if(ez.type == "onMouseLeave"){
mess1="マウスカーソルはプライマリレイヤの外にあります";
caption = mess1;
}
}
}

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

サンプルとやらを見せられて、余計混乱しているとお見受けします
スマートじゃないけど、MainWindow.tjsの中に直接
function onMouseMove(x, y, shift)を記述、挿入してはいかが
x,yにマウスカーソルの位置が入ってくるから
リファレンスのWindowクラス参考ね
0208名前は開発中のものです。2011/02/17(木) 20:43:02ID:9WE+dCEV
>>207
だいぶ不要と思う所を削りましたが、サンプルとかだと書籍とかネットとかだとだいたいこんな感じに書かれてまして
class mywin extends Window{
var timer;
function mywin(){
super.Window();

setInnerSize(800, 600);
add(new Layer (this,null));
with(primaryLayer){
.loadImages("双子N_02A.bmp");
.setSize(innerWidth,innerHeight);}
visible=true;}

function finalize(){super.finalize();}

function action(ev){
if(ev.target == primaryLayer&&ev.type=="onMouseMove")caption = "マウスカーソルの位置:(" + ev.x + "),(" + ev.y + "),(" + ev.shift + ")";}
}

var win = new mywin();
これだとちゃんとマウス座標をしっかりとactionで受け取れてうのですけど、この手のサンプルはいつも必ずと言っていいほど新しいwindowを作成してそこで動かしてますので、
これを実際のkagに組み込もうとするといつも途中で挫折してしまうのです。
これ自体をゲームに組み込むと言う事では無く、勉強で例えばこれをkagで組み込めれば他のactionメソッドも同じように組み込めるように理解出来ればと思っての事なのですが・・・・
いつも別窓ではそれなりにうまくいくのですけど、いざこれをkagにもってこようとするとエラー連発で1つの大きな壁になってしまってるのです。
0209名前は開発中のものです。2011/02/17(木) 20:51:02ID:9WE+dCEV
座標を取るだけなら、過去ログを探して
kag.superOnMouseMove = kag.onMouseMove;

var mess1;
kag.onMouseMove = function(x,y,shift){
if(!kag.fullScreened){
superOnMouseMove(...);
mess1="マウスカーソルの位置:(" + x + "),(" + y + "),(" + shift + ")";
caption = mess1;

if(kag.menu.visible){
kag.menu.visible=false;
}else if(y<=10){
kag.menu.visible=true;
}
kag.innerHeight=600;

}
};
少し手直ししてこれで動かせてるのですが、例えばkag.onMouseMove = function(x,y,shift)で関数式としてやってるらしいと言う事はなんとなくネットで調べてわかったのですが、
これを普通の書式に出来ないのか?とかなぜこの書式じゃないとダメなのかとか、この書式は最後に;をつける以外に違いはなさそうなのに普通の書式にするとなぜエラーが出るのだろうか?とかわからない事だらけなのです。

またkag.superOnMouseMove = kag.onMouseMove2 = kag.onMouseMove;とかしてkag.onMouseMove2をもう1つ作って同時に動かしてみようとして失敗したり、なんで出来ないんだろうと色々試しては挫折し続けてます。
0210名前は開発中のものです。2011/02/17(木) 21:38:02ID:Hn8XXTzb
>>208
> これを実際のkagに組み込もうとするといつも途中で挫折してしまうのです。

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

Override.tjsで
class mywin extends KAGWindow
以下略

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

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

今でもタグだけでも吉里吉里は十分良いツールなのですが、やれる幅をもっと増やしたいのです。
例えばマウス関係を覚えればインターフェースの改善が出来ますし、現状でも色々な方のプラグインとか自作分とかでそれなりには組み上がってはいるのですが、
エフェクト関係や本体スクリプトまわりに比べてUIがほとんど手つかずで、それで改善しようとアクションメソッド勉強してたら完全にはまってしまいました。
これがうまく行けば、一気に壁が越えられると思います。
本当にありがとうございます。
0212名前は開発中のものです。2011/02/17(木) 22:50:35ID:jvYmMe0c
>>206
VSで通るようになったんだ。
前はBCBないとコンパイル出来なかったのに。
0213名前は開発中のものです。2011/02/17(木) 23:02:21ID:9WE+dCEV
>>210
試してみましたが、ウィンドが二枚出てしまいました。
理想としては今のシステムの中で・・・やりたかったのですが、不勉強なせいだと思いますので、もう少し勉強します。
命令の意味がもう少し理解出来ればそこからうまくやれるかと思います。
ところで、最初の方の質問のものを、簡単にクラス化して試してみたのですが・・・・・

class test_tempLayer{
var test_tempLayer;
function test_tempLayer(){
kag.add(test_tempLayer = new Layer(kag, kag.fore.base));
with(test_tempLayer){
.loadImages("glay.png");
.setSizeToImageSize(.width, .height);
.setSize(kag.innerWidth,kag.innerHeight);
.visible=true;}
}
function action(ev){
if(ev.target == test_tempLayer&&ev.type=="onMouseMove")
{
caption="マウスカーソルの位置:(" + ev.x + "),(" + ev.y + "),(" + ev.shift + ")";}
else if(ev.target == test_tempLayer&&ev.type == "onMouseLeave"){
caption="マウスカーソルはプライマリレイヤの外にあります";}
}
function finalize(){}
}
var test_tempLayerx = new test_tempLayer();

最初これならいけるかとおもったのですが、飛ばないのですがactionが動いてません。
どうしてなのか教えて頂きたいです。
0214名前は開発中のものです。2011/02/17(木) 23:06:11ID:3XtPmN9m
>>212
プラグインの話でしょ
吉里吉里2本体はBCBないと無理だと思われ
0215名前は開発中のものです。2011/02/17(木) 23:26:25ID:mHK4gVts
>>213
actionメソッドはLayerクラスじゃなくてWindowクラスに用意されてるもんだった筈(吉里吉里2リファレンス参照)だけど、
その構築分じゃtest_tempLayerクラスの中にactionメソッド定義してないか?


で、今のウィンドウの中でやりたいっていうのなら、単にAfterInit.tjsの中で

kag.action = function(ev){
switch(ev.type){
case "onMouseMove":
this.caption = "X:"+ev.x + "," + "Y:"+ev.y;
break;

case "onMouseLeave":
this.caption = "Bye.";
break;
}
};

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


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

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

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


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

って書く事も出来るし、そういう形でコード追加してる人も多く居る。
ただ後々コードを修正する時になって、「アレ、俺どのファイルに追加コード書いたっけ?」っていう事になって混乱する可能性があり得るので
AfterInit.tjsみたいな単一のファイルの中に
kag.action = function(ev){ 略 };
kag.foo = function(){};
abc.bar = function(){};
みたいな具合に追加コードをどっさり書き連ねる手法も有るよっつう話。どっちが拡張に向くか向かないかってのはちょっと違う。
0221名前は開発中のものです。2011/02/18(金) 00:02:38ID:1kmgXvbN
>>216
確認しちゃったじゃないか。多重定義はあと優先だよ
0222名前は開発中のものです。2011/02/18(金) 00:08:18ID:/8tLczkp
あれ、そうだっけ。ごめん間違えた。
あらやだ私ったら恥ずかしい
0223名前は開発中のものです。2011/02/18(金) 00:16:26ID:6piJtGX6
AfterInit.tjs自体ほとんど使ってなかったのですが、そっちに書いてしまった方が確かにいいですね。
Mainwindow.tjsはバージョンアップの度に書き換えなくちゃいけなくなるので、なるべくなら触りたくないんです。
AfterInit.tjsならその心配もありませんし、tjs式はわざわざ他のksファイルにiscriptで書いてたので、それに書き直してみます。

今回頂いたのは正直まだfunction()を完全に理解していないので、次は画面内全部じゃなく.hitThresholdに対応するように考えて見ます。
0224名前は開発中のものです。2011/02/18(金) 14:11:14ID:pGkxxiu5
横からスマン
>>215でactionメソッドはLayerクラスじゃなくてWindowクラスに用意されてるもんだった筈と言うことだし実際試したら動かないわけなんだけど、じゃぁlayerクラスのonなんちゃら系って言うのは使えないの?
windowクラスを作る事前提なら、KAG上では無理って事?
俺も初心者に毛が生えた程度でスマン
0225名前は開発中のものです。2011/02/18(金) 15:48:43ID:27Mbg7EK
吉里吉里リファレンスの「イベントシステムについて」を上から下まで一通りよんで考えればおのずとわかることでしょう
0226名前は開発中のものです。2011/02/18(金) 19:33:36ID:/8tLczkp
>>224
Windowクラスのactionメソッドは「自分の中(windowの中)で何かイベントが起きた(各レイヤにマウスが載ったetc)かどうか」を検知するもんであって
各レイヤが各々に「自分の中(そのレイヤクラス自身)で何かイベントが起きたかどうか」を検知するのは別の話だよ。

kag.primaryLayer.onMouseMove = function(略) と書いても機能的には同じことが果たせる。
書き方が違うってだけのことよー
0227名前は開発中のものです。2011/02/18(金) 20:19:51ID:kdo303te
actionって名前が悪いんだよな。
observeにしとけば読んで字の如くなのに。
コード的にも
function observer(ev){
//foo
}

kag.observe = observer;
で意味が通じるのに。
0228名前は開発中のものです。2011/02/18(金) 21:05:39ID:AX8UzFm1
お初にこのスレに来ました者です。

質問なのですが、ゲーム起動画面の「栞をはさむ」を「セーブする」という文字にするにはどうすればいいのでしょうか。
調べた結果、MainWindow.tjsを編集すればいいという結果だったのですが、どこをいじればいいのかわかりません。

自分なりに以下のように編集してみたのですが、変更されません・・・。


// 保存するファイル名を得る
var selectdata = %[
title:"セーブする",
filter: [saveThumbnail ?
"サムネイル画像付き栞データ(*.bmp)|*.bmp" :
"栞データ(*.kdt)|*.kdt"],
0229名前は開発中のものです。2011/02/18(金) 21:51:25ID:Go9Y3Ma1
Menus.tjs110行目近辺に求める答えがあると思うよ
0230名前は開発中のものです。2011/02/18(金) 22:22:32ID:ogV0P+iB
ちょっと雑談というか質問というか意見を聞きたいんだが
みんな吉里吉里製のゲームを世に出すときに 解析対策してる?

フリーゲーム見ると結構やってる人いるみたいなんだけど
簡単にできるもんなの?
0231名前は開発中のものです。2011/02/18(金) 22:27:56ID:hDc5Qb3Q
そう言うことは、解析したくなるほど良いゲームを作ってから考えような
0232名前は開発中のものです。2011/02/18(金) 22:40:37ID:ogV0P+iB
>>231
こう返す奴がいつもいるのは知ってるけどさ 煽るだけの意見は求めてないよ
「解析したくなるほど良いゲームを作っていない」という根拠がどこにあるんだ
というか論点はそこじゃない 分かれ
0233名前は開発中のものです。2011/02/18(金) 22:46:36ID:hDc5Qb3Q
マジレスするなら、力量さえあれば解析対策なんていくらでもできると思うぞ
後はどこまでやるかコストとか期間とかの問題だけ

個人的にはそんなことにパワー割きたくないから大したことはやらない
0234名前は開発中のものです。2011/02/18(金) 23:02:19ID:AX8UzFm1
>>229
できました!!
どうもありがとうございました。本当に助かりました。

またお世話になるかもしれませんが、そのときもよろしくお願いします。
0235名前は開発中のものです。2011/02/18(金) 23:10:56ID:W4WoUTwG
俺は同業者対策にtjsと自分で作ったマクロだけ吉里吉里の暗号かけてる
一応コメント全部抜いて
すぐに解かれる物だけど、すぐに解くレベルの人なら俺が作ったのより良い物をつくれるだろうし、誰かに手伝って貰って解くレベルの人は読んでもわからんだろうしと考えてる
0236名前は開発中のものです。2011/02/19(土) 00:25:04ID:WVYEDYF2
dllをビルドできる環境があるなら簡単にできる
xp3enc.dllとxp3dec.dllを自作すればいいだけ
ただし同程度の知識を持っている人間なら簡単に破れる
その程度で良ければ
0237名前は開発中のものです。2011/02/19(土) 01:03:11ID:e7TICuoi
>>225-227
おおおなんか出来た!
なんでうまくいかんのだろうと放置してたけどあっさり解決したよorz
thank you!!

暗号かぁ
テキストか何かでキーを任意で変えられるとかなりいいかなと思う
fateのあのキーはちょっと笑えるけど読めてしまうあれは果たして正しいのか?とか思ってしまう今日この頃
0238名前は開発中のものです。2011/02/19(土) 01:49:33ID:cZV2lQMX
解析にキーなんて関係ないけどな
0239名前は開発中のものです。2011/02/19(土) 07:24:38ID:ptgwOnoc
よく吉里吉里で作ったゲームでいつでもセーブできるものがありますけど、それってラベルを大量に作ってるんですか?
それともラベルをたくさん作る以外に何か方法があるんでしょうか?
0240名前は開発中のものです。2011/02/19(土) 08:35:37ID:WVYEDYF2
「吉里吉里 どこでもセーブ」でググれ
0241名前は開発中のものです。2011/02/19(土) 08:49:41ID:ry9A4YMJ
いい加減にマルチポストするのやめれ('A`)
0242名前は開発中のものです。2011/02/19(土) 12:26:26ID:ptgwOnoc
>>240
どこでもセーブプラグインとやらを見つけました。
使い方にも載っていたようにやはりセーブポイントには[np]をつけなくてはいけないんですね。

>>241
すいません、過去ログに載っていましたか?
0243名前は開発中のものです。2011/02/19(土) 12:50:29ID:AZlqjiRa
たしか毎行に*|を入れると出来たと思いますけど、手間かかるしプラグインの誤動作で画面崩れるの怖いので自分で確実なところでセーブ出来るようにしてます。

ところで一昨日からアドバイス頂いて色々試しているのですが、式中関数の中では他のメソッドを呼び出せないのですね。
クラスのなかでtimerを呼びに行こうとして色々試したのですがダメでした。結局式中関数に直接書いてしまいましたが見た目がブサイクになってしまったのですけど、仕方無いかなと・・・・
0244名前は開発中のものです。2011/02/19(土) 13:08:14ID:+ZjzSuRr
ヒント: incontextof
0245名前は開発中のものです。2011/02/19(土) 14:21:40ID:TR/rwGBg
自前のレイヤをaddContinuousHandlerで移動させる時に、
例えば80ピクセルの幅を移動するのと同時に表示をフェードインさせたいんですが、
移動開始時はopacity=0で、移動終了時に丁度255になるようにしたいんですけど、上手くいきません
(初めから完全に表示されていたり、半透明で移動した後最後に突然opacity=255になる)
何か良い方法は無いですか?
0246名前は開発中のものです。2011/02/19(土) 14:51:36ID:AZlqjiRa
移動中の描画のタイミングで段階的にopacityを弄るとうまくいくと思います。
0247名前は開発中のものです。2011/02/19(土) 15:14:15ID:TR/rwGBg
レイヤのtop・leftを書き換えるところでopacityも変化するように、
255を移動ピクセルで割って、その数を描画のタイミングで加算してみたりしたんですが
たった数十ピクセル移動する間にopacityが10000とかまで加算されたりして、
255に収まるようにすると、上記の()内のような事になってしまいます
0248名前は開発中のものです。2011/02/19(土) 15:38:32ID:cZV2lQMX
>>247
間違ってるからでしょ
コードだしてもらわんと誰もわからんよ
0249名前は開発中のものです。2011/02/19(土) 16:39:54ID:wVhY5yhF
解析対策なんてデバッガかけるか実行中のメモリから抜かれるとどうにでもされるからやってないな。
とくに吉里吉里はxp3filterが標準で用意されてるから楽だし。
0250名前は開発中のものです。2011/02/19(土) 16:44:28ID:poxQtpu7
移動は%で場所指定してるのに透明度はHandler呼ばれるたびに加算してるとか
そんなところだろうと予想
0251名前は開発中のものです。2011/02/19(土) 16:51:34ID:TR/rwGBg
TextLayer.opacity = 0;
startTime = System.getTickCount();
System.addContinuousHandler(handler);

- 以下handler内
dist = (tickCount - startTime) * speed \ 1000;
if (TextLayer.top > moveH) {
    TextLayer.top = it - dist;
}
※moveH=最終的な到着点の座標

レイヤを下から上へ移動させる時、大体こんな感じで記述しています
で、opacityをどこで加算していけば、moveタグみたいに滑らかに移動してくれるのかと・・・
0252名前は開発中のものです。2011/02/19(土) 17:12:35ID:6HEBXbJG
横からですまん、ちょっと質問

タイトル画面でロードをするために右クリックサブルーチンを表示させたいんだけど下のソースで実行してクリックしても無反応なんだ
誰か助けてくれ

[link exp="kag.restoreBookMark()"]ロードする[endlink]
0253名前は開発中のものです。2011/02/19(土) 17:24:52ID:JEjsxLwS
色々と興味深い意見が聞けてよかったです
コメント改行全部抜くとか、流用はやーめーてーねーという意思表示をするくらいが丁度いいんですかね
参考になりました。ありがとう

>>252
それじゃ右クリックサブルーチン呼び出せないよ・・・
サブルーチンの意味をお勉強すると手っ取り早いよ
0254名前は開発中のものです。2011/02/19(土) 17:43:12ID:6HEBXbJG
>>253
意味調べてみたんだが・・・
エンドリンクを抜いたりカッコを抜いたりしてみたんだけど駄目だったorz
無知な俺に答えを教えてくれ!
0255名前は開発中のものです。2011/02/19(土) 17:47:21ID:lNwerVwv
KAG System リファレンスの中に
右クリックサブルーチンにてセーブロードするサンプルが載ってるんだが…見た?
良い機会だからクレクレせず探してみー
0256名前は開発中のものです。2011/02/19(土) 18:36:57ID:6HEBXbJG
>>255
一通り見たハズなんだが答えが見えないんだ・・・
ちょっとkwsk頼む
0257名前は開発中のものです。2011/02/19(土) 18:40:47ID:poxQtpu7
>>251
「毎秒speedドットだけ動かす」ルーチンなら
総移動時間を計算して、経過時間との%取って透明度変化

移動時間指定にしたら1ルーチンで上下に動かせるようになるしこっちのが良いと思う
 time = 1000 (1000msで移動完了)
 firstT = TextLayer.Top moveT = 最終的な到達点
 firstO = 0 moveO = 255

-handler内
 per = (tickCount - startTime)/time
 TextLayer.top = firstT+( (moveT-firstT) * per );
 TextLayer.opacity = firstO+( (moveO-firstO) * per );
0258名前は開発中のものです。2011/02/19(土) 19:13:56ID:lNwerVwv
>>256
ホントに探して読んだ?そのサンプルソース程度は理解できないと後々辛いよ
>>252
それだと栞の何番を読むかが指定されてないよ
0259名前は開発中のものです。2011/02/19(土) 19:29:09ID:6HEBXbJG
>>258
正確には一通り探したけどどこだかわからなかったんだ…
追記なんだが、右クリックサブルーチンの元のファイルはkr2_232r2\kag3\kag3plugin\sampleに入ってたrclick_.tjs.ksを使ったんだ
そのrclick_tjs.ksのセーブ・ロード画面をタイトルから表示させたい
0260名前は開発中のものです。2011/02/19(土) 20:08:22.91ID:TR/rwGBg
>>257
おおお、ありがとうございます!
上も下も表示出すのも消すのもバッチリです、スクリプトが随分すっきりしました
0261名前は開発中のものです。2011/02/19(土) 20:27:59.68ID:lNwerVwv
>>259
うう…結局付属のrclick_tjs.ksの使い方が分からないと?
[link exp="rclickconfig_object.show()"]ロードする[endlink]
的にやればいいんじゃないの?
(トリガを待ったりするし、これだけでは完全には動かないが)

言ってるサンプルはここね
KAG System リファレンス>右クリックサブルーチンについて>難しい例
まずはKAGオンリーで作ってみないか?あなたのスキルに添って
「サブルーチン」という概念が分かれば上のrclick_tjs.ksも難なく使いこなせるよ
0262名前は開発中のものです。2011/02/19(土) 20:48:41.53ID:6HEBXbJG
>>261
ソースありがとう!
あとは直接サムネイル画面に移動する方法だけだわ

リファレンスは今見たところ
見逃してたぜ・・・

それでKAGオンリーで作るってどういうこと?
今現在もKAGオンリーだと思うんだけど・・・
0263名前は開発中のものです。2011/02/19(土) 22:08:22.33ID:1OU1FngV
カグロイドのソース公開してくれんかな・・・。
0264名前は開発中のものです。2011/02/20(日) 01:06:49.47ID:YcSY7ZqY
>>244
incontextofわかったようなわからないようなです。
これは数をこなして覚えないと覚えられないタイプのコマンドみたいでとりあえず色々やってみます。


全然別の話しなのですが、メッセージレイヤーを出したままコンフィグ画面を作ろうとしてはたと困ったのですが、履歴書き出しを停止してもそのまま画面をクリックするとメッセージがどんどん進んでしまって。
kag.tempsave(0);でもメッセージは戻らなくて、MessageLayer.tjsのクリックを受け付ける所にフラグで禁則かけても見た目は止まったように見えても解除するとクリック分テキストが進んでいて。
結局無理矢理メッセージレイヤーの上に透明のレイヤーを被せてクリック出来ないようにしたのですが、どうにもスマートじゃなくて。
メッセージレイヤーを表示したまま一時的に、クリック出来なくする方法は無いのでしょうか?
消すのはたぶんinvisibleByUserあたりを実行すれば良いと思うのですが・・・
0265名前は開発中のものです。2011/02/20(日) 02:30:01.32ID:qdK69SRk
れいや.enable = false
0266名前は開発中のものです。2011/02/20(日) 02:45:33.67ID:YcSY7ZqY
難しく考えてたのですが、初歩的過ぎました・・・
ありがとうございました。
0267名前は開発中のものです。2011/02/20(日) 04:17:50.19ID:YcSY7ZqY
>>265
数種類試してみたのですが、.enable = falseはメッセージレイヤにはなさそうでした・・・
0268名前は開発中のものです。2011/02/20(日) 09:19:53.34ID:iC7SYJBe
>>267
できるよ
試しにクリックできる状態のところに [eval exp="kag.current.enabled = false"] とでも挿し込んでみ
(ちなみにenable=falseしてても新たにリンク/ボタンをつくると操作できるようになるので注意)
0269名前は開発中のものです。2011/02/20(日) 11:23:11.41ID:9jbrQ7SM
昨日の続きの質問なんだが、今タイトル画面からセーブ・ロード画面を呼び出したいんだ
右クリックサブルーチンの元のファイルはkr2_232r2\kag3\kag3plugin\sampleに入ってたrclick_.tjs.ksを使ったんだ
そのrclick_tjs.ksのセーブ・ロード画面をタイトルから表示させたい

以下のソースだと本編で右クリックを押した状態じゃん?
直で右クリック⇒ロードへ持っていきたいんだけどどう記述すればいいのか教えてくれ

[link exp="rclickconfig_object.show()"]ロードする[endlink]
0270名前は開発中のものです。2011/02/20(日) 11:38:18.84ID:K9O8EjLN
show()内RClickConfigLayerを自前のRClickSaveLoadLayerにでも変えてやれば動くのだろう

KAGもTJSもよく分かっていない状態で改造に手を出すと、続出するバグがトラウマの原因となってしまうと思う
0271名前は開発中のものです。2011/02/20(日) 11:47:18.97ID:YcSY7ZqY
>>268
うーん、試してみたら何事もなかったかのように動くので、まっさらな232r2でも試したのですが、やはり動くようです。
■ このスレッドは過去ログ倉庫に格納されています