等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4361 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
1 s$ d- ^- [8 \, y
關於你的疑問,下面將進行詳細的解答:1 w# z3 s8 j- i: Q- ?
(不想看解釋請直接看結論): |% i6 p- K6 H1 }( a7 Z% X, k
; `; r% v o- @4 S, y [: {0 p0 j* t0 X
$ J; H' W: `. {# k
1.技術頁面顯示的船艦/防禦三圍問題
9 _2 `' a' k& m. v首先要知道,在32位系統下integer的最大值是2,147,483,647
! R m: }, h! x若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
' a/ {6 Z8 T4 R' W6 n3 k5 N因此可以看到,3 M8 i( e, c, T2 g" L% D+ R+ [
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,6477 J5 G/ u/ t. A# q$ W
但也能正確地顯示出7,000,000,000
2 G" z& F7 ?4 L- J0 D9 g; G1 t6 [6 m. V至於受加成的數據,
" W5 @6 |; h6 T9 i- q* p3 d由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
, e1 N* L' G7 U- e+ e因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了% G( H: ^1 Y8 }" V" ^6 I+ H" T6 Q
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
# q; Y* g, } W# M結論:只是顯示問題~!!4 [ B% h) a M' q. e
! M1 C7 o( w. U5 e& F
9 f6 r5 `7 e. E2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題 O8 X. K9 |) L
這裡要公開以下戰鬥三圍數值計算公式才能說明:" j3 R) j9 V, J W" g( Q
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
8 Y- _* @3 v+ O9 P& b8 z 防禦值(護盾) = 基礎防禦 * 總防禦加成
: R: M$ X3 u$ i% i 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成+ s4 h* ` A4 w0 {" L7 s
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
t- E; b$ Y# D2 p; [$ S0 {: o4 V6 S裝甲值則是"結構完整性(裝甲)"的十分之一,0 l: Q* Y! I7 k* [
以太空基地為例,, n) I% f# h# t# B
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
* n0 D* h* [4 _$ B技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
' Z$ E5 D8 m: o* @% |3 U) v戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000) C, u% o% J$ i
結論:測試結果沒有任何問題,沒有逆向加成~!!
$ p' E/ r/ S' p7 u! {* j" I6 U7 R
! G+ V' f' L+ {/ ] |
|