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

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

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

■1914 / inTopicNo.1)  自作精神コマンドで困っています。
  
□投稿者/ 幻狗 -(2002/02/12(Tue) 09:52:00)
    自分なりに頑張ってはいるのですが、どうもうまく行きません(泣
    どういう精神コマンドかと言うと、
    3回100%回避
    つまりひらめきが3回かかると言うもの

    なんでか、攻撃してきた敵にもひらめきがかかってしまうんです。

    *使用 全 鋭敏:
    If SP() < 40 Then
    Talk
    SPが足りません
    End
    ElseIf Mind(対象ユニット,ひらめき) Then
    Talk
    使用できません
    End
    Else
    Mind ひらめき
    MindAnime ひらめき 対象ユニット
    MindAnime ひらめき 対象ユニット
    MindAnime ひらめき 対象ユニット
    Set 鋭敏
    SP() = SP() - 40
    EndIf
    Exit

    ここまでは問題ないと思います。
    Q&Aの自作精神の頁のをいじくったので


    *行動終了 全:
    *攻撃後 対象ユニット 相手ユニット:
    If 鋭敏 = 1 Then
    If Mind(対象ユニット,ひらめき) Then
    Else
    Mind ひらめき
    Incr 鋭敏
    EndIf
    ElseIf 鋭敏 = 2 Then
    If Mind(対象ユニット,ひらめき) Then
    Else
    Mind ひらめき
    UnSet 鋭敏
    EndIf
    Else

    EndIf
    Exit

    消費SPやネーミングに付いては無視して下さい
引用返信/返信 削除キー/
■1915 / inTopicNo.2)  Re[1]: 自作精神コマンドで困っています。
□投稿者/ 安藤正樹@汎用 -(2002/02/12(Tue) 12:24:40)
    > *行動終了 全:
    > *攻撃後 対象ユニット 相手ユニット:

    「攻撃後」ラベルの使い方に問題があります。
    まずこの場合の対象ユニット、相手ユニットですが、
    実際には「攻撃後 全 全:」と何ら代わりありません。
    そして次が大問題なのですが、こうした指定をした場合、
    どちらが攻撃を仕掛けたかによって、代入される値が変わってしまうのです。

    プレイヤーが攻撃した(プレイヤーフェイズ)
     対象ユニット…味方機
     相手ユニット…敵機 or 中立機

    COMが攻撃した(敵 or 中立フェイズ)
     対象ユニット…敵機 or 中立機
     相手ユニット…味方機

    その点をふまえて「攻撃後」ラベルの因数を書き換えればOKだと思います。


    なお、If文がごちゃごちゃで見難くなったときは Switch文を使う手もありますよ。
    (無理に Else を使わないようにするだけでもスッキリしますが(^^;)

    さらに言うと…。
    この「鋭敏」を管理する変数が1つしかないため、
    どのキャラが精神[鋭敏]を使っているのか分からなくなってしまいます。
    (幻狗さんのインクルードでは、[鋭敏]を持っているかどうかの判定がないため)
    対象ユニットではなく対象ユニットIDを使うようにし、
    鋭敏[対象ユニットID] というように配列変数を使用する方が
    いいかもしれません。
    (このあたり、あまり覚えてないので詳しいことは他の方にお任せします(^^;)

引用返信/返信 削除キー/
■1916 / inTopicNo.3)  Re[1]: 自作精神コマンドで困っています。
□投稿者/ パルティア -(2002/02/12(Tue) 12:29:58)
http://a6stei10.hoops.ne.jp/
     攻撃後ラベルで、

    >*攻撃後 対象ユニット 相手ユニット

     となっていますが、このラベルだけですと、対象ユニットが敵が入ってしまう可能性が あります。なぜなら、攻撃ラベルおよび攻撃後ラベルはどっちが先に攻撃を仕掛けたか によって対象ユニットおよび相手ユニットが決まるからです。先に仕掛けたほうが対象 ユニット、仕掛けられた方が相手ユニットになります(詳しくは攻撃ラベルのヘルプ参 照)。したがって、このままでは敵味方関係なく対象ユニットの対象になってしまい、 その結果敵にまでひらめきがかかってしまうというわけです。

     さて対処法ですが次のようにすればいいかと思います。変更点は、
      1.対象ユニットと相手ユニットの陣営によってひらめきをかけるユニットを変える
      2.変数「鋭敏」を連想配列にする
     です。2.についてですが、鋭敏を連想配列にしておかないと、精神コマンドを使用して いないパイロットにまでひらめきがかかってしまう恐れがあることから採用しました。

     *攻撃後 全 全:
    # 先に仕掛けた方が味方→ひらめきの効果は対象ユニットへ
     If Party(対象ユニット) = 味方 Then
      If 鋭敏[対象ユニット] > 0 Then
       If Mind(対象ユニット,ひらめき) Then
        If 鋭敏[対象ユニット] = 1 Then
         Mind 対象ユニット ひらめき
         Incr 鋭敏[対象ユニット]
        ElseIf 鋭敏[対象ユニット] = 2 Then
         Mind 対象ユニット ひらめき
         Unset 鋭敏[対象ユニット]
        EndIf
       EndIf
      EndIf
    # 先に仕掛けたのが味方以外→ひらめきの効果は相手ユニットへ
     Else
      If 鋭敏[相手ユニット] > 0 Then
       If Mind(相手ユニット,ひらめき) Then
        If 鋭敏[相手ユニット] = 1 Then
         Mind 相手ユニット ひらめき
         Incr 鋭敏[相手ユニット]
        ElseIf 鋭敏[相手ユニット] = 2 Then
         Mind 相手ユニット ひらめき
         Unset 鋭敏[相手ユニット]
        EndIf
       EndIf
      EndIf
     EndIf
     Exit

     こんなところでしょうか。
引用返信/返信 削除キー/
■1917 / inTopicNo.4)  Re[2]: 自作精神コマンドで困っています。【補足】
□投稿者/ 安藤正樹@汎用 -(2002/02/12(Tue) 12:34:11)
    > COMが攻撃した(敵 or 中立フェイズ)
    >  対象ユニット…敵機 or 中立機
    >  相手ユニット…味方機

    補足
    厳密に書いたら以下の通りです(^^;
    NPCフェイズは割愛。

    敵フェイズ
     対象ユニット…敵機
     相手ユニット…味方機 or 中立機

    中立フェイズ
     対象ユニット…中立機
     相手ユニット…味方機 or 敵機

引用返信/返信 削除キー/
■1934 / inTopicNo.5)  お手上げています(困
□投稿者/ 幻狗 -(2002/02/12(Tue) 18:37:12)
    パルティアさんに作って頂いたものを使ってみたのですが
    うまくいきません
    5時にパソコンを立ち上げてから3時間…
    いじって試して、いじって試して……

    敵にひらめきがかからなくなったのはいいのですが、
    鋭敏を使ったキャラにもかからなくなってしまいました。
    以降鋭敏が使えなくなるし…

    安藤正樹@汎用さんが言ったSwitch文を使おうにも、
    ヘルプを見て
    「………条件式?この場合、条件は?」
    だめだなぁ自分

    ちょっと質問、ここって…
     If Party(対象ユニット) = 味方 Then
      If 鋭敏[対象ユニット] > 0 Then
       If Mind(対象ユニット,ひらめき) Then  ←ここ
        If 鋭敏[対象ユニット] = 1 Then

    対象にひらめきがかかっていたら下にいく訳ですよね?
    多分、違いますよね?
    ひらめきがかかっていなかったら
    再びひらめきがかかると言う風にするんですよね?


    もう一つ質問
    自作精神は、消費SPと説明はつけられないんでしょうか?
引用返信/返信 削除キー/
■1940 / inTopicNo.6)  Re[4]: お手上げています(困
□投稿者/ パルティア -(2002/02/12(Tue) 20:08:07)
http://a6stei10.hoops.ne.jp/
     動作チェックしてみたところ、ミスが見つかったので一応報告します。
     まず、ご質問のところ

    > If Party(対象ユニット) = 味方 Then
    >  If 鋭敏[対象ユニット] > 0 Then
    >   If Mind(対象ユニット,ひらめき) Then  ←ここ
    >    If 鋭敏[対象ユニット] = 1 Then
    >対象にひらめきがかかっていたら下にいく訳ですよね?
    >多分、違いますよね?
    >ひらめきがかかっていなかったら
    >再びひらめきがかかると言う風にするんですよね?

     はおっしゃるとおりで、ひらめきがかかっていないときに下に行くようにせねばなりませんから、

     If Mind(対象ユニット,ひらめき) = 0 Then

     とするのが正解です。ちなみに、

     If Mind(対象ユニット,ひらめき) Then

     とは

     If Mind(対象ユニット,ひらめき) = 1 Then

     と同義ですので、私の明らかなケアレスミスです。

     そして、重大なことが発覚しました。本体のバグなのかどうかはわかりませんが、「*使用 味方 鋭敏:」ラベルを用いると、二回目以降の鋭敏の選択を受け付けなくなることがテストの結果判明しました。他の精神コマンド名(例えば、俊足)を使うと上手く動作するようです。精神コマンド名を「俊足」に変えて、使用ラベルを「*使用 味方 俊足:」へ変更してみてください。SRC Ver1.6.50では正常に動作しました。

     念のため、テスト用のソースを書いておきます。ヘルプに載っていない特殊能力や精神コマンドがありますが、それは見なかったことにして下さい。動作上問題ありません。あと、パイロットは好きなユニットに乗せてあげてください。

    ### pilot.txt ################################

    シーフェ=ドレイベ
    シーフェ, 男性, バイアムスト, AAAA, 180
    特殊能力
    切り払いLv4, 1
    カウンターLv4, 1
    サポートアタックLv2, 1
    サポートガードLv1, 1
    耐久Lv2.5, 1
    120, 144, 149, 143, 177, 160, 普通
    精神, 60, 突撃, 1, 応援, 1, 偵察, 1, 祝福, 1, 俊足, 1, 魅惑, 1
    AMST_ThiefeDrabe.bmp, siny025.mid

    ### テストプログラム #################################

    プロローグ:
    Unit ユニット名 0
    Pilot シーフェ=ドレイベ 20
    Ride シーフェ
    Exit

    スタート:
    ChangeMap Map\EnsemblePlanet01.map
    Launch シーフェ 1 1
    For j = 1 To 4
     Create 敵 ザコユニット名 0 適当なザコパイロット 30 5 5
    Next
    Exit

    *使用 味方 俊足:
    Talk システム
    そんなものか
    End
    Ask "精神コマンド「俊足」を使用します。消費精神ポイントは40です。"
    使う
    使わない
    End
    If 選択 = 2 Exit
    If SP() < 40 Then
     Talk システム
     SPが足りません。
     End
     Exit
    EndIf
    If Mind(対象ユニット,ひらめき) = 1 Then
     Talk システム
     現在は使用できません。
     End
     Exit
    EndIf
    #MindAnime ひらめき 対象ユニットID
    #MindAnime ひらめき 対象ユニットID
    #MindAnime ひらめき 対象ユニットID
    SP() = SP() - 40
    Mind 対象ユニット ひらめき
    Set 鋭敏[対象ユニット] 1
    Exit

    *攻撃後 全 全:
    # 先に仕掛けた方が味方→ひらめきの効果は対象ユニットへ
     If Party(対象ユニット) = 味方 Then
      Talk システム
      鋭敏の効果は$(鋭敏[対象ユニット])
      End
      If 鋭敏[対象ユニット] > 0 Then
       If Mind(対象ユニット,ひらめき) = 0 Then
        Talk システム
        対象ユニット側に回りました。
        End
        If 鋭敏[対象ユニット] = 1 Then
         Mind 対象ユニット ひらめき
         Incr 鋭敏[対象ユニット] 1
        ElseIf 鋭敏[対象ユニット] = 2 Then
         Mind 対象ユニット ひらめき
         UnSet 鋭敏[対象ユニット]
        EndIf
       EndIf
      EndIf
    # 先に仕掛けたのが味方以外→ひらめきの効果は相手ユニットへ
     Else
      Talk システム
      鋭敏の効果は$(鋭敏[相手ユニット])
      End
      If 鋭敏[相手ユニット] > 0 Then
       If Mind(相手ユニット,ひらめき) = 0 Then
        Talk システム
        相手ユニット側に回りました。
        End
        If 鋭敏[相手ユニット] = 1 Then
         Talk システム
         1側に回りました
         End
         Mind 相手ユニット ひらめき
         Incr 鋭敏[相手ユニット]
        ElseIf 鋭敏[相手ユニット] = 2 Then
         Mind 相手ユニット ひらめき
         UnSet 鋭敏[相手ユニット]
        EndIf
       EndIf
      EndIf
     EndIf
    Exit

引用返信/返信 削除キー/
■1941 / inTopicNo.7)  自作精神コマンドの説明について
□投稿者/ パルティア -(2002/02/12(Tue) 20:13:19)
http://a6stei10.hoops.ne.jp/
     もう一つの質問である「自作精神コマンドの説明と消費SPの変更」については、現状では不可能です。リクエスト掲示板でのリクエストがちらほら見かけられるにも関わらず、実現されていません。きっと、精神コマンド関係の本体のプログラムは複雑だからなんでしょう。たぶん。
引用返信/返信 削除キー/
■1950 / inTopicNo.8)  ありがとうございました(嬉
□投稿者/ 幻狗 -(2002/02/12(Tue) 22:29:29)
    うまい事いきました!
    本当にありがとうございました。

    説明は使う前に入れておけばいいとして
    あとは名前かぁ…
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -