« オリ変調査結果 | メイン | MSC plugin更新 »

2008.07.27

格闘MSC

一見万能とも思われる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
今度は次の選手に移動させてもスルーしてしまうというオチ
時間が無駄に流れてく・・・

トラックバック

このページのトラックバックURL:
http://app.synapse-blog.jp/t/trackback/314000/14154165

格闘MSCを参照しているブログ:

コメント

コメントを投稿

最近の写真

  • 20171111_080216
  • 20171111_080011
  • 20171111_075946
  • 20171111_075926
  • Uljm05991_00000