改造の館 掲示板


[ HOME掲示板TOP一覧表示ツリー表示トピック表示新規投稿記事検索記事修正・削除携帯用URL管理用 ]


[2948] RE:コード形式 Name:栗の中の芋虫 Date:2016/10/29(土) 18:02
CODEを使います

適用条件 常時

IF @ADDRESst != @F0000000 //値が違う場合は以下を実行します
%0 = @ADDRESst+5 //st値に+5した値をローカル変数%0に代入します
ADDRESst %0 //%0の値をstのアドレスに上書きします
F0000000 %0 //%0の値をFメモリ F0000000 に上書きします
ENDIF

ADDRESst はst値のアドレスです。扱う値は1バイトを想定しています
F0000000はMECCのフリーメモリ領域です。初期値は 00 です

FメモリはMECC起動時に初期化されます
ユーザが書き換えない限り値は保持されます
この場合グローバル変数とローカル変数では代用できません(値が消えてしまうので)

久々に記述したので間違っていたらすいません

解説
セーブデータロード時、F0000000 は 00です
st値が00で無い限り一致しません
プログラムが実行され、st値が5上がり、Fメモリに同じ値が上書きされます
次の周回
st値は+5された値です
Fメモリも同じ値です
条件内のプログラムは実行されません
以降繰り返しです

ゲーム内でレベルアップしました
st値は本来の値です
このとき2パターンありえます
・本来の値とFメモリの値が一致するとき
 残念ながらプログラムは実行されません
・本来の値とFメモリの値が一致しないとき
 +5された値がおのおののアドレスに上書きされます

問題は一つ目のパターンですね
これは監視比較する値をレベルのアドレスにすることで解決すると思います

IF @ADDRESlv != @F0000000 //値が違う場合は以下を実行します
ADDRESst @ADDRESst+5 //stの値を+5して元のアドレスに上書きします
F0000000 @ADDRESlv //レベルの値をFメモリ F0000000 に上書きします
ENDIF

これでうまくいきそうです
ADDRESstとADDRESlvは適切なアドレスを指定してください


スレッド記事表示 No.2946 コード形式 峰 2016/10/27(木) 20:41 [ 返信 ]
   ┣No.2948 RE:コード形式 栗の中の芋虫 2016/10/29(土) 18:02
   ┗No.2951 RE:コード形式 峰 2016/10/31(月) 05:15

  




無料レンタル掲示板・日記・ブログ WebSpace