SA-CG研究所

 找回密碼
 立即申請
搜索
查看: 1843|回復: 0

[分享] 【轉載】成長檔論(二)——寵物初始四圍之謎

[複製鏈接]

120

主題

744

回帖

4731

積分

管理員

Rank: 14Rank: 14Rank: 14Rank: 14

積分
4731

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

發表於 2021-7-14 20:21:21 | 顯示全部樓層 |閱讀模式




取自巴哈 ludaxx




抱歉之前的非一級野生寵四圍計算公式搞錯。
計算公式應為
初始單項數值=((等級-1)*野生寵成長係數+初始能力係數)*初始單項變數/100

在我知道了石器寵物成長的本質是成長檔後,我一直在探討成長檔與寵物初始四圍之間的關係,今天認真閱讀石器部分源碼之後,總算搞明白了它的原理,不敢自己獨吞這個新發現,特此在這裡和大家分享
(不明白成長檔是什麼的朋友請看我的上一個帖子成長檔論(一)——成長檔論與寵物轉生

首先給大家介紹一下初始四圍決定公式
初始單項數值=((等級-1)*單項成長檔+初始單項變數)*初始能力係數/100
初始單項數值=((等級-1)*野生寵成長係數+初始能力係數)*初始單項變數/100
體力單項變數=體力成長檔+a
腕力單項變數=腕力成長檔+b
耐力單項變數=耐力成長檔+c
速度單項變數=速度成長檔+d
a+b+c+d=10(a,b,c,d>=0)
也就是說,初始單項變數的大體是由成長檔決定的,但四項能力變數還要在成長檔的基礎上隨機加一些數,這些數的總合是10
比方說,一隻紅人龍的四圍成長檔為26 40 18 22 總成長檔106
那麼他的初始能力變數可能為 29 43 20 24 總數值116
也有可能是26 45 20 25 總數值116
甚至極端一點,有可能是 26 50 18 22 總數值116
總之就是在成長檔的基礎上,總共增加10點數值,這決定了寵物的初始能力變數

紅人龍的初始能力係數為26(初始能力係數是一個種族的係數,就是說所有的紅人龍的初始能力係數,都是26
假如初始能力變數為 29 43 20 24
那麼,按照上面的公式我們可以先計算出四項內在能力
體力=29*26/100=7.54
腕力=43*26/100=11.18
耐力=20*26/100=5.2
速度=24*26/100=6.24
進而可以計算出表現能力,即我們俗稱的四圍
=體力*4+腕力+耐力+速度=7.54*4+11.18+5.2+6.24=52.78
=體力*0.1+腕力+耐力*0.1+速度*0.05=0.754+11.18+0.52+0.312=12.766
=體力*0.1+腕力*0.1+耐力+速度*0.05=0.754+1.18+5.2+0.312=7.446
=速度=6.24
去小數點後,正是我們熟知的紅人龍極品四圍52/12/7/6

但實際上,四圍截然不同的寵物,他們的成長是有可能一樣的
假如是他的初始能力變數為26 50 18 22
那麼體力=6.76 腕力=13 耐力=4.68 速度=5.72
=6.76*4+13+4.68+5.72=50.44
=0.676+13+0.468+0.286=14.43
=0.676+1.3+4.68+0.286=6.942
=5.72

去小數點後,四圍是50/14/6/5
這兩隻紅人龍(50/14/6/5 52/12/7/6)的四圍看起來雖然有些差異,其實他們的成長檔完全相同,都是26 40 18 22,也就是說,他們的成長幾乎完全相同

說完了一級寵物的四圍,我們再來談談非一級野生寵的四圍,剛才已經提到過了,寵物的單項能力公式是
初始單項數值=((等級-1)*單項成長檔+初始單項變數)*初始能力係數/100

我們可以發現,當等級很高的時候,決定初始單項數 值的因素99%都是成長檔,而初始單項變數對初始單項數值的影響,就會被降的非常非常小,這就是為什麼野生寵看四圍直接就能看出成長的原因了,因為高級野生寵的四圍,基本上可以說是全部由成長檔決定的,初始單項變數那一點影響,已經可以忽略不計
之前看錯了公式,現在套用新的公式計算的話,仍然可以得出野生寵四圍越高,成長檔越高的結論。但不是說野生寵的單項能力高它對應的單項能力就會越高,必須要4項能力綜合起來判別了
(就是說四圍總合可以看出總成長檔,但單項能力值看不出單項的成長檔,可能會有較大偏差)

再來談談成長檔,說了那麼多關於成長檔的東西,我知道肯定有朋友會問,那寵物的成長檔究竟是怎麼決定的?
這就涉及到伺服器裡面的資料檔案了,代理商的服務端那邊,有一個決定著寵物成長水準的檔案,裡面儲存的無數寵物的平均成長檔,繼續拿我剛才說的紅人龍舉例

在伺服器的數據檔案裡面,紅人龍的平均四圍成長檔為24 38 16 20
成長檔的決定公式為 實際單項成長檔=平均單項成長檔+RANDOM(-2,2)(意思就是說,在平均成長檔的基礎上加上一個在-22之間的數),那麼攻成長檔範圍就是3640
紅人龍最爛四圍成長檔為22 36 14 18
最極品成長檔為26 40 18 22,此結論適用於任何寵物(融合改人不在討論範圍)
也就是說,任何寵物,最極品的個體和最垃圾的個體,成長檔最多可以差16。這個16是什麼概念?拿寵物轉生做例子,120級的寵物轉生平均增加能力,大概就在18左右,你們自己衡量一下

OK,說到這裡,我大膽的告訴大家一個結論,只要你能知道一個寵物的平均成長檔、和初始能力係數,你就能把握寵物初始四圍的範圍
我們如何得知寵物的平均成長檔和初始能力係數?這個理論上來說,代理商不公開,我們永遠不會知道這個資料。
雖然陶朱改過了一些寵的成長,但大部分舊寵的成長應該都是沒有變過的。

我搞到了一個華義7.5的寵物成長檔庫(小人不才,8.5的我實在找不到,雖然有很多私服8.5的資料,但只有這個7.5的我敢保證是原汁原味的。。上個帖子我有拿白虎做實驗,但我對照以後才發現他的白虎成長檔已經是被改過了的。。所以你們查成長檔庫的時候,看到白虎成長檔和我實驗資料的白虎成長檔不一致不要噴我),接下來我來教大家怎麼從成長檔庫裡查寵物的平均成長檔,以及怎麼算寵物的極品四圍
成長檔庫載點:

下載後打開enemybase1.txt,以黃人布魯頓為例(舊寵,陶朱改過成長檔可能性不高)
先搜索布魯頓”3個字,找到如下片段
布魯頓,,,,,,95,25,4.50,25,35,14,24,270,3,0,0,20,…(後面的我們不需要關心)
灰字=初始能力係數
藍字=體力成長檔
紅字=腕力成長檔
綠字=耐力成長檔
黃字=速度成長檔
棕字=野生寵成長係數??
(搜寵物名字的時候,有時候可能會搜到多個,以棕色字體=4.50的項為准)

我們可以提取出來布魯頓的初始能力係數為25,體力、腕力、耐力、速度平均成長檔分別為25,35,14,24
那麼極限極品成長檔應該在平均成長檔基礎上各+2,即27,37,16,26
接下來我們自己估計一個初始能力變數,在成長檔的基礎上加10,我們均勻分配一點,弄成+3+3+2+2
這樣體力腕力耐力速度的初始能力變數就變成30,40,18,28

接下來我們就可以來算布魯頓的大致極品四圍了
套用之前提到的公式
初始單項數值=((等級-1)*單項成長檔+初始單項變數)*初始能力係數/100
初始單項數值=((等級-1)*野生寵成長係數+初始能力係數)*初始單項變數/100,因為我們只考慮1級的情況,所以公式化簡為
初始單項數值=初始單項變數*初始能力係數/100
那麼體力=25*30/100=7.5;腕力=25*40/100=10;耐力=25*18/100=4.5;速度=25*28/100=7
我們根據四項內在能力進一步推出四項表現能力,即四圍:
=體力*4+腕力+耐力+速度=7.5*4+10+4.5+7=51.5
=體力*0.1+腕力+耐力*0.1+速度*0.05=7.5*0.1+10+4.5*0.1+7*0.05=11.55
=體力*0.1+腕力*0.1+耐力+速度*0.05=7.5*0.1+10*0.1+4.5+7*0.05=6.6
=速度=7
去小數點後,四圍為51/11/6/7
也就是說,如果你有幸碰到一隻四圍為51/11/6/7的布魯頓,那麼恭喜你,這只寵極有可能就是極限極品的布魯頓(成長檔達到上限)

其他寵物也是一樣的方法算,注意灰字藍紅綠黃字的位置就行了

國際慣例來個Q&A問答,以此作為此帖的總結
Q:寵物初始四圍高,成長一般會高
A:正確



Q:寵物四圍一樣,成長也會一樣
A:錯誤,原因有二,一是因為小數點的關係,我舉個極端的例子,有隻寵可能一級四圍顯示是65/15/8/9,但它的實際四圍有可能是65.9/15.8/8.8/9.7,也有可能是65.03/15.1/8/9.2,那麼這兩雙寵的成長肯定就差很多了。第二個原因,就是初始能力變數引起的,可以參考下面一問

Q:寵物某項初始能力高,成長一定會更高
A:錯。我簡單舉下例子,還是以已經舉爛了的紅人龍為例,紅人龍的平均攻成長檔為38,那麼攻成長檔最低應為36,最高應為40 先說40攻成長檔的,40攻成長檔,意味著它的初始攻變數可能在4050這個範圍內;而36攻成長檔,意味著它的攻變數可能是在36~46這個範圍內。 我們極端化一下,假設40攻成長檔紅人龍的攻變數就是4036攻成長檔的紅人龍就是46。那麼在顯示四圍的時候,後者的攻顯示的會更高一些,但實際上前者的攻遠遠高於後者的(前者是最高攻成長檔,後者是最低)

Q:我們應該怎麼估計初始能力變數
A:按照概率學,我們應該把這10點能力平均分配(出現平均分配的情況的概率最大),我們可以+3,+3,+2,+2+2,+3,+3+2等這樣把這些數均勻的增加到成長檔上,一般都沒錯的(像+10,0,0,0+8,0,0+2之類的極端情況,出現的概率會很低)

Q:怎麼抓極品寵
A:有野生的抓,強烈建議直接抓野生的,之前也提到很多遍了野生寵的成長直接與野生寵的四圍掛鉤。極限極品四圍即等於極限極品成長。沒野生的抓,你可以按照黃字部分說的方法算出你要抓的寵的四圍(僅限於陶朱沒改過成長的寵)。如果改過的話,那就只能還是靠大家的經驗了。。多記錄一下別人練出過極品的初始四圍, 就挑那些四圍的去練吧

PS:補充說明一下野生寵四圍計算方法,以41級布魯頓為例
(假設初始初始能力變數為30,40,18,28(剛才的最極品黃人的例子))
體力=
((41-1)*4.50+25)*30/100=61.5
腕力=((41-1)*4.50+25)*40/100=82
耐力=
((41-1)*4.50+25)*18/100=36.9
速度=
((41-1)*4.50+25)*28/100=57.4
血=體力*4+腕力+耐力+速度=61.5*4+82+36.9+57.4=422.3
攻=體力*0.1+腕力+耐力*0.1+速度*0.05=
61.5*0.1+82+36.9*0.1+57.4*0.05=94.71
防=體力*0.1+腕力*0.1+耐力+速度*0.05=
61.5*0.1+82*0.1+36.9+57.4*0.05=54.12
敏=速度=57.4
極品四圍:422/94/54/57
剛才試了一下,好像用4.50算數據也是有問題的。改成按4.0算的話就正好符合寵物數據(我直接翻看寵物的內部數據,以及成長檔),測試了41級和54級的野生黃人,按4.0算的話都沒錯
至於為什麼應該用4.0而不應該用4.5來算,我現在也搞不懂..如果明白原理的話我會公佈的
按照4.0算的話,體力腕力耐力速度算出來分別為55.5、74、33.3、51.8
換算成四圍即381.1/88.06/48.84/51.8
(由於新的公式受初始能力變數影響很大(等級把影響放的更大了)所以建議抓高等野生寵不要用固定四圍,最好是能把血攻防敏做個綜合評判)




附錄(寵物初始四圍原理源碼,懂C語言的可以來看一下):
/* パラメータ指數から実際の基本パラメータへの計算式 */
#if 1
#define       PARAM_CAL( l)     ( ( level -1)*ET_PAR( E_T_LVUPPOINT)+ET_PAR(E_T_INITNUM)) * ET_PAR( (l))
#else
#define       PARAM_CAL( l)     ( (E_PAR(ENEMY_LV)-1)*ET_PAR( E_T_LVUPPOINT)+ ET_PAR(E_T_INITNUM)) * ET_PAR( (l))
#endif
解說:公式:初始單項數值=((等級-1)*野生寵成長係數+初始能力係數)*初始單項變數/100
(他這裡沒除以100是因為在資料檔案裡保存的能力數值並不帶有小數點,比如說12.88腕力,他會保存為1288
    /* 先ず基本割り振りポイントに±2をランダムで行う */
    tp[E_T_BASEVITAL] += RAND( 0, 4 ) -2;
    tp[E_T_BASESTR] += RAND( 0, 4 ) - 2;
    tp[E_T_BASETGH] += RAND( 0, 4 ) - 2;
    tp[E_T_BASEDEX] += RAND( 0, 4 ) - 2;
解說:實際成長檔=平均成長檔+-2~+2)
    /* この時點で割り振りポイントを保存しておく */
    CharNew.data[CHAR_ALLOCPOINT]
    = ( tp[E_T_BASEVITAL] << 24 )
    + ( tp[E_T_BASESTR] << 16 )
    + ( tp[E_T_BASETGH] << 8 )
    + ( tp[E_T_BASEDEX] << 0 );
解說:先保存成長檔資料,因為接下來要開始決定初始能力變數
    /* その後、ランダムでポイントを1づつ加算。これを10回繰り返す。*/
    for( i = 0; i < 10; i ++ ){
        int work =RAND( 0, 3 );
        if( work == 0)tp[E_T_BASEVITAL]++;
        if( work == 1)tp[E_T_BASESTR]++;
        if( work == 2)tp[E_T_BASETGH]++;
        if( work == 3)tp[E_T_BASEDEX]++;
    }
解說:把10點數值隨機分配到4個成長檔上,構成4項初始能力變數
    /* パラメータセット*/
    CharNew.data[CHAR_VITAL]   = PARAM_CAL(E_T_BASEVITAL);
    CharNew.data[CHAR_STR]     = PARAM_CAL(E_T_BASESTR);
    CharNew.data[CHAR_TOUGH]   = PARAM_CAL(E_T_BASETGH);
    CharNew.data[CHAR_DEX]     = PARAM_CAL(E_T_BASEDEX);
解說:套用初始能力計算公式,得到四項內在初始能力值

(本当はコメントが無くても分かるさww)

——以上内容为ludaxx原创,转载须征得作者同意




Copyright 2019-2023 ©Bestkakkoii llc. All rights reserved.

All contents in this website are for academic and research use only
關閉

站長推薦上一條 /1 下一條

Archiver|SA-CG研究所 |網站地圖

GMT+8, 2024-4-18 11:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表