WW2空戦レギュにおいての重武装機の非現実的な弾幕射撃を防ぐため、 一度の空戦での使用弾薬数に制限を設ける。
制限の方法は以下のとおり
(機体重量 -1300) /100 *20 +350で計算し出てきた値を小数点以下四捨五入し弾薬ポイントとすること、機体重量に_SPLIT _BYE できるものの重量は含まない。(エンジンは含む)
以下のコードで弾薬ポイントをカウントできます
if _E(ARMのチップ番号) = 0 { 弾薬ポイント - 弾薬コスト }
あらかじめ、機体に合わせた弾薬ポイントの変数(350、500、1200のいずれか)を用意しておき、ARM一枚ごとにこのコードを書いていってください。
以下の関数により弾薬ポイントをカウントできます。
この切り取り線内をLuaにコピペすると、どんなモデルでも自動的カウントします。
残ポイントの表示とか弾切れ時の発射ロックとかは各自実装してください。
LimitAmmo = 0 --自機の持つ残り弾薬ポイント。残弾表示やフラグに使ってください。 LimitAmmoMax = 0; isJetPlaneLimitAmmo = false--ジェット機ならtrueに汁 isLimitAmmoInitialized = false;--内部的な初期化フラグ。いじったらだめーよw Cost100k = 12 --100k(Option=100000)以上のARMの弾薬コスト Cost50k = 2 --50k以上100k未満の弾薬コスト ListChipType = {} --ARMのチップ番号を格納 ArmCostList = {} --発見されたArmのコストを順に収納 function LimitAmmoRegulation() --初期設定 if not isLimitAmmoInitialized then --重量に応じて弾薬ポイントを決定 if isJetPlaneLimitAmmo then LimitAmmo = 1200 else if _WEIGHT() >= 1100 and _WEIGHT() < 2200 then LimitAmmo = (_WEIGHT() -1300) /100 *20 +350 elseif _WEIGHT() >= 2200 then LimitAmmo = 500 end end LimitAmmoMax= LimitAmmo local chipNum = _CHIPS() - 1 for i = 1, chipNum do --ARMチェック if _TYPE(i) == 10 then --50kの場合、100kの場合でそれぞれ弾薬コストを格納 if _OPTION(i) == 50000 then table.insert(ListChipType, i) table.insert(ArmCostList, Cost50k) elseif _OPTION(i) >= 100000 then table.insert(ListChipType, i) table.insert(ArmCostList, Cost100k) end end end isLimitAmmoInitialized = true elseif _TICKS() > 150 then --発射カウント local n = table.getn(ListChipType) for i = 1, n do --発射判定 if _E(ListChipType[i]) == 0 and _TOP(ListChipType[i]) == 0 then LimitAmmo = LimitAmmo - ArmCostList[i] --弾薬ポイントから弾薬コストを減算 end end local h = _H(0); local speed = _VZ(0); if (0 < h and h < 2) and math.abs(speed) < 1.5 then if isJetPlaneLimitAmmo then LimitAmmo = LimitAmmo + 1; else LimitAmmo = LimitAmmo + 0.5; end if LimitAmmo > LimitAmmoMax then LimitAmmo = LimitAmmoMax; end end end end