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

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

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

■17148 / inTopicNo.1)  バトルコンフィグで命中率計算に地形適応を加えるには……
  
□投稿者/ 烈 -(2005/08/05(Fri) 01:38:07) [ID:gu6Rma7G]
    はじめまして、烈と言います。
    battle.txtの事がよくわからないんですが…。

    命中率計算をスパロボDを参考にしているんですが、
    battle.txtで命中計算に地形適応を加えようとしているんですが
    なかなか上手くいきません。

    命中補正
    命中 * call(地形適応修正,攻撃側ユニットID) + 攻撃値 + 130

    回避補正
    (運動性 + 回避) * call(地形適応修正,防御側ユニットID)

    とし、

    地形適応修正:
    If Info(ユニット,対象ユニットID,地形適応) = S Then
    set 修正値 1.1
    ElseIf if Info(ユニット,対象ユニットID,地形適応) = A Then
    set 修正値 1.0
    ElseIf if Info(ユニット,対象ユニットID,地形適応) = B Then
    set 修正値 0.9
    ElseIf if Info(ユニット,対象ユニットID,地形適応) = C Then
    set 修正値 0.8
    ElseIf if Info(ユニット,対象ユニットID,地形適応) = D Then
    set 修正値 0.7
    Else
    set 修正値 0
    EndIf
    Return
    としても命中率が0%でした。どうすれば上手く行くでしょうか?
    もしわかる人がいたら、どうか教えてください。お願いします。
引用返信/返信 削除キー/
■17149 / inTopicNo.2)  Re[1]: バトルコンフィグで命中率計算に地形適応を加えるには……
□投稿者/ 水間 -(2005/08/05(Fri) 02:16:30) [ID:hNd4Uh0B]
    2005/08/05(Fri) 02:19:08 編集(投稿者)

    こんばんは。自分も似たような関数を一昨日から地味に作っているので、
    少しだけですが助言が出来そうです。まず…

    >ElseIf if Info(ユニット,対象ユニットID,地形適応) = A Then

    "ElseIf"のあとの"If"が余計です。(…ソフトな言い方が思いつかない…
    あと、"Info(ユニット,対象ユニットID,地形適応)"では全ての地形適応が求められてしまい、
    正しい結果が出せないと思います。例えて言うと、空A陸A海C宇Bのユニットにこの関数をあてると、
    単純にAACBと返ってしまいます。なので、各地形適応を求めるにはMid関数とかを使うといいですよ。
    陸の地形適応を求めるなら、Mid(Info(ユニット,Args(1),地形適応),2,1)とかです。
    また、Call関数でArgs(1)を防御側ユニットIDと指定しているので、
    対象ユニットIDを使うのもマズイと思われます。
    …えっと、追い討ちをかける様で申し訳ないのですが、判定するユニットの地形クラスも求めなければいけません。
    そうしないと、どこにいても同じ地形適応の結果を算出する結果に
    なってしまうからです。
    あと、修正値を結果に反映させるためにはReturnコマンドでサブルーチンコールの返り値
    を設定したほうが良さげです。

    すみません。質問の内容に沿った答えなのか怪しい上に、長文乱文で解りにくいですよね…。
    今日はもう寝るので、質問(自分が答えられればいいのですが…)があれば明日またお答えしますね。それでは。

引用返信/返信 削除キー/
■17153 / inTopicNo.3)  Re[2]: バトルコンフィグで命中率計算に地形適応を加えるには……
□投稿者/ 烈 -(2005/08/05(Fri) 15:46:13) [ID:gu6Rma7G]
    こんにちは、烈です。返信、そしてアドバイスありがとうございます。
    水間さんの助言どおりを参考にさせてもらい、

    地形適応修正:

    Switch Area(Args(1))

    Case 空中
    If Mid(Info(ユニット,Args(1),地形適応),1,1) = S Then
    set 修正値 1.1
    ElseIf Mid(Info(ユニット,Args(1),地形適応),1,1) = A Then
    set 修正値 1.0
    ElseIf Mid(Info(ユニット,Args(1),地形適応),1,1) = B Then
    set 修正値 0.9
    ElseIf Mid(Info(ユニット,Args(1),地形適応),1,1) = C Then
    set 修正値 0.8
    ElseIf Mid(Info(ユニット,Args(1),地形適応),1,1) = D Then
    set 修正値 0.7
    Else
    set 修正値 0
    EndIf

    Case 地上 水上
    If Mid(Info(ユニット,Args(1),地形適応),2,1) = S Then
    set 修正値 1.1
    ElseIf Mid(Info(ユニット,Args(1),地形適応),2,1) = A Then
    set 修正値 1.0
    ElseIf Mid(Info(ユニット,Args(1),地形適応),2,1) = B Then
    set 修正値 0.9
    ElseIf Mid(Info(ユニット,Args(1),地形適応),2,1) = C Then
    set 修正値 0.8
    ElseIf Mid(Info(ユニット,Args(1),地形適応),2,1) = D Then
    set 修正値 0.7
    Else
    set 修正値 0
    EndIf

    Case 水中
    If Mid(Info(ユニット,Args(1),地形適応),3,1) = S Then
    set 修正値 1.1
    ElseIf Mid(Info(ユニット,Args(1),地形適応),3,1) = A Then
    set 修正値 1.0
    ElseIf Mid(Info(ユニット,Args(1),地形適応),3,1) = B Then
    set 修正値 0.9
    ElseIf Mid(Info(ユニット,Args(1),地形適応),3,1) = C Then
    set 修正値 0.8
    ElseIf Mid(Info(ユニット,Args(1),地形適応),3,1) = D Then
    set 修正値 0.7
    Else
    set 修正値 0
    EndIf

    Case 宇宙
    If Mid(Info(ユニット,Args(1),地形適応),4,1) = S Then
    set 修正値 1.1
    ElseIf Mid(Info(ユニット,Args(1),地形適応),4,1) = A Then
    set 修正値 1.0
    ElseIf Mid(Info(ユニット,Args(1),地形適応),4,1) = B Then
    set 修正値 0.9
    ElseIf Mid(Info(ユニット,Args(1),地形適応),4,1) = C Then
    set 修正値 0.8
    ElseIf Mid(Info(ユニット,Args(1),地形適応),4,1) = D Then
    set 修正値 0.7
    Else
    set 修正値 0
    EndIf
    EndSw

    Return 修正値

    とすると上手くできました。
    これも水間さんのアドバイスのおかげです。
    とても親切なアドバイスありがとうございました。
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -