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

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

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

■4888 / inTopicNo.1)  誘爆
  
□投稿者/ グロス -(2002/08/22(Thu) 14:32:01)
http://www.geocities.co.jp/Playtown-Darts/6827/
    今シナリオ作っているんですが、
    ユニットが隣接しているときに援護が出来るというメリットがありますが
    デメリットがないので隣接しているユニットが破壊されると、
    破壊されたユニットの残りENの10倍のダメージを受けるという
    デメリットを付けるプログラムを作りたいんですが
    変数と式を見るとパイロットからX・Y座標は出せるんですが、
    X・Y座標からそこにいるパイロットが誰かの出し方がないので
    うまくいきません。
    どのように作ればうまくいくでしょうか?
引用返信/返信 削除キー/
■4889 / inTopicNo.2)  これでいかがでしょう?
□投稿者/ アスパー -(2002/08/22(Thu) 15:47:12)
    えっと、つまり援護攻撃&防御が可能な距離は、隣の機体の爆発に巻き込まれてダメージを食らう可能性を考慮しなければならない、という事を再見したいのですね?

    その場合はとりあえず「破壊 味方」イベントで、「対象ユニット」、つまり破壊されたユニットのX、Yを変数に取っておきます。

    それから、こんなことを追加すればいいでしょう。
    とりあえず破壊されたユニットのX座標を「破壊X」、Y座標を「破壊Y」に取ったという前提で説明すると、

    ForEach 味方 出撃
    距離 = Abs(破壊X - X()) + Abs(破壊Y - Y())
    If 距離 = 1 Then
    RecoverHP -(EN(対象パイロット) * 10)
    Endif
    Next

    まあ、こんな感じで上手く行くと思いますが、RecoverHP後の数値を$()で囲む必要があるかもしれません。
    また、その段階で爆破したユニットの残りENの10倍より、隣のユニットのHPが少ないならばEscapeコマンドと「Status() = 破壊」と一緒にシステムから破壊メッセージをしゃべらせる事によって退却も出来ますし、シナリオ最初に非表示なダミーアイテムで、そのユニットがシナリオ上の敗北条件に入るやつなのかを判別、IsEquipedなどで「敗北条件キャラ識別アイテム」を装備しているキャラクターが上の処理によって退却した時にはゲームオーバーさせるとか、そういう事も可能だと思われます。

    私のシナリオ 「Ultimate Mission」にはフィールドに地雷が設置されており、それを地上ユニットが踏んだらダメージを受け、ダメージよりHPが低いなら退却させて破壊処理、そしてそのキャラが「退却禁止」という名前の非表示ダミーアイテムを装備しているのならゲームオーバーにつながるようにしてますので、よかったらDLしてDataフォルダー内のIncludeを参考して下さい。「地雷爆発」というイベントで定義されているはずです。
    ちなみに退却禁止判定のアイテムはシナリオクリア後、そのシナリオの敗北条件キャラクターから忘れずにRemoveItemさせておく必要があるでしょう。

    では。
引用返信/返信 削除キー/
■4890 / inTopicNo.3)  Re[1]: 誘爆
□投稿者/ M−gen -(2002/08/22(Thu) 15:48:02)
    はじめましてM−genです。(初カキコです)

    ForEach 味方
    P_X = X()
    P_Y = Y()

    [〜〜その他〜〜]

    Next

    とすれば、味方のX,Y座標が取れますから、
    あらかじめ、破壊したユニットの座標をU_X,U_Yとなり置いておき、
    [〜〜その他〜〜]のところで位置の判定とダメージ処理を行なえばOKです。

    X,Y座標からユニットが出せないから、
    全部のユニットを調べて、条件に合った奴を探そうという方法です。
引用返信/返信 削除キー/
■4893 / inTopicNo.4)  Re[1]: 誘爆
□投稿者/ レンブラント -(2002/08/22(Thu) 15:55:39)
     ヘルプを見たところ、Info関数で取得出来るデータに、

     マップ, X, Y, ユニットID

     があります。これで破壊されたユニットの周囲に別のユニットがいるかどうか取得出来るかと。
解決済み!
引用返信/返信 削除キー/
■4904 / inTopicNo.5)  Re[1]: 誘爆
□投稿者/ GAMEMASTER -(2002/08/22(Thu) 19:58:05)
http://nagoya.cool.ne.jp/gamemaster/
     お初にお目にかかります。
     SRCユーザーの1人「GAMEMASTER」と申します。

    > 今シナリオ作っているんですが、
    > ユニットが隣接しているときに援護が出来るというメリットがありますが
    > デメリットがないので隣接しているユニットが破壊されると、
    > 破壊されたユニットの残りENの10倍のダメージを受けるという
    > デメリットを付けるプログラムを作りたいんですが
    > 変数と式を見るとパイロットからX・Y座標は出せるんですが、
    > X・Y座標からそこにいるパイロットが誰かの出し方がないので
    > うまくいきません。
    > どのように作ればうまくいくでしょうか?

     まず、これはユニットが破壊された時に発生するイベントですので、破壊イベントを用います。
     これによって、破壊されたユニットのメインパイロット名をシステム変数「対象ユニット」で得ることが出来ますので、これをこのイベントに必要な関数へと代入します。

     次に隣接4マスを捜索し、味方ユニットが存在した場合そのユニットのHPを破壊されたユニットのENの10倍だけ減少させます。
     捜索は、Forコマンドと三角関数を用いることで簡単に行えます。


     破壊 全:

     For i = 1 To 4

      隣接者 = Info(マップ,(X(対象ユニット) + Int(Cos(1.57 * i) + 0.1)),(Y(対象ユニット) + Int(Sin(1.57 * i) + 0.1)),ユニットID)

      If 隣接者 <> "" Then

        HP(隣接者) = HP(隣接者) - EN(対象ユニット) * 10

      EndIf

     Next

     Exit


     なお、これだけだと敵味方無関係にダメージを与えるので、敵味方を識別する(破壊されたユニットの仲間にだけダメージを与える)場合はIfコマンドの条件部分を次の通りに修正しましょう。


     If 隣接者 <> "" And Party(隣接者) = Party(対象ユニット) Then


     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
解決済み!
引用返信/返信 削除キー/
■4906 / inTopicNo.6)  Re[2]: 誘爆
□投稿者/ グロス -(2002/08/22(Thu) 23:28:46)
http://www.geocities.co.jp/Playtown-Darts/6827/
    GAMEMASTERさんとアスパーさんの案を入れて

    破壊 全:

    For i = 1 To 4

    隣接者 = Info(マップ,(X(対象ユニット) + Int(Cos(1.57 * i) + 0.1)),(Y(対象ユニット) + Int(Sin(1.57 * i) + 0.1)),ユニットID)

    爆発 = Info(ユニット,隣接者,サイズ)

    If 隣接者 <> "" Then

    HP(隣接者) = HP(隣接者) - EN(対象ユニット) * 50

    Talk システム

    $(Unit(隣接者))に$(EN(対象ユニット) * 10)のダメージを与えた。

    End

    If HP(隣接者) = 0 then

    Explode 爆発 X(隣接者) Y(隣接者)

    Escape 隣接者

    Status() = 破壊

    Endif

    Endif
    Next
    Exit

    にしました。
    M−genさんとレンブラントさんの方法は入れていませんが
    勉強になりました。
    皆さんありがとうございました。
解決済み!
引用返信/返信 削除キー/
■4909 / inTopicNo.7)  Re[3]: 誘爆
□投稿者/ GAMEMASTER -(2002/08/23(Fri) 07:55:50)
http://nagoya.cool.ne.jp/gamemaster/
     GAMEMASTERです。

    > 破壊 全:
    >
    > For i = 1 To 4
    >
    > 隣接者 = Info(マップ,(X(対象ユニット) + Int(Cos(1.57 * i) + 0.1)),(Y(対象ユニット) + Int(Sin(1.57 * i) + 0.1)),ユニットID)
    >
    > 爆発 = Info(ユニット,隣接者,サイズ)
    >
    > If 隣接者 <> "" Then
    >
    > HP(隣接者) = HP(隣接者) - EN(対象ユニット) * 50
    >
    > Talk システム
    >
    > $(Unit(隣接者))に$(EN(対象ユニット) * 10)のダメージを与えた。
    >
    > End
    >
    > If HP(隣接者) = 0 then
    >
    > Explode 爆発 X(隣接者) Y(隣接者)
    >
    > Escape 隣接者
    >
    > Status() = 破壊
    >
    > Endif
    >
    > Endif
    > Next
    > Exit

     解決済みとされていますが、2点だけ。

     1:

     HP(隣接者) = HP(隣接者) - EN(対象ユニット) * 50

     Talk システム
     $(Unit(隣接者))に$(EN(対象ユニット) * 10)のダメージを与えた。
     End

     実際に与えているダメージはENの50倍になっています。

     2:

     Status() = 破壊

     この書式では「対象ユニット」の状態を調べています。
     それ以前に、Status関数はHP関数やEN関数のように式の左辺値に使用してユニットの状態を変更操作することは出来ません。

     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
引用返信/返信 削除キー/
■4920 / inTopicNo.8)  Re[4]: 誘爆
□投稿者/ グロス -(2002/08/23(Fri) 17:37:15)
http://www.geocities.co.jp/Playtown-Darts/6827/
    1:のやつはただの打ち間違いです。
    2:はアスパーさんのシナリオにあったものを参考にしたんですが、
    破壊に出来ないとなると、イベント戦闘を起こさないといけませんね
引用返信/返信 削除キー/
■4922 / inTopicNo.9)  Re[5]: 誘爆
□投稿者/ 幻魔の公子 -(2002/08/23(Fri) 18:15:41)
     幻魔の公子です。

     ユニットの破壊ですが、開発版で追加されているDestroyコマンドを使えば破壊できます。
     まぁ、開発版はまだバグが多かったり仕様が変わり得るという問題はありますが。

     それでは。

引用返信/返信 削除キー/
■4923 / inTopicNo.10)  Re[5]: 誘爆
□投稿者/ GAMEMASTER -(2002/08/23(Fri) 18:36:18)
http://nagoya.cool.ne.jp/gamemaster/
     GAMEMASTERです。

    > 1:のやつはただの打ち間違いです。
    > 2:はアスパーさんのシナリオにあったものを参考にしたんですが、
    > 破壊に出来ないとなると、イベント戦闘を起こさないといけませんね

     このイベントを使う場合、以下のサブルーチンをStatus関数の代理として使うようにしましょう。


     UnitStatus:

     Local ユニットの状態

     If Status(Args(1)) = 待機 And HP(Args(1)) = 0 Then

      ユニットの状態 = 破壊

     Else

      ユニットの状態 = Status(Args(1))

     EndIf

     Return ユニットの状態


     これによって、UnitStatus(メインパイロット名またはユニットID)と記述することでHP0の状態で撤退したユニットも破壊扱いに出来ます。

     ただ、これでもシステムは破壊と認めません。よって、ForEachコマンドはごまかせません。
     「ForEach 味方 破壊」「ForEach 味方 待機」などを使用する際には十分注意して下さい。

     また、修理費も請求されません。修理費を支払わせる場合、エピローグイベントを追加する必要があります。


     *エピローグ:

     ForEach 味方 待機

      If HP(対象ユニット) = 0 Then

       Talk システム
       $(Nickname(Unit(対象ユニット)))を修理した;修理費 = $(Info(ユニットデータ,Unit(対象ユニット),修理費))
       Suspend

       Money -1 * Info(ユニットデータ,Unit(対象ユニット),修理費)

       Incr 修理費合計 Info(ユニットデータ,Unit(対象ユニット),修理費)

      EndIf

     Next

     If 修理費合計 > 0 Then

      Talk システム
      合計 = $(修理費合計)
      End

     EndIf

     Exit


     なお、バージョン1.7系列の「開発版」にはユニットを直接的に破壊するDestroyコマンドがあるため、もう少し簡単に済ませられるものと思われます。

     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
解決済み!
引用返信/返信 削除キー/
■4924 / inTopicNo.11)  Re[5]: 誘爆
□投稿者/ アスパー -(2002/08/23(Fri) 20:20:09)
    私のシナリオのインクルードを参考にしているのなら、イベントの対象ユニットを参考しないようにForEach 味方 出撃とかの中でStatus()を使えば、現在の順番の味方を判定、破壊状態にしていたはずですが、本体バージョンの変化と一緒に変わってしまったのでしょうか?後で確認してみます。

引用返信/返信 削除キー/
■4925 / inTopicNo.12)  確認しました
□投稿者/ アスパー -(2002/08/23(Fri) 20:32:13)
    「Status() = 破壊」では本当に破壊された事には出来ないままですね。
    開発版だとDestroyコマンドを使えばいいと思いますが、通常版では別の方法を考えなければならないようです。

引用返信/返信 削除キー/
■4941 / inTopicNo.13)  Re[6]: 誘爆
□投稿者/ グロス -(2002/08/24(Sat) 14:41:28)
http://www.geocities.co.jp/Playtown-Darts/6827/
    Destroyコマンドがあるかないかでかなり変わりますね。
    上のをそのまま使わせてもらいます。
    2度の指摘と対処ありがとうございます。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -