トップページgamedev
1002コメント407KB

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

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

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

吉里吉里スレ過去ログ倉庫
ttp://bbs.bokunatu.com/krkr/
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/

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

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

前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その28
http://peace.2ch.net/test/read.cgi/gamedev/1391503520/
0788名前は開発中のものです。2016/01/29(金) 12:44:25.98ID:SknXoJBw
>>786
右クリックを一時的に無効化してウェイトする感じですか。
初心者なもので本当にすみませんが、無効化の方法をどこかで見た覚えがあるので
調べながら試してみます!
教えていただきありがとうございます!

>>787
TJSをいじることができれば解決できる問題なのですね。
確かに初心者にはかなり敷居が高いですけど、がんばって勉強します!
教えていただきありがとうございます!
0789名前は開発中のものです。2016/02/08(月) 05:11:02.62ID:uWg/8C5h
>>743
吉里吉里と同レベルのノベルエンジンなら
すくなくともプロのプログラマーレベルの知識が必要

文字表示されるだけの簡易ノベルツールなら
吉里吉里の凝った改造よりかんたんなレベル
0790名前は開発中のものです。2016/02/08(月) 05:13:02.83ID:uWg/8C5h
>>750
Nscripterはプログラムの記述が
大昔の書き方だったので敬遠してる

昔見たときだから
今はモダンになってるかもだが
0791名前は開発中のものです。2016/02/08(月) 05:16:06.47ID:uWg/8C5h
>>752
吉里吉里本体がフリーなのに
Zにそんな出せないよな

>>753
商業作と同じシーン
作りたいのは分かるけど
商業レベルだから茨の道だよ
0792名前は開発中のものです。2016/02/08(月) 05:28:15.78ID:uWg/8C5h
>>760
>車輪の国は吉里吉里で作ってる
>らしいからできるはずなんだけど
道具が同じだけでできるなら苦労しない

コンシューマゲームもC++やC_%7532%5+]1
0793名前は開発中のものです。2016/02/08(月) 05:29:32.42ID:uWg/8C5h
>>792
コンシューマゲームも
C++やC#で書かれてるから
同じことができるはずと言われても
0794名前は開発中のものです。2016/02/08(月) 05:32:22.33ID:uWg/8C5h
>>775
事実そうだけどでも単なる紙芝居なら
吉里吉里使うまでもない気もする

本当に使いこなしてるとこ
商業ですら少なそう
まあオーパースペック感はある
0795名前は開発中のものです。2016/02/09(火) 06:38:44.36ID:TD9/bZA+
吉里吉里3はデルデル詐欺でしたね^^;
0796名前は開発中のものです。2016/02/10(水) 14:24:50.61ID:tYUBnPqh
(´・ω・`)ノ質問です
プラグインの中で表示した絵を後からtop,leftやheight,widthをいじるにはどうしたら良いんですか?
Layerプラグイン継承して・・・loadImage()使って・・・ってやったらtop leftやwidth height変えても全然変わらなくて・・・
0797名前は開発中のものです。2016/02/11(木) 18:54:37.39ID:8Y5CF24q
>>796
プラグインと言うのは、KAGプラグインの話ですか?それともdllの話ですか?
Layerプラグインと言うのは何でしょうか?
KAGプラグインにはLayerとは継承関係がないので、KAGプラグインを継承しても
基底クラスをLayerのように扱えません。
KAGプラグインがLayerを持っているのなら、そのメンバに対して操作する必要が
あります。
dllの方では、Layerに機能追加するものがほとんどで、Layerを継承したクラス
を公開するものはたぶんないと思われます。
0798名前は開発中のものです。2016/02/11(木) 23:00:46.77ID:easszQWn
>>796
プラグインの作り方によるけど、setSize()とかsetPos()ならできると信じたい。
0799名前は開発中のものです。2016/02/12(金) 00:15:26.09ID:iF+RNHDA
ご、ごめんLayerはプラグインじゃなかった クラスだ・・・OTL
しっかり管理できるように画像作るにはどうしたら良いんだろうか・・・
画像何個か読みこんだりすると 何故か変なふうにマスクかかったような状態になったりするし・・・
0800名前は開発中のものです。2016/02/12(金) 19:41:37.68ID:EzQueAnY
>>799
変な風にマスクがかかるのはLayer.typeがltAddAlphaになっているとか?
0801名前は開発中のものです。2016/02/12(金) 20:20:12.01ID:Qce4b2d+
初心者の質問者です。よろしくお願いいたします。
右クリックサブルーチンでメニュー画面をトランジションを使い表示させています。
昔落としたおさかな定食さんのメニュー画面tjsです。
しかしテキストが表示されてる途中(クリック待ちになる前)に右クリックを押すと高確率でフリーズしてしまいます。
これを解決するにはどうすればいいのでしか?ちなみにメニュー画面をトランジションを使わずに表示させるとフリーズしませんでした。
なにかフリーズさせない方法はありますでしょうか?
0802名前は開発中のものです。2016/02/13(土) 01:16:13.66ID:+7tBv0y9
rclickタグでcallなどを指定してもkagでは
@pや@sで安定していない限り実行されない

文章表示されている間にcallで飛べるプラグインがおかしいか
某所のFadeChプラグイン使ってるなら
@waitfadeで表示処理の終了を待つタグを毎ページ挟んでおく必要がある
0803名前は開発中のものです。2016/02/13(土) 21:21:40.19ID:f1AqHOZw
>>802
ありがとうございます、[p]の前後に右クリック有効、無効をつけたマクロを作ったらなんとかフリーズ回避できました。
0804名前は開発中のものです。2016/02/14(日) 11:08:47.53ID:BAHuv04/
初歩的な質問だと思うのですが
KAGEXでひぐらしみたいな全画面使って文章(セリフ&地文)を表示させるにはどうしたら良いでしょうか?
よく考えたらセリフがあるたびに自動的にメッセージがクリアされてしまうので、どうすれば良いかわかりませんでした。

やりたいことは、
1 ひぐらしみたいな全画面でのセリフと地文の表示(positionで全画面使う事は理解出来てる)
2 当然セリフはしゃべらせたい(全画面表示なので顔窓は無しで大丈夫)

よろしくご指導ください。
0805名前は開発中のものです。2016/02/14(日) 16:46:01.34ID:FtWPTYeu
商業で吉里吉里のエロアクションが出るそうな
0806名前は開発中のものです。2016/02/14(日) 23:08:27.21ID:zA4bcCrW
>>804
linemodeを変える
http://www.biscrat.com/krkr/docs/kagex/contents/Tags.html#linemode
0807名前は開発中のものです。2016/02/15(月) 12:12:46.20ID:PMZUH/wR
>>806
ありがとうございます。
ちょっと実験してみます!
0808名前は開発中のものです。2016/02/15(月) 19:20:20.02ID:AKVxQpEW
>>805
そのタイトルは?
0809名前は開発中のものです。2016/02/15(月) 19:49:12.19ID:HLuAMesT
ミルフィーユの新作
0810名前は開発中のものです。2016/02/15(月) 20:08:06.59ID:AKVxQpEW
>>809
サンクス

昔のSFCのベルトアクションみたいだな
こういうの最近あんま見ないからいいね
0811名前は開発中のものです。2016/02/18(木) 17:19:33.77ID:5Nie1/YQ
吉里吉里で一つシステムを組んで、それをコピーしてconfig.tjsの;saveDataIDを書き換えたのに、同時に起動しようとするとすでに起動してますと言うエラーが出るのはどうして?
0812名前は開発中のものです。2016/02/18(木) 17:29:54.40ID:AXgRIIw4
質問するなら聞き方ってのがあるんじゃないんですかね
0813名前は開発中のものです。2016/02/18(木) 18:46:55.84ID:FXYos+mE
>>811
Initialize.tjs
// 実行可能ファイルのパスをキーにしてロックを行う
if(!System.createAppLock(System.exePath.replace(/[^A-Za-z]/g, '_')))

実行ファイルのパスで二重起動のチェックしているから。
0814名前は開発中のものです。2016/02/18(木) 20:04:48.20ID:vKaU3ryN
>>812
ごめんなさい

>>813
ありがとうです
さっそく試したらうまくいきました
0815名前は開発中のものです。2016/02/19(金) 08:47:54.71ID:WP5R8qzX
質問です
kagexのcameraxとshiftxの違いと言うのはどう言うものでしょうか?
比べてみたのですが、よくわかりませんでした
0816名前は開発中のものです。2016/02/19(金) 21:20:58.04ID:xheTADdy
>>815
cameraxはcamerazoomとかlevelzとかの影響で実際にずれるピクセル数が変わる
shiftxは指定したピクセルだけずれる
0817名前は開発中のものです。2016/02/23(火) 16:44:52.20ID:oTduLdJV
吉里吉里で製作したゲームのテストプレイを友人(win7/64bit)に頼んだのですが
「スクリプトで例外が発生しましたANSI文字列をUNICODE文字列に変換できません。
現在のコードページで解釈できない文字が含まれてます。
正しいデータが指定されているかを確認してください。データが破損している可能性もあります」

というエラーが出て起動すら出来ないそうなんです。
私の別のPC(win7/32bit)からは問題なく起動できたのでデータ破損ではないと思います。
別の所で「64bitのPCに吉里吉里が対応してないだけだろ」とアドバイスをもらったのですが
他の方が製作された吉里吉里製のフリーゲームは問題なく動くそうなので、私のゲームだけ動かないっぽいです。
自力では解決法がわからず、こちらに質問させて頂きました。
0818名前は開発中のものです。2016/02/23(火) 17:42:12.96ID:RKOGGv5g
友人が日本語windowsを使ってないのだと思われ

スクリプト関係を全部UTF-16にすればどこの国のosでも動くよ
0819名前は開発中のものです。2016/02/23(火) 17:45:21.35ID:DoUEgmyd
外人が「クッソこのゲーム割ったのに動かへん!」って言ってるとザマァって気分になる
0820名前は開発中のものです。2016/02/23(火) 20:03:47.08ID:oTduLdJV
817です、アドバイス頂きありがとうございました。
その後スクリプト関連のファイルをメモ帳を使ってUNICODEに変換したのですが
変換後のファイルが文字化け?してしまい自分でも起動できない状態になってしまいました。
それと確認したところ友人のパソコンは日本語windowsだそうです。
たぶん私のスクリプトの書き方が悪いとか、作り方に原因があると思うのでよろしければ起動するかチェックして頂けないでしょうか。
ゲームの内容部分は削ってある本当に簡素なテスト版です。
「スクリプトで例外が発生しました〜」のエラーが出たかどうか教えて頂きたいです。
http://www.dotup.org/uploda/www.dotup.org751639.zip.html
パス:kirikiri
0821名前は開発中のものです。2016/02/23(火) 22:34:13.66ID:UbuIDsI/
>>820
特に進めてないが起動は問題なくできた
win7/64bit
0822名前は開発中のものです。2016/02/23(火) 23:55:22.66ID:oTduLdJV
>>821
64bitのPCだから出たエラーだと思っていたのですが違うようですね・・・。
ご報告して下さりありがとうございました、参考にさせて頂きます。
0823名前は開発中のものです。2016/02/24(水) 00:23:28.78ID:JLblCMYk
友人の落としたフォルダ見せてもらったらファイル自体一部文字化けしていたので
単純にダウンロードミスしてただけっぽいです。
なんとか起動できそうです、お騒がせして申し訳ございませんレス下さった皆様ありがとうございました!
0824名前は開発中のものです。2016/02/25(木) 00:15:49.15ID:YeThUheu
メッセージレイヤに表示された文章を変数に格納する方法ってありますかね?
文章も一緒にセーブデータに格納して、ロードする時にセーブデータと一緒にメッセージを表示したいのだけれども。
吉里吉里プラグインとかごった煮的配布場所にあったプラグインだとどうも正常に動作しなくて・・・
0825名前は開発中のものです。2016/02/25(木) 00:37:46.86ID:dgx16C0w
>>824
セーブロード画面にセーブ時のデータとメッセージを表示するっていうのなら
ごった煮さんのプラグインでできる
出来てないなら入れ方かなにか間違ってるんだとおもう
0826名前は開発中のものです。2016/02/25(木) 10:32:44.26ID:YeThUheu
>>825
普通はそうですよね・・・
とりあえず自分のやれることはやったのですが解決には至らなかったので
ごった煮さんの方に聞いてみようと思います。
0827名前は開発中のものです。2016/02/25(木) 22:05:21.93ID:gj5dvfnW
>>824
バグじゃあないんだが右クリックサブルーチンに入ってその中でメッセージレイヤー使って文字を表示すると
それが格納されたような気がした
あと名前とかも
だから俺は文章が表示されたら[p]タグ拡張したマクロの中でf.messagestoreに入ってる文字列を別の変数に入れて保持してる
0828名前は開発中のものです。2016/03/02(水) 17:32:16.39ID:0F1GaLY4
吉里吉里のサイトに繋がらない・・・・・・
0829名前は開発中のものです。2016/03/03(木) 14:33:59.29ID:XqwoG2+S
サイト復活確認!
0830名前は開発中のものです。2016/03/04(金) 20:06:34.83ID:wdeRjyj+
よかった
0831名前は開発中のものです。2016/03/07(月) 19:05:32.30ID:IeJILI8s
voice.xp3をdata.xp3の外に出して登録したいのですが、どうすれば良いでしょうか?
フォルダの状態はStorages.addAutoPath(System.exePath +
0832名前は開発中のものです。2016/03/07(月) 19:18:51.58ID:IeJILI8s
途中で投稿してしまいました
フォルダの状態はStorages.addAutoPath(System.exePath + "voice/");で登録できましたが、xp3にパックするとダメでした
0833名前は開発中のものです。2016/03/07(月) 23:36:02.94ID:vAKULNSg
>>832
確か Storages.addAutoPath(System.exePath + "voice.xp3>") みたいな感じで登録すればよかったと思います
KAGのInitialize.tjsに参考になりそうなソースがありますね
0834名前は開発中のものです。2016/03/08(火) 02:01:11.42ID:Sj2P+HGh
>>833
それは試したのですけどダメでした。
voiceはファイルが大きくなるので別にパックしたかったのですけど、いろいろ試してもうまくいきませんでした。
patch.xp3にもしてみたのですけど、dataフォルダの外だとpatchにしてもダメっぽいです。
0835名前は開発中のものです。2016/03/08(火) 07:48:25.28ID:nsEg4w0a
>>832
これではダメ?

Storages.addAutoPath(System.exePath + "voice/");
useArchiveIfExists("voice.xp3");
//voice.xp3でパックして、実行可能ファイルと同じフォルダに置く。
0836名前は開発中のものです。2016/03/08(火) 12:24:51.51ID:FMOZs6bg
>>835
原因がわかりました。
voiceの下にキャラごとのサブフォルダを切っていたのですが、サブフォルダは認識しないようです。。。。。
Storages.addAutoPathでもuseArchiveIfExistsでも、voiceフォルダルート上のファイルを読み込みました。

そこでさらなる疑問です。
Storages.addAutoPathが認識しなかったのはわかりますが、useArchiveIfExistsも認識しないのでしょうか?
平坦展開すると言う事だったのでサブフォルダも展開すると思ったのですが。。。。。
Storages.addAutoPathでパスを通す方法もありそうですが、いくつか記述して試したもののvoice..xp3以降の記述はどれもうまくいきませんでした。
0837名前は開発中のものです。2016/03/08(火) 12:50:35.83ID:UcyK/YfJ
試してないけどたしか
Storages.addAutoPath(System.exePath + "voice/");
を通していたら
Storages.addAutoPath(System.exePath + "voice.xp3");
と改めて記述する必要は無いはず

サブフォルダは知らん
0838名前は開発中のものです。2016/03/08(火) 16:33:58.69ID:nsEg4w0a
吉里吉里のReleaserは、サブフォルダをアーカイブ化しないみたいだね

リソースをまとめるなら
ファイルのあるフォルダ("ken/"とか"tarou/"とか)毎にアーカイブ化して("ken.xp3"とか"tarou.xp3"とか)
実際にフォルダを掘って、アーカイブ置いて
("./voice/ken.xp3"とか"./voice/tarou.xp3"とか)

Storages.addAutoPath("voice/")
useArchiveIfExists("./voice/ken.xp3");
useArchiveIfExists("./voice/tarou.xp3");
と設定して

[playse storage="ken/001.ogg"]

みたいに使うのがいいかも?
0839名前は開発中のものです。2016/03/08(火) 21:00:28.71ID:S9+rfENy
System.exePath + "voice.xp3>folder/" とか個別に全部addAutoPath しないと駄目だよ
0840名前は開発中のものです。2016/03/08(火) 22:37:08.19ID:HNvBaPLx
>>839
本当だ。パス通りました
サブフォルダもアーカイブされてますね
838は内容を取り下げます。失礼しました
0841名前は開発中のものです。2016/03/08(火) 23:15:10.64ID:Ms01MESP
確かkagexのInitialize.tjsに、サブフォルダ指定をdata以下のパスとそのアーカイブ両方に適切に処理する関数があるからそれを貰えばいいよ
0842名前は開発中のものです。2016/03/09(水) 01:31:52.25ID:KH53AxGm
System.exePath + "voice.xp3>folder/"と記述するのですね。
System.exePath + "voice.xp3/folder>"と記述してエラーでダメかと思ってました。
0843名前は開発中のものです。2016/03/11(金) 15:08:00.87ID:7DbMD+WJ
kagexのInitialize.tjsは、本体をだいたい読めるレベルでもチンプンカンプンなんですけど・・・
0844名前は開発中のものです。2016/03/16(水) 01:25:24.96ID:K/h5cfF9
まじで?
0845名前は開発中のものです。2016/03/16(水) 16:02:20.30ID:xZYf99DS
ノベルゲームって余程頭がよくないと作れそうにないな
0846名前は開発中のものです。2016/03/16(水) 18:02:55.38ID:IIIa0FY/
んな事は無い
”売れる”ノベルゲーなら難しいが、ノベルゲー自体は絵と音楽さえなんとかすれば俺でも鼻くそほじりながらでも組める
0847名前は開発中のものです。2016/03/16(水) 18:29:02.90ID:bfYbSIRt
作るだけなら簡単
売れるものを作るのは難しい
0848名前は開発中のものです。2016/03/16(水) 18:30:57.27ID:gdv9fji2
売れるものまでいかなくても、「同人やインディーで売るためのものとしての現在の標準的ライン」に
持っていくだけでだいぶ大変
(たまにそのラインに達していないのに売れるパワフルなのもあるけど)

商業なら尚更
0849名前は開発中のものです。2016/03/16(水) 19:24:33.12ID:VLrUYKPC
システム作るのが難しいって話ではないの?

まあ、できる人を探して依頼すればいいんだけど
0850名前は開発中のものです。2016/03/16(水) 19:53:41.59ID:bfYbSIRt
ひぐらしはムチャクチャパワフルだったな
あそこまで行かなくても商業化まで行くのが
今はADVのホラゲに取られてる感じ
0851名前は開発中のものです。2016/03/16(水) 20:00:09.61ID:gdv9fji2
ひぐらしは同人ノベルに掛かる期待が大きいときに「俺達が第二のTYPE-MOONや!」みたいな
サークルの多くが完成版すら作れず討ち死にしていく中で話をちゃんと作り上げられたこと、
業界人(ゲームライターだっけ?)の目にとまるのが早かったことが大きかったんだろうなあ
0852名前は開発中のものです。2016/03/16(水) 20:10:25.46ID:bfYbSIRt
べつにひぐらししか
なかったわけじゃないし
鬼隠し編で急に怖くなる
演出がはまったんだと思う
0853名前は開発中のものです。2016/03/17(木) 17:25:37.80ID:8vaEOgJj
だって犯人が犯罪を犯す動機とかトリックとか伏線のはりかたとか…
0854名前は開発中のものです。2016/03/17(木) 19:02:05.59ID:SK42BkQ3
ゲーム作るより面白い話創る方が難しい
0855名前は開発中のものです。2016/03/17(木) 19:27:14.85ID:RHzF49Hq
そこでノベル以外を作る
0856名前は開発中のものです。2016/03/17(木) 23:37:38.05ID:gtTnCcNM
あやえもさんのsaveload.ksに
デリート画面に持っていかずセーブまたはロード画面で
セーブデータを消すアイコンみたいなのを作るのは難しいでしょうか?
0857名前は開発中のものです。2016/03/18(金) 11:52:32.19ID:3lnFryE0
どう言うものか見てないけど、ksファイルですでに作られているものなら移植すれば済むだけの話では?
0858名前は開発中のものです。2016/03/18(金) 13:01:56.25ID:eCB6cTzC
ククク・・・覚えておくのだな・・・初心者は試す前にまず難易度を質問サイトで聞こうとするのだ・・・!
0859名前は開発中のものです。2016/03/18(金) 13:10:03.66ID:44Z49YR9
あやえもさんのところのは本家プラグインの改造版(らんかさん)の更に改造でしょ
tjsが理解できるならできる
全く初心者なら昔と違って解説少ないし素直に他のプラグインサイトさんのに変更を勧める
0860名前は開発中のものです。2016/03/21(月) 12:26:56.44ID:bcsN2Lwu
吉里吉里ってオープンソースじゃないの?
とっととソースコード公開して有志にクロスプラットフォーム化してもらえや
0861名前は開発中のものです。2016/03/21(月) 12:27:49.84ID:hpKDlYe5
これもうわかんねえな
0862名前は開発中のものです。2016/03/21(月) 12:52:02.20ID:3WVVjERd
>>860
選んだ開発環境が悪かった
2000年頃じゃ選択肢少なかったし仕方ないけど
それで吉里吉里3はベースにwxwidgetライブラリ採用して
クロスプラットフォームに対応しやすいゲームエンジン目指してたんだけどね
0863名前は開発中のものです。2016/03/21(月) 13:30:14.73ID:bcsN2Lwu
『目指してた』? 過去形?んん?
0864名前は開発中のものです。2016/03/21(月) 14:15:44.98ID:PKlyco4v
ソースは最初から全部開示されてるよ
奇特な有志がいないだけ

deeたんはたぶんもう飽きてる
0865名前は開発中のものです。2016/03/27(日) 14:54:01.85ID:fJMQCG1k
tjs
0866名前は開発中のものです。2016/03/27(日) 14:57:14.13ID:fJMQCG1k
間違いました
tjsの初歩の質問なのですが、 incontextofってどう言う時に必要なのか全くわかりません。
これは、具体的にどう言う時に使うんでしょう?
多少オブジェクトを作れるレベルのまだまだ初心者です。
0867名前は開発中のものです。2016/03/27(日) 14:59:53.80ID:nW4Ay/nx
Dictionaryをclearするときに使う
初心者はそれだけ覚えておけばOK
0868名前は開発中のものです。2016/03/28(月) 10:42:46.42ID:Y6Y6wWuE
俺もクラスまでは参考書とか見て作れるようになったけど、incontextofやクロージャーあたりで挫折したorz
0869名前は開発中のものです。2016/03/28(月) 21:13:49.17ID:Kw5FK24T
使い方に酔っては可読性?っていうんだっけあれが落ちるから必要不可欠でなければやめてほしい・・・
0870名前は開発中のものです。2016/03/29(火) 07:49:07.11ID:WW5U6Sgv
任意のコンテキストでメソッドを実行するためにある
0871名前は開発中のものです。2016/03/29(火) 07:52:55.55ID:Zs0ElHiU
読むときはともかく、自分で書く上ではDictionary絡み以外で
incontextofを意識することはないはず

クロージャもJavaScriptならともかくTJSではハマることあんまないよね
0872名前は開発中のものです。2016/03/30(水) 10:56:16.57ID:410kBdIJ
プライド高いだけの無能プログラマがやってもーた・・・・・・
吉里吉里、商用では初めてシステム組むプログラマが、@jump storage=scenario/sc_01.ksとわざわざパス付きで組みやがった・・・・・・
スクリプタの俺が、それはハマるから止めろって忠告したのに、プライド高くて無視した挙げ句、パッチ作れませんとかアホかと・・・・・・

これ、パッチ作る方法ってある?
問題は、パスを指定してるせいで、patch.xp3だと平坦展開される関係でdata.xp3を読みに行くためどうしようもない。
問題のksファイルを修正するために、その直前の飛び先を修正して、その直前の飛び先ファイルに飛ぶためにその前のファイルの飛び先を修正して・・・と
first.ksまで遡って全部パスを削除してパッチ組めばいけるかな?
0873名前は開発中のものです。2016/03/30(水) 11:51:21.08ID:LMGYTrNH
この問題って、もしinitialize.tjsで万が一バグがあった場合、パッチ当てる方法すら無いよねたぶん。
0874名前は開発中のものです。2016/03/30(水) 12:02:04.58ID:wqT9BPD5
>>872
patch.xp3も
パス構造もってるから元のパスを再現したら上書きできるよ
0875名前は開発中のものです。2016/03/30(水) 12:08:28.32ID:rQazscHV
jumpタグは特殊で直接書き換えはできないんだっけ?

Conductor.tjs の
class BaseConductor
{
function loadScenario

この関数を必ず経由するっぽいから、ここでstorageの中身のパスを置換
公式配布版吉里吉里とkagexだと中身ちょっと違うけど多分両方ここ経由するんじゃないかな

関数の引数が指定されてなかったら
http://devdoc.kikyou.info/tvp/docs/tjs2doc/contents/function.html
「引数の配列変換」の項目の function func(args*)
で引数の中身取得して引数の順番確認してstorageだけ書き換え
0876名前は開発中のものです。2016/03/30(水) 13:07:10.16ID:LMGYTrNH
ふと思ったけど、afterinit.tjs作ってテキストを書き換えて保存するオブジェクト作るとかしてinitialize.tjsの飛び先からscenario/を削除して保存するとかやれない?
0877名前は開発中のものです。2016/03/30(水) 14:11:19.90ID:ZAoLS56N
incontextofの勉強してるものです
いくつかネットで調べて試してるのですが
class HogeClass0{

var left = 10;

function HogeClass0(){
}

function hoge(){
var left = 20;
hoge2(this);
}

function hoge2(){
System.inform(left);
}

}

var h = new HogeClass0(); // インスタンスの作成
(h.hoge2 incontextof h.hoge)();
h.hoge();

これでhogeのleftを参照するって可能なのでしょうか
現状のスクリプトだとメンバleftが見つかりませんと出ます
0878名前は開発中のものです。2016/03/31(木) 00:01:09.38ID:tyl4i/t4
ローカル変数が有効なのは関数が実行されている間だけなので参照できない
0879名前は開発中のものです。2016/03/31(木) 02:28:46.74ID:nUmWlOt/
>>878
コンテキストを変えても、変えた先は実行されてるとは見なされないと言うことでしょうか。
ちなみに以下だと 10 40 40 となるのですが、(h.hoge2 incontextof h.HogeClass0)();でなぜ40になるのか意味がわかりませんでした。

class HogeClass0{
var left = 10;
function HogeClass0(){
var left = 20;
}

function hoge(){
var left = 30;
hoge2(this);
}

function hoge2(){
System.inform(left);
}

}

var left = 40;
var h = new HogeClass0(); // インスタンスの作成
h.hoge();
(h.hoge2 incontextof global)();
(h.hoge2 incontextof h.HogeClass0)();
0880名前は開発中のものです。2016/03/31(木) 08:26:13.74ID:g/PF5lze
>>877
別に用意されてる機能を全部使わないといけないわけじゃないから
incontextof演算子はDictionary専用だと思っておいていいと思うよ

incontextof演算子は、対象にクラスのインスタンスしか使えないよ
それ以外(関数とか)を参照した場合は、エラー吐かなくてもエラーだよ

(h.hoge2 incontextof h.hoge)();//関数h.hoge()を参照してる
(h.hoge2 incontextof h.HogeClass0)();//関数h.HogeClass0()を参照してる
この2つはエラーを吐かないだけでエラーだよ

var h1 = new HogeClass0();
var h2 = new HogeClass0();
(h1.hoge2 incontextof h2)();//h2.hoge2()を呼び出す
(HogeClass0.hoge2 incontextof h1)();//h1.hoge2()を呼び出す

(a.foo incontextof b)() と書くと b.foo()を呼び出すんだけど
なら初めからb.foo()と書けばいいじゃん、て話で
だからDictionary専用みたいなものだよ
0881名前は開発中のものです。2016/03/31(木) 08:29:01.26ID:upSx8YC8
http://azanashi.さくら.ne.jp/blog/?p=2867
(NGワードよけ)

Dictionary以外ではこんなのとか
まー初心者どころか中級者でも意識しなくて
全然問題ないと思うけど
0882名前は開発中のものです。2016/03/31(木) 11:48:43.24ID:WscqLP10
>>877
tjsのコンテキストはjsとちがってローカル変数は含まないのでだめなのよ

C++と同様に、クラスのインスタンス(または辞書)のメンバーとグローバルが含まれる
0883名前は開発中のものです。2016/03/31(木) 12:19:30.09ID:iFOzhxi7
>>880,881
いろいろありがとうございます
吉里吉里自体、特にmainwindowがincontextofだらけなので、読み解くのにこれがわからないと意味不明なのでいろいろ試したのですが、挫折しそうです・・・・・・・・・
0884名前は開発中のものです。2016/03/31(木) 14:54:06.65ID:WscqLP10
>>880
辞書も大丈夫だし、関数もクラスもオブジェクトだから普通に指定できますよ

クラスの場合はメンバ関数はクラスに含まれてるので、それがまず参照されて、他の参照はそのまま無いのでグローバルを見に行くことに
0885名前は開発中のものです。2016/03/31(木) 16:03:38.74ID:xzvrWFQr
@jumpで思い出したけど@call使いたがる人はなんでなの?
初心者はこんがらがるから止めろっていうのに特にcall使いたがる人多い
callする必要ないだろそれって言う部分でもcall
0886名前は開発中のものです。2016/03/31(木) 16:34:13.25ID:1iv6e1ot
>>883
まずはtjsにおけるコンテキストとはなんぞやを理解しましょう

tjsでのコンテキストは、実行するときに変数を参照する先のこと。今使ってる実行コンテキスト(this)に目的の変数がなければglobalを参照してそこにもなければエラーになる仕組みです

tjsの関数はよばれた時につかうコンテキストを持てます。コンテキストを持ってればそのコンテキストをthisとして動作して、関数から戻る時に前のコンテキストに戻します。なければ現在のままで動きます

globalに名前つきで作られた関数はglobalコンテキストを持ってます。インスタンスのメンバ関数はそのインスタンス自身をコンテキストとして持ってつくられます

obj.func() で呼び出される関数は、何もいじってなければobjをコンテキストとして持ってるので、objのメンバを参照して動作できるわけです

「いじってなければ」がポイントで、incontextof はそのコンテキストを入れ替えた関数を作る演算子です

function() と無名で作られた関数はコンテキストを持たないので、オブジェクトにあとから関数を足す場合などでは明示的にそのオブジェクトをコンテキストとして足す必要があり、そのためにKagのMainwindowで多用されてます

任意の関数のコンテキストを変えて使うことはできますが、関係ないものを使っても混乱するだけなので濫用はつつしむべき機能ではあります

辞書でincontextを使う理由は、辞書は入れる値と名前が重なると困るので、tjsでは辞書のインスタンスにはメンバ関数が作られてません。関数自体はDictionaryクラスにあるのでそれにincontextof でインスタンスをくっつけて使うわけです
0887名前は開発中のものです。2016/03/31(木) 18:39:04.30ID:fw8Mx0Nz
できる限りシンプルに(勿論シンプル過ぎないように)。
■ このスレッドは過去ログ倉庫に格納されています