等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4570 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
lit212218 發表於 2015-10-5 01:37
: v) n0 ]/ s0 w& K- TA大,這是約莫30分鐘前我在U2找I玩家直接測試的結果,裝甲值確實逆向加成了。
! E, h6 G7 I( c) e# f2 ~9 g( v- x G4 w該玩家三圍加成值為攻擊510% ...
' r( @. [6 W7 w* g' X! M/ E關於你的疑問,下面將進行詳細的解答:5 k4 d9 v2 d. v, ~. ^; T$ t
(不想看解釋請直接看結論)
% P% _ y4 V) j: `: Z! y1 g: S. y8 L. M& _# B% n( I% b
f: Q' \$ B4 n2 C( Y, L
1.技術頁面顯示的船艦/防禦三圍問題
: y+ w9 x- s' m F# k( ^首先要知道,在32位系統下integer的最大值是2,147,483,647
) O2 k' w& _, T5 Y4 X7 q若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
/ n8 _+ v: X2 B因此可以看到,$ @9 y0 v2 B6 P: u g7 E
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
6 a' E1 Y# Z' o5 f p9 l但也能正確地顯示出7,000,000,0000 M6 m1 [4 `1 R) H8 l7 R* \! y
至於受加成的數據,
' u6 ]5 w" y& G1 w8 K2 b由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
8 v% l; C" c' k/ H- I% ^: I因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了$ v& x4 T! f# i; n& `& V; C0 y
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
* \6 v% v8 t, d) s. `! C- E4 t! }) c- K結論:只是顯示問題~!!
! T% z; f) J) I, j S& ]( {2 g
# j$ m6 F. J1 e t& o
" }$ d5 z j( g2 M2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
0 E" X ^* l7 u0 B8 m' ^0 Y這裡要公開以下戰鬥三圍數值計算公式才能說明:% h& ~' P- _' k2 o# P% T
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)( l5 p/ W* `: o) I" Z Q
防禦值(護盾) = 基礎防禦 * 總防禦加成4 }) q: |) r( e5 n n6 l9 y0 ?
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
$ Y- b: S! B5 I! C由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,2 S) r2 f2 Y) b# b8 H; I+ V
裝甲值則是"結構完整性(裝甲)"的十分之一,
" L; {5 L u) Q% r' Q以太空基地為例,
2 W. M) P9 L' j" m需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,' d6 j) a& c% @) R5 C# n
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000; j O& x% v: _$ U+ I6 r; O
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000+ `# G- W( S9 f2 G
結論:測試結果沒有任何問題,沒有逆向加成~!!) [0 J W1 `* I8 \
( q( k: q6 A8 U" z9 {' Z0 G0 X4 d) w; E
|
|