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

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

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

■9446 / inTopicNo.1)  インクルードの作成中
  
□投稿者/ 葵どんぶり -(2003/07/22(Tue) 14:05:15)
    葵どんぶりです。
    PP育成の簡易版を作成しているのですが、
    ifの条件は満たしているのですが、elseへいってしまいます。
    なにとぞ、ご教授御願いします。

    前ステージにて、
    set XXパイロットポイント 50

    インクル
    プロローグ:
    UnSet メンバーリスト
    ForEach 味方 待機
    Set メンバーリスト[i] 対象ユニットID
    Incr i
    Next
    Exit

    ###略#

    格闘強化:
    talk システム
    格闘を+5します。
    end
    Do
    Ask メンバーリスト パイロット選択 キャンセル可
    選択メンバー = メンバーリスト[選択]
    If メンバーリスト[選択] = "" Then
    FadeOut 10
    ClearPicture
    ClearObj
    Goto スタート
    EndIf
    Confirm このパイロットでよろしいですか?
    Loop While (選択 = 0)
    If Info(ユニット,選択メンバー,愛称)パイロットポイント > 20 Then
    incr $(Info(ユニット,選択メンバー,愛称))パイロットポイント -20
    SetAbility Pilot(選択メンバー) 格闘強化 5
    Talk システム
    $(対象ユニット)の格闘が+5されました。
    End
    GOTO スタート
    Exit
    Else
    Talk システム
    パイロットポイントが足りません
    End
    GOTO 格闘強化
    EndIf
    Exit

    改造モトは開発支援センターの強化・訓練インクルードですが、
    許可は取ってあります。
    どうぞ、よろしく御願いします。
引用返信/返信 削除キー/
■9448 / inTopicNo.2)  ちょいと考えて見ましょう
□投稿者/ TomTom -(2003/07/22(Tue) 14:29:29)
    TomTomです。

    修正箇所をそのまま教えても構わないのですが、それでは面白くないので(笑)
    まずはちょこっとヒントだけ。

    現在、
     XXパイロットポイント(XXはパイロット愛称、ということでよいでしょうか?)
    という変数にパイロットポイントの記録をしているようですが、
    これを「配列変数」に格納する用にしてみましょう。

    その上で、
     Info(ユニット,選択メンバー,愛称)パイロットポイント
    という記述を修正しましょう。

    ヘルプの「変数と式」(開発版なら「変数」)の、
    「連想配列」という辺りと睨めっこして考えてみてください。



引用返信/返信 削除キー/
■9452 / inTopicNo.3)  Re[2]: ちょいと考えて見ましょう
□投稿者/ 葵どんぶり -(2003/07/22(Tue) 17:26:33)
    返信ありがとうございます。
    つまり

    ForEach 味方
    [対象ユニット愛称]パイロットポイント = 0
    Next
    global パイロットポイント
    ということでしょうか?
引用返信/返信 削除キー/
■9455 / inTopicNo.4)  Re[3]: ちょいと考えて見ましょう
□投稿者/ TomTom -(2003/07/22(Tue) 18:59:19)
    TomTom

    >ForEach 味方
    >[対象ユニット愛称]パイロットポイント = 0
    >Next
    >global パイロットポイント
    >ということでしょうか?

    まず、Globalは指定した変数を使うよりも先に記述しなければいけません。
    配列の使い方は惜しいのですが、ちと間違っていますね。[]は変数名の後ろに付きます。
    また、「対象ユニット愛称」という変数も存在しないので、NickName関数で愛称を取得しなければいけません。
    ですから正しくは、

     Global パイロットポイント
     ForEach 味方
      パイロットポイント[NickName()] = 0
     Next

    と、このような記述になります。ただ、これではあくまで
    「味方パイロットのPP初期値を全て0に設定する」
    というだけなので、先ほどの葵どんぶりさんの記述と照らし合わせると、

    >前ステージにて、
    >set XXパイロットポイント 50

    この部分を、全員分設定した、ということに過ぎません。(設定値は0ですが)

    これを踏まえた上でもう一度、

     Info(ユニット,選択メンバー,愛称)パイロットポイント

    この部分について考えてみましょう。
    パイロット育成のインクルードを改造するなら、配列は
     「必ず」
    必要になる機能なので、これを機にきっちり理解した方がよろしいと思いますので。
引用返信/返信 削除キー/
■9458 / inTopicNo.5)  Re[4]: ちょいと考えて見ましょう
□投稿者/ 葵どんぶり -(2003/07/22(Tue) 21:52:26)
    バカに付き合ってもらってありがとうございます。

    foreach 味方

    を書き込み、
    incr パイロットポイントXX 500
    talk システム
    $(パイロットポイントXX)です。
    end
    で確認した所
    500です。
    とでました。ここまでは良くなったようです。どうもありがとうございます。

    自分なりに考えたのですが、
    単に
    if パイロットポイントInfo(ユニット,選択メンバー,愛称)〜
    では、「パイロットポイントInfo(ユニット,選択メンバー,愛称)」という変数と認識されてしまうようですし。
    $は印字のとき用なので、効果はないようですし・・・・
    info周りを()で囲んでも効果はありませんでした。


引用返信/返信 削除キー/
■9459 / inTopicNo.6)  まだちょっと配列に誤解が。
□投稿者/ TomTom -(2003/07/22(Tue) 22:05:00)
    あと一息ですね。

    >では、「パイロットポイントInfo(ユニット,選択メンバー,愛称)」という変数と認識されてしまうようですし。

    配列の添字(「Info(ユニット,選択メンバー,愛称)」の部分)は[]で括る必要があります。
    ですからこの場合は、

     パイロットポイント[Info(ユニット,選択メンバー,愛称)]

    となります。(上のIncrコマンドも「Incr パイロットポイント[XX] 500」に)
    また、愛称の取得はInfo関数で行うより、「NickName(選択メンバー)」とした方が簡潔ですね。
    ただ、同じ愛称のパイロットがいた場合に誤作動を起こすので、
    そのまま「選択メンバー」とだけにした方がよいかもしれません。

引用返信/返信 削除キー/
■9464 / inTopicNo.7)  Re[6]: まだちょっと配列に誤解が。
□投稿者/ 葵どんぶり -(2003/07/22(Tue) 23:02:26)
    If パイロットポイント[Info(ユニット,選択メンバー,愛称)] > 20 Then
    incr パイロットポイントInfo(ユニット,選択メンバー,愛称) -20
    SetAbility Pilot(選択メンバー) 格闘強化 5
    Talk システム
    $(対象ユニット)の格闘が+5されました。
    End
    GOTO スタート
    Exit


    If パイロットポイント[Info(ユニット,選択メンバー,愛称)] > 20 Then
                                 ↑
    を、<にしてみたら、成功しました。
    (ここだけで判断するに、数値が足りなかったようです。)
    ですが、tomtomさんのいう配列に誤解が、というのも気になるので・・・
    ほかにミスがありましたら、ご指摘ください
引用返信/返信 削除キー/
■9465 / inTopicNo.8)  Re[7]: まだちょっと配列に誤解が。
□投稿者/ TomTom -(2003/07/22(Tue) 23:17:22)
    まだちょっと変です。

     incr パイロットポイントInfo(ユニット,選択メンバー,愛称) -20

    ここの「Info(ユニット,選択メンバー,愛称)」も[]で括らないといけません。
    #というか、これ以外にも同様の記述があれば全てです。

    あと、不等号の>を<にしたら成功した、という事ですが、
    恐らくはパイロットポイントの初期値の設定段階で

     パイロットポイントInfo(ユニット,選択メンバー,愛称)

    としているため、

     パイロットポイント[Info(ユニット,選択メンバー,愛称)]

    には何も入っていない状態(つまり0)になっていただけだと思います。
    不等号は、正確には「>=」が正しいはずです。

    あと、先ほども書いたように[]の中は下手にInfo関数を使わずに、
    「選択メンバー」とだけ記述した方が良いでしょう。


    配列に誤解というのは、配列の記述方法に誤解がある、ということですね。
     
     パイロットポイントInfo(ユニット,選択メンバー,愛称)

    と、このような記述がまだ見受けられますので。
    「Info(ユニット,選択メンバー,愛称)」の部分は[]で括らなければなりません。


引用返信/返信 削除キー/
■9468 / inTopicNo.9)  Re[8]: まだちょっと配列に誤解が。
□投稿者/ 葵どんぶり -(2003/07/23(Wed) 10:14:22)
    tomtomさん、ありがとうございます。
    何とか、動作しましたので、上げてみます。

    前ステージにて
    Global パイロットポイント
     ForEach 味方
      パイロットポイント[NickName()] = 0
     Next
    incr パイロットポイント[NickName(XYZ)] 500

    インクルにて

    XYZを選択

    If パイロットポイント[NickName(選択メンバー)] > 20 Then
    incr パイロットポイント[NickName(選択メンバー)] -20
    SetAbility Pilot(選択メンバー) 格闘強化 5
    Talk システム
    $(選択メンバー)の格闘が+5されました。
    End
    talk システム
    $(選択メンバー)の残りパイロットポイントは;:$(パイロットポイント[NickName(選択メンバー)])です。
    end
    GOTO スタート
    Exit
    Else
    Talk システム
    PPがたりません
    End
    GOTO 格闘強化
    EndIf
    Exit

    これで・・正解(?)でしょうか?
引用返信/返信 削除キー/
■9471 / inTopicNo.10)  Re[9]: まだちょっと配列に誤解が。
□投稿者/ TomTom -(2003/07/23(Wed) 17:35:56)
    はい、概ねそのような形でよろしいかと思います。
引用返信/返信 削除キー/
■9473 / inTopicNo.11)  Re[10]: まだちょっと配列に誤解が。
□投稿者/ 葵どんぶり -(2003/07/23(Wed) 18:36:39)
    tomtomさん、丁寧に教えてくださってありがとうございました。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -