SRC質問掲示板Mk2
(現在 過去ログ110 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■19712 / inTopicNo.1)  一定条件を満たした後のラベル実行
  
□投稿者/ Dios -(2007/03/18(Sun) 18:16:34) [ID:qtg4rdkk]
    はじめまして。
    「あるユニットが撃破されたあと、敵を3機撃破すればステージクリア」という
    状況を作りたいと思っています。
    「敵を3機撃破すればステージクリア」するだけならば、下記で問題なかったのですが、
    「あるユニットが撃破されたあと」はどうすればよいのか分かりません。
    「あるユニット」撃破後にSetコマンドで変数「撃破数」をセットしたとしても、
    IncrコマンドはSetよりも優先されてしまうので、撃破後にSetコマンドを実行するより先に
    勝手に「撃破数」を作成し、撃破数をカウントしてしまいます。
    そのため、「あるユニット」が撃破される前に敵を3機撃破しても、ステージクリアに
    なってしまいます。

    「あるユニットが撃破されたあと、敵を3機撃破すればステージクリア」とするには
    どうすればよいのか教えてください。よろしくお願いいたします。

    Set 撃破数
    Exit

    破壊 敵:
    Incr 撃破数


    If 撃破数 = 3 Then
    Goto 敵破壊
    EndIf

    敵破壊:
    Talk 主人公
    よし、撤退するぞ!
    End
    Continue ステージ2.eve
引用返信/返信 削除キー/
■19713 / inTopicNo.2)  Re[1]: 一定条件を満たした後のラベル実行
□投稿者/ 中箱 -(2007/03/18(Sun) 18:41:51) [ID:8NrUE61r]
    どうも、中箱と申します。


    >「あるユニットが撃破されたあと、敵を3機撃破すればステージクリア」

    Ifコマンドあたりを用いて、
    「あるユニットが撃破された後」にのみ
     Incr 撃破数
    を実行するようにすれば良いのでは。


    撃破された後かどうかは、
    ・マップ上にそのユニットが存在しているかどうかを条件にする(存在していないなら、撃破された、ということ)
    や、
    ・そのユニットの破壊イベントで識別用の変数をSetしておき、変数があるかどうかを条件にする
    など、
    やり方は幾つかあるかと。


    では。
引用返信/返信 削除キー/
■19714 / inTopicNo.3)  Re[1]: 一定条件を満たした後のラベル実行
□投稿者/ Mr -(2007/03/18(Sun) 19:02:31) [ID:N0tzbiQu]
http://web.hpt.jp/limitover/
    そういった複雑な処理をする場合、機能ごとに切り分けて考えると良いでしょう。
    例えば、今回の場合は以下のようになると思われます。

    ・敵を破壊する

    ・破壊した敵が「あるユニット」か確認する
    「あるユニット」だった場合は、破壊したフラグを立て、撃墜数を加算しない
    違う場合は撃墜数を加算する

    ・破壊したフラグを参照する
    まだ「あるユニット」を撃破していなかったら処理終了

    ・撃墜数を参照する
    3機以下なら処理終了
    3機以上破壊していたら次の処理へ。

    と、このように。
    これをイベントコマンドに置き換えていけば良いのです。
    ・敵を破壊する→破壊イベントラベル
    ・破壊した敵が「あるユニット」か確認する→対象ユニットIDとIfコマンド
    といった要領です。
    置き換えの過程で、無駄が省けるようなら省いたり、理論的に間違っていた場合は修正していきます。

    それぞれのやり方については、ヘルプを見ながらいろいろ考えてみるといいです。ヘルプファイルはSRC製作者の聖典ですから、早い段階でなじんだ方がいいでしょう。
    それでも分からなかったら遠慮無くレスを付けてください。そのための質問掲示板ですし。
引用返信/返信 削除キー/
■19716 / inTopicNo.4)  Re[1]: 一定条件を満たした後のラベル実行
□投稿者/ Dios -(2007/03/18(Sun) 19:40:23) [ID:qtg4rdkk]
    中箱さん、Mrさん、ありがとうございました。
    中箱さんの意見に従い、変数を使用する方法を採用して、つぎのようにしてみました。

    Set 撃破数
    Set あるユニット撃破
    Exit

    破壊 あるユニット:
    Set あるユニット撃破 2
    Exit

    破壊 敵:
    If あるユニット撃破 = 2 Then
    Incr 撃破数
    EndIf

    If 撃破数 = 3 Then
    Goto 敵破壊
    EndIf

    敵破壊:
    Talk 主人公
    よし、撤退するぞ!
    End
    Continue ステージ2.eve

    これで実行してみたのですが、やはり「あるユニット」が撃破されるまえに
    敵を3機撃破するとステージクリアとなってしまいます。
    何が足りない(間違っている)のでしょうか。
    申し訳ありませんが、今一度ご教授お願いいたします。
引用返信/返信 削除キー/
■19720 / inTopicNo.5)  Re[2]: 一定条件を満たした後のラベル実行
□投稿者/ Mr -(2007/03/18(Sun) 21:05:37) [ID:N0tzbiQu]
http://web.hpt.jp/limitover/
    2007/03/18(Sun) 21:06:55 編集(投稿者)

    #修正点:タブが入らなかったのでスペースに入れ替え

    私の説明もちょっとわかりづらかったのでしょうが、こんな感じにすれば言いと思います。


    Set 撃破数
    Set あるユニット撃破
    Exit


    破壊 敵:

    #@
    If 対象ユニットID = あるユニット Then
     あるユニット撃破 = 2
    EndIf

    #A
    If あるユニット撃破 = 2 Then
     If 撃破数 = 3 Then
      Goto 敵破壊 …B
     Else
      Incr 撃破数 …C
     EndIf
    EndIf

    Exit


    敵破壊:
    Talk 主人公
    よし、撤退するぞ!
    End
    Continue ステージ2.eve

    破壊 あるユニット:のラベルを作らずに、全部の処理を破壊 敵:の中に入れてしまいます。
    @で破壊されたユニットが「あるユニット」かどうか判断して、フラグ立てをしています。
    対象ユニットIDについてはヘルプを見て下さい。
    そしてAでは、Ifの中にIfをつくっています。こういうのを「入れ子」といい、条件を絞り込むのに使います。
    「あるユニット」を撃破しており、かつ撃破数が3の時にBに行きます。
    そして、「あるユニット」を撃破したが撃破数が3ではない時はCに行きます。
    こんな所でいかがでしょうか?
引用返信/返信 削除キー/
■19721 / inTopicNo.6)  Re[3]: 一定条件を満たした後のラベル実行
□投稿者/ Dios -(2007/03/18(Sun) 21:21:13) [ID:qtg4rdkk]
    Mrさんありがとうございます。
    すみません、私の説明のしかたが悪かったようです。
    「あるユニット」とは味方のことなのです。お手数をおかけしてすみませんでした。

    ですが、教えていただいたことを参考にしてもう少しがんばってみます。
    ありがとうございました。
引用返信/返信 削除キー/
■19731 / inTopicNo.7)  Re[4]: 一定条件を満たした後のラベル実行
□投稿者/ Dios -(2007/03/21(Wed) 01:19:51) [ID:qtg4rdkk]
    解決いたしました。
    皆様ありがとうございました。

解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -