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

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

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

■1362 / inTopicNo.1)  教えて下さいパートナー修正
  
□投稿者/ 幻狗 -(2002/01/12(Sat) 19:19:44)
    自分もパートナー修正を取り入れたいと思い
    BOROさんの許可もなく過去ログから引っ張り出してきました。


    パートナー[ファ] = カミーユ
    パートナー[カミーユ] = ファ

    *攻撃 味方 敵 :
    *行動終了 味方:
    If IsVarDefined(パートナー[対象ユニット]) = 0 Exit
    If Call(ユニット間距離判定,対象ユニット) < 2 Then
    If IsEquiped(パートナー修正) > 0 Then
    Item パートナー修正
    Equip 対象ユニット パートナー修正
    Equip パートナー[対象ユニット] パートナー修正
    EndIf
    Exit
    Else
    RemoveItem 対象ユニット パートナー修正
    RemoveItem パートナー[対象ユニット] パートナー修正
    EndIf
    Exit

    ユニット間距離判定:
    X距離 = Abs(X(Args(1)) - X(パートナー[Args(1)]))
    Y距離 = Abs(Y(Args(1)) - Y(パートナー[Args(1)]))
    ユニット間距離 (X座標 + Y座標)
    Return ユニット間距離


    過去ログ「パートナー修正」
    最後の方がうやむやに終わっていたので質問なのですが
    こういう風にすればよいのですか?

    If IsEquiped(対象ユニット,パートナー修正) = 0 Then


    あと、すごく間抜けな質問なのですが
    対象ユニット パートナー[対象ユニット]
    はそのままですか?それとも
    カミーユ パートナー[ファ]
    という様にそれぞれパイロット名を入れるのでしょうか?

    お教え下さいませ
引用返信/返信 削除キー/
■1364 / inTopicNo.2)  Re[1]: 教えて下さいパートナー修正
□投稿者/ 幻魔の公子 -(2002/01/12(Sat) 19:39:44)
     ちーす、確かそのときに答えていた幻魔の公子です。

    > 自分もパートナー修正を取り入れたいと思い
    > BOROさんの許可もなく過去ログから引っ張り出してきました。
     とりあえず、他人の作ったインクルを無断で引っ張るのはやめた方がよろしいかと。
     好きに使って良いとか書いている場合は構わないですが。

     まぁ、使用許可に関してはBOROさんと話し合っていただくとして、質問の返信です。

    > 過去ログ「パートナー修正」
    > 最後の方がうやむやに終わっていたので質問なのですが
    > こういう風にすればよいのですか?
    >
    > If IsEquiped(対象ユニット,パートナー修正) = 0 Then
     はい、その通りです。
     装備していない場合に装備する、というインクルですから、装備していない状態を表す0が返ってきた場合にコマンドを実行するわけですから。

    > あと、すごく間抜けな質問なのですが
    > 対象ユニット パートナー[対象ユニット]
    > はそのままですか?それとも
    > カミーユ パートナー[ファ]
    > という様にそれぞれパイロット名を入れるのでしょうか?
     そのままです。
     対象ユニット、というのは、イベントの対象になったユニットを表すシステム変数です。つまり、カミーユがそのイベントの対象になった場合には、「対象ユニット」は自動的に「カミーユ=ビダン」に置き換えられます。
     詳しくは、HELPの「変数と式」の項を参照してみて下さい。

     それでは。

引用返信/返信 削除キー/
■1365 / inTopicNo.3)  Re[2]: 教えて下さいパートナー修正
□投稿者/ 幻狗 -(2002/01/12(Sat) 19:50:17)
    お答えありがとうございます。
    あとはBOROさんに事後承諾してもらえれば無事解決
    解決済み!にチェックが入れられるわけですね。

    マナー違反をしてしまった……
引用返信/返信 削除キー/
■1366 / inTopicNo.4)  発動しないのですが…
□投稿者/ 幻狗 -(2002/01/12(Sat) 20:07:21)
    どこが悪いのでしょうか
    自分の作っている用に先程のとは違うのですが
    といっても、パートナーだった所をライバルに換えただけなんですけど
    ちゃんとアイテムもライバル修正にしてあるし…
    どこが悪いか見てもらえますでしょうか?


    ライバル[アレフ] = アモン
    ライバル[アモン] = アレフ

    *攻撃 味方 敵:
    *行動終了 味方:
    If IsVarDefined(ライバル[対象ユニット]) = 0 Exit
    If Call(ユニット間距離判定,対象ユニット) < 2 Then
    If IsEquiped(対象ユニット,ライバル修正) = 0 Then
    Item ライバル修正
    Equip 対象ユニット ライバル修正
    Equip ライバル[対象ユニット] ライバル修正
    EndIf
    Exit
    Else
    RemoveItem 対象ユニット ライバル修正
    RemoveItem ライバル[対象ユニット] ライバル修正
    EndIf
    Exit

    ユニット間距離判定:
    X距離 = Abs(X(Args(1)) - X(ライバル[Args(1)]))
    Y距離 = Abs(Y(Args(1)) - Y(ライバル[Args(1)]))
    ユニット間距離 (X座標 + Y座標)
    Return ユニット間距離
引用返信/返信 削除キー/
■1368 / inTopicNo.5)  Re[3]: 発動しないのですが…
□投稿者/ 幻魔の公子 -(2002/01/12(Sat) 21:21:51)
     幻魔の公子です。
     とりあえず動くまでいじってみました。
     忍と沙羅に変わってるのは気にしないで下さい。インクルのチェックするとき、ダンクーガかガンダムXのキャラ使うことにしてるんで。

    ライバル[藤原忍] = 結城沙羅
    ライバル[結城沙羅] = 藤原忍

    *攻撃 味方 敵:
    *行動終了 味方:
    If IsVarDefined(ライバル[対象ユニット]) = 0 Exit
    If Call(ユニット間距離判定,対象ユニット) < 2 Then
    If IsEquiped(対象ユニット,ライバル修正) = 0 Then
    Item ライバル修正
    Equip 対象ユニット ライバル修正
    Item ライバル修正
    Equip ライバル[対象ユニット] ライバル修正
    EndIf
    Else
    RemoveItem 対象ユニット ライバル修正
    RemoveItem ライバル[対象ユニット] ライバル修正
    EndIf
    Exit

    ユニット間距離判定:
    X距離 = Abs(X(Args(1)) - X(ライバル[Args(1)]))
    Y距離 = Abs(Y(Args(1)) - Y(ライバル[Args(1)]))
    ユニット間距離 = (X距離 + Y距離)
    Return ユニット間距離

     問題点ですが

    ・「対象ユニット」という変数は、正式名称が入るようです。予測するに、アレフとアモンというのは愛称ですよね? ですから動かなかったのではないかと。
    ・ラベル「ユニット間距離判定」ですが、変数「ユニット間距離」と格納する数の間に=がありません。また、「X座標」ではなく「X距離」です。Yも同様。
    ・ItemはEquipの前に逐一入れなければなりません。

     BOROさんに説明した時点では動作確認をしてなかったため気付かなかったようですね。どうも申し訳ないです。
     それから、発動するのは2マス以下の場合でしたっけ? この状態だと2マスより小さい距離でないと発動しなかったりします。

    If Call(ユニット間距離判定,対象ユニット) < 2 Then

     その場合は、ここの<を<=に変更する必要があります。

     それでは。

引用返信/返信 削除キー/
■1369 / inTopicNo.6)  (泣)
□投稿者/ 幻狗 -(2002/01/13(Sun) 00:37:50)
    まだ動きません
    他に考えられることは何でしょうか?
    ライバル関係.eveと名付けて
    これをinclude.eveに入れましたし


    ライバル[アレフ=ポーロック] = アモン=クズグス
    ライバル[アモン=クズグス] = アレフ=ポーロック

    *攻撃 味方 敵:
    *行動終了 味方:
    If IsVarDefined(ライバル[対象ユニット]) = 0 Exit
    If Call(ユニット間距離判定,対象ユニット) <= 2 Then
    If IsEquiped(対象ユニット,ライバル修正) = 0 Then
    Item ライバル修正
    Equip 対象ユニット ライバル修正
    Item ライバル修正
    Equip ライバル[対象ユニット] ライバル修正
    EndIf
    Else
    RemoveItem 対象ユニット ライバル修正
    RemoveItem ライバル[対象ユニット] ライバル修正
    EndIf
    Exit

    ユニット間距離判定:
    X距離 = Abs(X(Args(1)) - X(ライバル[Args(1)]))
    Y距離 = Abs(Y(Args(1)) - Y(ライバル[Args(1)]))
    ユニット間距離 = (X距離 + Y距離)
    Return ユニット間距離


    ライバル修正
    ライバル修正, 汎用, 強化パーツ
    特殊能力
    格闘強化Lv2
    射撃強化Lv2
    0, 0, 0, 0, 0
