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

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

【對(duì)決誘導(dǎo)】2 前置知識(shí)-如何拆包

2023-02-06 03:59 作者:穿山辛  | 我要投稿

本文閱讀與否不影響后文對(duì)于誘導(dǎo)的討論,只是希望做出數(shù)據(jù)從哪來(lái)的必要說(shuō)明,不感興趣的話可以略過(guò)本篇。

拆包工具網(wǎng)絡(luò)上有很多,爐石的拆包教學(xué)也不止本文一篇。但我搜到大多都是關(guān)于如何拆包獲得卡圖資源的教學(xué)。而我們需要的則是關(guān)于卡牌的邏輯信息,我在網(wǎng)絡(luò)上沒(méi)有找到教學(xué),最后在朋友thoroughly的幫助下確定的需要研究的文件和一些相關(guān)tag,才最終弄好。

也許未來(lái)還會(huì)有人想要再淌一遍渾水,因此寫(xiě)下本文。

現(xiàn)成的拆包數(shù)據(jù)

[所有卡牌](https://api.hearthstonejson.com/v1/latest/zhCN/cards.json)

[可收藏卡牌](https://api.hearthstonejson.com/v1/latest/zhCN/cards.collectible.json)

[包含所有tag的版本](https://api.hearthstonejson.com/v1/latest/CardDefs.xml)

前兩個(gè)是json格式,后一個(gè)是xml格式,就正常使用來(lái)說(shuō),其實(shí)第一個(gè)版本也算足夠了,但是前者的版本缺少對(duì)雙種族的處理,這個(gè)是我不能忍受的。

后者的版本包羅萬(wàn)象,但我是使用lua語(yǔ)言解析數(shù)據(jù),卻沒(méi)找到lua解析xml的庫(kù),所以沒(méi)有繼續(xù)研究。

拆包步驟

本文使用工具:AssetStudio(官方網(wǎng)址:https://github.com/Perfare/AssetStudio/releases)

安裝過(guò)程略,太久之前弄的,不記得會(huì)遇到什么坑了。

1. 運(yùn)行AssetStudioGUI.exe

2. 選擇File->Load Folder,找到爐石所在文件夾(如我的文件夾是D:\Game\Battle.net\Hearthstone)

3. 選擇Asset List,里面就是拆包拿到的東西了

4. 選擇Filter Type,由All改為MonoBehaviour,我們需要的信息在這里面

5. 點(diǎn)擊兩次Size,按照文件大小降序

6. 右邊的Preview就是我們需要的東西,但需要被研究的都是大文件,直接盯著看肯定看不出所以然,需要下載下來(lái)變成文件了才好處理

7. 如何下載呢,選擇Export->Selected assets可以只下載我們選擇的文件,而Filtered assets則是下載Filter Type步驟中選擇的文件夾。

8. 本次要下載的文件是CARD、CARD_TAG、SUBSET_RULE、CARD_SET_TIMING,相關(guān)內(nèi)容后述,如果仔細(xì)觀察,會(huì)發(fā)現(xiàn)我這里拆包出現(xiàn)了兩個(gè)CARD

9. 下載下來(lái)后是json格式,最精確的方法當(dāng)然是寫(xiě)代碼,比如筆者這次使用了lua的cjson庫(kù)把json文件轉(zhuǎn)換成了lua的table進(jìn)行處理。如果完全沒(méi)有代碼基礎(chǔ),也可以在網(wǎng)上尋找json轉(zhuǎn)excel的工具。(由于文本達(dá)30kb,復(fù)制粘貼能容易導(dǎo)致瀏覽器卡死,建議尋找能將json文件轉(zhuǎn)excel的軟件)

無(wú)代碼基礎(chǔ)解析json文件的辦法


這里推薦一種無(wú)代碼的處理辦法,需要工具:Excel(至少要2016以上,總之需要支持Power Query功能,筆者使用的是Excel365)

1. 新建一個(gè)Excel

2. 選擇數(shù)據(jù)→獲取數(shù)據(jù)→來(lái)自文件→從JSON如圖

3. 接下來(lái)以CARD為例,點(diǎn)擊如圖

4. 點(diǎn)擊轉(zhuǎn)換-到表,彈出提示框后點(diǎn)擊確認(rèn)

5. 點(diǎn)擊展開(kāi)后選擇希望看到的內(nèi)容,然后點(diǎn)擊確定,如果展開(kāi)后的內(nèi)容還能展開(kāi)就繼續(xù)展開(kāi),不清楚哪些值是需要的就先全部展開(kāi)再說(shuō)

6. 如果覺(jué)得之前哪一步需要修改,可以在右邊回到之前的步驟進(jìn)行修改,如果已經(jīng)完成,則可點(diǎn)擊左上的關(guān)閉并上載,載入Excel中

7. 之后想要修改,則可點(diǎn)擊數(shù)據(jù)-獲取數(shù)據(jù)-啟動(dòng)Power Query編輯器或者從右邊查詢(xún)&鏈接中進(jìn)入pq編輯界面,如果使用新的CARD.json替換掉了之前的文件,點(diǎn)擊數(shù)據(jù)-全部刷新則可更新內(nèi)容

拆包獲得的文件

如果你安裝了多個(gè)語(yǔ)言包,則會(huì)看到多個(gè)CARD,CARD_TAG等等文件,其中只有CARD文件有區(qū)別(觀察Container里面記錄的路徑,含zhcn的就是中文,enus就是英文)

CARD?

關(guān)注Records中的列表,最重要的信息如下:

●?m_ID:對(duì)應(yīng)一般所說(shuō)的dbfid,是程序用來(lái)找到卡牌的標(biāo)識(shí)碼,具有唯一性;

●?m_noteMiniGuid:卡牌id,程序員用來(lái)找卡牌的標(biāo)識(shí)碼,具有唯一性;

●?m_name:卡牌名

●?m_textInHand:卡牌描述,會(huì)使用換行,html的加粗和斜體標(biāo)記

CARD_TAG?

存放與游戲相關(guān)的tag,與游戲中的各種結(jié)算息息相關(guān),如拉法姆的小鬼識(shí)別依賴(lài)標(biāo)簽,隨從的種族依賴(lài)標(biāo)簽,甚至卡牌的費(fèi)用,攻擊生命也是標(biāo)簽決定的。

但是改變標(biāo)簽并不會(huì)影響游戲結(jié)算,說(shuō)明相關(guān)操作實(shí)際是服務(wù)器完成的。(標(biāo)簽影響結(jié)算最經(jīng)典的案例大概是螃蟹騎士修改為戰(zhàn)吼:本回合獲得風(fēng)怒,突襲,后并沒(méi)有加入戰(zhàn)吼標(biāo)簽,導(dǎo)致沙德沃克無(wú)法重復(fù)觸發(fā)這個(gè)戰(zhàn)吼)

結(jié)構(gòu)如下:

●?m_ID:無(wú)效屬性,不用理睬

●?m_cardId:對(duì)應(yīng)CARD中的m_ID

●?m_tagId:tagID,如48表示費(fèi)用

●?m_tagValue:該tag對(duì)應(yīng)的值,只會(huì)出現(xiàn)整數(shù)。(如tagID48,該值為9,則cardId對(duì)應(yīng)隨從為9費(fèi))

●?m_isReferenceTag:引用標(biāo)簽,比如發(fā)現(xiàn)一個(gè)嘲諷隨從,此時(shí)嘲諷為引用,1代表true,0代表false

●?m_isPowerKerwordTag:關(guān)鍵字標(biāo)簽,如發(fā)現(xiàn)一個(gè)嘲諷隨從的發(fā)現(xiàn)為關(guān)鍵字,1代表true,0代表false

對(duì)于tag的研究是爐石拆包研究最重要的部分,但限于篇幅,本文不再更進(jìn)一步解釋每一個(gè)tag的含義,文末會(huì)放出相關(guān)代碼,如果只想搞懂CARD_TAG的內(nèi)容,可見(jiàn)`CardTags.lua`中的總結(jié)。

戰(zhàn)棋中的某張牌經(jīng)過(guò)處理后的結(jié)果,儲(chǔ)存方式有些冗余(為了方便查值),但可以看到tag決定的內(nèi)容其實(shí)是非常多的,除開(kāi)負(fù)責(zé)邏輯判斷以外,也會(huì)負(fù)責(zé)作為其他卡牌或是其他對(duì)象的的索引

CARD_SET_TIMING?

記錄了卡牌所屬的擴(kuò)展包,結(jié)構(gòu)如下:

●?m_ID:無(wú)效屬性

●?m_cardId:對(duì)應(yīng)CARD中的m_ID

●?m_cardSetId:一個(gè)數(shù)字,代表了某個(gè)擴(kuò)展包

●?m_eventTimingEvent:懷舊和核心的卡牌涉及到退環(huán)境后擴(kuò)展包變動(dòng)問(wèn)題的解決方案,它們被分配了兩次擴(kuò)展包,根據(jù)TimingEvent決定現(xiàn)在數(shù)據(jù)哪一個(gè)擴(kuò)展包。

SUBSET_RULE?

從字面上看,記錄了一些子集合的規(guī)則,對(duì)決的被動(dòng)誘導(dǎo)就是使用了subsetRule實(shí)現(xiàn)的,

●?m_ID:無(wú)效屬性

●?m_subsetId:subsetID,同ID則為同一個(gè)規(guī)則

●?m_ruleIsNot:0表示false,1表示true,如果是1則表示ban掉符合該規(guī)則的牌

●?m_minValue:最小值

●?m_maxValue:最大值

●?m_tagId:tagId,

●?m_ruleType :取值范圍1-9(但取不到5),已知1表示tag的取值范圍應(yīng)該落在min-max的范圍內(nèi),若m_ruleIsNot=1則應(yīng)在范圍外;3表示單卡信息,其他情況未知。

圖為晶化寶石的誘導(dǎo)規(guī)則,tagId48表示費(fèi)用,ruleIsNot為1說(shuō)明范圍在min-max之外,即費(fèi)用在0-3以外的牌能誘導(dǎo)晶化寶石


我用lua寫(xiě)的拆包代碼

首先懶癌,不想打包成exe,其次打包了也沒(méi)用,因?yàn)樯傻囊琅f是lua文件

因此如果要運(yùn)行,自己裝個(gè)lua,裝lua-cjson庫(kù),配置環(huán)境,然后再說(shuō)。

如果是看研究結(jié)果,見(jiàn)文件`CardTags.lua`,`Cards.lua`,`SubsetRule.lua`。

[百度網(wǎng)盤(pán)](https://pan.baidu.com/s/1D1RRQOV5FBgzxEbi3mdn_A?pwd=1234)

提取碼:1234?


【對(duì)決誘導(dǎo)】2 前置知識(shí)-如何拆包的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
江西省| 新巴尔虎左旗| 陇川县| 榆社县| 晋城| 婺源县| 鹤庆县| 嵩明县| 邮箱| 文安县| 石屏县| 建水县| 蕉岭县| 阿图什市| 宝丰县| 弥渡县| 卫辉市| 水城县| 长乐市| 泽普县| 观塘区| 绩溪县| 师宗县| 林甸县| 敦化市| 赣州市| 洛宁县| 定兴县| 乐亭县| 天津市| 灵璧县| 昌图县| 任丘市| 长阳| 大荔县| 四川省| 应城市| 图木舒克市| 平山县| 洱源县| 遂溪县|