等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4606 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
7 C- ?1 k4 E# |$ G$ _7 e! U關於你的疑問,下面將進行詳細的解答:
& z( Z6 R6 }& H(不想看解釋請直接看結論)1 H r! ?& ]8 v" }+ q0 F
1 |2 k1 H0 J3 k
s3 g6 [4 _7 x' c/ q
1.技術頁面顯示的船艦/防禦三圍問題6 k3 ]2 t6 V, H# A4 k
首先要知道,在32位系統下integer的最大值是2,147,483,647
/ a8 ?( M- L' ^+ r1 a- r) V若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,+ h* U5 z, y- G+ t' P- l
因此可以看到,
, q9 E9 l& K) b/ z太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,6474 G T; p$ m* X, u" Q+ Q
但也能正確地顯示出7,000,000,000
9 m: R& ^$ ~' |至於受加成的數據,$ x+ ~$ c: p( X% R
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
, O$ }2 [% |9 I1 K* c. G0 E1 x% @4 g因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
4 X6 G0 w% D+ F: g& r+ A推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
+ D2 _- y0 | O; H a結論:只是顯示問題~!!
9 _; V# K# f% Y0 m; h: q+ w
" j" D$ \( I- K- ^8 q3 ^) Y& n, {" F6 S$ K' g5 w
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
+ y3 P/ O1 h2 D7 d' w- c這裡要公開以下戰鬥三圍數值計算公式才能說明:
# h' }$ h7 y6 i 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
% C' m! U/ [4 O4 j- V 防禦值(護盾) = 基礎防禦 * 總防禦加成
' S' D8 n. O" p! h9 a1 N; k 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成* T& h5 G5 }2 l! x& A9 ]
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,4 [; S0 f3 l# H( o2 @, J
裝甲值則是"結構完整性(裝甲)"的十分之一,4 |9 T6 j" k/ `* c1 ]8 k
以太空基地為例,
% }% l" t+ C' f! r/ F' [4 Z6 \需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
' g9 F1 Q N, l& M3 X) O- D, q技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000& j; x1 T4 I9 \6 [3 E1 P
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0006 @% l0 a: f! _- S
結論:測試結果沒有任何問題,沒有逆向加成~!!
) W, a8 q9 Z5 m! y0 V; q! `+ A' g3 @3 E2 J/ Y- v/ r* A# W7 D
|
|