Windows7(64bit)の場合...... C:\Program Files (x86)\EA Games\Battlefield Play4Free\mods\main\Objects\Weapons_server.zip このZIPファイルをどこか安全な場所(デスクトップなど)にコピーし、そこで展開。 展開したフォルダのHandheldに武器のスクリプトファイルがある。 「AR_416Carbine_Default」というディレクトリがあるが、 ARはアサルトライフル、416Carbineは武器名、Defaultはデフォルト(+3武器でない)ことを意味する。 このディレクトリを開くと、「.con」拡張子のファイルがあり、これがスクリプトファイルである。
カスタムパーツはWeapons_serverのWeaponGearにある。
ウェポンのスクリプトをテキストエディタなので開くと、 なにやら怪しい項目が見えるが安心して欲しい。 これから必要な項目のみを抽出して説明する。
ObjectTemplate.initialMinDamage 23
ObjectTemplate.mediumMinDamage 20
ObjectTemplate.longMinDamage 18
ObjectTemplate.initialMaxDamage 25
ObjectTemplate.mediumMaxDamage 22
ObjectTemplate.longMaxDamage 22
ObjectTemplate.mediumDistance 20
ObjectTemplate.longDistance 40
撃った弾は距離が長いほど威力が減る(例外あり)。 この情報は「ObjectTemplate.timeToLive」以下の項目で知ることができる。 timeToLiveは弾の生存時間を表しており、射程はこの時間*弾速である。 威力は近距離、中距離、遠距離にそれぞれ最大と最低が定められている。 initialMinDamage→近距離最低ダメージ、longMaxDamage→遠距離最大ダメージ。 また近距離と中距離の境目、または中距離と遠距離の境目となる距離は それぞれmediumDistanceとlongDistanceで分かる。
ObjectTemplate.createComponent SoldierBasedRecoilComp
ObjectTemplate.recoil.hasRecoilForce 1
ObjectTemplate.recoil.goBackOnRecoil 0
ObjectTemplate.recoil.recoilForceUp CRD_UNIFORM/1.4/0.7/0
ObjectTemplate.recoil.recoilForceLeftRight CRD_UNIFORM/-0.85/0.85/0
ObjectTemplate.recoil.recoilGraphFrameCount 15
ObjectTemplate.recoil.recoilGraphExponent 6
ObjectTemplate.recoil.recoilGraphTotalMovement 0.6
ObjectTemplate.recoil.zoomModifier 0.68
反動は「ObjectTemplate.recoil.hasRecoilForce」以下の項目である。 recoilForceUpは上方向への反動を表しており、416Carbineの場合は0.7から1.4の間に動く。 またrecoilForceLeftRightは左方向への反動である。 この値の絶対値が大きいほど反動が大きいことを表す。 ただしこれは腰だめでの射撃であり、エイム時はこの値にzoomModifierをかけたものが反動として働く。
ObjectTemplate.createComponent SoldierDeviationComp
ObjectTemplate.deviation.minDev 0.38
ObjectTemplate.deviation.subProjectileDev 0
ObjectTemplate.deviation.DevModZoom 0.88
ObjectTemplate.deviation.minDevModZoom 0.4
ObjectTemplate.deviation.setFireDev 1.35 0.32 0.08
ObjectTemplate.deviation.setTurnDev 0 0 0 0
ObjectTemplate.deviation.setSpeedDev 0.8 0.16 0.08 0.12
ObjectTemplate.deviation.setMiscDev 6 6 0.16
ObjectTemplate.deviation.devModStand 1.33
ObjectTemplate.deviation.devModCrouch 1.05
ObjectTemplate.deviation.syncDev 0
拡散は「ObjectTemplate.deviation.minDev」以下の項目である。 拡散については編者も把握していないことがあり、誤りの可能性がある。 minDevは最小拡散値である。この値に様々な拡散を足していく。 連続して射撃をすると拡散が大きくなるがこれはsetFireDevである。 416Carbineを例にすると「ObjectTemplate.deviation.setFireDev 1.35 0.32 0.08」であるが、 1.35が最大拡散値、0.32が1発あたりの増加分、0.08が内部フレームあたりの減少分である。 内部フレームは1秒間に30である。 「setTurnDev」は振り向き時の拡散値であるが、これは設定されていないので無視する。 「setSpeedDev」は移動時の拡散値である。左から順に、最大、前後移動の1フレームあたりの増分、左右移動の1フレームあたりの増分、1フレームあたりの差分。 「misc」はその他という意味。武器切り替えや跳躍時かな? 増分ではなく一気に最大値に達する。
次に姿勢やエイム時の補正を考える。 「minDevModZoom」はエイム時にminDevに乗じる。 「DevModZoom」は拡散値全体に乗じる。 立ち姿勢か座り姿勢かで拡散値が変わり、それぞれ「devModStand」「devModCrouch」を乗じる。 以上、誰か検証してください。
まとめ
dev = (minDev [*minDevModZoom] + fireDev + turnDev + speedDev + MiscDev) * devModStance [*devModZoom]
大括弧内はエイム時にかける。
devModStanceは姿勢によってdevModStandまたはdevModCrouchを選択する。
fireDevなどは最大があることに注意。