| おはようございます、ヒロキです。
件のインクルード中では、Gotoコマンドで「スクロールループエンド」という ラベルに飛んでいますが、「スクロール」サブルーチンの下に定義されている 「スクロール2」サブルーチンにも、同様の名前のラベルが存在します。
で、「Goto スクロールループエンド」が実行されたときに 「スクロール」内ではなく、「スクロール2」内の 「スクロールループエンド」ラベルに飛んでいるようです。
そして、「スクロール2」のループ内の
> If (ス現在X < 行き先X) Then > Incr 現在X 1 > Goto スクロールループエンド > Endif
という部分で、「ス現在X」という存在しない変数(=0)と 変数「行き先X」(>0)が比較されるため、常に条件が成立してしまい 変数「現在X」の増減が正しく行われず、 結果として無限ループに陥ってしまうようです。
したがって、トラブルの主たる原因は 安定版と開発版でのGotoコマンドの挙動の違い、 ということになります。
ですが、同一イベントファイル中に複数存在するラベルに対して Gotoを実行した際、いずれのラベルに飛ぶのかは定義がなされておりません。
ですのでこれは、 「スクロール2」中の「スクロールループエンド」ラベルを別の名前に変える、 またはGotoコマンドを使わないようサブルーチンを改変する、など シナリオ側の対処に留めるべきで、 バグとして報告することではないと思います。
最後に 「スクロール」サブルーチンからGotoコマンドを取り除いた ものを例示しておきますので、よろしければ参考にでもしてください。
スクロール: # Call スクロール 初期X 初期Y 行き先X 行き先Y 待機時間 Local 現在X 現在Y 行き先X 行き先Y 待機時間 Set 現在X Args(1) Set 現在Y Args(2) Set 行き先X Args(3) Set 行き先Y Args(4) Set 待機時間 Args(5)
Do While 1
If ((現在X = 行き先X) And (現在Y = 行き先Y)) Then Break ElseIf (現在X > 行き先X) Then Incr 現在X -1 ElseIf (現在X < 行き先X) Then Incr 現在X 1 ElseIf (現在Y > 行き先Y) Then Incr 現在Y -1 ElseIf (現在Y < 行き先Y) Then Incr 現在Y 1 EndIf
Wait 待機時間 Center 現在X 現在Y Switch Args(6) Case カーソル表示 PaintPicture Cursor.bmp - - 透過 Case ライト表示 PaintPicture Light.bmp - - 透過 EndSw
Refresh
Loop
Return
以上です。それでは
|