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

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

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

■20206 / inTopicNo.1)  マップ兵器の判定・続
  
□投稿者/ 27 -(2007/08/08(Wed) 18:39:04) [ID:dVCUhkuv]
    教わった方法でやろうとちまちま作っていたのですが問題にぶちあたりました。

    スタート:
    Hide
    ChangeMap map\courage07.map
    Create 敵 ドラゴン 0 普通雑魚強気(ザコ) 30 12 15 ド
    Create 敵 サーベルゲータ 0 普通雑魚強気(ザコ) 30 10 15
    Create 敵 スーパーゲイズ 0 普通雑魚強気(ザコ) 30 8 15
    Launch 真樹 4 15
    Night
    Show
    Exit

    使用 ド 火炎:
    Local i
    Local x1 x2 y1 y2
    Set x1 X(UnitID(対象ユニットID))
    Set x2 X(UnitID(相手ユニットID))
    Set y1 Y(UnitID(対象ユニットID))
    Set y2 Y(UnitID(相手ユニットID))

    Talk システム
    $(x1);$(x2);$(y1);$(y2)
    End

    〜Forで座標を一つずつ調べてユニットがいるか判定する処理〜

    Exit


    これでドラゴンに火炎を使ってもらったのですが
    12
    0
    15
    0
    と表示されます。
    過去ログを見たところ教わったとおり一番近いユニットを参照するだろうと思っていたのですが0となります。
    Y(UnitID(相手ユニットID))をY(相手ユニットID)にしたりしてもだめでした。

    M直の武装・火炎が識属性持ちで一番近くのユニットが識属性で当たらないユニットだから無理なのかなとか意味不明なこと考えてみましたが違うようです。
引用返信/返信 削除キー/
■20207 / inTopicNo.2)  Re[1]: マップ兵器の判定・続
□投稿者/ 中箱 -(2007/08/08(Wed) 23:27:26) [ID:8NrUE61r]
    どうも、中箱と申します。

    >過去ログを見たところ教わったとおり一番近いユニットを参照するだろうと思っていたのですが0となります。
    >Y(UnitID(相手ユニットID))をY(相手ユニットID)にしたりしてもだめでした。

    使用イベントラベルでは、相手ユニットIDが無いからですね。
    これは、座標に加えて、ユニットIDもTalkで表示させるようにすれば確認できるかと。

    相手ユニットIDが必要であれば、攻撃イベントラベルなどを利用する必要があると思います。


    頑張ってください
    では
引用返信/返信 削除キー/
■20208 / inTopicNo.3)  Re[1]: マップ兵器の判定・続
□投稿者/ 千奈 -(2007/08/08(Wed) 23:31:56) [ID:JK58Kupu]
    2007/08/08(Wed) 23:33:19 編集(投稿者)
    2007/08/08(Wed) 23:33:12 編集(投稿者)

    【使用:】の場合、M属性武装だと相手ユニットIDが取得できないようです。(M属性でなければ取得できるようです)
    今回の場合、相手ユニットIDの取得には【攻撃:】を使うと上手くいくと思います。

    おそらく、
    M属性武装の使用を決定→【使用:】を実行→相手ユニットを確定→【攻撃:】を実行
    という手順で処理しているからだと思います。

    ###
    *攻撃 ド 全:
    If 対象ユニット使用武器 = 火炎 Then
    (中略)
    EndIf
    Exit
    ###
    とするか、
    ###
    *使用 ド 火炎:
    Set 火炎使用 1
    Exit

    *攻撃 ド 全:
    If 火炎使用 = 0 Exit
    (中略)
    Set 火炎使用 0
    Exit
    ###

    とすれば動くと思います。
    (中略)の部分は27さんが作ったルーチンを入れてください。
    この処理をする武装がドラゴンの火炎しかないなら前者、他にもあるなら後者を改変するのが良いと思います。
引用返信/返信 削除キー/
■20211 / inTopicNo.4)  Re[1]: マップ兵器の判定・続
□投稿者/ 27 -(2007/08/09(Thu) 15:04:58) [ID:dVCUhkuv]
    2007/08/09(Thu) 15:07:44 編集(投稿者)

    >>中箱さん

    >>これは、座標に加えて、ユニットIDもTalkで表示させるようにすれば確認できるかと。

    これはやったのですが、使用イベントラベルでは相手ユニットIDが無いとは思わず、他に原因があるのだろうか?と悩んでいました。


    >>千奈さん

    火炎以外にも武装があるので下を使わせてもらいました。
    反発して*使用 ド 火炎:を省略できないかと、if文を色々いじってみましたが出来ませんでした。
    info関数でなんとかならないかと思ったのですが、結局そのまま引用するのが一番という結論になりました。


    *使用 ド 火炎:
    Set 火炎使用 1
    Exit

    *攻撃 ド 全:
    If 火炎使用 = 0 Exit

    Local x1 x2 y1 y2
    Set x1 X(UnitID(対象ユニットID))
    Set x2 X(UnitID(相手ユニットID))
    Set y1 Y(UnitID(対象ユニットID))
    Set y2 Y(UnitID(相手ユニットID))

    If x1 = x2 Then
     If y1 < y2 Then
      Set y1 (y1 + 1)
      Do While (y1 <= y2)
       If info(マップ, y1, x1, ユニットID) != "" Then
        Cancel
        Break
       Endif
       Set y1 (y1 + 1)
      Loop
     Else
      Set y1 (y1 - 1)
      Do While (y1 >= y2)
       If info(マップ, y1, x1, ユニットID) != "" Then
        Cancel
        Break
       Endif
       Set y1 (y1 - 1)
      Loop
     Endif
    Endif

    If y1 = y2 Then
     If x1 < x2 Then
      Set x1 (x1 + 1)
      Do While (x1 <= x2)
       If info(マップ, x1, y1, ユニットID) != "" Then
        Cancel
        Break
       Endif
       Set x1 (x1 + 1)
      Loop
     Else
      Set x1 (x1 - 1)
      Do While (x1 >= x2)
       If info(マップ, x1, y1, ユニットID) != "" Then
        Cancel
        Break
       Endif
       Set x1 (x1 - 1)
      Loop
     Endif
    Endif

    MapAttack 対象ユニットID 火炎(イベント用) x1 y1
    Set 火炎使用 0
    Exit


    まだ適当にしかテストしていませんがこんな形になりました、他のイベントはこれから仕込みます。
    お二方返答ありがとうございました。

    //メモ帳からコピーペーストしたのですが半角スペースは略されるんですね。全角にしました。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -