SRC質問掲示板Mk2
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
検索
新着情報
過去ログ
[
親記事をトピックトップへ
]
このトピックに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
記事のTitle
は記事の内容を示すものでお願いします。「質問」「教えてください」などのTitleでは記事の内容が分かりません。
シナリオやデータが意図通りに動かなくて
質問する場合は、該当する部分のテキストを提示してください。
質問を聞く前に
掲示板の過去ログ
と、
よくある質問集
をご覧ください。
画像の行方
はSRC Webに登録されているサイトで見つからなかった場合のみ、グラフィック掲示板で質問出来ます。
既存シナリオの行方
などを知りたい場合は、シナリオ雑談掲示板でお聞きください。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
削除キーを覚えておくと、自分の記事の編集・削除ができます。
URLは自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
使用例)
No123 → 記事No123の記事リンクになります(指定表示)。
No123,130,134 → 記事No123/130/134 の記事リンクになります(複数表示)。
No123-130 → 記事No123〜130 の記事リンクになります(連続表示)。
Name
/
[ID:GgCMrxu1]
E-Mail
/
Title
/
メッセージ中には下記URLと同じURLを書き込まないで下さい
URL
/
Comment/ 通常モード->
図表モード->
(適当に改行して下さい/半角10000文字以内)
■No22925に返信(Shunさんの記事) > まず、バトルコンフィグにて以下のような命中率・回避率の計算式を設定しております。 > > 命中補正 > 命中 / 2 * (Call(攻撃側地形適応修正, 攻撃側ユニットID, 防御側ユニットID, 武器番号) + Call(夜間補正, 攻撃側ユニットID)) + Call(照準値補正,攻撃側ユニットID) + 攻撃値 + Call(命中率特殊技能補正,攻撃側ユニットID) > > 回避補正 > 回避 / 2 * (Call(防御側地形適応修正, 防御側ユニットID) + Call(夜間補正, 防御側ユニットID)) + 運動性 + Call(回避率特殊技能補正,防御側ユニットID) > > 命中率 > (攻撃側補正 - 防御側補正) * Call(命中率サイズ補正,防御側ユニットID,攻撃側ユニットID) + Call(命中率距離補正,攻撃側ユニットID,防御側ユニットID) - Call(命中率地形効果補正,防御側ユニットID) + Call(連続ターゲット補正, 防御側ユニットID) > > 最終命中率 > 最終値 + Call(最終命中補正, 攻撃側ユニットID, 最終値) - Call(最終回避補正, 防御側ユニットID, 最終値) > > > 各種サブルーチンの内、最終回避補正に関するサブルーチンは以下のようにしており、そこに記されている回避系技能は正しく機能しています > > 最終回避補正: > > Local Re_hit = 0 > > # 見切りを持っている場合、回避値に+10される > # 極を持っている場合、回避値に+30される > # 予知を持っている場合、反撃時のみ回避値に+30される > > If Morale(Pilot(Args(1))) >= 130 Then > If Info(パイロット,Pilot(Args(1)),特殊能力所有,見切り) = 1 Then > Re_hit = Re_hit + 10 > EndIf > > If Info(パイロット,Pilot(Args(1)),特殊能力所有,極) = 1 Then > Re_hit = Re_hit + 30 > EndIf > > If Info(パイロット,Pilot(Args(1)),特殊能力所有,予知) = 1 Then > If Party(Pilot(Args(1))) <> フェイズ Then > Re_hit = Re_hit + 30 > EndIf > EndIf > EndIf > > # 天才を持っている場合、回避値に+20される > > If Info(パイロット,Pilot(Args(1)),特殊能力所有,天才) = 1 Then > Re_hit = Re_hit + 20 > EndIf > > Return Re_hit > > > その上で、以下のようなユニット特殊能力を作ろうとしているのですが、 > こちらに攻撃を仕掛ける相手の技量を参照する方法が分からず質問させていただきました。 > > 幽蝶の舞 > ダミー特殊能力=幽蝶の舞 > 幽蝶の舞=解説 相手との技量差に応じて最終回避率に補正。;技量が高いほど効果がアップ。 > > 雛形として、最終回避補正のサブルーチン内に他の以下のような記述で再現してみたのですが、 > > If Info(ユニット,UnitID(Args(1)),特殊能力所有,幽蝶の舞) = 1 Then > #相手よりも技量が勝っていれば補正がかかる。 > If 0 < Info(パイロット, Pilot(Args(1)), "技量") - Info(パイロット, 相手パイロット, "技量") Then > Re_hit = Re_hit + Info(パイロット, Pilot(Args(1)), "技量") - Info(パイロット, 相手パイロット, "技量") > EndIf > EndIf > > この表記だと、ターゲットへカーソル合わせの時に表示される敵側の命中が0%で表記され、 > しかし、実際に攻撃が始まった時のシステム文では > > ○○(ユニット名)は○○(武器名)で攻撃をかけた。 > 命中率 = ○○% > > となっている箇所の命中率の数値は0%でなく、幽蝶の舞の補正がかかってないデフォルトの数値になってて、 > 実際に命中している事例もあったりして額面通りの数値になってなかったりと不具合が発生するようです。 > > もしかしたらサブルーチン内の相手側の技量の参照方法に問題があるかもしれませんが、 > 正しい参照の仕方があれば教えていただきたいと思います。
削除キー
/
(半角8文字以内)
解決済み!
BOX/
解決したらチェックしてください!
記事ソート/
上げる(age)
下げる(sage)
プレビュー/
[ トピック内全3記事(1-3 表示) ] <<
0
>>
■22928
/ inTopicNo.1)
Re[2]: 相手との技量差で回避率を変化させるには?
▼
■
□投稿者/ Shun
-(2016/12/14(Wed) 19:11:43)
[ID:nE4DXYig]
ありがとうございました。今度はちゃんと相手に応じた技量値を参照してくれるようになりました。
解決済み!
引用返信
/
返信
削除キー/
編集
削除
■22927
/ inTopicNo.2)
Re[1]: 相手との技量差で回避率を変化させるには?
▲
▼
■
□投稿者/ dip
-(2016/12/12(Mon) 19:19:04)
[ID:rwBu6WTa]
2016/12/13(Tue) 02:57:34 編集(投稿者)
まず最初に、パイロット能力値を参照する場合は「Pilot」より「PilotID」を使用した方が正確に情報を取得できると思います。
「Pilot」はパイロットの名称を参照するので、ザコパイロット等は同名の別パイロットのデータを参照する場合があります。
本題ですけど、確かバトルコンフィグ処理中だと「相手パイロット」「相手ユニットID」はかなりの頻度で書き換わってたような?
「相手パイロット」が原因なら下記の様に変更すれば機能すると思います……たぶん。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
最終命中率
最終値 + Call(最終命中補正, 攻撃側ユニットID, 最終値) - Call(最終回避補正, 防御側ユニットID, 最終値, 攻撃側ユニットID)
# Args(1)は既にユニットIDなのでUnitID(Args(1))のUnitID()は不要かと…
If Info(ユニット,Args(1),特殊能力所有,幽蝶の舞) = 1 Then
#相手よりも技量が勝っていれば補正がかかる。
If 0 < Info(パイロット, PilotID(Args(1)), "技量") - Info(パイロット, PilotID(Args(3)), "技量") Then
Re_hit = Re_hit + Info(パイロット, PilotID(Args(1)), "技量") - Info(パイロット, PilotID(Args(3)), "技量")
EndIf
EndIf
引用返信
/
返信
削除キー/
編集
削除
■22925
/ inTopicNo.3)
相手との技量差で回避率を変化させるには?
▲
▼
■
□投稿者/ Shun
-(2016/12/10(Sat) 17:01:53)
[ID:nE4DXYig]
まず、バトルコンフィグにて以下のような命中率・回避率の計算式を設定しております。
命中補正
命中 / 2 * (Call(攻撃側地形適応修正, 攻撃側ユニットID, 防御側ユニットID, 武器番号) + Call(夜間補正, 攻撃側ユニットID)) + Call(照準値補正,攻撃側ユニットID) + 攻撃値 + Call(命中率特殊技能補正,攻撃側ユニットID)
回避補正
回避 / 2 * (Call(防御側地形適応修正, 防御側ユニットID) + Call(夜間補正, 防御側ユニットID)) + 運動性 + Call(回避率特殊技能補正,防御側ユニットID)
命中率
(攻撃側補正 - 防御側補正) * Call(命中率サイズ補正,防御側ユニットID,攻撃側ユニットID) + Call(命中率距離補正,攻撃側ユニットID,防御側ユニットID) - Call(命中率地形効果補正,防御側ユニットID) + Call(連続ターゲット補正, 防御側ユニットID)
最終命中率
最終値 + Call(最終命中補正, 攻撃側ユニットID, 最終値) - Call(最終回避補正, 防御側ユニットID, 最終値)
各種サブルーチンの内、最終回避補正に関するサブルーチンは以下のようにしており、そこに記されている回避系技能は正しく機能しています
最終回避補正:
Local Re_hit = 0
# 見切りを持っている場合、回避値に+10される
# 極を持っている場合、回避値に+30される
# 予知を持っている場合、反撃時のみ回避値に+30される
If Morale(Pilot(Args(1))) >= 130 Then
If Info(パイロット,Pilot(Args(1)),特殊能力所有,見切り) = 1 Then
Re_hit = Re_hit + 10
EndIf
If Info(パイロット,Pilot(Args(1)),特殊能力所有,極) = 1 Then
Re_hit = Re_hit + 30
EndIf
If Info(パイロット,Pilot(Args(1)),特殊能力所有,予知) = 1 Then
If Party(Pilot(Args(1))) <> フェイズ Then
Re_hit = Re_hit + 30
EndIf
EndIf
EndIf
# 天才を持っている場合、回避値に+20される
If Info(パイロット,Pilot(Args(1)),特殊能力所有,天才) = 1 Then
Re_hit = Re_hit + 20
EndIf
Return Re_hit
その上で、以下のようなユニット特殊能力を作ろうとしているのですが、
こちらに攻撃を仕掛ける相手の技量を参照する方法が分からず質問させていただきました。
幽蝶の舞
ダミー特殊能力=幽蝶の舞
幽蝶の舞=解説 相手との技量差に応じて最終回避率に補正。;技量が高いほど効果がアップ。
雛形として、最終回避補正のサブルーチン内に他の以下のような記述で再現してみたのですが、
If Info(ユニット,UnitID(Args(1)),特殊能力所有,幽蝶の舞) = 1 Then
#相手よりも技量が勝っていれば補正がかかる。
If 0 < Info(パイロット, Pilot(Args(1)), "技量") - Info(パイロット, 相手パイロット, "技量") Then
Re_hit = Re_hit + Info(パイロット, Pilot(Args(1)), "技量") - Info(パイロット, 相手パイロット, "技量")
EndIf
EndIf
この表記だと、ターゲットへカーソル合わせの時に表示される敵側の命中が0%で表記され、
しかし、実際に攻撃が始まった時のシステム文では
○○(ユニット名)は○○(武器名)で攻撃をかけた。
命中率 = ○○%
となっている箇所の命中率の数値は0%でなく、幽蝶の舞の補正がかかってないデフォルトの数値になってて、
実際に命中している事例もあったりして額面通りの数値になってなかったりと不具合が発生するようです。
もしかしたらサブルーチン内の相手側の技量の参照方法に問題があるかもしれませんが、
正しい参照の仕方があれば教えていただきたいと思います。
引用返信
/
返信
削除キー/
編集
削除
このトピックをツリーで一括表示
トピック内ページ移動 / <<
0
>>
Pass/
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
検索
新着情報
過去ログ
-
Child Tree
-
-
Antispam Version
-