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

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

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

■3192 / inTopicNo.1)  特定のキャラ三人が存在する場合に発動する能力
  
□投稿者/ ストーンゴッド -(2002/04/29(Mon) 21:36:20)
    ども、こんにちは
    ストーンゴッドと申します。

    制作中のシナリオで、特定の三人が一定の範囲内に存在した場合
    能力値がアップするというインクルードを制作したいのですが

    その方法がよくわかりません、製作法を知っている方がおりましたら
    ぜひとも教えてください。

    それでは。
引用返信/返信 削除キー/
■3194 / inTopicNo.2)  Re[1]: 特定のキャラ三人が存在する場合に発動する能力
□投稿者/ 幻魔の公子 -(2002/04/29(Mon) 22:29:05)
     幻魔の公子です。

     特定の範囲というのは、合体技のように一箇所にまとまっていれば、ということでしょうか?
     であれば、行動終了や攻撃などのイベントでユニット間の距離を調べ、一定以下ならば能力が発動する、とすればよろしいかと。

     もしくは、特定の範囲内の座標に居れば、ならば、同じく行動終了などで座標を調べ、その範囲内にいなければイベント終了、いれば特殊能力発動、とすればよろしいかと。
     少々わかりにくいと思うので、こちらはもう少し具体的に書いておきます。

     例えば、X座標が5〜10、Y座標が1〜4の範囲内にいる場合とすると、

    If (X(キャラクター1) < 5) Or (X(キャラクター1) > 10) Exit
    If (Y(キャラクター1) > 4) Exit

     というのをその3人のキャラに対して作り、その下に特殊能力発動のイベントを記述するわけです。

     それでは。

引用返信/返信 削除キー/
■3195 / inTopicNo.3)  Re[2]: 特定のキャラ三人が存在する場合に発動する能力
□投稿者/ ストーンゴッド -(2002/04/29(Mon) 23:53:58)

    幻魔の公子さん、お答えいただきありがとうございます。

    特定の範囲と言うのは、幻魔の公子さんが最初にお答えくださった

    >特定の範囲というのは、合体技のように一箇所にまとまっていれば、ということでしょ>うか?
    >であれば、行動終了や攻撃などのイベントでユニット間の距離を調べ、一定以下ならば>能力が発動する、とすればよろしいかと。

    のほうです。

    これは、いわゆる「戦隊物なので、全員が集まっていると強くなる」というのを
    再現するためのものです。

    もし、よろしければ具体的な方法をお教え願えませんか?
    どうもお手数をおかけします。

    それでは。
引用返信/返信 削除キー/
■3196 / inTopicNo.4)  Re[3]: 特定のキャラ三人が存在する場合に発動する能力
□投稿者/ 幻魔の公子 -(2002/04/30(Tue) 00:06:00)
     幻魔の公子です。

     具体的ってほど難しいことはしないです。行動終了と攻撃イベントあたりで、X関数とY関数を使って距離を調べて、必要な〜〜UPをSetAbilityするだけでおっけーでしょうか。

     それでは。

引用返信/返信 削除キー/
■3197 / inTopicNo.5)  Re[4]: 特定のキャラ三人が存在する場合に発動する能力
□投稿者/ ストーンゴッド -(2002/04/30(Tue) 01:17:03)
    幻魔の公子さん、ありがとうございました。

    正直、「X関数とY関数を使って距離を調べて」とか方法はよくわからないのですが
    ヘルプを読んでチャレンジしてみます。

    どうしても、わからなかったらその時はまたよろしくお願いします。

    それでは。
引用返信/返信 削除キー/
■3198 / inTopicNo.6)  Re[5]: 作ってみました
□投稿者/ ストーンゴッド -(2002/04/30(Tue) 02:18:03)
    さっそく、作ってみました。

    これは、「ブルービート・レッドル・ジースタッグ」の三体がお互い三マス以内に
    存在していると能力が上がるというのをやってみたのですが
    どうでしょうか?




    ターン 全 味方:

    Call ビーファイター距離

    If (X(ブルービート) < 1) - (X(ジースタッグ) > 3)
    If (Y(ブルービート) < 1) - (Y(ジースタッグ) > 3)
    If (X(ブルービート) < 1) - (X(レッドル) > 3)
    If (Y(ブルービート) < 1) - (Y(レッドル) > 3)

    SetStatus 攻撃力UP ブルービート 1
    SetStatus 防御力UP ブルービート 1
    SetStatus 運動性UP ブルービート 1


    If (X(ジースタッグ) < 1) - (X(ブルービート) > 3)
    If (Y(ジースタッグ) < 1) - (Y(ブルービート) > 3)
    If (X(ジースタッグ) < 1) - (X(レッドル) > 3)
    If (Y(ジースタッグ) < 1) - (Y(レッドル) > 3)

    SetStatus 攻撃力UP ジースタッグ 1
    SetStatus 防御力UP ジースタッグ 1
    SetStatus 運動性UP ジースタッグ 1


    If (X(レッドル) < 1) - (X(ブルービート) > 3)
    If (Y(レッドル) < 1) - (Y(ブルービート) > 3)
    If (X(レッドル) < 1) - (X(ジースタッグ) > 3)
    If (Y(レッドル) < 1) - (Y(ジースタッグ) > 3)

    SetStatus 攻撃力UP レッドル 1
    SetStatus 防御力UP レッドル 1
    SetStatus 運動性UP レッドル 1


    Exit

    #ここよりインクルード部分

    ビーファイター距離:

    Local xB&G yB&G xB&R yB&R xG&B yG&B xG&R yG&R xR&B yR&B xR&G yR&G

    xB&G = Abs(X(ブルービート)) - (X(ジースタッグ))
    yB&G = Abs(Y(ブルービート)) - (Y(ジースタッグ))
    xB&R = Abs(X(ブルービート)) - (X(レッドル))
    yB&R = Abs(Y(ブルービート)) - (Y(レッドル))

    xG&B = Abs(X(ジースタッグ)) - (X(ブルービート))
    yG&B = Abs(Y(ジースタッグ)) - (Y(ブルービート))
    xG&R = Abs(X(ジースタッグ)) - (X(レッドル))
    yG&R = Abs(Y(ジースタッグ)) - (Y(レッドル))

    xR&B = Abs(X(レッドル)) - (X(ブルービート))
    yR&B = Abs(Y(レッドル)) - (Y(ブルービート))
    xR&G = Abs(X(レッドル)) - (X(ジースタッグ))
    yR&G = Abs(Y(レッドル)) - (Y(ジースタッグ))

    Return (xB&G + yB&G) (xB&R + yB&R) (xG&B + yG&B) (xG&R + yG&R) (xR&B + yR&B) (xR&G + yR&G)

引用返信/返信 削除キー/
■3208 / inTopicNo.7)  Re[6]: 作ってみました
□投稿者/ 幻魔の公子 -(2002/04/30(Tue) 11:26:37)
     幻魔の公子です。

     動作テストをしてみましたか? してみたら一発で理解できるはずです。動かないと言うことが。

     まず、重大な問題ですが、Returnコマンドの引数は一つしか指定できません。
     それから、Callコマンドで返値は意味がありません。Call関数ならあります。
     距離の求め方は理解されているようですが、それ以外の部分が問題ですね。

     さて、とりあえず動作するレベルにするために変えるべき点としては、変数をLocalで指定するのはやめましょう。
     そうすれば、各ユニットの距離を算出した変数がそのまま使えます。

     そうして、

    >If (X(ブルービート) < 1) - (X(ジースタッグ) > 3)
    >If (Y(ブルービート) < 1) - (Y(ジースタッグ) > 3)
    >If (X(ブルービート) < 1) - (X(レッドル) > 3)
    >If (Y(ブルービート) < 1) - (Y(レッドル) > 3)

     この辺りの部分を、その変数(つまり、xB&G、yB&G、xB&R、yB&Rの4つ)が4以上であれば「Exit」するIf文に切り替えればよろしいでしょう。
     Ifコマンドの書式1の説明を参照してみて下さい。それをする方法が書かれています。
     あ、説明するまでもないでしょうが、引用部分だけでなく、下二つもですので。

     それと、Setの値に演算子を使った式を使う場合には、値を半角括弧で囲む必要があります。

     上記の点を直せば、たぶん、とりあえず動くようにはなると思います。動かしてみていないので、まだ見落としがあるかもしれませんが、その場合にはレスをいただければ。

     それでは。

引用返信/返信 削除キー/
■3219 / inTopicNo.8)  Re[7]: 作ってみました
□投稿者/ ストーンゴッド -(2002/04/30(Tue) 22:43:26)
    こんにちは、ストーンゴッドです。

    >動作テストをしてみましたか? してみたら一発で理解できるはずです。動かないと言>うことが。
    確かに、動作テストをしていませんでした。
    これからは気をつけます、どうもすみませんでした。


    それで、幻魔の公子さんのアドバイスを参考に直してエラーはでなくなったのですが
    うまく能力が発動されません。

    それと
    >Setの値に演算子を使った式を使う場合には、値を半角括弧で囲む必要があります。
    のくだりの、囲う値の部分がよく分かりませんでした。
    こちらの理解力が悪くて申し訳ありませんが、もう一度よろしくお願いします。


    ターン 全 味方:

    Call ビーファイター距離

    If xB&G + yB&G + xB&R + yB&R = 4 Then Exit


    SetStatus 移動力UP ブルービート 1


    If xG&B + yG&B + xG&R + yG&R = 4 Then Exit

    SetStatus 移動力UP ジースタッグ 1

    If xR&B + yR&B + xR&G + yR&G = 4 Then Exit

    SetStatus 移動力UP レッドル 1


    Exit



    ビーファイター距離:

    Set xB&G
    Set yB&G
    Set xB&R
    Set yB&R
    Set xG&B
    Set yG&B
    Set xG&R
    Set yG&R
    Set xR&B
    Set yR&B
    Set xR&G
    Set yR&G

    xB&G = Abs(X(ブルービート)) - (X(ジースタッグ))
    yB&G = Abs(Y(ブルービート)) - (Y(ジースタッグ))
    xB&R = Abs(X(ブルービート)) - (X(レッドル))
    yB&R = Abs(Y(ブルービート)) - (Y(レッドル))

    xG&B = Abs(X(ジースタッグ)) - (X(ブルービート))
    yG&B = Abs(Y(ジースタッグ)) - (Y(ブルービート))
    xG&R = Abs(X(ジースタッグ)) - (X(レッドル))
    yG&R = Abs(Y(ジースタッグ)) - (Y(レッドル))

    xR&B = Abs(X(レッドル)) - (X(ブルービート))
    yR&B = Abs(Y(レッドル)) - (Y(ブルービート))
    xR&G = Abs(X(レッドル)) - (X(ジースタッグ))
    yR&G = Abs(Y(レッドル)) - (Y(ジースタッグ))

    Exit






引用返信/返信 削除キー/
■3225 / inTopicNo.9)  Re[8]: 作ってみました
□投稿者/ 幻魔の公子 -(2002/05/01(Wed) 10:13:14)

    幻魔の公子です。

    まぁ、動かないでしょうね。
    まず、Ifの書式が間違っています。書式をよく見ると分かると思いますが、不要なものが含まれています。
    それから、条件式も……動くわけありません。加算している各変数は常に1以上に決まっているのですから。3人が全員隣接していなければ動きません。
    各変数が、それぞれ4以上であるかどうかをチェックするようにするのです。

    それから、括弧ですが……演算子を使う場合は常に囲む、と思ってください。演算子を(もちろん、=以外の)使っている場所を全て囲みましょう。

    それでは。

引用返信/返信 削除キー/
■3227 / inTopicNo.10)  Re[9]: 作ってみました
□投稿者/ ストーンゴッド -(2002/05/01(Wed) 14:02:22)
    こんにちは、ストーンゴッドです。

    幻魔の公子さんのおっしゃられることが、よくわからなかったのですが
    ヘルプを見ながら格闘してみました。

    とりあえずIf式の=を抜いて>に置き換えてみました
    後は、Setコマンドの値に演算子を入れて、各変数が4以上になるようにすればいいのだと思うのですが、これ以上よくわかりませんでした。

    すみませんが、またよろしくお願いします。

    ターン 全 味方:

    Call ビーファイター距離

    If (xB&G + yB&G + xB&R + yB&R) > 4 Then Exit


    SetStatus 移動力UP ブルービート 1


    If (xG&B + yG&B + xG&R + yG&R) > 4 Then Exit

    SetStatus 移動力UP ジースタッグ 1

    If (xR&B + yR&B + xR&G + yR&G) > 4 Then Exit

    SetStatus 移動力UP レッドル 1

    Talk ブルービート
    これが、俺達ビーファイターの絆だ!!
    end

    Exit



    ビーファイター距離:

    xB&G = Abs(X(ブルービート)) - (X(ジースタッグ))
    yB&G = Abs(Y(ブルービート)) - (Y(ジースタッグ))
    xB&R = Abs(X(ブルービート)) - (X(レッドル))
    yB&R = Abs(Y(ブルービート)) - (Y(レッドル))

    xG&B = Abs(X(ジースタッグ)) - (X(ブルービート))
    yG&B = Abs(Y(ジースタッグ)) - (Y(ブルービート))
    xG&R = Abs(X(ジースタッグ)) - (X(レッドル))
    yG&R = Abs(Y(ジースタッグ)) - (Y(レッドル))

    xR&B = Abs(X(レッドル)) - (X(ブルービート))
    yR&B = Abs(Y(レッドル)) - (Y(ブルービート))
    xR&G = Abs(X(レッドル)) - (X(ジースタッグ))
    yR&G = Abs(Y(レッドル)) - (Y(ジースタッグ))


    Set xB&G
    Set yB&G
    Set xB&R
    Set yB&R

    Set xG&B
    Set yG&B
    Set xG&R
    Set yG&R

    Set xR&B
    Set yR&B
    Set xR&G
    Set yR&G


引用返信/返信 削除キー/
■3232 / inTopicNo.11)  Re[1]: 特定のキャラ三人が存在する場合に発動する能力
□投稿者/ ヒロキ -(2002/05/01(Wed) 15:53:04)
    こんにちは、ヒロキです。

    暇だったんでちょっと書いてみました。
    何かの足しにでもしてください

    それでは

    *ターン 全 味方:
    Local GtoB GtoR RtoB

    GtoB = GetDistance(ジースタッグ,ブルービート)
    GtoR = GetDistance(ジースタッグ,レッドル)
    RtoB = GetDistance(レッドル,ブルービート)

    If GtoB < 4 And GtoR < 4 Then
    SetStatus 攻撃力UP ジースタッグ 1
    SetStatus 防御力UP ジースタッグ 1
    SetStatus 運動性UP ジースタッグ 1
    EndIf

    If GtoB < 4 And RtoB < 4 Then
    SetStatus 攻撃力UP ブルービート 1
    SetStatus 防御力UP ブルービート 1
    SetStatus 運動性UP ブルービート 1
    EndIf

    If RtoB < 4 And GtoR < 4 Then
    SetStatus 攻撃力UP レッドル 1
    SetStatus 防御力UP レッドル 1
    SetStatus 運動性UP レッドル 1
    EndIf

    Exit


    GetDistance:
    If Status(Args(1)) != 出撃 Or Status(Args(2)) != 出撃 Then
    Return 99
    EndIf
    Retrun (Abs(X(Args(1)) - X(Args(2))) + Abs(Y(Args(1)) - Y(Args(2))))
引用返信/返信 削除キー/
■3239 / inTopicNo.12)  Re[6]: 作ってみました
□投稿者/ 幻魔の公子 -(2002/05/01(Wed) 20:58:53)
     幻魔の公子です。
     ヒロキさんのレスを見れば出来ると思いますが、まぁ一応レスしておきます。

    >とりあえずIf式の=を抜いて>に置き換えてみました
    >後は、Setコマンドの値に演算子を入れて、各変数が4以上になるようにすればいいのだと思うのですが、これ以上よくわかりませんでした。
     うにゅ、全然的外れです。
     それでは、もうちょい具体的に説明しましょう。

    >If (xB&G + yB&G + xB&R + yB&R) > 4 Then Exit

     まず、Thenが不要です。

     それから、これは各キャラの距離の合計が5以上だと実行しません。
     例えば、2距離と3距離などだと実行されないわけです。確か、3距離以内だったら実行する、でしたよね?

    >xB&G = Abs(X(ブルービート)) - (X(ジースタッグ))

     次にここですが、括弧で囲めと言っているのはここのことです。
     どれとどれが対応していくか確認すればわかると思いますが、(X(ブルービート))と(X(ジースタッグ))で対応が完結しており、真ん中の減算記号が括弧で囲まれていません。

     それでは。

引用返信/返信 削除キー/
■3242 / inTopicNo.13)  幻魔の公子さんとヒロキさんへ
□投稿者/ ストーンゴッド -(2002/05/01(Wed) 21:43:21)
    どうも、ストーンゴッドです。

    幻魔の公子さん、今回は長々とお付き合いいただき
    どうもありがとうございました。
    そして、根気よく私に説明してくれたことを感謝いたします。

    そして、ヒロキさん
    わざわざ参考になるものを作っていただきありがとうございました。



    それでは。






引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -