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

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

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

■14863 / inTopicNo.1)  定義された変数がIf文で使えない。
  
□投稿者/ ドラモンスター -(2004/08/13(Fri) 18:42:28) [ID:57T32sOL]
http://www5f.biglobe.ne.jp/~dramonster/index.html
    私はドラモンスターです。

    ↓イベントデータここから

    Set キャラクター選択宣言
    Set 平和
    Talk システム
    $(キャラクター選択宣言)
    End
    Do
      Set 操作キャラクター行動中
      If キャラクター選択宣言 = 1 Then
       ForEach 味方 出撃
        味方キャラ[対象パイロット] = 対象パイロット
       Next
       Ask 味方キャラ 誰を操作しますか?
       UnSet キャラクター選択宣言
       操作味方キャラクター = 味方キャラ[選択]
      EndIf
      CityMove 操作味方キャラクター
    Loop While 平和

    ↑イベントデータここまで

    上記のイベントが正常に動きません。

    これはこういった動きをするものです。

    ・変数「キャラクター選択宣言」と変数「平和」を定義する。
    ・変数「キャラクター選択宣言」の内容を確認する。(ここでしっかり「1」と出ています)
    ・変数「平和」が削除されるまで行動用ルーチン「CityMove」の実行を繰り返す。

    If文以下のイベントは最初に動かすキャラクターを決めるもので、
    複数のキャラクター達はそのキャラクターを中心に行動します。

    しかし、どういうわけか変数「キャラクター選択宣言」が定義されていないと判定されるらしく、
    最初に動かすキャラクターを決める選択肢が出ません。

    それどころかキャラクターも決まっていないのに
    そのキャラクター(第1の引数)に完全に依存しているはずの
    行動用ルーチン「CityMove」が一度実行された後、
    「「」というパイロットは定義されていません」
    というエラーが出ます。

    キャラクターが決まっていなければ、
    1度目でエラーが出るはずなのですが、
    なぜか2度目で出ます。

    つまりは定義したはずの変数がIfで使えないという現象です。
    どうやればこのバグを解消できるのでしょうか。
引用返信/返信 削除キー/
■14865 / inTopicNo.2)  Re[1]: 定義された変数がIf文で使えない。
□投稿者/ DM -(2004/08/13(Fri) 23:53:05) [ID:hzM2FKCq]
    ぱっと見、UnSet使ってるのが悪いんじゃないかと。
引用返信/返信 削除キー/
■14867 / inTopicNo.3)  Re[1]: 定義された変数がIf文で使えない。
□投稿者/ 明けの明星 -(2004/08/14(Sat) 02:20:29) [ID:K8TJ2HHM]
    一回目のループで変数「キャラクター選択宣言」をunsetされてしまうので、二回目以降のループでは変数「キャラクター選択宣言」が存在しなくなります。

    ループ内に変数「キャラクター選択宣言」をsetするか、unsetを取り除く等の記述をすれば解決できるかと。
引用返信/返信 削除キー/
■14868 / inTopicNo.4)  Re[2]: 定義された変数がIf文で使えない。
□投稿者/ ドラモンスター -(2004/08/14(Sat) 02:48:35) [ID:57T32sOL]
http://www5f.biglobe.ne.jp/~dramonster/index.html
    私はドラモンスターです。

    If文以下のイベントは1回しか発生しなくていいんですよ。
    行動用ルーチン「CityMove」の中で再びSetしますので、
    その時に発生するのです。
    そもそもIf文以下のイベントは操作するキャラクターを変更するためのものなので、
    毎回発生していては不自然なことこの上ないです。
    事実毎回ウィンドウが出ていたらあまりにも煩わしいでしょう。

    それに問題はそこではありません。
    1回目でのキャラクターのセットは
    変数「操作味方キャラクター」にキャラクターを設定する必要があるために
    1回目は必ず発生させなければなりません。
    そのためにLoop文の外でSetしているのです。
    発生しないと、
    変数「操作味方キャラクター」にキャラクターがセットされないので、
    エラーが出るのは当然なんです。

    一応、DMさんの言われた方法を試みましたが、If文以下のイベントは発生しませんでした。
    UnSetを復活しても同じことでした。
    UnSet自体がIf文以下のイベントなので、これは当然ですね。

    因みに行動用ルーチン「CityMove」はキャラクターをRPG風に動かすためのものです。
    キーボードからの入力で操作しているキャラクターを行動させるためのルーチンです。
    今は、
    ・上下左右の各キーでその方向へ移動(この移動のためにパイロットの名前を入れる必要があります)
    ・Cで変数「キャラクター選択宣言」を作成(操作キャラクターを変えるための機能です)
    というシステムを組み込んでいます。


引用返信/返信 削除キー/
■14870 / inTopicNo.5)  Re[1]: Askの中身が空だと思われます
□投稿者/ axiom -(2004/08/14(Sat) 05:19:28) [ID:6uFJqsMt]
http://www.lilie.jp/itemworld/
    はじめまして。axiomと申します。

    > 最初に動かすキャラクターを決める選択肢が出ません。
    >「「」というパイロットは定義されていません」

    Askが出ないと言う事は
    1. Ifの条件を満たしていない
    2. 配列「味方キャラ」の値がすべて空文字
    のどちらかです。

    また、パイロット名が空文字で返っている事から、
    おそらく原因は2.だと思われます。

    ForEachの条件が「出撃」になっていますので、
    マップ上に味方ユニットが生成されていない限り、
    Askコマンドは表示されません。
    もう一度条件をお確かめ下さい。

    あと、これはアドバイスですが、
    デバッグ時にはTalkコマンドが非常に役に立つので、
    怪しいと思ったら、色々な場所に仕込んでみましょう。
    (この場合だと、Ifの直下やForEachループの中、関数CityMoveの中などですね)

    このときTalk文中に"$(変数名)"だけを書くのはやめたほうが良いです。
    変数が空だった場合は何も表示されないので、
    どこでエラーが起こってるかわからなくなるためです。
    具体的には以下のようにしてみてください。

    Talk システム
    宣言 = $(キャラクター選択宣言)
    End
引用返信/返信 削除キー/
■14872 / inTopicNo.6)  Re[2]: Askの中身が空だと思われます
□投稿者/ ドラモンスター -(2004/08/14(Sat) 05:43:41) [ID:57T32sOL]
http://www5f.biglobe.ne.jp/~dramonster/index.html
    私はドラモンスターです。

    おかげでなんとか動かすことができました。
    皆さん、ありがとうございました。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -