一見万能とも思われるMSCですが、
どうしても出来なかったことが1つ・・・
それは、リスト処理を最初の1回目だけ行って、
2回目以降はスルーするというものです。
成功の鍵は変数です。
MSCを起動したときの変数の値は必ず0です。
何か実行すればその時の内容の値に変化し、
以降MSCを終了するまでその値は有効になります。
そして終了するとMSCのメモリは開放され変数も0に戻ります。
私のパワプロプラグインのチームセレクトがこれを使っています。
つまりですね、変数が0の時に通過するようにして、
通過直後にその変数を1に変更してしまえば、
その後はどうリスト処理をしようが、
REFRESHコマンドを入れようがMSCを終了するまではスルーします。
これによって以下のようなことが可能になりました。
ex) バラバラに格納されている満塁ヒット男と満塁HR男を
仮想メモリに飛ばしてまとめて選択処理できるようにします。
そして、その選択に基づいてメモリに戻すように処理できるようにします。
・・・なんのこっちゃ。ww
つまりですね、「選択に基づいて」条件処理ができるようになったんです。
IF(&D[74] != 1)←変数の初期値は0なので初期起動時は必ず通過する
&D[70] == GET(3E,1)
&D[70] %= 8
&D[70] /= 4
memo(400000,1,1,&D[70])←満塁ヒット男のフラグを仮想メモリに飛ばす
memo(3E,3,1,0)←誤動作防止のために元々のフラグは初期化
&D[71] == GET(3C,1)
&D[71] %= 10
&D[71] /= 8
memo(400001,1,1,&D[71])←満塁HR男のフラグを仮想メモリに飛ばす
memo(3C,4,1,0)
ENDIF
&D[74] == 1←変数を1にしてしまうことで、次からは上の範囲はスルーする
#INCLUDE "def/ZZZ.DEF"←リスト選択
memo(400000,1,10,![満塁])
&D[72] == GET(400000,1)
memo(3E,3,1,&D[72])←選択結果を書き込む
&D[73] == GET(400001,1)
memo(3C,4,1,&D[73])←選択結果を書き込む
もしもスルーさせなければ
常にプログラムが満塁ヒット・HR男のフラグををチェックさせてしまい、
仮想メモリのデータを支配させてしまうために
仮想メモリ上での選択が出来そうで出来ません。
つまり、選択結果も書き込めないわけですね。
これで何とか先に進めそうです。
P.S.
そしてまたハマりました・・・選手を移動すると無効化・・・orz
今度は次の選手に移動させてもスルーしてしまうというオチ
時間が無駄に流れてく・・・
最近のコメント