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

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

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

■20127 / inTopicNo.1)  サイズ差補正無視
  
□投稿者/ ニケ -(2007/07/10(Tue) 19:52:05) [ID:ieSC22O4]
    どうも、ニケと申します。

    この度、自作のSRCにサイズ差によるダメージ補正とそれを無視する特殊能力(サイズ差補正無視に該当する能力)を搭載しようとインクルードを組んでみました。

    サイズ差修正:

    Local AtkUnit = Args(1)
    Local DefUnit = Args(2)

    # サイズ取得
    Local AtkSize = Info(ユニット,AtkUnit,サイズ)
    Local DefSize = Info(ユニット,DefUnit,サイズ)

    AtkSize = Size2Int(AtkSize)
    DefSize = Size2Int(DefSize)

    *攻撃 味方 敵:
    *攻撃 敵 味方:
    *攻撃 中立 味方:
    If Skill(Pilot(対象ユニットID),サイズ差修正無視) = 1 Then
    If AtkSize < DefSize Then

    Local SizeMod = 1

    Else

    Local SizeMod = (AtkSize - DefSize) * 0.1 + 1

    EndIf

    Else

    Local SizeMod = (AtkSize - DefSize) * 0.1 + 1

    EndIf

    Return SizeMod

    Size2Int:
    Local Size = Args(1)

    Switch Size
    Case "XL"
    Return 2.5
    Case "LL"
    Return 2
    Case "L"
    Return 1.5
    Case "M"
    Return 1
    Case "S"
    Return 0.5
    Case "SS"
    Return 0
    EndSw

    Else
    Exit


    半ばまでは上手くいったのですが、テストプレイ中、時折以下の様な表記が出てしまうパターンがありました(戦闘毎ではないです)

    C:\Documents and Settings\東芝ユーザー\My Documents\SRC 関係\自作シナリオ\真 L\真 練習用\Data\include.eve:288行目
    イベントデータが不正です
    287:
    288: Else
    289: Exit

    C:\Documents and Settings\東芝ユーザー\My Documents\SRC 関係\自作シナリオ\真 L\真 練習用\Data\include.eve:288行目
    イベントデータが不正です
    287:
    288: Else
    289: Exit
    (2回目)

    C:\Documents and Settings\東芝ユーザー\My Documents\SRC 関係\自作シナリオ\真 L\真 練習用\Data\include.eve:268行目
    CallコマンドとReturnコマンドが対応していません
    267:
    268: Return SizeMod
    269:

    何度か調べてみたところ、どうもパイロットポイントを取得した直後に戦闘するとこうなるようです。
    取得後、移動等を挟むと発生しないようです。

    尚、PP取得のインクルードは、『流れ星のくずかご』星夜雪様製作のものを使わせて頂いております(ここに掲載してよいものかどうか分からなかったので、インクルード自体は割愛させていただきました)。

    プログラミングは素人の為、見よう見まねで作ったインクルードなので、これ以上は自分でもどこが悪いのか、皆目見当がつきません。
    なにとぞ、何か良いアドバイスのほどをよろしくお願いいたします。
引用返信/返信 削除キー/
■20131 / inTopicNo.2)  Re[1]: サイズ差補正無視
□投稿者/ 千奈 -(2007/07/12(Thu) 20:56:30) [ID:JK58Kupu]
    私はあまり複雑なインクルを組んだ経験が無いのでよくわかりませんが
    まだ誰の返信も無いようなので参考程度に
    > Size2Int:
    > Local Size = Args(1)
    >
    > Switch Size
    > (中略)
    > EndSw
    >
    > Else
    > Exit
    Elseに対応するIfなどが無いのとExitでは無くReturnを使うべきではないでしょうか?
    この二行は実際に実行されることは無いのでしょうけど
    内部で先読みされた場合にエラーが出ることがあると思います
    あと個人的に気になった点は、
    Switch〜EndSw間にReturnで返すのがなんとなく気持ち悪いので

    Size2Int:
    Local Size = Args(1)

    Switch Size
    Case "XL"
    Size = 2.5
    Case "LL"
    Size = 2
    Case "L"
    Size = 1.5
    Case "M"
    Size = 1
    Case "S"
    Size = 0.5
    Case "SS"
    Size = 0
    Case Else
    Size = 1
    EndSw
    Return Size

    とするとエラー1、2については解消できるかな〜と…



    エラー3については、イベントの呼び出し方とラベルの付け方に問題があると思います
    計算式中で"Call(サイズ差修正)"を入れて呼び出すのか、"*攻撃"ラベルで呼び出すのかどちらでしょうか?
    "Call(サイズ差修正)"で呼び出すのなら"*攻撃"は3つとも消してください
    "*攻撃"ラベルで呼び出すのなら"Return SizeMod"を"サイズ差修正 = SizeMod""Exit"の二行に変更してください
    また、"*攻撃"ラベルでNPC←→全,味方→中立,中立←→敵が考慮されていないような…そういう仕様なんですか?
    これでわからなかった場合、サイズ差修正の呼び出し元を見せてもらえばアドバイス出来るかも知れません
引用返信/返信 削除キー/
■20147 / inTopicNo.3)  Re[2]: サイズ差補正無視
□投稿者/ ニケ -(2007/07/14(Sat) 16:58:37) [ID:ieSC22O4]
    無事機能してくれました。
    こんな初歩的な愚問にお答えいただき、有難御座います。

    Return、迂闊でした。
    三つ目の部分も、Callで呼び出しているのを忘れて、つい他の特殊技能のインクルを参考にしてしまっていました。

    丁寧なご指導、真有難う御座いました。

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



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -