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

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

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

■20443 / inTopicNo.1)  「FE風、武器劣化インクル」作成スレ
  
□投稿者/ jam -(2007/11/07(Wed) 13:59:37) [ID:cYSkfGMh]
    2007/11/07(Wed) 16:01:52 編集(投稿者)

    ここに新スレとして、場所を借りさせていただきます。
    本スレは No20368にてZANI様が、私に質問してくださいました「武器劣化インクル」に関しまして、更なる改良のために皆様のご協力を仰ぎたい、というささやかなスレでございます。

    叩き台としての素案は、 No20440に、そして現段階で中箱様が示してくださいました改良案は、 No20441にあります。

    かなり個人的なスレですが、ご容赦願えれば、と思います。

    ///### 追記 16:02

    No20441にて、中箱様に分析していただいたことを踏まえ、本インクルの現在の仕様について、若干補足させていただきます。

    >サブルーチン「武器ID整理」は、武器アイテムが増減した場合にその都度必ず実行する。
    >マップ中でアイテムを入手した直後(にサブルーチン「武器ID整理」を呼び出す)

    ですが、実際にテストしてみるとわかりますが、あらかじめGlobal変数で「武器磨耗度」を設定しておいた場合、例えサブルーチン「武器ID整理」を実行した後で入手した武器であっても、戦闘に使われた瞬間に「武器磨耗度[アイテムID]」が定義されます。

    ですので、「武器ID整理」ルーチンは事実上、不要になった「武器磨耗度」変数を除去、整理するためだけのルーチンとなっております。

    ……だってアイテム入手するたびに呼び出してたら、シナリオの進度によってはえらいことなっちゃいますからね。

    >アイテムを自主的に捨てた直後(にサブルーチン「武器ID整理」を呼び出す)

    これに関しましても、クイックセーブファイルで確認したのですが、例えば「長弓_9」というアイテムは、捨てた(=RemoveItemコマンドなど)後であっても、「#FALSE#」という形で、情報はステージをクリアするまで残されています。

    よって、そのステージで新しく「長弓」を入手しても「長弓_9」が上書きされて使われる、という心配は現在のSRCのVerではありません。

    そして、捨てた瞬間にわざわざ変数を除去しなくとも、この残された変数は特になにか悪さをしているわけでも無いため、ステージクリア時に「武器ID整理」を一括して呼び出せば、まとめて消え去るわけです。

    >ショップ(あれば)で買った直後と売った直後(売り買いの切り替え時?)(にサブルーチン「武器ID整理」を呼び出す)

    これも、そこまで細かくせずとも、バトル開始時に一発呼び出せば十分ですので、そこまで神経質になるものではありません。

    >2.バリアで防がれるなど、当たってもダメージを与えられなかった場合も、耐久度が減らない

    これに関しましては、攻撃前と攻撃後のHPの差、を利用して判定している現状においては、上手い方法が思いつかなかったのであえてこのままにしておりました。
    諸賢の皆様方で、なにか良い方法がある、という方は是非ともご教示お願いします。

    それでは。
引用返信/返信 削除キー/
■20444 / inTopicNo.2)  攻撃後イベント修正案
□投稿者/ 51 -(2007/11/07(Wed) 21:08:35) [ID:CZSiIEdn]
    2007/11/07(Wed) 21:10:57 編集(投稿者)


    >2.バリアで防がれるなど、当たってもダメージを与えられなかった場合も、耐久度が減らない

    これの対策として次のような方法はいかがでしょうか?
    攻撃前後のHPではなく、スペシャルパワーがかかってるかどうかで判定を行う方法です。
    詳細を以下に記します。


    まず、sp.txtに次のようなスペシャルパワーを作製します。



    被弾判定
    非表示, 0, 自分, 被弾, -, -, -
    -
    被弾確認用


    そして、スタートイベントで以下の処理を行います。


    ForEach 敵:
    SpecialPower 被弾判定
    Next


    最後に攻撃後イベントを次のようにします。


    *攻撃後 味方 全:
    If SpecialPower(相手ユニット,被弾判定) = 1 Then
    SpecialPower 相手ユニット 被弾判定
     Exit
    EndIf

    Call 武器劣化共通処理

    UnSet 使用武器判定
    UnSet 使用武器ID
    Exit

    動作のほうは確認していませんが、スペシャルパワー被弾判定がバリアで消失することは確認しております。

引用返信/返信 削除キー/
■20446 / inTopicNo.3)  改良2&新問題点
□投稿者/ jam -(2007/11/09(Fri) 15:12:20) [ID:cYSkfGMh]
    51様、ありがとうございます。
    早速氏のアイディアを取り入れ、こんな風にしてみました。

    まずターンごとに

    ForEach 全
     If SpecialPower(対象ユニット,被弾判定) = 0 Then
      SpecialPower 対象ユニット 被弾判定
     EndIf
    Next

    とし、次にインクル内の常時ラベルを↓

    *攻撃後 味方 全:
    If SpecialPower(相手ユニット,被弾判定) = 0 Then
     Call 武器劣化共通処理
     SpecialPower 相手ユニット 被弾判定
    EndIf
    If SpecialPower(対象ユニット,被弾判定) = 0 Then
     SpecialPower 対象ユニット 被弾判定
    EndIf
    Exit

    *破壊 全:
    If (Party(相手ユニット) = 味方) Then
     Set 対象ユニット使用武器 相手ユニット使用武器
     Set 対象パイロット 相手パイロット
     Call 武器劣化共通処理
    EndIf
    If SpecialPower(対象ユニット,被弾判定) = 0 Then
     SpecialPower 対象ユニット 被弾判定
    EndIf
    UnSet 対象ユニット使用武器
    UnSet 対象パイロット
    Exit

    としました。

    これによって、実質例えば味方が混乱状態になって、攻撃が当たってしまった場合でも武器劣化処理が発動する、という風になりました。

    また、破壊イベントにおける手直しについてですが、今まで見落としていたのですが、攻撃イベントと破壊イベントでは攻撃したユニットがそれぞれ「対象ユニット(パイロット)」と「相手ユニット(パイロット)」と、異なるシステム変数が割り当てられていました。
    よって、以前の案では敵を破壊した時に「相手ユニット(パイロット)」変数が指定されていないために、劣化処理が発動していなかったのです。

    ですので、破壊イベントでは上のように修正し、動作も確認できたことをご報告いたします。


    そして、これに伴い、また新しい問題点が出ましたので、皆様の知恵を借りたいと思っています。

    1.味方が混乱など、コントロール不能状態になったとき……

     陣営が「味方」のユニットと戦闘した時、暴走したキャラの劣化処理が正常に動かない。(「敵」との戦闘ではしっかりと処理されていました)

    2.援護攻撃時の劣化処理はどうすればよいのか? (ヘルプには援護攻撃に関する関数などが見当たらなかったため、現状途方にくれています)

    失礼しました。
引用返信/返信 削除キー/
■20447 / inTopicNo.4)  Re[1]: 「FE風、武器劣化インクル」作成スレ
□投稿者/ 中箱 -(2007/11/09(Fri) 19:18:45) [ID:8NrUE61r]
    独立したツリーを立てられましたか、どうも中箱です


    No20441にて、中箱様に分析していただいたことを踏まえ、本インクルの現在の仕様について、若干補足させていただきます。

    色々と勘違いがあった用で申し訳ないです。

    ただ、ツリーも立てたわけですし、
    補足だけではなくて一度仕様(内容も??)をまとめて書いておく方が良いんじゃないかなー、とか。

    他人が勝手に書いた穴だらけの仕様を参照するのは少々恥ずか・・じゃなくて違和感が。



    サブルーチン「武器ID整理」は、マップ終了時つまりエピローグごとに実行すればいい、ということでしょうか。
    であれば、常時エピローグラベルも追加してしまった方が分かりやすいかなと。


    それと、
    >「武器ID整理」ルーチンは事実上、不要になった「武器磨耗度」変数を除去、整理するためだけのルーチンとなっております。
    であれば、ID整理ルーチンの前半である 磨耗度Set部分は分割してしまって良いのでは?



    さて、No.20446の改良案ですが、

    システム変数としては「対象ユニット」ではなく、「対象ユニットID」もしくは「対象パイロット」です。
    実際には「対象ユニット」には「対象パイロット」と同じものが入っているので、(SRCの旧バージョン(〜Ver1.6)との互換性を保つ為?)
    とりあえず動作に問題は無い・・とは思いますが。

    ただ、同じものであればなおのこと、
    ヘルプに書いてあるように
     ユニットIDを入れたいのであれば「対象ユニットID」
     メインパイロット名を入れたいのであれば「対象パイロット」
    を使った方が安心感があります。


    > Set 対象ユニット使用武器 相手ユニット使用武器
    > Set 対象パイロット 相手パイロット
    > Call 武器劣化共通処理

    >UnSet 対象ユニット使用武器
    >UnSet 対象パイロット

    システム変数への代入は、一部の例外を除いて「できない」ことになっています。
    他の箇所に不具合が出るかもしれませんし、
    武器劣化共通処理の改変で済むのであれば、その方向で対応するべきでしょう。


    ただでさえ、今のところヘルプ未掲載扱いの関数を用いているインクルードですから、
    できるだけ不安な点は減らしておくのが望ましいと思います。
    インクルードを他人に使ってもらうことも視野に入れるのであれば尚更。


    ●処理のタイミングについて

    私としては当初案のように
     ・常時攻撃ラベルで準備をする
     ・常時攻撃後ラベルで判定する(準備はやり直さない)
    の方が良いように思います。

    とりあえず現在の方法ですと
     ・ターン途中に出現したユニットには、登場直後はSPがかかっていない=登場ターンに攻撃を当てても最初は劣化しない
     ・すでに出現しているユニットには、ターンごとにかけなおす処理は基本的に不要(攻撃後にかけなおすから、増援以外にはすでにかかっている)
    のでは。

    特に前者は明らかな穴ですから、対応が不可欠かと。



    >1.味方が混乱など、コントロール不能状態になったとき……

    味方同士で攻撃しあっても、
    >*攻撃後 味方 全:
    ラベルが実行されるのは一度だけだからです。



    >2.援護攻撃時の劣化処理はどうすればよいのか? (ヘルプには援護攻撃に関する関数などが見当たらなかったため、現状途方にくれています)

    システム変数「サポートアタックユニットID」「サポートガードユニットID」
    がありますね
    ・・・と思いましたが、
    サポートガードはともかく、サポートアタックに使った武器名は必要ですね・・・。



    ・・・えー、多少なりとも参考になれば幸いで。
    では
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -