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

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

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

■13337 / inTopicNo.1)  命中判定再び
  
□投稿者/ 御刀 -(2004/04/16(Fri) 23:39:12)
    また御刀です。

    たびたびで申し訳ございません…。
    あとから気がつきました。

    先日アドバイスをいただいた方法でつくったインクルのことなのですが、
    対象ユニットの攻撃がかわされても命中時と同じイベントが
    発生してしまうのです。相手側も同様でした。

    SetMessageを連続で書いているのがいけないのでしょうか?




    攻撃 全 全:
    先攻攻撃が命中 = 0
    後攻攻撃が命中 = 0
    SetMessage 対象ユニット 攻撃(命中) "$(Call(先攻攻撃命中))"
    SetMessage 相手ユニット 攻撃(命中) "$(Call(後攻攻撃命中))"
    Exit

    先攻攻撃命中:
    先攻攻撃が命中 = 1
    Return

    後攻攻撃命中:
    後攻攻撃が命中 = 1
    Return

    攻撃後 全 全:
    Local 冷却 発熱1 発熱2
    Set 相手増加熱量 0
    Set 自分増加熱量 0
    相手 = 相手ユニット
    If 先攻攻撃が命中 = 1 Then
      If 熱量[相手ユニット] > Call(耐熱温度取得, 相手パイロット) Then
        冷却 = Call(緊急冷却性能計算, 相手パイロット)
      Else
        冷却 = Call(冷却性能計算, 相手パイロット)
      EndIf
      発熱1 = (Info(ユニット, Unit(対象パイロット), 武器, 対象ユニット使用武器, 属性レベル, 熱) * 10)
      相手増加熱量 = Int(発熱1 * (1 - 冷却 / 15000))

      熱量[相手ユニット] = 熱量[相手ユニット] + 相手増加熱量
    EndIf
    If 後攻攻撃が命中 = 1 Then
      If 熱量[対象ユニット] > Call(耐熱温度取得, 対象パイロット) Then
        冷却 = Call(緊急冷却性能計算, 対象パイロット)
      Else
        冷却 = Call(冷却性能計算, 対象パイロット)
      EndIf
      発熱2 = (Info(ユニット, Unit(相手パイロット), 武器, 相手ユニット使用武器, 属性レベル, 熱) * 10)
      自分増加熱量 = Int(発熱2 * (1 - 冷却 / 15000))

      熱量[対象ユニット] = 熱量[対象ユニット] + 自分増加熱量
    EndIf
    UnSet 先攻攻撃が命中
    UnSet 後攻攻撃が命中
    Exit
引用返信/返信 削除キー/
■13338 / inTopicNo.2)  Re[1]: 命中判定再び
□投稿者/ 間宮 -(2004/04/17(Sat) 00:23:46)
    こんばんわ。
    ずばり、「HPの増減に関わらずイベントが実行されている」からではないでしょうか?

    攻撃イベントに

    攻撃元HP = HP(対象ユニットID)
    攻撃先HP = HP(相手ユニットID)

    などと記述して、攻撃前のHPを保存しておき、攻撃後に

    IF HP(対象ユニットID) < 攻撃元HP then
    IF HP(相手ユニットID) < 攻撃先HP then

    といった条件式をつけて、HPが減少した(=攻撃が当たった)ことを確認させるようにしてはいかがでしょう。
引用返信/返信 削除キー/
■13343 / inTopicNo.3)  Re[2]: 命中判定再び
□投稿者/ 御刀 -(2004/04/17(Sat) 10:43:16)
    そうですね、それしかないようです。
    威力0で熱量のみ増加…という武器はあきらめることにします;;

    で、試してみたところうまくいきました。

    間宮さん、ありがとうございます!!
解決済み!
引用返信/返信 削除キー/
■13345 / inTopicNo.4)  Re[3]: 命中判定再び
□投稿者/ 間宮 -(2004/04/17(Sat) 12:28:28)
    諦めるのはまだ早いです!
    プログラムは根性とひらめきですよ!

    >威力0で熱量のみ増加…という武器

    それは可能だと思います。


    IF 対象ユニット使用武器 = 加熱攻撃 then
    などといった風に、武器ごとに個別に条件をつけるか、

    あるいは別の属性を非表示で付け、その属性で熱を上げることで、
    あたかも「熱」属性が発動したかのように見せかけるといった方法が残されています。

    これをやるとなると、結構大変ですが、ぜひ挑戦してください。
    (オススメは後者です。)

    参考になれば何よりです。

引用返信/返信 削除キー/
■13429 / inTopicNo.5)  時間がたっていますが・・・
□投稿者/ 久遠 -(2004/04/21(Wed) 21:08:13)

    こんにちは、久遠です。

    時間がたっていますがいい案(?)があるのでちょっと。

    方法としてはSP.txtに
    被弾判定などダミーの能力を作ります。
    能力は−(無し)、対象は自分、継続時間は被弾で。(あと非表示に)
    このSPを戦闘イベントの時に全員にかけてやり戦闘後に関数でSPを使っているか調べます。
    ForEachなどを使ってSPをかけてもいいですがSP.txtに
    全体被弾判定というものをつくり効果をスペシャルパワー、対象を全体などにしてやれば簡単に使うことが出来ます。(調べるときはForEachですが)
    これなら特殊能力"融合"や武器属性"失"などでHPが変わったときも調べられますし援護防御した場合も適切に処理されます。

    4日も立っててすいません。
    これからの参考になればうれしいです。

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



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -