最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

究極綠寶石5.3——科普向,什么是金手指(七)

2022-01-27 17:44 作者:圍巾胖頭魚  | 我要投稿

說在前面:

????上期專欄相比于第三、四期專欄,又介紹了一種新的探索映射表的方法:利用金手指修改變量取值來探索映射表。這樣,我們就可以利用VBA模擬器中的“變量地址查看器”“查找金手指”和“金手指列表”這三個功能對VBA模擬器的內(nèi)存進(jìn)行任意探索。

????本期專欄只講一個問題,就是把描述單只精靈的100個字節(jié)講清楚,將會大量引用來自神奇寶貝百科的內(nèi)容。由于究極綠寶石5是基于寶可夢系列第三世代的《綠寶石》,因此規(guī)則一般是參考神奇寶貝百科第三世代的設(shè)定。

????先來看一張映射表,作為描述精靈的總結(jié):

描述精靈的100個字節(jié)

????說明一下上面這張圖該怎么看。最左邊的一列是相對地址,數(shù)字格式為十六進(jìn)制,單位是字節(jié)?!跋鄬Φ刂贰钡母拍钤醋杂谏掀趯诮榻B的映射表結(jié)構(gòu)的通用性,比如說我們知道描述隊伍首位精靈的起始地址是020244ec,那么就可以利用這一列的相對地址,加到起始地址上,來獲得隊伍首位精靈某項屬性的變量地址。例如“種族”這個屬性在相對地址20處,我們在十六進(jìn)制下做加法:020244ec+20=0202450c,這就是隊伍首位精靈種族的變量地址

????圖中綠色的區(qū)域是非面板值,藍(lán)色的區(qū)域是面板值,也就是說藍(lán)色區(qū)域中的變量取值是由綠色區(qū)域中的變量取值用游戲程序計算得到的。反映在游戲中,就是說如果使用金手指修改面板值(藍(lán)色區(qū)域)的變量,那么將這只精靈放回電腦、在精靈中心回復(fù)、與訓(xùn)練師對戰(zhàn)時,藍(lán)色區(qū)域的變量會根據(jù)綠色區(qū)域的變量重新計算,因此修改藍(lán)色區(qū)域變量的金手指實際上是起不到作用的。

????“變量名稱”這一列,就是每個地址給出的4字節(jié)變量都是什么含義。四個字節(jié)的順序從右向左排列,原因就是小端序。還是以精靈種族為例,上面我們計算出0202450c是隊伍首位精靈的種族,它占的是從這個地址開始的2個字節(jié),再往后2個字節(jié),也就是0202450c+2=0202450e這個地址,就是隊伍首位精靈攜帶道具的變量地址。

????圖中標(biāo)注???的區(qū)域,是作者暫時沒有找到任何實際意義的變量。也就是說,用金手指修改這些地方的變量,似乎對精靈沒有任何影響。當(dāng)然,如果有讀者能發(fā)現(xiàn)這些未知區(qū)域的含義,歡迎補(bǔ)充!

????接下來作者對每個屬性進(jìn)行詳細(xì)的介紹。

相對地址00,長度4字節(jié),精靈性格

????神奇寶貝百科的描述:

性格(日文︰性格せいかく,英文︰Nature)于第三世代引入的寶可夢的一種特征。一共存在25種性格。

????精靈性格是一個8位十六進(jìn)制數(shù),這個數(shù)字除以25(10)的余數(shù)就決定了精靈是什么性格。8位十六進(jìn)制數(shù)除以25的余數(shù)有25種可能,就是從0到24,每個數(shù)字映射到一個性格,比如3映射到固執(zhí),10映射到膽小、13映射到爽朗,15映射到內(nèi)斂等等。上期專欄最后的彩蛋,對戰(zhàn)開拓區(qū)桄榔的那只美納斯,性格變量取值是C0E760E2:

美納斯的全部信息

????放到win10程序員模式計算器中看一下:

C0E760E2轉(zhuǎn)換為其他進(jìn)制

????它轉(zhuǎn)換到十進(jìn)制之后是3236389090,除以25的余數(shù)是15,對應(yīng)到內(nèi)斂這個性格。計算一個十進(jìn)制數(shù)除以25的余數(shù)是非常簡單的,只需要看這個數(shù)字的最后兩位數(shù)就可以了,因為100的整數(shù)倍除以25余數(shù)都是0。

相對地址04,長度2字節(jié),精靈ID No.;相對地址06,長度2字節(jié),精靈里ID No.

神奇寶貝百科的描述:

ID No.(日文︰ID,英文︰ID number)是印在每一位訓(xùn)練家訓(xùn)練家卡片、開拓通行證、訓(xùn)練家證或聯(lián)盟卡上的一個6位數(shù)字編號,用于確認(rèn)訓(xùn)練家的姓名和性別。訓(xùn)練家收服寶可夢時,寶可夢的資料中也會顯示初訓(xùn)家的ID No.,可用于判斷某只寶可夢是誰捕獲的。

第六世代以及之前,ID No.只有5位,印在訓(xùn)練家卡片上,最大值為65535(實際上ID No.是十六進(jìn)制的四位數(shù),最大值為FFFF,也就是十進(jìn)制中的65535)。

在第三世代到第六世代中,每一位訓(xùn)練家都擁有一個隱藏的類似ID No.的編號,通常稱為里ID No.(SID)。里ID No.主要是為了讓游戲系統(tǒng)在當(dāng)兩個不同訓(xùn)練家的ID No.和名字相同時,仍然可以將他們分辨出來。另外里ID No.也和ID No.、個體值一起參與異色判定的計算。如果兩個訓(xùn)練家有相同的名字、ID No.和里ID No.,那么游戲系統(tǒng)就會認(rèn)為兩人是同一個人。

????這里的精靈ID和精靈里ID,其實是第一次捕捉這只精靈的訓(xùn)練家的ID和里ID,百科稱這種訓(xùn)練家叫“初訓(xùn)家”。訓(xùn)練家的ID和里ID在游戲剛開始創(chuàng)建完角色的時候就確定了,并且在此后的游戲中一直固定不變。由該訓(xùn)練師捕捉到的精靈,精靈的ID和里ID就和該訓(xùn)練師相同,因此一只精靈被捕捉后,此后的游戲中它的ID和里ID都一直固定不變。

????百科中提到了精靈的ID和里ID可以參與“異色判定”的計算,也就是常說的“閃光精靈”。來看一下百科對“異色寶可夢”這個詞條的說明:

從第三世代起,寶可夢是否異色不再與其能力掛鉤,而是由ID No.、里ID No.、初訓(xùn)家以及性格值共同決定。

(ID No. xor 里ID No.) xor (性格值前16位 xor 性格值后16位) < 8

????這里給出了一個判斷精靈是否閃光的公式,用到了異或(xor)這個運算。不嚴(yán)格地講,異或運算是針對1位二進(jìn)制數(shù)的運算,也就是在0和1之間的運算,運算規(guī)則如下:

0 xor 0 = 0, 1 xor 0 = 1, 0 xor 1 = 1, 1 xor 1 = 0

????也就是說,兩個相同的數(shù)異或,得到的結(jié)果是0,不同的數(shù)異或,結(jié)果就是1。

????上面公式中給的異或運算,其實是按位異或。因為參與運算的是16位2進(jìn)制數(shù),按位異或的意思就是參與運算的兩個數(shù),它們第0位的異或作為結(jié)果的第0位,第1位的異或作為結(jié)果的第1位……異或運算是按位進(jìn)行的。

????多說一句,由于按位異或運算具有結(jié)合律,因此公式中的括號是多余的。

????如果拿上圖那個美納斯舉例,看到第二行是02024748 0000045d,因此它的ID是045d,里ID是0000,再結(jié)合第一行的性格,前16位是60e2,后16位是c0e7,放到計算器里計算一下:

閃光精靈判定

????win10程序員模式計算器中,異或運算可以在左邊中間的“按位”按鈕里面找到。計算結(jié)果并不比8小,因此這只美納斯沒有閃光。