引用返信/返信 削除キー/
■1370 / inTopicNo.7)  Re[5]: (泣)
□投稿者/ 幻魔の公子 -(2002/01/13(Sun) 00:59:27)
     幻魔です。

     むぅ、直前の書き込みで書いたもので、私の方ではちゃんと動作したのですよね。
     可能性としては……うーん、この構文全部まとめてインクルに入れたんですか?

    > ライバル[アレフ=ポーロック] = アモン=クズグス
    > ライバル[アモン=クズグス] = アレフ=ポーロック

     この部分も含めて?
     もしもそうなら、ライバル[]の変数が多分定義されていません。何故かと言えば直前のラベルは当然Exitなりで閉じているとして、いったいこの変数の定義はどこで実行されるのでしょうか?って話になるからです。
     よって、この部分は、ライバル修正を使い始める時点のラベルに記述する必要があるわけです。

     まぁ、違うとは思うですが〜、他に動かない要因はちょっと思いつかないです。

     それでは。

引用返信/返信 削除キー/
■1371 / inTopicNo.8)  今度こそ本当に
□投稿者/ 幻狗 -(2002/01/13(Sun) 01:35:42)
    ありがとうございました。(嬉泣

    いや、本当に凄いですね。幻魔の公子様
    ほとんどの記事に書き込みをなされて、
    解決に向かわせておられる。

    自分の中で数学は中学で止まってしまったので
    関数はさっぱりわからないのです。
    自分がバカだと公言しているわけですが…

    なにより、ありがとうございました。
引用返信/返信 削除キー/
■1373 / inTopicNo.9)  Re[7]: 今度こそ本当に
□投稿者/ 皇 -(2002/01/13(Sun) 07:05:39)
    どうも、皇です。

    横槍ですが、X()関数やY()関数は、その機体が破壊・撤退している場合は最後にいた座標を返します。
    ですから、パートナーがすでにいない場合はイベントをチェックしないという一文を書いておきましょう。

    具体的には、
    If Status(ライバル[対象ユニット]) <> "出撃" Exit
    というのを
    If IsVarDefined(ライバル[対象ユニット]) = 0 Exit
    の下の行に入れればOKです。
引用返信/返信 削除キー/
■1375 / inTopicNo.10)  いつの間に・・・・・
□投稿者/ BORO -(2002/01/13(Sun) 08:03:57)
    僕が見てない間にこんなに投稿があったのは気づかなかったです。
    幻狗さんの言うとおりうやむやに終わってしまったようです。すみません。
    使用に関して別に使ってもいいですよ。僕も再び使ってみようかなぁと思ってるで・・・・・(笑)
    それと距離に関しては2ますめにいても発動するというようには言いましたが、自分の好きな距離にしてもよろしいです。
引用返信/返信 削除キー/
■1376 / inTopicNo.11)  一件落着
□投稿者/ 幻狗 -(2002/01/13(Sun) 10:27:07)
    皇さん
    横槍ありがとうございます。

    許可も得られた事ですし、
    これで無事解決というわけですね。
    皆さん本当にありがとうございました。
解決済み!
引用返信/返信 削除キー/
■1380 / inTopicNo.12)  Re[10]: 再びやったんですが・・・・
□投稿者/ BORO -(2002/01/13(Sun) 15:20:56)
    僕も再びやってるんですが動きません。なぜでしょうか??

    これがパートナー修正.eveです
    パートナー[カミーユ=ビダン] = ファ=ユイリィ
    パートナー[ファ=ユイリィ] = カミーユ=ビダン
    *攻撃 味方 敵:
    *行動終了 味方:
    If IsVarDefined(パートナー[対象ユニット]) = 0 Exit
    If Status(パートナー[対象ユニット]) <> "出撃" Exit
    If Call(ユニット間距離判定,対象ユニット) <= 2 Then
    If IsEquiped(対象ユニット,パートナー修正) = 0 Then
    Item ライバル修正
    Equip 対象ユニット パートナー修正
    Item パートナー修正
    Equip パートナー[対象ユニット] パートナー修正
    EndIf
    Else
    RemoveItem 対象ユニット パートナー修正
    RemoveItem パートナー[対象ユニット] パートナー修正
    EndIf
    Exit

    これがテスト用シナリオです
    <Event\パートナー修正.eve>
    <Event\ユニット間距離.eve>
    プロローグ:
    Exit
    スタート:
    Create 味方 Zガンダム 1 カミーユ 3 10 10
    Create 味方 メタス 1 ファ 3 9 11
    Create 敵 リ・ガズィ(BWS) 1 アムロ 3 9 11
    Exit
    エピローグ:
    Exit

    そしてユニット間距離.eveで
    ユニット間距離判定:
    X距離 = Abs(X(Args(1)) - X(ライバル[Args(1)]))
    Y距離 = Abs(Y(Args(1)) - Y(ライバル[Args(1)]))
    ユニット間距離 = (X距離 + Y距離)
    Return ユニット間距離

    これがアイテムです
    パートナー修正
    パートナー修正, 汎用, 強化パーツ
    特殊能力
    格闘強化Lv6
    射撃強化Lv6
    0, 0, 800, 0, 0

    まだ何かおかしいでしょうか???
引用返信/返信 削除キー/
■1385 / inTopicNo.13)  Re[11]: 再びやったんですが・・・・
□投稿者/ 皇 -(2002/01/13(Sun) 19:09:07)
    どうも、再び皇です。

    BOROさん。
    それが動作しない理由は、幻魔の公子さんがすでにおっしゃってますよ。
    パートナー[カミーユ=ビダン] = ファ=ユイリィ
    パートナー[ファ=ユイリィ] = カミーユ=ビダン
    の部分をプロローグかスタートの中に入れましょう。

    それでは。
引用返信/返信 削除キー/
■1386 / inTopicNo.14)  つけたし
□投稿者/ 皇 -(2002/01/13(Sun) 19:18:58)
    すいません、他にも間違い発見しました。

    Item ライバル修正

    ユニット間距離判定:
    X距離 = Abs(X(Args(1)) - X(ライバル[Args(1)]))
    Y距離 = Abs(Y(Args(1)) - Y(ライバル[Args(1)]))
    ユニット間距離 = (X距離 + Y距離)
    Return ユニット間距離

    の『ライバル』を『パートナー』に直しましょう。
    それでは。
引用返信/返信 削除キー/
■1395 / inTopicNo.15)  完成!!!
□投稿者/ BORO -(2002/01/14(Mon) 09:17:42)
    みなさんほんとに有難うございます。
    無事出来ました。
    では。
解決済み!
引用返信/返信 削除キー/
■1401 / inTopicNo.16)  続パートナー修正
□投稿者/ 幻狗 -(2002/01/14(Mon) 11:47:30)
    参りました。
    ライバル修正が完成して、
    意気揚揚と次の修正に取りかかっていたら
    修正の発動がまちまちなのです。
    ライバル修正、友情修正、恋愛修正、血縁修正

    ライバル[A] = B
    ライバル[B] = A
    友情[A] = C
    友情[C] = A
    友情[B] = C
    友情[C] = B

    この様にして、
    ABCを並べた時に

    ACの友情は発動するのに
    ABのライバル、BCの友情が発動しなかったり

    BCの友情は発動して
    A一人だけライバルが発動、Bは発動しなかったり

    色々試して見ても、うまくいきません
    皆様の御知恵を拝借したいのです。
引用返信/返信 削除キー/
■1404 / inTopicNo.17)  Re[2]: 続パートナー修正
□投稿者/ 幻魔の公子 -(2002/01/14(Mon) 15:34:40)
     ちーす、幻魔の公子です。
     なんでかというと、行動させたキャラクターと関係するキャラクターに関わるものしか影響させず、かつ二人以上に対しての関係には対応していないからです。

     まず、AとCの友情修正が発動すると、近くに同じく友情のあるBとCの友情は発動しません。これは、ループを使わずにやっているからです。二人以上に対して発動させるにはループさせてやる必要があるのです。
     そして、AとBがライバル関係にあっても、それが発動するのはAかBを動かしたときだけで、たとえ近くにいたとしてもCを動かしたときにはCとの関係しか発動しません。

     上記二点に対処する方法はあります。
     上の方ですが、これは変数を連装配列にした上でDo〜Whileを使ってループさせてやればいいのです。ライバル[対象ユニット,番号]として、ループするごとに番号を増やしていき、IsVerDefinedで存在するかどうかを確かめながら動かしていけばいいわけです。 それから、下の方は、対処するとこの上なく重くなります。(スペックが低いとSRCが止まります)その上で説明しますと、これは行動するごとに出撃している全てのユニットに関して(ForEachを使って)逐一修正を持たせられるかどうかを確認して行くわけです。

     その二点を実行したとして、もう一つ問題が出るでしょう。それは、順番によっては、複数のキャラと関係のある場合に、片方は範囲内にいるのにもう片方が範囲内にいないために修正が入らなくなる、というものです。
     これに関しては、誰かが居た時点でBreakでループを止め、また、ライバル[対象ユニット]に関して装備状態を変更するのをやめれば問題ないと思われます。

     とりあえず、作って掲示してみようかと思ったんですが、あまりに煩雑だったんでやめました。
     判らないところがあったり、作ったけど動かないという場合には書いていただければレスしますので、頑張ってみて下さい。

     それでは。

引用返信/返信 削除キー/
■1405 / inTopicNo.18)  Re[3]: 続パートナー修正
□投稿者/ 幻狗 -(2002/01/14(Mon) 16:32:03)
    ヘルプを読みましたが、
    これは自分の手に余ります。
    パイロットが全員、気分屋という事であきらめます。

    助言を無為にしてしまってすみません。
    ありがとうございました。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -