10306 ロード時のメッセージレイヤに関して マスカレイド <masquerade.kagenohi @ gmail.com> 2007年 8/9(木) 午前 1:06
10307 ロード時のメッセージレイヤに関して taka909 <pg639_taka909 @ yahoo.co.jp> 2007年 8/9(木) 午後 11:25
┃┗10308 ロード時のメッセージレイヤに関して マスカレイド <masquerade.kagenohi @ gmail.com> 2007年 8/10(金) 午前 1:00
┃ ┗10310 ロード時のメッセージレイヤに関して ばく <tohka @ tohka.info> 2007年 8/10(金) 午後 7:31
10315 ロード時のメッセージレイヤに関して とと <toto @ yahoo.co.jp> 2007年 8/11(土) 午前 3:31
 ┗10316 ロード時のメッセージレイヤに関して マスカレイド <masquerade.kagenohi @ gmail.com> 2007年 8/11(土) 午前 9:19
  ┗10317 ロード時のメッセージレイヤに関して マスカレイド <masquerade.kagenohi @ gmail.com> 2007年 8/11(土) 午前 9:24
   ┣10318 ロード時のメッセージレイヤに関して ばく <tohka @ tohka.info> 2007年 8/13(月) 午前 2:56
   ┗10319 ロード時のメッセージレイヤに関して らんか <sky @ palace.po-box.info> 2007年 8/13(月) 午前 4:10
    ┗10320 解決しました マスカレイド <masquerade.kagenohi @ gmail.com> 2007年 8/13(月) 午後 10:01

タイトル
お名前 日付

10306
ロード時のメッセージレイヤに関して
マスカレイド
<masquerade.kagenohi @ gmail.com>
2007年 8/9(木) 午前 1:06
皆様、こんばんは。
セーブロード機能を制作しているのですが、ロード機能が思い通りに動作せず悩んでいます。
バージョンは、吉里吉里 2.26/KAG 3.26 stableです。
また、タロ様の『どこでもセーブプラグイン』を利用させていただいています。

現在、私が制作しているゲームはデフォルトのノベルタイプのレイヤではなく、メッセージウィンドウ(レイヤはmessage0)を使用しております。
セーブを行った後、該当データをロードすると、
メッセージウィンドウは表示されているのですが、ノベルタイプのメッセージレイヤまで表示されてしまいます。
そのためか、シナリオを進行させることもできません。
その時点でのカレントメッセージレイヤをコンソールで調べてみますと、message0が確かに表示されていました。

読み辛くなってしまいましたので、上記のことを完結にまとめますと、

・シナリオをフレーム画像つきのメッセージウィンドウ(message0、width="760" height="160")内に表示
・ロードを行うとフレーム画像は表示されるが、その中に文字が表示されない
・デフォルトのメッセージレイヤ(message0、800×600?)らしきレイヤが表示されている
・クリックしてもシナリオを進められない

メッセージウィンドウ表示とセーブポイントに関するスクリプトは以下のようになっております。

----------------------------------------------------
;メッセージウィンドウ
@macro name="mw0"
;@ers
@layopt layer="0" page="fore" visible="false"
@layopt layer="message0" opacity="255" page="fore" visible="true"
@current layer="message0"
@position frame="messagewindow.png" marginl="25" maringt="20" marginr="0" marginb="8" left="20" top="435" width="760" height="160" layer="message0" page="fore" visible="true"
@sysbtopt forevisible="true"
@endmacro
-----------------------------------------------------
;セーブポイントマクロ
@macro name="ers"
@cm
;@layopt layer="0" page="fore" visible="false"
;@tempsave
;@er
;@mw0
@label
@cm
;@tempload bgm="true" se="true" backlay="true"
;@current layer="message0" page="fore"
@endmacro
------------------------------------------------

以上です。
何が原因か突き止められず困っております。よろしければご教授いただけないでしょうか?

判りにくい説明で申し訳ありません。
説明が不足している点がございましたら、お手数ですが、ご指摘ください。
それではよろしくお願いいたします。
from 125.102.121.135 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727) Sleipnir/2.5.15]  この記事に返信  この記事を編集(管理者のみ)

10307
ロード時のメッセージレイヤに関して
taka909
<pg639_taka909 @ yahoo.co.jp>
2007年 8/9(木) 午後 11:25
>皆様、こんばんは。
>セーブロード機能を制作しているのですが、ロード機能が思い通りに動作せず悩んでいます。
>バージョンは、吉里吉里 2.26/KAG 3.26 stableです。
>また、タロ様の『どこでもセーブプラグイン』を利用させていただいています。
>
>現在、私が制作しているゲームはデフォルトのノベルタイプのレイヤではなく、メッセージウィンドウ(レイヤはmessage0)を使用しております。
>セーブを行った後、該当データをロードすると、
>メッセージウィンドウは表示されているのですが、ノベルタイプのメッセージレイヤまで表示されてしまいます。
>そのためか、シナリオを進行させることもできません。
>その時点でのカレントメッセージレイヤをコンソールで調べてみますと、message0が確かに表示されていました。
>
>読み辛くなってしまいましたので、上記のことを完結にまとめますと、
>
>・シナリオをフレーム画像つきのメッセージウィンドウ(message0、width="760" height="160")内に表示
>・ロードを行うとフレーム画像は表示されるが、その中に文字が表示されない
>・デフォルトのメッセージレイヤ(message0、800×600?)らしきレイヤが表示されている
>・クリックしてもシナリオを進められない
>
>メッセージウィンドウ表示とセーブポイントに関するスクリプトは以下のようになっております。
>
>----------------------------------------------------
>;メッセージウィンドウ
>@macro name="mw0"
>;@ers
>@layopt layer="0" page="fore" visible="false"
>@layopt layer="message0" opacity="255" page="fore" visible="true"
>@current layer="message0"
>@position frame="messagewindow.png" marginl="25" maringt="20" marginr="0" marginb="8" left="20" top="435" width="760" height="160" layer="message0" page="fore" visible="true"
>@sysbtopt forevisible="true"
>@endmacro
>-----------------------------------------------------
>;セーブポイントマクロ
>@macro name="ers"
>@cm
>;@layopt layer="0" page="fore" visible="false"
>;@tempsave
>;@er
>;@mw0
>@label
>@cm
>;@tempload bgm="true" se="true" backlay="true"
>;@current layer="message0" page="fore"
>@endmacro
>------------------------------------------------
>
>以上です。
>何が原因か突き止められず困っております。よろしければご教授いただけないでしょうか?
>
>判りにくい説明で申し訳ありません。
>説明が不足している点がございましたら、お手数ですが、ご指摘ください。
>それではよろしくお願いいたします。


はじめまして。私も吉里吉里使い始めて3ヶ月ぐらいの初心者なのであまり詳しいことはわかりませんが、気になったところがあります。メッセージウィンドウマクロの方の@sysbtoptというのが、もしシステムボタンを別のメッセージレイヤに貼り付けているとするとcurrent layerがそちらに切り替わっているのかもしれないです。なので@macro name="mw0"のすぐ後ぐらいに@sysbtoptを入れると改善されるかもです。間違っていたらごめんなさい。ではお互いがんばりましょう。
from 122.17.141.199 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)]  この記事に返信  この記事を編集(管理者のみ)

10308
ロード時のメッセージレイヤに関して
マスカレイド
<masquerade.kagenohi @ gmail.com>
2007年 8/10(金) 午前 1:00
taka909さん、はじめまして。
ご回答ありがとうございます。

>なので@macro name="mw0"のすぐ後ぐらいに@sysbtoptを入れると改善されるかもです。
試してみたのですが、ダメでした…。
メッセージウィンドウ(枠)をConfig.tjsで設定せず、自分で組んだマクロを使って表示していることが悪いのかも、と考えたりもしておりますが…。


なお@sysbtoptはらんか様のところからお借りしたシステムボタン機能です。
すみません、記載し忘れておりました。
from 125.102.121.135 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727) Sleipnir/2.5.15]  この記事に返信  この記事を編集(管理者のみ)

10310
ロード時のメッセージレイヤに関して
ばく
<tohka @ tohka.info>
2007年 8/10(金) 午後 7:31
http://tohka.info/krkr/
こんにちわ。



まずは、プラグインをはずし、純粋にKAG3が提供するセーブ/ロードを利用してみてください。その上で、今回の問題が再現するか確かめてください。もし再現するようでしたら、組まれたマクロなどが原因となっている可能性が高く、再現しないようでしたら、プラグイン本体の問題もしくはそのプラグインと他のプラグインやマクロなどが競合したなどの可能性が考えられます。

プラグインが関係しているようでしたら、それをサポートされている方にお尋ねください。

マクロ定義部分を載せていただいてますが、それを実際にどう呼び出しているのでしょうか。あと、コメント部分はすべて読み飛ばしてもいいのでしょうか?(コメント部分は無視しても問題があるのか、コメントアウトする前が問題があり、コメントアウトした後のシナリオを載せていらっしゃるのか。)

また、プラグインの性質上、他の部分でlabelが挿入されると、そこをセーブ箇所と捉えますので、当然そちらがロード時に復帰され、予想と違ったものになります。
このプラグインを使う使わないに関わらず、ロードしても大丈夫か気を配る必要があります。
[KAG System リファレンス > 陥りやすいミス > 栞をたどっても大丈夫ですか?]参照
http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/Misses.html



とりあえず、情報が少ないので、問題が再現する最低限のシナリオ(マクロを定義して、サンプルの文章を載せた程度)を用意していただき、載せていただけるとありがたいです。
from 61.208.122.173 [Opera/9.00 (Windows NT 5.1; U; ja)]  この記事に返信  この記事を編集(管理者のみ)

10315
ロード時のメッセージレイヤに関して
とと
<toto @ yahoo.co.jp>
2007年 8/11(土) 午前 3:31
>・ロードを行うとフレーム画像は表示されるが、その中に文字が表示されない。
文字はセーブで記録されません。なのでロードしても文字は復元されません。
from 222.15.222.245 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; istb 702; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.5.12]  この記事に返信  この記事を編集(管理者のみ)

10316
ロード時のメッセージレイヤに関して
マスカレイド
<masquerade.kagenohi @ gmail.com>
2007年 8/11(土) 午前 9:19
ばく様、とと様、こんにちは。
ご返信ありがとうございます。

こちらからの情報が不足しており、申し訳ありませんでした。
何が原因かわからず、どこを記載すればよいか判然としなかったため、あのような書き込みになってしまいました。

ご指摘いただいた通り、KAG3が提供するセーブ/ロードを使用しますと問題なくロードを行えました。
ですのでプラグインの関連で問題が生じていると考えられるのですが、もしかしたら右クリックメニュー→セーブ/ロードの処理に何か原因があるのではないかとも思い調べてみたのですが、原因は突き止められませんでした。

お手数ですが、一度見ていただけないでしょうか?
そこに問題がないようでしたらプラグインの関わりを調べてみることにします。

テスト用のシナリオとマクロを記載いたします。

---------------------------------------
*test
;どこでもセーブプラグイン
@call storage="autoInsertLabel.ks"
@loadplugin module="extrans.dll"
;------------------------------------
;マクロ
;セーブポイントマクロ
@macro name="ers"
@cm
@label
@cm
@endmacro
;-------------------------------
;メッセージウィンドウマクロ
@macro name="mw0"
@layopt layer="0" page="fore" visible="false"
@layopt layer="message0" opacity="255" page="fore" visible="true"
@current layer="message0"
@position frame="messagewindow.png" marginl="25" maringt="20" marginr="0" marginb="8" left="20" top="435" width="760" height="160" layer="message0" page="fore" visible="true"
@endmacro
;-------------------------------------
*test_2
@rclick call="true" storage="r_click.ks" target="*rclick" enabled="true"
[image storage="red" layer="base" page="fore"]
[mw0]
文章1。[p]
[wait canskip="true" time="500"]
[ers]
「セリフ」[p]
[ers]
文章2。[p]
[s]

----------------------------------------
そして下記がr_click.ks(右クリック)の処理になります。

----------------------------------------
*rclick
@locklink
@locksnapshot
@rclick enabled="true" jump="true" target="*return_game"
@tempsave
@history output="false"
@backlay
@position layer="message1" page="back" opacity="0" width="800" height="600" left="0" top="0" visible="false"
@layopt layer="message1" page="back" visible="true"
@layopt layer="message0" page="back" visible="false"
@layopt layer="message0" page="fore" visible="false"
@layopt layer="0" page="back" visible="false"
@layopt layer="0" page="fore" visible="false"
;ページボタンを非表示
@layopt layer="2" page="back" visible="false"
@layopt layer="2" page="fore" visible="false"
;save,loadタイトルを非表示
@layopt layer="1" page="back" visible="false"
@layopt layer="1" page="fore" visible="false"
@current layer="message1"
@trans method="turn" color="0x000000" time="800" vague="100"
@wt
@jump target="*menu"
;----------------------------------------------------------------
*menu
@er
;セーブ・ロード詳細枠を非表示
@layopt layer="message3" page="fore" visible="false"
@layopt layer="message1" page="fore" opacity="255" visible="true"
@layopt layer="message1" page="back" opacity="255"  visible="true"
;ページボタンを非表示
@layopt layer="2" page="back" visible="false"
@layopt layer="2" page="fore" visible="false"
;save,loadタイトルを非表示
@layopt layer="1" page="back" visible="false"
@layopt layer="1" page="fore" visible="false"
@locate x="320" y="170"
@button graphic="rightclick-save" target="*save" enterse="cursor8" clickse="decide2"
@locate x="320" y="200"
@button graphic="rightclick-load" target="*load" enterse="cursor8"  clickse="decide2"
@locate x="320" y="230"
@button graphic="rightclick-config" target="*config" enterse="cursor8"  clickse="decide2"
@locate x="320" y="260"
@button graphic="rightclick-graphic" target="*graphic" enterse="cursor8"  clickse="decide2"
@locate x="320" y="290"
@button graphic="rightclick-title" target="*return_title" enterse="cursor8"  clickse="decide2"
@locate x="320" y="320"
@button graphic="rightclick-return" target="*return_game" enterse="cursor8"  clickse="decide2"
@s
;----------------------------------------------------------------
*save
@er
@jump storage="saveload_data.ks" target="*save"
@s
;----------------------------------------------------------------
*load
@er
@jump storage="saveload_data.ks" target="*load"
@s
;----------------------------------------------------------------
*title_load
@er
@jump storage="saveload_data.ks" target="*title_load"
@s
;----------------------------------------------------------------
*config
;@jump storage="r_click.ks" target="*config"
;クイックメニュー非表示
@sysbtopt forevisible="false"
@layopt layer="message1" page="back" visible="false"
@layopt layer="message0" page="back" visible="false"
@layopt layer="message0" page="fore" visible="false"
@layopt layer="message1" page="fore" visible="false"
@image storage="config" layer="1" page="back" left="0" top="0" visible="true"
@trans method="turn" color="0x000000" time="800" vague="100"
@wt
〜処理〜
@s
;----------------------------------------------------------------
*r_config
@image storage="config" layer="1" page="fore" left="0" top="0" visible="true"
@s
;----------------------------------------------------------------
*graphic
@hidemessage
@jump target="*menu"
@s
;----------------------------------------------------------------
*return_title
@gotostart ask="true"
@jump target="*menu"
@s
;----------------------------------------------------------------
*return_game
@tempload bgm="false" se="false" backlay="true"
;@tempload bgm="false" se="false" backlay="false"
;@tempload bgm="true" se="true" backlay="true"
@layopt layer="message1" page="back" visible="false"
;ページボタンを非表示
@layopt layer="2" page="back" visible="false"
@layopt layer="2" page="fore" visible="false"
;save,loadタイトルを非表示
@layopt layer="1" page="back" visible="false"
@layopt layer="1" page="fore" visible="false"
@current layer="message0" page="fore"
@trans method="turn" color="0x000000" time="800" vague="100"
@wt
@unlocklink
@unlocksnapshot
@rclick call="true" storage="r_click.ks" target="*rclick" enabled="true"
@return
@s
------------------------------------------------

saveload_data.ks(セーブ/ロード)の処理は長すぎるため、txt形式でアップロードいたしました(一部省略しております)。
http://deaikei.biz/up/up/6352.txt.html
パスはkrkrです。

以上です。
何度も申し訳ありませんが、よろしくお願いいたします。
また何か不足がありましたら、お手数ですが、ご指摘ください。
from 125.102.121.135 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727) Sleipnir/2.5.15]  この記事に返信  この記事を編集(管理者のみ)

10317
ロード時のメッセージレイヤに関して
マスカレイド
<masquerade.kagenohi @ gmail.com>
2007年 8/11(土) 午前 9:24
すみません、追記いたします。

スクリーンショットを添付いたします。

【通常時の画面】
http://winplus.or.tp/uploader01/img1234/winplus.jp1964.jpg
コンソールで下記を確認
kag.current.name = (string)"表メッセージレイヤ0"

【右クリックメニュー→ロードを行った場合の画面】
http://winplus.or.tp/uploader01/img1234/winplus.jp1965.jpg
コンソールで下記を確認
kag.current.name = (string)"表メッセージレイヤ0"

以上です。
from 125.102.121.135 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727) Sleipnir/2.5.15]  この記事に返信  この記事を編集(管理者のみ)

10318
ロード時のメッセージレイヤに関して
ばく
<tohka @ tohka.info>
2007年 8/13(月) 午前 2:56
http://tohka.info/krkr/
お返事遅れまして申し訳ありません。ばくです。



マスカレイドさんが質問された内容に関しては、こちらで再現することができず、いまいち問題が把握できなかったので、解決法についてはわからなかったのですが、いくつか気付いた点を書かせていただきます。

以下、すべてsaveload_data.ksについて
43行目ほか : &sf.newSaveはsf.NewSaveのことか?(10行目では...)
43行目ほか : &sf.newSave = "num"だと文字列の"num"が代入される
43行目ほか : &sf.newSaveの&はエンティティの&か?(エンティティはKAGの機能)
44行目ほか : &kag.saveDataLocationの&は...(同上)
など、ちょっとプラグインを外してもうまく動くとはいえないスクリプトです。意図通りに動かなくてもいいのなら、エラーはでないかもしれませんが。
また、page関数が二重定義されています。セーブ時とロード時で分けられてますが、バグの温床なのであまりよろしくはありません。



総じてKAGでできることをわざわざTJSで記述されています。それで、うまく動けばいいのですが、挙動がおかしかったり、それを修正したりするのに手間取ったりしては意味がありません。TJSで関数を定義せずとも、KAGにはマクロもありますし十分です。
例えば、セーブやロード時の個々のサムネイルを表示させるマクロなら、num属性の値によって位置や内容を変化させればいいだけですし。そこで若干TJSを使った計算が入りますが、現状よりかはだいぶすっきりしますし、問題が見つかったとき対処もしやすくなります。

また、PerlやRuby、JavaScriptでもTJSでもいいですので、何かの言語を使って、反復する似たような内容をマクロを使わないKAGシナリオで出力させるという方法もあります。見た目は泥臭くなりますが、確実に動くのなら絶対こちらの方がいいと言えます。



ちょっと質問の主旨から離れてしまいましたが、ラベルに関してもスクリプト言語を利用したり、エディタの置換機能を使ったりしたりしてあらかじめKAGシナリオを生成しておけば、プラグインを使うときよりもずっと安定します。今回の問題の原因はちょっとわかりませんが、プラグインを外して実行してみたら問題はおきないとのことなので、外してしまうのがいいと思います。
プラグインを使わなきゃ実現できないことでもなく、製作者側が手間を惜しまなければ、代替可能なことですので。



このようなアドバイスしかできませんが、失礼いたします。
from 61.208.122.173 [Opera/9.00 (Windows NT 5.1; U; ja)]  この記事に返信  この記事を編集(管理者のみ)

10319
ロード時のメッセージレイヤに関して
らんか
<sky @ palace.po-box.info>
2007年 8/13(月) 午前 4:10
こんばんは。

たぶん、saveload_data.ks の load_disp 関数にある kag.tagHandlers.link の
引数において、
> exp:'kag.restoreBookMark(' + num + '),kag.process("r_click.ks" ,"*menu")'
としていることが原因ではないでしょうか。

ロード処理と共に r_click.ks のラベル *menu へ移動させているため、ロード後の
画面が構成されてから、ラベル *menu に書かれている処理、つまり、
・デフォルト設定の message1 (ノベルタイプのメッセージレイヤ)が表示される
・(この時点のカレントレイヤが message0 であり、locate タグの y 属性の指定が
  message0 の縦幅よりも大きい数値のために)各メニューボタンが message0 の
 視認できない範囲に表示される
・ラベル *menu にある @s タグにより、処理が停止(そのため、ロード後の文字
 表示などがされない)
という状況になってしまったのだと思われます。

なので、
> ,kag.process("r_click.ks" ,"*menu")
を消すと、正常にロードがされるようになるはずですが、もし、ロードの確認が
キャンセルされた場合に備えてメニューへ戻る処理を書いているのであれば、

exp:'if(!kag.restoreBookMark(' + num + ')) kag.process("r_click.ks" ,"*menu")'

というような形にしておくと、希望に副う動作になるのではないかなと思います。
from 220.23.105.174 [Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6]  この記事に返信  この記事を編集(管理者のみ)

10320
解決しました
マスカレイド
<masquerade.kagenohi @ gmail.com>
2007年 8/13(月) 午後 10:01
ばく様、らんか様、こんばんは。
ご返信ありがとうございます。

>>ばく様
>>page関数
セーブ画面を開いたときに最新のセーブページを開くことを目的に作成した関数だったのですが、ご指摘の通り、現在は動作しておりません。
これに関してはまた考え直します…。

>>総じてKAGでできることをわざわざTJSで記述されています。
TJSで記述すると若干処理が速くなるとどこかで目にして、それで現状のスクリプトにしました。
見辛い上に冗長だなぁ…と思ってはいたのですが、一度作ってしまったのでそのままにしておりました…。
時間があるときにKAGで作り直してみます。

ご助言、ありがとうございました。為になりました。

>>らんか様
>>exp:'if(!kag.restoreBookMark(' + num + ')) kag.process("r_click.ks" ,"*menu")'
上記の処理に変更後、正常に動作いたしました。
助かりました。本当にありがとうございました。


今回のことで未熟さを改めて思い知りました…。
皆様に頼らずとも解決できるよう精進します。

ご回答くださった皆様、本当にありがとうございました。
それでは失礼します。
from 125.102.121.135 [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727) Sleipnir/2.5.15]  この記事に返信  この記事を編集(管理者のみ)