????游戲中,當(dāng)取得水靜市華麗大賽五項比賽大師組的冠軍,并且被畫家畫像后,水靜市博物館的館主會提供一個“鍍閃”的功能,將精靈變成閃光的樣子。其原理就是修改精靈性格這個變量,在保持性格不變(也就是除以25的余數(shù)不變)的情況下,滿足上面那個異色判定的公式。

????這里可以給大家拋出一個問題:給定精靈的ID和里ID和一個特定的性格,如何生成這樣的精靈性格值(8位16進(jìn)制數(shù)),使得它既滿足異色判定的公式,又滿足它對應(yīng)的性格是我們給定的性格?有興趣的話可以在討論區(qū)探討一下。

相對地址08,長度10字節(jié),精靈名稱

????這里我們就不看百科了,在游戲中來到凱那市改精靈名稱的小屋內(nèi)看一看:

改名字的界面

????在修改名稱的界面,可以按Select鍵切換大小寫字母、數(shù)字和漢字,在漢字的界面,按L鍵或者R鍵可以瀏覽更多的漢字。還不知道Select鍵、L/R鍵的讀者,可以去看第四期專欄的“VBA模擬器按鍵設(shè)置”,位置在VBA模擬器的“選項——手柄——設(shè)置——1...”。

????精靈名稱的變量取值對應(yīng)到字符的映射表。在究極綠寶石5中,每個字母、數(shù)字、特殊的可見字符和漢字都會對應(yīng)到一個數(shù)字,只不過漢字會對應(yīng)到2個字節(jié)的數(shù)字,而其他字符會對應(yīng)到1個字節(jié)。反映在上圖中,就是藍(lán)色和橙黃色背景里的字符,對應(yīng)的都是1個字節(jié),而綠色背景中的漢字對應(yīng)的都是2個字節(jié)。

????由于精靈名稱的長度是10個字節(jié),因此一只精靈的名稱最長就是5個漢字,比如“究極奈克洛茲瑪”在游戲中只能叫“究極奈克洛”,后面的漢字只好省略掉了。

????如果精靈的名稱不足5個漢字(或者說10個字節(jié)),那么在名稱的最后一個字符后面會跟上一個FF作為結(jié)束符。例如上面美納斯的名字:

0202474c bf095809

02024750 02ff5c0c

????5809是“美”,bf09是“納”,5c0c是“斯”,然后后面跟了一個ff(注意這個“后面”的說法,按照小端序,字節(jié)的順序是從右到左的),再往后的字符就沒有意義了。

????多說一句,漢字映射表中,數(shù)字的順序和圖中給的漢字的順序有某種對應(yīng)的關(guān)系,感興趣的讀者可以用前幾期專欄給出的方法去探索一下字符的映射表。

相對地址14,長度6字節(jié),精靈主人名稱

????在精靈的概況頁面,會顯示精靈主人的名稱。根據(jù)映射表內(nèi)容的通用性,主人名稱所用的字符映射表和精靈名稱是一樣的,因此主人名稱最長就是3個漢字,這也就是為什么在游戲剛開始的時候,有的玩家給自己的主角起名字超過了3個漢字,顯示出來就會有亂碼。

相對地址1E,長度1字節(jié),隱藏特性/極限鍛煉情況

????神奇寶貝百科的描述:

一種寶可夢可能會擁有多種特性,分為第一特性、第二特性和隱藏特性。但對于一只寶可夢來說,它只能擁有這三種特性其中一種。

????第一特性和第二特性統(tǒng)稱為普通特性,而隱藏特性有個名稱叫“夢特”。好多玩家在游戲一開始選擇八代御三家的炎兔兒時,不知道刷了多久的“夢特”才出現(xiàn)了特性為自由者的炎兔兒。道具特性膠囊可以讓精靈的特性在第一特性和第二特性之間切換,道具特性膏藥可以讓精靈的特性從普通特性變成隱藏特性(反之不行)。

????這個變量按二進(jìn)制來看共有8位,最低位會決定精靈是普通特性還是隱藏特性。

????以上面的美納斯為例,對應(yīng)到02024760 00000000這一行,我們看的是低4位的0000,寫成二進(jìn)制就是16個0,最低位是0,說明美納斯是普通特性。但是美納斯有兩個普通特性,第一特性是神奇鱗片, 第二特性是好勝,決定是哪個普通特性的變量不在這里。如果讀者對第四期專欄還有印象的話,決定是第一還是第二特性的變量在個體值那個地方,下面也會有介紹。

????那么這個8位二進(jìn)制數(shù)的其他7位有什么用呢?

????對于8位二進(jìn)制數(shù),我們把最低位稱為第0位,然后從右到左依次是第1位,第2位,……,第7位。在這里,第1位到第6位描述的是精靈接受極限特訓(xùn)的情況。在世界錦標(biāo)賽上,滿級的精靈可以用銀色王冠或者金色王冠進(jìn)行極限特訓(xùn),但只能修改面板值,讓面板值達(dá)到個體值是V的樣子,但是個體值本身沒有變化。第1位到第6位,分別表示是否對HP、物攻、物防、速度、特攻、特防進(jìn)行了特訓(xùn),0就是沒有特訓(xùn)過,1就是特訓(xùn)過。比如這個2進(jìn)制數(shù):

????就表示精靈接受了全能力的極限特訓(xùn)。

????第7位暫時未發(fā)現(xiàn)有什么特殊用途。

相對地址1F,長度1字節(jié),火箭隊伊布/性格薄荷使用情況

????這個字節(jié)分為低7位和第7位兩個部分。

????低7位只會取值從0到25(10),共有26(10)種情況,表示該精靈是否吃過修改性格的薄荷。0表示沒吃過,1到25分別表示吃了哪種性格的薄荷(因為一共有25種性格)。這也就是游戲中黑連的答題環(huán)節(jié),可以用修改性格的薄荷讓精靈的面板發(fā)生改變,但本身的性格沒有發(fā)生變化。

????第7位有個特殊用途,制作組在這里用它來描述一些自定義的精靈特性(寶可夢百科中沒有的)。比如說在紫堇市游戲廳地下抓到的那只火箭隊伊布,有的玩家稱其為“阿爾宙斯布”,是因為這只伊布用什么技能就會變成什么屬性的伊布。這種特性是制作組自定義的產(chǎn)物,因此在這只火箭隊伊布身上,第7位就是1,其它正常的精靈的第7位都是0。

相對地址20,長度2字節(jié),精靈種族

????這個變量對應(yīng)到精靈種族的映射表,從0001對應(yīng)到妙蛙種子開始,到04AE對應(yīng)到伽勒爾達(dá)摩形態(tài)的達(dá)摩狒狒為止,有接近1200種精靈。雖然圖鑒上只有898種,但是算上銀伴戰(zhàn)獸、未知圖騰、阿爾宙斯的多種類型(在映射表中,每種不同的形態(tài)都算作是一個不同的精靈類型)、各種精靈的地區(qū)形態(tài)、mega形態(tài)、極巨化形態(tài)等等,湊在一起就有了這么多。

相對地址22,長度2字節(jié),精靈攜帶的道具

????這個變量對應(yīng)到道具的映射表,從0000無道具開始,到02EA安神的原核(就是讓火箭隊伊布聽話的那個道具)為止,共有700種左右的道具。

相對地址24,長度4字節(jié),精靈經(jīng)驗值

????一只精靈100級的經(jīng)驗值可以到神奇寶貝百科上查到,它可以決定“精靈等級”這個面板值,因此如果使用金手指只修改精靈等級,而不修改精靈經(jīng)驗值的話,金手指是不會生效的,游戲程序會根據(jù)經(jīng)驗值自動計算出來精靈等級。

相對地址28,長度1字節(jié),精靈技能PP上限

????對于精靈的每個技能,如果給精靈吃“PP提升劑”,吃一次PP上限會提高20%,兩次是40%,三次是60%。最多只能吃3次,和吃一次“極限PP提升劑”的效果一樣。這個變量只有1個字節(jié),二進(jìn)制共有8位,每2位代表一個技能,這個2位的二進(jìn)制數(shù)就說明了每個技能的PP提升劑吃了幾次,00(2)是沒吃過,01(2)是吃了一次,10(2)是吃了兩次,11(2)是吃了三次。比如這個數(shù)字:

????11100100(2)

????就表示第一個技能沒提升PP上限,第二個技能提升了20%,第三個技能提升了40%,第四個技能提升了60%。

相對地址29,長度1字節(jié),親密度/孵化剩余周期

????這個地址的變量有兩個含義,分為精靈是蛋還是正常精靈兩種情況。

????如果是正常精靈,該字節(jié)描述的就是親密度,神奇寶貝百科的描述:

親密度(日文︰なつき度,英文︰Friendship)是表示訓(xùn)練家與寶可夢之間是否親密的一個隱藏指標(biāo)。親密度首次出現(xiàn)在《皮卡丘》的皮卡丘身上,到第二世代開始擴(kuò)展到全部寶可夢。親密度可以影響部分寶可夢的進(jìn)化,以及使用部分招式的威力。

親密度首次出現(xiàn)在《皮卡丘》。它的數(shù)值位于0到255之間,……

????單個字節(jié)正好可以描述0~255這256種數(shù)字。在技能機(jī)分布的帖子中,技能機(jī)01-百萬噸重踢和100-百萬噸重拳都需要到暮水鎮(zhèn)左下的房間中領(lǐng)取,條件就是隊伍首位精靈親密度的高低。這里可以給出具體數(shù)值:當(dāng)首位精靈親密度小于50時,會得到01-百萬噸重踢;當(dāng)首位精靈親密度大于等于100時,會得到100-百萬噸重拳;其他數(shù)值的親密度不會得到技能機(jī)。

????如果是蛋,該字節(jié)描述的是距離蛋孵化出來還剩下多少個孵化周期,神奇寶貝百科的描述:

孵化周期(日文︰タマゴのサイクル,英文︰Egg cycle)指寶可夢的蛋從主角獲得到孵化所用的步數(shù)。在不同世代中,一個孵化周期的步數(shù)有所不同:

在第二世代、第三世代,一個孵化周期為256步。

????也就是說,把這個字節(jié)對應(yīng)的數(shù)字,和256相乘,就可以得到還需要走多少步就能把蛋孵化出來。從神奇寶貝百科的資料來看,孵化周期數(shù)最多的精靈都是神獸,在究極綠寶石5中,神奧地區(qū)隨意鎮(zhèn)的黃半仙可能會贈送神獸蛋,需要走3萬多步才能孵化。

相對地址2C,長度8字節(jié),精靈技能

????每2個字節(jié)描述一個技能,一共4個技能,所以需要8個字節(jié)。這個變量對應(yīng)到技能的映射表,從0000無技能開始,到0387詭異咒語為止,共有900種左右的技能。

相對地址34,長度4字節(jié),精靈技能當(dāng)前PP數(shù)

????每個字節(jié)描述一個技能的當(dāng)前PP數(shù),一共4個技能,所以需要4個字節(jié)。

相對地址38,長度6字節(jié),精靈努力值

????神奇寶貝百科的描述:

每種能力(HP、攻擊、防御、速度、特攻、特防)都有其對應(yīng)的基礎(chǔ)點數(shù),同時每只寶可夢都有它對應(yīng)的可以獲得的基礎(chǔ)點數(shù),打倒寶可夢后,對方寶可夢的可獲得基礎(chǔ)點數(shù)會加到己方所有參戰(zhàn)寶可夢上(不會進(jìn)行任何分配)。如果性格對該項能力沒有增減,在100級時,每某種能力獲得4點基礎(chǔ)點數(shù),對應(yīng)能力值會上升1點,等級降低時對應(yīng)的換算比例也會下降,但又略有不同,例如在50級時個體值為偶數(shù)的寶可夢就是8點基礎(chǔ)點數(shù)對應(yīng)1點能力值。

每種能力的基礎(chǔ)點數(shù)最小為0,最大為255,但是6項基礎(chǔ)點數(shù)合計不能超過510。

分配基礎(chǔ)點數(shù)時,如果要某項基礎(chǔ)點數(shù)全部都是有效的,則它必須是4的整倍數(shù),否則這項基礎(chǔ)點數(shù)除以4的余數(shù)是沒有意義的。因此,將某項基礎(chǔ)點數(shù)加到252的話,就沒有再加下去的必要了,并且能實際影響到寶可夢的能力值的基礎(chǔ)點數(shù)合計值最高為508,剩余的2點沒有意義。

????努力值在神奇寶貝百科的官方說法中叫“基礎(chǔ)點數(shù)”。這6個字節(jié)的變量,從前到后依次是HP、攻擊、防御、速度、特攻、特防的努力值。例如本期的那只美納斯:

????第一個字節(jié)的fc對應(yīng)到HP努力值是252,第二個字節(jié)是00,第三個字節(jié)是04,表示防御努力值是4,第四個字節(jié)是00,第五個字節(jié)fc對應(yīng)到特攻的努力值是252,第六個字節(jié)是00。(還不清楚這里的第一、第二這種順序是什么意思的讀者,可以在專欄中復(fù)習(xí)小端序這個概念)

????想要配努力值的讀者,可以自己用計算器去換算。

相對地址3E,長度6字節(jié),精靈選美值

????神奇寶貝百科的描述:

光澤會影響寶可夢在寶可夢華麗大賽一次審查和寶可夢超級華麗大賽的外表魅力的評審中獲得分?jǐn)?shù)。

一般寶可夢的初始光澤為0,而第三世代中與NPC交換的寶可夢的光澤為10。

當(dāng)寶可夢吃了一個寶可方塊或?qū)毞視r,該寶可方塊或?qū)毞业墓饣葧黾訉毧蓧舻墓鉂桑舷逓?55,一旦增加就不會減少。

????選美值在神奇寶貝百科的官方說法中叫“光澤”。這6個字節(jié)的變量,前5個從前到后依次是帥氣、美麗、可愛、聰明、強(qiáng)壯的選美值,最后一個字節(jié)是飽腹度,表示當(dāng)前的精靈還能再吃多少能量方塊(百科稱為“寶可方塊”)。能量方塊有個口味值,如下圖中的21:

能量方塊

????當(dāng)吃過的能量方塊口味值加起來超過255時,精靈就不能再吃能量方塊了,這里口味值就是加在了第六個字節(jié)——飽腹度——這個變量上。

????有關(guān)能量方塊的詳細(xì)分析,百度貼吧有大??偨Y(jié)過(漆黑的魅影吧,“【新年搞事情】能量方塊全析”),這里放個鏈接:https://tieba.baidu.com/p/4964770949

相對地址44,長度1字節(jié),精靈是否攜帶病毒

神奇寶貝百科的描述:

寶可病毒狀態(tài)以單字節(jié)儲存于寶可夢的數(shù)據(jù)結(jié)構(gòu)中。在十六進(jìn)制中,其被標(biāo)示為0xXY,其中首4位X表示寶可夢感染的寶可病毒的種類,末4位Y表示寶可夢被治愈剩余的時間。

正被寶可病毒感染或是已痊愈的寶可夢的X值不為0。若X非0且Y非0,則寶可夢正在被感染。若X非0而Y為0,則寶可夢已痊愈。若X為0且Y為0,則此寶可夢從未感染寶可病毒。X為0而Y非0是不合法的,但如果通過修改數(shù)據(jù)實現(xiàn),則這只寶可夢的寶可病毒不會傳染,且痊愈后不會免疫。

當(dāng)游戲內(nèi)置時鐘到達(dá)午夜時,所有被感染的同行寶可夢的Y值都會減去1。如果某只寶可夢的Y值減至了0,那么它將會被治愈。

當(dāng)游戲生成寶可病毒時,分配給寶可夢的Y取決于X,即初始狀態(tài)的Y=X?mod 4+1。其中mod是兩數(shù)相除得到的余數(shù)。也就是說,X的首兩位對狀態(tài)無影響。

????說得很清楚了,作者無需補(bǔ)充。

相對地址45,長度1字節(jié),捕捉精靈的地點

????這個字節(jié)對應(yīng)到捕捉精靈地點的映射表,由于只有1個字節(jié),因此捕捉地點最多只有255種,其中也包括了“命運的邂逅”。以本期的美納斯為例:

????相對地址45這個位置對應(yīng)到上面的3a這個字節(jié),它映射到的地區(qū)就是對戰(zhàn)開拓區(qū)。

相對地址46,長度1字節(jié),捕捉精靈時的精靈等級

????這個字節(jié)對應(yīng)的十進(jìn)制數(shù)字就是捕捉精靈時的精靈等級,例如相對地址46這個位置對應(yīng)到8f643a00的64這個字節(jié),也就是100級。

相對地址47,長度1字節(jié),捕捉精靈用的精靈球

????這個變量就是“球種”,二周目大吾的宅邸中有個博士可以修改精靈球種,就是改的這個變量。它對應(yīng)到球種的映射表,共有27類球種,對應(yīng)到27種精靈球(注意這里的映射表和道具里面那些精靈球道具的映射表不一樣)。

相對地址48,長度4字節(jié),精靈個體值

????這么說其實不太嚴(yán)謹(jǐn),這個4字節(jié)32位的變量,最高位(第31位)表示的是第一特性還是第二特性,前提是這只精靈是普通特性的,0是第一特性,1是第二特性;次高位(第30位)表示的是這只精靈是不是蛋,0不是蛋,1是蛋。剩下的第0位到第29位表示的才是個體值。

神奇寶貝百科的描述:

個體值是每只寶可夢與生俱來的一個隱藏數(shù)值,與其他參數(shù)共同決定能力值。目前,每項能力都有對應(yīng)的個體值,范圍為從0至31。在初次見到、收服某只寶可夢或者獲得寶可夢的蛋的同時,它的個體值即確定了,就算是進(jìn)化也不會改變。

在愛好者群體中,通常用32進(jìn)制(包括0~9和A(10)到V(31))表示第三世代及之后的寶可夢的個體值,并在前面加上此項數(shù)值的數(shù)目,通常V(31)和U(30)比較常用,T(29)較少用,S(28)及更低的表示數(shù)值則基本不會標(biāo)出。例如,3V2U代表一只寶可夢有三項個體值是31,有兩項個體值是30,5V代表一只寶可夢有5項個體值是31。

個體值由2位十六進(jìn)制數(shù)(00~1F,即十進(jìn)制下的0~31)表示,占用5位字段。

在第三世代中,所有的個體值一起存儲在一段32位(4字節(jié))字段中,第一位決定了寶可夢的特性,第二位決定寶可夢是否為蛋的狀態(tài)(0為否,1為是),接下來的三十位依次決定寶可夢的特防、特攻、速度、防御、攻擊、HP的個體值。如果一只寶可夢只有一種特性,那么其對應(yīng)字段首位就只會是0。

????然后再借用第四期專欄的一張圖:

個體值

????這里舉一個配置個體值的例子。比如我們想要一個0速5V的個體值,在空間隊中使用。假設(shè)這只精靈就是第一特性,不是蛋,那我們把這個二進(jìn)制寫開了是這樣:

????0 0 11111 11111 00000 11111 11111 11111

????31的二進(jìn)制就是11111,0的二進(jìn)制就是00000,按照順序填好。

????然后在win10程序員計算器中輸入這個二進(jìn)制數(shù):

配置個體值

????它的十六進(jìn)制數(shù)是3FF07FFF,這就是我們想要的4字節(jié)變量取值了。

????另外,個體值還決定了覺醒力量這個技能是什么屬性的,根據(jù)神奇寶貝百科的描述,覺醒力量的屬性用如下的公式計算:

覺醒力量屬性=Floor[(a+2×b+4×c+8×d+16×e+32×f)×15?/?63]

從a到f為寶可夢的各項個體值的最低有效位。即:如果對應(yīng)的個體值為奇數(shù),該項為1,否則為0。Floor表示取不超過括號內(nèi)數(shù)值的整數(shù)中最大的一個。

a對應(yīng)HP個體值。b對應(yīng)攻擊個體值。c對應(yīng)防御個體值。d對應(yīng)速度個體值。e對應(yīng)特攻個體值。f對應(yīng)特防個體值。

對于(a+2×b+4×c+8×d+16×e+32×f),就是將一個二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的過程。這個過程將f~a所代表的值串接起來后得到一個最高六位的二進(jìn)制數(shù),然后將它轉(zhuǎn)換為十進(jìn)制。

????具體對應(yīng)到哪個屬性可以查看神奇寶貝百科,也可以看百科上的一個總結(jié)圖:

覺醒力量屬性計算表

相對地址4C,長度4字節(jié),精靈緞帶

????究極綠寶石5中,一只精靈最多可以獲取25條緞帶。其中20條為華麗大賽勝利得到的緞帶,普通組、超級組、專家組、大師組這4組和帥氣、美麗、可愛、聰明、強(qiáng)壯這5類比賽,4*5=20。剩下的5條緞帶為:通關(guān)豐緣精靈聯(lián)盟、努力值達(dá)到510(滿努力)、打敗對戰(zhàn)塔50級的大君莉拉、打敗對戰(zhàn)塔自由級的大君莉拉、被當(dāng)做模特讓畫家畫像。

25條緞帶

????這4個字節(jié)的變量,2進(jìn)制為32位,其中低15位分為5組,一組是3位,5組分別代表帥氣、美麗、可愛、聰明、強(qiáng)壯的華麗大賽,3位2進(jìn)制的含義如下:

????000:未獲得緞帶;001:普通組緞帶;010:超級組緞帶;011:專家組緞帶;100:大師組緞帶

????從第15位到第19位(按最低位是第0位算),每一位代表剩下的緞帶獲取情況,0是未獲得,1是獲得。

????因此,滿緞帶對應(yīng)的2進(jìn)制數(shù)是:

????0000 0000 0000 11111 100 100 100 100 100

????對應(yīng)的十六進(jìn)制數(shù)是000FC924。

相對地址50,長度20個字節(jié),面板值

????這里只需要說明一下相對地址是50處對應(yīng)的單字節(jié)變量,表示的是精靈當(dāng)前的異常狀態(tài),包括麻痹、睡眠、中毒、燒傷、冰凍等,其他的如精靈等級、面板上的各種數(shù)值都是直接對應(yīng)到十進(jìn)制數(shù)字。

????為什么這20個字節(jié)是面板值呢?用之前幾期專欄介紹的方法,我們可以發(fā)現(xiàn)電腦中存放的精靈地址是從0202980C開始的,進(jìn)一步探索可以發(fā)現(xiàn),電腦倉庫中的精靈只用了80個字節(jié)來描述,缺少的恰好就是這最后的20位面板值變量。這種設(shè)計方式只有一個解釋,那就是最后的20個字節(jié)是可以通過前面的80個字節(jié)計算出來的,否則當(dāng)一只精靈從電腦中拿出來時,它會缺少最后20個字節(jié)的信息。

????本期專欄以變量映射表為核心,將涉及到一只精靈的全部變量全都介紹了一遍。這100個字節(jié)是一個整體,很多情況下只修改其中一個或者若干個變量都會導(dǎo)致修改出來的精靈是個“四不像”,也就不是根據(jù)正常游戲流程可以得到的精靈?;仡櫼幌率褂媒鹗种傅脑瓌t,對于亂改精靈出現(xiàn)壞檔的讀者們是不是有所啟發(fā)?

????變量映射表的探索之旅仍未結(jié)束,還有更加復(fù)雜和高級的用法尚未介紹,留待下期再見!

究極綠寶石5.3——科普向,什么是金手指(七)的評論 (共 條)

分享到微博請遵守國家法律
察雅县| 瑞丽市| 洛宁县| 辽阳县| 奎屯市| 永定县| 高陵县| 洛川县| 镇江市| 儋州市| 灵璧县| 郧西县| 阜阳市| 鄱阳县| 崇义县| 汤阴县| 密山市| 大丰市| 静安区| 穆棱市| 龙泉市| 望江县| 柘荣县| 宁海县| 嘉祥县| 平阴县| 眉山市| 长丰县| 木里| 南丰县| 安国市| 新巴尔虎右旗| 涿鹿县| 敦煌市| 荥经县| 高密市| 娄烦县| 区。| 辉县市| 潼关县| 射阳县|