请选择 进入手机版 | 继续访问电脑版

13号避难所

 找回密码
 立即注册
搜索
查看: 4579|回复: 8

FO1&2的掃射武器運作方式

[复制链接]
发表于 2014-9-22 13:25:13 | 显示全部楼层 |阅读模式
前言:
因為前陣子幫忙sfall更新,知道了一些比較詳細的遊戲內部運作方式,就順便把先前散在各串的內容集合一下寫篇清楚一點的。

計算流程:
  • 攻擊時掃射子彈會先分組,運算邏輯如下:
    • 中間群組 = 總彈數 / 3,如果是0就設為1(除法碰到的小數皆捨去)
    • 左邊群組 = 總彈數 / 3
    • 右邊群組 = 總彈數 - 中間群組 - 總彈數 / 3
    • 直接朝主目標攻擊的子彈 = 中間群組 / 2,如果是0就設為1,然後中間群組減1
    所以右邊群組在一些情況下會多兩發子彈,畢竟前兩個群組進行除法運算的小數都捨去了,它是撿剩的。
     
  • 除了直接朝主目標攻擊之外的三組子彈會以左、右、中路三條平行線往主目標方向前進,碰到沿路上的目標就會一發一發進行命中判定(屍體也算),只要有一發沒中,那剩下的子彈就會試著找路徑上的下一個目標,當然如果中間路徑上沒人,中間群組很可能就直接找主目標去了。
     
  • 直接朝主目標攻擊的子彈一樣是照命中率一發一發進行判定,沒中的會呼叫另一個判斷來看是否變成流彈打到其他目標,如果其他目標是死的(屍體)就把對它的命中率設定在5%,所以屍體還是有可能挨到子彈。
     
  • 火焰槍的“掃射”是呼叫不同的攻擊動畫,在計算上也是另一個特例:遊戲會直接把上面四組子彈的彈數都設為1,不管實際總彈數多少,所以火焰槍的掃射彈數即使只有1也可以一次就攻擊到數個敵人。


既然都知道邏輯怎麼跑和內存位址,當然就可以動手介入了,sfall 3.4版加上了新設定讓你可以直接在ddraw.ini內修改掃射攻擊時的子彈分組比例:
  • ComputeSprayMod:默認為0,設為1以上為啟用mod,同時接下來四個設定才有作用。
  • ComputeSpray_CenterMult(默認值1)/ComputeSpray_CenterDiv(默認值3):控制總彈數中有多少比例的子彈會去中間群組,左右群組則是平分剩下的子彈(數量為奇數時右邊會多一發)
  • ComputeSpray_TargetMult(默認值1)/ComputeSpray_TargetDiv(默認值2):控制中間群組的子彈有多少比例是直接朝主目標攻擊,剩餘子彈則看中間路上是否有其他目標可以進行命中判定,都沒有或判定沒中的就一樣去找主目標。
  • 所有乘數(Mult)都無法超過除數(Div)。

ComputeSprayMod的實際運算邏輯是:
  • 中間群組 = 總彈數 * CenterMult / CenterDiv,如果是0就設為1
  • 左邊群組 = (總彈數 - 中間群組) / 2
  • 右邊群組 = 總彈數 - 中間群組 - 左邊群組
  • 直接朝主目標攻擊的子彈 = 中間群組 * TargetMult / TargetDiv,如果是0就設為1,然後中間群組減1

例如:
ComputeSprayMod=1
ComputeSpray_CenterMult=1
ComputeSpray_CenterDiv=2
ComputeSpray_TargetMult=2
ComputeSpray_TargetDiv=3

這代表掃射時有50%(1/2)的子彈會走中間,25%各走左右兩邊。
走中間路徑的50%會再分成兩組,其中的2/3會直接對主目標進行命中判定,1/3則會去找路徑中的其他目標。

當然如果你這樣設定:
ComputeSprayMod=1
ComputeSpray_CenterMult=1
ComputeSpray_CenterDiv=1
ComputeSpray_TargetMult=1
ComputeSpray_TargetDiv=1

就表示所有子彈都直接向主目標進行命中判定,就算你槍口正前方就站了個路人甲,他也挨不到任何一槍。

附註:
Steam版FO2內附的sfall(ddraw.dll & ddraw.ini)是稍舊的3.2版,先前的GOG版裡面是更舊的2.19版。想用上面的新設定就只能下載最新的3.4版,只要覆蓋掉ddraw.dll就好,那些設定可以手動加到既有的ddraw.ini內,直接蓋掉ddraw.ini可能會發生一些不必要的問題。
发表于 2014-9-22 13:27:05 | 显示全部楼层
輻射系列果然博大精深~一上來就看到如此好文章
发表于 2014-9-22 16:52:15 | 显示全部楼层
哦,终于知道辐射里边扫射工作原理了
发表于 2014-9-23 00:59:08 | 显示全部楼层
原来是这样。贴身扫射也是三路平行吗?还是贴身可以把所有子弹倾泻到一个人身上?
 楼主| 发表于 2014-9-23 06:30:54 | 显示全部楼层
白熊 发表于 2014-9-23 00:59
原来是这样。贴身扫射也是三路平行吗?还是贴身可以把所有子弹倾泻到一个人身上?

貼身的格子是三路子彈共通的,如果只有一個人貼身那就是三路都會先去找他,要是有兩個人都和你貼身而且又彼此相鄰的話,另一個人也有可能挨到子彈。
发表于 2014-9-23 14:09:39 | 显示全部楼层
10mm SMG贴身扫射,感觉棒极了......看来是有原因的。学到了。
发表于 2014-9-24 12:29:35 | 显示全部楼层
白熊1 发表于 2014-9-23 14:09
10mm SMG贴身扫射,感觉棒极了......看来是有原因的。学到了。

给史力克发个P90......
简直丧病
发表于 2015-11-3 23:24:49 | 显示全部楼层
改了会出现“you have overwritten the RP DDraw.ini file revert back immediately before its too late”怎么解决呢?
 楼主| 发表于 2015-11-3 23:39:46 | 显示全部楼层
那表示你拿了其他的ddraw.ini蓋掉RP自己的ini檔了,先找回原檔案再把設定值手動加進去。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所

GMT+8, 2024-3-29 20:46 , Processed in 0.064002 second(s), 14 queries .

快速评论 返回顶部 返回列表