|
>はじめまして、大変初歩的な質問で申し訳ないのですが……。
>ノベルゲームにて、ある行動を取った時にローカル変数を足していき、その総計値により次シーンでの新要素を出そうとしているのですが、話の途中でセーブをして、そこを通り過ぎた後で変数を足し、そこで前のセーブデータをロードしてみると変数が引き継がれてしまいます。
>具体的に説明するならば、
>
>・ラジオ体操を10回続けると、スタンプが貰えます。今までにこなした回数は5回です。
>INT[@TAISOU]
>@TAISOU=5
>$L(1111)=$(@TAISOU)
> ↑これでファイルの文頭に宣言し、
>
>今日はラジオ体操をやらなかった。
> ※この時点でセーブ
>
>今日はラジオ体操をしました。
>@TAISOU+=1
>$L(1111)=$(@TAISOU)
> ↑ここを通過した後すぐに※のデータをロードすると、
> 変数は5ではなく6になっています。
>
>何か記述が足りない・設定を見逃しているなどありますでしょうか、お願いします。
>一度タイトル画面に行った後でロードをすると5のままなのですが、ゲーム画面上でロードをすると引き継いでしまいます。
>それと、デバック定義の変数ウォッチウィンドウへのローカル変数表示を
>\DBG.STR.LNO(1111, "体操")
>と付け足しているのですが変数を足すシナリオを通過しても数字が0のままになっています。
>なので、、変数を確認する画面として、こういったチュートリアルを小挟みにしつつ確認しています。
> スタンプを確認してみよう!
> 今までに_[$(@TAISOU)]回こなしたぞ。
>変数をプラスする際の式ですが、
>\LET(@TAISOU+=1)
>と記入いたしましたがセーブロードの問題は変わりませんでした。
>それと、ここで代入した数字を他のファイルに引き継ぐ事は可能でしょうか。初期化されてしまいます。
>質問ばかりですみません、宜しくお願いします。
どうもです。
セーブロードに関わってくる変数に関しては、INT などで新しく変数の宣言をおこなわず、
全て @L, $L, @G, $G の変数だけを使用するようにしてください。
以下、ラジオ体操の回数を格納、表示するサンプルになります。
//////////////////////////////////////////////////////////
\LET(@L(1111)=5)
#ASA
朝です。
\SEL.GO(SURU, SHINAI)
\SEL(ラジオ体操をする, ラジオ体操をしない)
#SURU
\LET(@L(1111)+=1)
ラジオ体操をしました。
\GO(GOURYUU)
#SHINAI
ラジオ体操をしませんでした。
\GO(GOURYUU)
#GOURYUU
今までに_[$(@L(1111))]回こなした。
\GO(ASA)
//////////////////////////////////////////////////////////
このように書けば実現できます。
また、変数ウォッチウィンドウにも正しく値が
表示されるようになります。
参考になれば幸いです。
|
|
|